Version Description
- Added support for Microsoft SQL Server
- Added API support for MediaTemple ProCDN (EdgeCast)
- Added set_time_limit to self test
- Fixed LiteSpeed web server support
- Fixed native hostname 301 redirect
- Fixed redundant object origin push export
- Fixed WSOD (white screen of death) caused by minify in some hosting configurations
- Fixed text encoding in feeds
- Fixed incorrect mime-type in feeds (which caused feedburner anomalies)
- Fixed array to string notices
- Fixed expires header support for AWS
- Fixed minification of font-family
- Fixed object cache write issue in WP Admin
- Improved (reduced) memory utilization by up to 70%
- Improved disk enhanced page caching performance
- Improved object caching performance
- Improved activation reliability
- Improved reliability of minify auto mode
- Improved security (added nonces, no directory indexing, prevent direct file access)
- Improved compatibility with network based file systems
Download this release
Release Info
Developer | fredericktownes |
Plugin | W3 Total Cache |
Version | 0.9.2.4 |
Comparing to | |
See all releases |
Code changes from version 0.9.2.3 to 0.9.2.4
- db/mssql.php +0 -1255
- inc/.htaccess +3 -0
- inc/define.php +93 -974
- inc/email/index.html +0 -0
- inc/email/minify_error_notification.php +7 -0
- inc/email/{support_request.phtml → support_request.php} +1 -0
- inc/{error.phtml → error.php} +2 -1
- inc/functions/activation.php +78 -0
- inc/{compat.php → functions/compat.php} +19 -0
- inc/functions/extract.php +60 -0
- inc/functions/file.php +177 -0
- inc/functions/http.php +81 -0
- inc/functions/mime.php +74 -0
- inc/{plugin.php → functions/plugin.php} +9 -29
- inc/functions/rule.php +239 -0
- inc/functions/url.php +103 -0
- inc/index.html +0 -0
- inc/js/widget.js +0 -11
- inc/lightbox/{cdn_s3_bucket_location.phtml → cdn_s3_bucket_location.php} +2 -1
- inc/lightbox/index.html +0 -0
- inc/lightbox/{minify_recommendations.phtml → minify_recommendations.php} +3 -2
- inc/lightbox/{self_test.phtml → self_test.php} +18 -0
- inc/lightbox/{support_us.phtml → support_us.php} +5 -3
- inc/mime/all.php +1 -0
- inc/mime/cssjs.php +2 -1
- inc/mime/index.html +0 -0
- inc/mime/other.php +15 -11
- inc/options/{about.phtml → about.php} +9 -8
- inc/options/{browsercache.phtml → browsercache.php} +25 -20
- inc/options/{cdn.phtml → cdn.php} +25 -31
- inc/options/cdn/{azure.phtml → azure.php} +4 -3
- inc/options/cdn/{cf.phtml → cf.php} +4 -3
- inc/options/cdn/{cf2.phtml → cf2.php} +4 -3
- inc/options/cdn/common/{cnames.phtml → cnames.php} +13 -12
- inc/options/cdn/common/index.html +0 -0
- inc/options/cdn/{cotendo.phtml → cotendo.php} +3 -2
- inc/options/cdn/edgecast.php +36 -0
- inc/options/cdn/{ftp.phtml → ftp.php} +4 -3
- inc/options/cdn/index.html +0 -0
- inc/options/cdn/{mirror.phtml → mirror.php} +3 -2
- inc/options/cdn/{netdna.phtml → netdna.php} +3 -2
- inc/options/cdn/{rscf.phtml → rscf.php} +4 -3
- inc/options/cdn/{s3.phtml → s3.php} +4 -3
- inc/options/common/{footer.phtml → footer.php} +0 -0
- inc/options/common/{header.phtml → header.php} +4 -2
- inc/options/common/{help.phtml → help.php} +2 -1
- inc/options/common/index.html +0 -0
- inc/options/{dbcache.phtml → dbcache.php} +12 -9
- inc/options/{faq.phtml → faq.php} +3 -2
- inc/options/faq.xml +2 -2
- inc/options/{general.phtml → general.php} +165 -143
- inc/options/index.html +0 -0
- inc/options/{install.phtml → install.php} +39 -38
- inc/options/{minify.phtml → minify.php} +26 -20
- inc/options/minify/{ccjs.phtml → ccjs.php} +1 -0
- inc/options/minify/{ccjs2.phtml → ccjs2.php} +6 -1
- inc/options/minify/{css.phtml → css.php} +1 -0
- inc/options/minify/{csstidy.phtml → csstidy.php} +5 -0
- inc/options/minify/{csstidy2.phtml → csstidy2.php} +5 -0
- inc/options/minify/{html.phtml → html.php} +1 -0
- inc/options/minify/{htmltidy.phtml → htmltidy.php} +1 -0
- inc/options/minify/{htmltidy2.phtml → htmltidy2.php} +1 -0
- inc/options/minify/index.html +0 -0
- inc/options/minify/{js.phtml → js.php} +1 -0
- inc/options/minify/{yuicss2.phtml → yuicss2.php} +2 -1
- inc/options/minify/{yuijs.phtml → yuijs.php} +1 -0
- inc/options/minify/{yuijs2.phtml → yuijs2.php} +2 -1
- inc/options/{mobile.phtml → mobile.php} +5 -3
- inc/options/{objectcache.phtml → objectcache.php} +11 -32
- inc/options/{pgcache.phtml → pgcache.php} +36 -17
- inc/options/{referrer.phtml → referrer.php} +5 -3
- inc/options/support.php +21 -0
- inc/options/support.phtml +0 -38
- inc/options/support/form.php +29 -0
- inc/options/support/{bug_report.phtml → form/bug_report.php} +1 -0
- inc/options/support/{phone_support.phtml → form/email_support.php} +5 -4
- inc/options/support/form/index.html +0 -0
- inc/options/support/{linux_config.phtml → form/linux_config.php} +1 -0
- inc/options/support/{new_feature.phtml → form/new_feature.php} +1 -0
- inc/options/support/{email_support.phtml → form/phone_support.php} +5 -4
- inc/options/support/{plugin_config.phtml → form/plugin_config.php} +1 -0
- inc/options/support/{theme_config.phtml → form/theme_config.php} +1 -0
- inc/options/support/index.html +0 -0
- inc/options/support/payment.php +25 -0
- inc/options/support/select.php +22 -0
- inc/options/support_payment.phtml +0 -35
- inc/options/support_select.phtml +0 -34
- inc/popup/{cdn_export_file.phtml → cdn_export_file.php} +6 -3
- inc/popup/{cdn_export_library.phtml → cdn_export_library.php} +4 -2
- inc/popup/{cdn_import_library.phtml → cdn_import_library.php} +7 -6
- inc/popup/{cdn_purge.phtml → cdn_purge.php} +5 -4
- inc/popup/{cdn_queue.phtml → cdn_queue.php} +9 -8
- inc/popup/{cdn_rename_domain.phtml → cdn_rename_domain.php} +6 -4
- inc/popup/common/{footer.phtml → footer.php} +0 -0
- inc/popup/common/{header.phtml → header.php} +8 -6
- inc/popup/common/index.html +0 -0
- inc/popup/index.html +0 -0
- inc/popup/{pagespeed_results.phtml → pagespeed_results.php} +4 -2
- inc/widget/index.html +0 -0
- inc/widget/latest.php +7 -0
- inc/widget/{latest.phtml → latest_ajax.php} +2 -1
- inc/widget/{latest_control.phtml → latest_control.php} +1 -0
- inc/widget/{pagespeed.phtml → pagespeed.php} +5 -2
- inc/widget/{pagespeed_control.phtml → pagespeed_control.php} +1 -0
- index.html +0 -0
- ini/.htaccess +3 -0
- ini/index.html +0 -0
- lib/.htaccess +3 -0
- lib/CF/cacert.pem +3113 -3113
- lib/CF/cloudfiles.php +2149 -2147
- lib/CF/cloudfiles_exceptions.php +41 -41
- lib/CF/cloudfiles_http.php +1347 -1347
- lib/CF/index.html +0 -0
- lib/CSSTidy/class.csstidy.php +999 -999
- lib/CSSTidy/class.csstidy_optimise.php +784 -808
db/mssql.php
DELETED
@@ -1,1255 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
|
5 |
-
http://code.google.com/p/wordpress-mssql/
|
6 |
-
|
7 |
-
Contributors: Aizu Ikmal Ahmad & Iwani Khalid
|
8 |
-
Requires at least: 2.3.0
|
9 |
-
Tested up to: 2.7.1
|
10 |
-
Development Status: Alpha
|
11 |
-
Database Abstraction Class: ezSQL by Justin Vincent (http://php.justinvincent.com)
|
12 |
-
|
13 |
-
How to install MS-SQL support for Wordpress
|
14 |
-
|
15 |
-
1. Download Wordpress ( http://wordpress.org/wordpress-2.7.1-IIS-RC1.zip )
|
16 |
-
2. Then, upload it on your webhosting that supports MSSQL and IIS like how you would usually do it
|
17 |
-
3. Download our Magic Plugin at ( http://code.google.com/p/wordpress-mssql/ )
|
18 |
-
4. Then upload that db.php to your wp-contents folder
|
19 |
-
5. Edit the MSSQL database setting in db.php file according to your MSSQL settings 6. You're done :D
|
20 |
-
|
21 |
-
At this moment, this workaround works for these functions, to where we have debugged and tested
|
22 |
-
|
23 |
-
* Basic submit, edit, manage posts and pages
|
24 |
-
* Comments system
|
25 |
-
* Dynamic sidebar
|
26 |
-
* Changing themes
|
27 |
-
* Installing plugins
|
28 |
-
* Long text retrieval
|
29 |
-
|
30 |
-
What we didn't have time to debug
|
31 |
-
|
32 |
-
* Pagination
|
33 |
-
* Categories > Posts retrieval
|
34 |
-
* Dates / Time of posts
|
35 |
-
* Others which we look forward to debug later :D
|
36 |
-
|
37 |
-
*/
|
38 |
-
|
39 |
-
// ==================================================================
|
40 |
-
// Author: Justin Vincent (justin@visunet.ie)
|
41 |
-
// Web: http://php.justinvincent.com
|
42 |
-
// Name: ezSQL
|
43 |
-
// Desc: Class to make it very easy to deal with MS SQL database connections.
|
44 |
-
//
|
45 |
-
// N.B. ezSQL was converted for use with MS SQL
|
46 |
-
// by Tom De Bruyne (tom@challenge.be).
|
47 |
-
//
|
48 |
-
// !! IMPORTANT !!
|
49 |
-
//
|
50 |
-
// Please send me a mail telling me what you think of ezSQL
|
51 |
-
// and what your using it for!! Cheers. [ justin@visunet.ie ]
|
52 |
-
//
|
53 |
-
// ==================================================================
|
54 |
-
// User Settings -- CHANGE HERE
|
55 |
-
|
56 |
-
ini_set ('mssql.textlimit','2147483647');
|
57 |
-
ini_set ('mssql.textsize','2147483647');
|
58 |
-
|
59 |
-
define("EZSQL_DB_USER", "tretinoin_wpuser"); // <-- MS SQL Server db user
|
60 |
-
define("EZSQL_DB_PASSWORD", "83h93hdi."); // <-- MS SQL Server db password
|
61 |
-
define("EZSQL_DB_NAME", "tretinoin_wordpress"); // <-- MS SQL Server db pname
|
62 |
-
define("EZSQL_DB_HOST", "lamp2win"); // <-- MS SQL Server server host
|
63 |
-
|
64 |
-
// ==================================================================
|
65 |
-
// ezSQL Constants
|
66 |
-
define("EZSQL_VERSION","1.26");
|
67 |
-
define("OBJECT","OBJECT",true);
|
68 |
-
define("ARRAY_A","ARRAY_A",true);
|
69 |
-
define("ARRAY_N","ARRAY_N",true);
|
70 |
-
|
71 |
-
// ==================================================================
|
72 |
-
// The Main Class
|
73 |
-
|
74 |
-
class W3_Db_Driver {
|
75 |
-
|
76 |
-
var $debug_called;
|
77 |
-
var $vardump_called;
|
78 |
-
var $show_errors = false;
|
79 |
-
var $num_queries = 0;
|
80 |
-
var $debug_all = false;
|
81 |
-
var $last_query;
|
82 |
-
var $col_info;
|
83 |
-
|
84 |
-
var $suppress_errors = false;
|
85 |
-
var $last_error = '';
|
86 |
-
var $queries;
|
87 |
-
var $prefix = '';
|
88 |
-
var $ready = false;
|
89 |
-
var $posts;
|
90 |
-
var $users;
|
91 |
-
var $categories;
|
92 |
-
var $post2cat;
|
93 |
-
var $comments;
|
94 |
-
var $links;
|
95 |
-
var $options;
|
96 |
-
var $postmeta;
|
97 |
-
var $usermeta;
|
98 |
-
var $terms;
|
99 |
-
var $term_taxonomy;
|
100 |
-
var $term_relationships;
|
101 |
-
var $tables = array('users', 'usermeta', 'posts', 'categories', 'post2cat', 'comments', 'links', 'link2cat', 'options',
|
102 |
-
'postmeta', 'terms', 'term_taxonomy', 'term_relationships');
|
103 |
-
|
104 |
-
var $charset;
|
105 |
-
var $collate;
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
// ==================================================================
|
111 |
-
// DB Constructor - connects to the server and selects a database
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
function W3_Db_Driver($dbuser, $dbpassword, $dbname, $dbhost)
|
116 |
-
{
|
117 |
-
|
118 |
-
$this->dbh = mssql_connect($dbhost, $dbuser, $dbpassword);
|
119 |
-
|
120 |
-
if ( ! $this->dbh ) {
|
121 |
-
$this->print_error("<ol><b>Error establishing a database connection!</b><li>Are you sure you have the correct user/password?<li>Are you sure that you have typed the correct hostname?<li>Are you sure that the database server is running?</ol>");
|
122 |
-
}
|
123 |
-
|
124 |
-
$this->select($dbname);
|
125 |
-
|
126 |
-
}
|
127 |
-
|
128 |
-
// ==================================================================
|
129 |
-
// Select a DB (if another one needs to be selected)
|
130 |
-
|
131 |
-
function select($db)
|
132 |
-
{
|
133 |
-
mssql_select_db ($db);
|
134 |
-
}
|
135 |
-
|
136 |
-
|
137 |
-
// ==================================================================
|
138 |
-
// Basic Query - see docs for more detail
|
139 |
-
|
140 |
-
function query($query)
|
141 |
-
{
|
142 |
-
|
143 |
-
$query = trim($query);
|
144 |
-
$query = str_replace('`',"'",$query);
|
145 |
-
|
146 |
-
$query = str_replace('\012',"\n",$query);
|
147 |
-
$query = str_replace('\015',"\r",$query);
|
148 |
-
|
149 |
-
//$query = str_replace("\n",'',$query);
|
150 |
-
//$query = str_replace("\r",'',$query);
|
151 |
-
|
152 |
-
//$query = $this->escape($query);
|
153 |
-
//$query = str_replace('"','\"',$query);
|
154 |
-
//$query = str_replace("'","\'",$query);
|
155 |
-
|
156 |
-
|
157 |
-
if(substr($query,0,7) == 'SELECT '){
|
158 |
-
|
159 |
-
dbug($query,'SELECT : ORIGINAL QUERY ::::::: ','orange');
|
160 |
-
|
161 |
-
$query_arr = explode('LIMIT',$query);
|
162 |
-
if($query_arr[0] AND $query_arr[1]){
|
163 |
-
|
164 |
-
$query_one = str_replace('SELECT ','',$query_arr[0]);
|
165 |
-
|
166 |
-
$top_arr = explode(' ',$query_arr[1]);
|
167 |
-
|
168 |
-
if($top_arr[1] && $top_arr[2]){
|
169 |
-
$query = 'SELECT TOP '.$top_arr[2].' '.$query_one;
|
170 |
-
}else{
|
171 |
-
$query = 'SELECT TOP '.$top_arr[1].' '.$query_one;
|
172 |
-
}
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
/*
|
177 |
-
|
178 |
-
// TO BE DEVELOP
|
179 |
-
|
180 |
-
//LIMIT 1, 3
|
181 |
-
|
182 |
-
SELECT * FROM (
|
183 |
-
SELECT TOP 3 * FROM
|
184 |
-
(SELECT TOP (1+3) * FROM wp_posts WHERE 1=1 AND post_type = 'post' AND (post_status = 'publish' OR post_status = 'private') ORDER BY post_date DESC)
|
185 |
-
AS table1 ORDER BY post_date ASC
|
186 |
-
) AS table2 ORDER BY post_date DESC
|
187 |
-
|
188 |
-
*/
|
189 |
-
|
190 |
-
//pre($query_arr);
|
191 |
-
//exit();
|
192 |
-
|
193 |
-
|
194 |
-
}
|
195 |
-
|
196 |
-
|
197 |
-
if(substr($query,0,23) == "SELECT TOP 1 comment_ID"){
|
198 |
-
$query = str_replace(' = ',' = ',$query);
|
199 |
-
}
|
200 |
-
|
201 |
-
|
202 |
-
/* DUMP DIRTY SWEPT TEST */
|
203 |
-
$query = str_replace('wp_posts.','',$query);
|
204 |
-
|
205 |
-
|
206 |
-
/*
|
207 |
-
hacks for query;
|
208 |
-
- SELECT * FROM wp_posts WHERE (post_type = 'page' AND post_status = 'publish') ORDER BY menu_order, post_title ASC
|
209 |
-
- SELECT * FROM wp_posts WHERE 1=1 AND post_type = 'page' AND (post_status = 'publish' OR post_status = 'future' OR post_status = 'draft' OR post_status = 'pending' OR post_status = 'private') ORDER BY menu_order,post_title asc
|
210 |
-
notes;
|
211 |
-
somehow Wordpress developer create this 'post_title' date-type as 'text' in database. the post_title should be varchar since the amount of character in title is generally less then 255 char.
|
212 |
-
and in ms-sql, text cannot be sorted. so this is a big mistake. haihhh...
|
213 |
-
*/
|
214 |
-
$pattern = '/post_title asc/is';
|
215 |
-
$replacement = 'cast(post_title as varchar(500)) ASC';
|
216 |
-
$query = preg_replace($pattern, $replacement, $query);
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
/*
|
222 |
-
hacks for query;
|
223 |
-
- SELECT DISTINCT YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM wp_posts WHERE post_type = 'post' ORDER BY post_date DESC
|
224 |
-
notes;
|
225 |
-
this is one another hacks for SELECT DISTINCT call.
|
226 |
-
The above query tries to sort by the column post_date. Because the keyword DISTINCT is also specified, column post_date must appear in the SELECT list
|
227 |
-
expected return;
|
228 |
-
- SELECT DISTINCT post_date, YEAR(post_date) AS yyear, MONTH(post_date) AS mmonth FROM wp_posts WHERE post_type = 'post' ORDER BY post_date DESC
|
229 |
-
*/
|
230 |
-
if(substr($query,0,15) == "SELECT DISTINCT"){
|
231 |
-
$string = $query;
|
232 |
-
$pattern = '/SELECT DISTINCT (.*)? ORDER BY (.*)? (asc|desc)/i';
|
233 |
-
$replacement = 'cast(post_title as varchar(500)) ASC';
|
234 |
-
preg_match_all($pattern, $string, $result);
|
235 |
-
$order_by_col = $result[2][0];
|
236 |
-
$col_calls = $result[1][0];
|
237 |
-
$order_by_prop = $result[3][0];
|
238 |
-
$query = 'SELECT DISTINCT '.$order_by_col.', '.$col_calls.' ORDER BY '.$order_by_col.' '.$order_by_prop;
|
239 |
-
}
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
/*
|
245 |
-
hacks for query;
|
246 |
-
- SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_user_level' AND meta_value != '0'
|
247 |
-
notes;
|
248 |
-
replace != into NOT <col_name> LIKE
|
249 |
-
expected return;
|
250 |
-
- SELECT user_id FROM wp_usermeta WHERE meta_key = 'wp_user_level' AND NOT meta_value LIKE '0'
|
251 |
-
*/
|
252 |
-
$pattern = "/ (?:[a-z][a-z0-9_]*)? \!\= /is";
|
253 |
-
preg_match_all($pattern, $query, $result);
|
254 |
-
$result_arr = $result[0];
|
255 |
-
$query = str_replace('!=','',$query);
|
256 |
-
foreach($result_arr as $result_item){
|
257 |
-
$result_item = str_replace('!=','',$result_item);
|
258 |
-
$result_item = trim($result_item);
|
259 |
-
$query = str_replace($result_item,' NOT '.$result_item.' LIKE ',$query);
|
260 |
-
}
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
/*
|
265 |
-
hacks for;
|
266 |
-
- SQL have 'GROUP BY'
|
267 |
-
- SELECT DISTINCT post_date, YEAR(post_date) AS year, MONTH(post_date) AS month, count(ID) as posts FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish
|
268 |
-
GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC
|
269 |
-
*/
|
270 |
-
if (preg_match("/GROUP BY/i", $query)) {
|
271 |
-
$pattern = '/SELECT (.*) GROUP BY (.*)? ORDER BY (.*)/i';
|
272 |
-
preg_match($pattern, $string, $output);
|
273 |
-
|
274 |
-
$query0 = 'SELECT '.$output[1].' ORDER BY '.$output[3];
|
275 |
-
}
|
276 |
-
|
277 |
-
|
278 |
-
$query = str_replace('SQL_CALC_FOUND_ROWS',' ',$query);
|
279 |
-
if (preg_match("/SELECT FOUND_ROWS()/i", $query)) {
|
280 |
-
$last_query = $this->last_query;
|
281 |
-
$last_query_one_arr = explode('TOP',$last_query);
|
282 |
-
$last_query_two = trim($last_query_one_arr[1]);
|
283 |
-
$last_query_three_arr = explode(' ',$last_query_two);
|
284 |
-
$last_query_four = str_replace($last_query_three_arr[0],'',$last_query_two);
|
285 |
-
$query = 'SELECT '.$last_query_four;
|
286 |
-
}
|
287 |
-
|
288 |
-
dbug($query,'SELECT : MODDED QUERY :::::::: ','orange');
|
289 |
-
|
290 |
-
}elseif(substr($query,0,7) == 'INSERT '){
|
291 |
-
|
292 |
-
dbug($query,'INSERT : ORIGINAL QUERY ::::::::: ','purple');
|
293 |
-
|
294 |
-
$pattern = '/INSERT INTO (.*)?\((.*)\).*?VALUES.*?\((.*)\)/is';
|
295 |
-
preg_match_all($pattern, $query, $output);
|
296 |
-
$insert_table = trim($output[1][0]);
|
297 |
-
$insert_cols = trim($output[2][0]);
|
298 |
-
$insert_values = trim($output[3][0]);
|
299 |
-
|
300 |
-
/* STRIP QUOTE FROM COLS NAME */
|
301 |
-
$insert_cols = str_replace("'",'',$insert_cols);
|
302 |
-
|
303 |
-
$query = $this->prepare($query);
|
304 |
-
|
305 |
-
/* PROCESS THE $insert_values. NEED TO REPLACE THE INNER QUOTES */
|
306 |
-
preg_match_all("/([0-9]+|\'(.*?)\'[ ]*?),/is", $insert_values.',', $output);
|
307 |
-
|
308 |
-
$insert_values_arr = array(); //PREPARE THE NEW FRESH VALUES
|
309 |
-
foreach($output[0] as $insert_values_item){
|
310 |
-
if(substr(trim($insert_values_item),0,1) == "'"){
|
311 |
-
$insert_values_item = substr($insert_values_item,1); // TAKE OUT THE FIRST 1 CHAR, WHICH IS QUOTE
|
312 |
-
}
|
313 |
-
$insert_values_item = trim($insert_values_item); // TRIM THE WHITESPACE
|
314 |
-
if(substr(trim($insert_values_item),-1) == ","){
|
315 |
-
$insert_values_item = substr($insert_values_item,0,-1); // TAKE OUT THE LAST 1 CHAR, WHICH IS COMMA
|
316 |
-
}
|
317 |
-
if(substr(trim($insert_values_item),-1) == "'"){
|
318 |
-
$insert_values_item = substr($insert_values_item,0,-1); // TAKE OUT THE LAST 1 CHAR, WHICH IS QUOTE
|
319 |
-
}
|
320 |
-
$insert_values_item = str_replace("'","''",$insert_values_item); // NOW WE PUT THE EXTRA QUOTE ON IT
|
321 |
-
$insert_values_item = trim($insert_values_item); // TRIM THE WHITESPACE
|
322 |
-
$insert_values_item = "'".$insert_values_item."'"; // WRAP THE VALUES WITH OUR SINGLE-QUOTE
|
323 |
-
$insert_values_arr[] = $insert_values_item;
|
324 |
-
}
|
325 |
-
|
326 |
-
$insert_values = implode(',',$insert_values_arr);
|
327 |
-
|
328 |
-
|
329 |
-
/* CONSTRUCT NEW INSERT CALL */
|
330 |
-
$query = 'INSERT INTO '.$insert_table.' ('.$insert_cols.') VALUES ('.$insert_values.');';
|
331 |
-
|
332 |
-
|
333 |
-
dbug($query,'INSERT : MODDED QUERY :::::::::: ','purple');
|
334 |
-
|
335 |
-
}elseif(substr($query,0,7) == 'UPDATE '){
|
336 |
-
|
337 |
-
|
338 |
-
dbug($query,'UPDATE : ORIGINAL QUERY ::::::::: ','blue');
|
339 |
-
|
340 |
-
|
341 |
-
$pattern = '/UPDATE ([A-Za-z0-9_-]+) SET (.*)? WHERE (.*)?/is';
|
342 |
-
preg_match_all($pattern, $query, $output);
|
343 |
-
$update_table = trim($output[1][0]);
|
344 |
-
$update_values = trim($output[2][0]);
|
345 |
-
$update_where = trim($output[3][0]);
|
346 |
-
|
347 |
-
preg_match_all("/(.*?)[ *]?=[ *]?(\'(.*?)\'|[0-9]+),/is", $update_values.',', $output_vals);
|
348 |
-
|
349 |
-
$update_vals_colname = $output_vals[1];
|
350 |
-
$update_vals_values = $output_vals[2];
|
351 |
-
|
352 |
-
|
353 |
-
$update_vals_colname_mod = array();
|
354 |
-
foreach($update_vals_colname as $update_vals_colname_item){
|
355 |
-
$update_vals_colname_item = str_replace("'",'',$update_vals_colname_item); // GREEDY REPLACE ALL QUOTES. NO QUOTES ALLOWED IN COL NAME
|
356 |
-
$update_vals_colname_item = trim($update_vals_colname_item); // TRIM THE WHITESPACE
|
357 |
-
$update_vals_colname_mod[] = $update_vals_colname_item;
|
358 |
-
}
|
359 |
-
|
360 |
-
$update_vals_values_mod = array();
|
361 |
-
foreach($update_vals_values as $update_vals_values_item){
|
362 |
-
if(substr(trim($update_vals_values_item),0,1) == "'"){
|
363 |
-
$update_vals_values_item = substr($update_vals_values_item,1); // TAKE OUT THE FIRST 1 CHAR, WHICH IS QUOTE
|
364 |
-
}
|
365 |
-
if(substr(trim($update_vals_values_item),-1) == "'"){
|
366 |
-
$update_vals_values_item = substr($update_vals_values_item,0,-1); // TAKE OUT THE LAST 1 CHAR, WHICH IS QUOTE
|
367 |
-
}
|
368 |
-
$update_vals_values_item = trim($update_vals_values_item); // TRIM THE WHITESPACE
|
369 |
-
$update_vals_values_item = str_replace("'","''",$update_vals_values_item); // ADD ADDITIONAL QUOTE TO ESCAPE IT IN MSSQL
|
370 |
-
$update_vals_values_mod[] = $update_vals_values_item;
|
371 |
-
}
|
372 |
-
|
373 |
-
$update_values_modded = array_combine($update_vals_colname_mod,$update_vals_values_mod);
|
374 |
-
|
375 |
-
$update_values = '';
|
376 |
-
$update_values_prepare_arr = '';
|
377 |
-
$update_values_item = '';
|
378 |
-
foreach($update_values_modded as $update_values_item_colname => $update_values_item_value){
|
379 |
-
$update_values_prepare_arr[] = $update_values_item_colname." = '".$update_values_item_value."'";
|
380 |
-
}
|
381 |
-
|
382 |
-
|
383 |
-
$update_values = implode(',',$update_values_prepare_arr);
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
/* CONSTRUCT NEW UPDATE CALL */
|
390 |
-
$query = 'UPDATE '.$update_table.' SET '.$update_values.' WHERE '.$update_where.';';
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
dbug($query,'UPDATE : MODDED QUERY :::::::::: ','blue');
|
402 |
-
|
403 |
-
}elseif(substr($query,0,7) == 'DELETE '){
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
dbug($query,'DELETE','orange');
|
408 |
-
|
409 |
-
}elseif(substr($query,0,7) == 'CREATE '){
|
410 |
-
|
411 |
-
$query_two = str_replace('auto_increment','IDENTITY(1,1)',$query);
|
412 |
-
$query_two = str_replace('tinytext','text',$query_two);
|
413 |
-
$query_two = str_replace('longtext','text',$query_two);
|
414 |
-
$query_two = str_replace('mediumtext','text',$query_two);
|
415 |
-
$query_two = str_replace('unsigned ','',$query_two);
|
416 |
-
$query_three = preg_replace('/bigint\(\d+\)/i','int',$query_two);
|
417 |
-
$query_three = preg_replace('/int\(\d+\)/i','int',$query_three);
|
418 |
-
$query_four_arr = explode('PRIMARY KEY',$query_three);
|
419 |
-
$query_five = $query_four_arr[0].' ';
|
420 |
-
$query_six = $query_four_arr[1];
|
421 |
-
$query_seven_arr = explode('),',$query_six);
|
422 |
-
$query_eight_arr = explode('(',$query);
|
423 |
-
$query_nine = trim($query_eight_arr[0]);
|
424 |
-
$query_ten = str_replace($query_nine,'',$query_five);
|
425 |
-
$table_name = trim(str_replace('CREATE TABLE','',$query_nine));
|
426 |
-
|
427 |
-
|
428 |
-
$create_table_header = "
|
429 |
-
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[tretinoin_wpuser].[".$table_name."]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
430 |
-
DROP TABLE [tretinoin_wpuser].[".$table_name."]
|
431 |
-
GO
|
432 |
-
CREATE TABLE [tretinoin_wpuser].[".$table_name."]";
|
433 |
-
|
434 |
-
$create_table_header_simple = "CREATE TABLE [tretinoin_wpuser].[".$table_name."]
|
435 |
-
|
436 |
-
";
|
437 |
-
|
438 |
-
$query = $create_table_header_simple . $query_ten . ' PRIMARY KEY ' . $query_seven_arr[0] .'))';
|
439 |
-
|
440 |
-
dbug($query,'CREATE','purple');
|
441 |
-
|
442 |
-
}elseif(substr($query,0,5) == 'SHOW '){
|
443 |
-
|
444 |
-
$query = str_replace('SHOW TABLES;','',$query);
|
445 |
-
|
446 |
-
dbug($query,'SHOW','yellow');
|
447 |
-
|
448 |
-
}else{
|
449 |
-
|
450 |
-
|
451 |
-
dbug($query);
|
452 |
-
|
453 |
-
}
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
// For reg expressions
|
458 |
-
$query = trim($query);
|
459 |
-
|
460 |
-
// Flush cached values..
|
461 |
-
$this->flush();
|
462 |
-
|
463 |
-
// Log how the function was called
|
464 |
-
$this->func_call = "\$db->query(\"$query\")";
|
465 |
-
|
466 |
-
// Keep track of the last query for debug..
|
467 |
-
$this->last_query = $query;
|
468 |
-
|
469 |
-
// Perform the query via std mssql_query function..
|
470 |
-
|
471 |
-
|
472 |
-
if(substr($query,0,7) == 'SELECT '){
|
473 |
-
$this->result_check = @mssql_query($query, $this->dbh);
|
474 |
-
}elseif(substr($query,0,7) == 'INSERT '){
|
475 |
-
|
476 |
-
}elseif(substr($query,0,7) == 'UPDATE '){
|
477 |
-
$this->result_check = @mssql_query($query, $this->dbh);
|
478 |
-
}elseif(substr($query,0,7) == 'DELETE '){
|
479 |
-
|
480 |
-
}elseif(substr($query,0,7) == 'CREATE '){
|
481 |
-
|
482 |
-
}elseif(substr($query,0,5) == 'SHOW '){
|
483 |
-
|
484 |
-
}
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
// Unfortunately, PHP fuctions for MS SQL currently don't offer a decent way
|
490 |
-
// to retrieve errors from MS SQL
|
491 |
-
// Make sure not to run a query between the actual query and this one !
|
492 |
-
|
493 |
-
$get_errorcode = "SELECT @@ERROR as errorcode";
|
494 |
-
$error_res = @mssql_query($get_errorcode, $this->dbh);
|
495 |
-
$errorcode = @mssql_result($error_res, 0, "errorcode");
|
496 |
-
|
497 |
-
// ERROR LIST
|
498 |
-
// 402 : The data types text and varchar are incompatible in the equal to operator.
|
499 |
-
// 306 : The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
|
500 |
-
|
501 |
-
|
502 |
-
if ($errorcode == '402') {
|
503 |
-
$query_two = str_replace(' = ',' LIKE ',$query);
|
504 |
-
|
505 |
-
|
506 |
-
/* NEED MORE IMPROVEMENT HERE */
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
}else{
|
511 |
-
$query_two = $query;
|
512 |
-
}
|
513 |
-
dbug($query,$errorcode,'green');
|
514 |
-
|
515 |
-
|
516 |
-
$this->result = @mssql_query($query_two, $this->dbh);
|
517 |
-
$this->num_queries++;
|
518 |
-
|
519 |
-
|
520 |
-
// If there was an insert, delete or update see how many rows were affected
|
521 |
-
// (Also, If there there was an insert take note of the last OID
|
522 |
-
$query_type = array("insert","delete","update","replace");
|
523 |
-
|
524 |
-
// loop through the above array
|
525 |
-
foreach ( $query_type as $word )
|
526 |
-
{
|
527 |
-
// This is true if the query starts with insert, delete or update
|
528 |
-
if ( preg_match("/^$word\s+/i",$query) )
|
529 |
-
{
|
530 |
-
$this->rows_affected = @mssql_rows_affected ($this->dbh);
|
531 |
-
|
532 |
-
// This gets the insert ID
|
533 |
-
if ( $word == "insert" || $word == "replace" )
|
534 |
-
{
|
535 |
-
$get_last_ident = "SELECT @@IDENTITY as id";
|
536 |
-
$last_res = @mssql_query($get_last_ident, $this->dbh);
|
537 |
-
$this->insert_id = @mssql_result($last_res, 0, "id");
|
538 |
-
|
539 |
-
// If insert id then return it - true evaluation
|
540 |
-
return $this->insert_id;
|
541 |
-
}
|
542 |
-
|
543 |
-
// Set to false if there was no insert id
|
544 |
-
$this->result = false;
|
545 |
-
}
|
546 |
-
}
|
547 |
-
|
548 |
-
|
549 |
-
if ($errorcode <> 0) {
|
550 |
-
// there is an error
|
551 |
-
$this->print_error();
|
552 |
-
}
|
553 |
-
else
|
554 |
-
{
|
555 |
-
|
556 |
-
// =======================================================
|
557 |
-
// Take note of column info
|
558 |
-
|
559 |
-
$i=0;
|
560 |
-
while ($i < @mssql_num_fields($this->result))
|
561 |
-
{
|
562 |
-
$this->col_info[$i]->name = @mssql_field_name($this->result,$i);
|
563 |
-
$this->col_info[$i]->type = @mssql_field_type($this->result,$i);
|
564 |
-
$this->col_info[$i]->size = @mssql_field_length($this->result,$i);
|
565 |
-
$i++;
|
566 |
-
}
|
567 |
-
|
568 |
-
// =======================================================
|
569 |
-
// Store Query Results
|
570 |
-
|
571 |
-
$i=0;
|
572 |
-
while ( $row_arr = @mssql_fetch_array($this->result) )
|
573 |
-
{
|
574 |
-
|
575 |
-
$row = array_to_object($row_arr);
|
576 |
-
$this->last_result[$i] = $row;
|
577 |
-
|
578 |
-
// Store relults as an objects within main array
|
579 |
-
|
580 |
-
|
581 |
-
$i++;
|
582 |
-
}
|
583 |
-
|
584 |
-
if($i == 0){
|
585 |
-
$this->last_result = array();
|
586 |
-
}
|
587 |
-
|
588 |
-
//pre($this->last_result);
|
589 |
-
|
590 |
-
// Log number of rows the query returned
|
591 |
-
$this->num_rows = $i;
|
592 |
-
|
593 |
-
//}
|
594 |
-
|
595 |
-
@mssql_free_result($this->result);
|
596 |
-
|
597 |
-
// If this was a select..
|
598 |
-
if ( preg_match("/^(select|show|desc)\s+/i",$query) )
|
599 |
-
{
|
600 |
-
|
601 |
-
// If debug ALL queries
|
602 |
-
$this->debug_all ? $this->debug() : null ;
|
603 |
-
|
604 |
-
// If there were results then return true for $db->query
|
605 |
-
if ( $i )
|
606 |
-
{
|
607 |
-
return true;
|
608 |
-
}
|
609 |
-
else
|
610 |
-
{
|
611 |
-
return false;
|
612 |
-
}
|
613 |
-
}
|
614 |
-
else
|
615 |
-
{
|
616 |
-
// If debug ALL queries
|
617 |
-
$this->debug_all ? $this->debug() : null ;
|
618 |
-
|
619 |
-
// Update insert etc. was good..
|
620 |
-
return true;
|
621 |
-
}
|
622 |
-
|
623 |
-
}
|
624 |
-
}
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
// ====================================================================
|
630 |
-
// Format a string correctly for safe insert under all PHP conditions
|
631 |
-
|
632 |
-
function escape($str)
|
633 |
-
{
|
634 |
-
|
635 |
-
// This deals with quote escaping
|
636 |
-
//$str = str_replace("'","''",$str);
|
637 |
-
//$str = str_replace("\'","'",$str);
|
638 |
-
|
639 |
-
//$str = mysql_real_escape_string($str);
|
640 |
-
|
641 |
-
//$str = str_replace("'", "''", $str);
|
642 |
-
//$str = addslashes($str);
|
643 |
-
|
644 |
-
//dbug($str,'ESCAPE RUN TWICE','red');
|
645 |
-
|
646 |
-
// These values need to be escaped for ms sql
|
647 |
-
$escape = array ( "\n"=>"\\\\012","\r"=>"\\\\015");
|
648 |
-
|
649 |
-
// Firstly unescape
|
650 |
-
/*
|
651 |
-
foreach ( $escape as $match => $replace )
|
652 |
-
{
|
653 |
-
$str = str_replace($match,$replace,$str);
|
654 |
-
}
|
655 |
-
*/
|
656 |
-
return $str;
|
657 |
-
|
658 |
-
}
|
659 |
-
|
660 |
-
// ==================================================================
|
661 |
-
// Print SQL/DB error.
|
662 |
-
|
663 |
-
function print_error($str = "")
|
664 |
-
{
|
665 |
-
// All erros go to the global error array $EZSQL_ERROR..
|
666 |
-
global $EZSQL_ERROR;
|
667 |
-
|
668 |
-
// if no special error, take last mssql error
|
669 |
-
if ( !$str ) $str = mssql_get_last_message();
|
670 |
-
|
671 |
-
// Log this error to the global array..
|
672 |
-
$EZSQL_ERROR[] = array
|
673 |
-
(
|
674 |
-
"query" => $this->last_query,
|
675 |
-
"error_str" => $str
|
676 |
-
);
|
677 |
-
|
678 |
-
// Is error output turned on or not..
|
679 |
-
if ( $this->show_errors )
|
680 |
-
{
|
681 |
-
// If there is an error then take note of it
|
682 |
-
/*
|
683 |
-
print "<blockquote><font face=arial size=2 color=ff0000>";
|
684 |
-
print "<b>SQL/DB Error --</b> ";
|
685 |
-
print "[<font color=000000>".$this->last_query."</font>]";
|
686 |
-
print "[<font color=000077>$str</font>]";
|
687 |
-
print "</font></blockquote>";
|
688 |
-
*/
|
689 |
-
|
690 |
-
dbug($this->last_query.'<br />'.$str,'ERROR','red');
|
691 |
-
return false;
|
692 |
-
}
|
693 |
-
else
|
694 |
-
{
|
695 |
-
return false;
|
696 |
-
}
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
}
|
703 |
-
|
704 |
-
// ==================================================================
|
705 |
-
// Turn error handling on or off..
|
706 |
-
|
707 |
-
function show_errors()
|
708 |
-
{
|
709 |
-
$this->show_errors = true;
|
710 |
-
}
|
711 |
-
|
712 |
-
function hide_errors()
|
713 |
-
{
|
714 |
-
$this->show_errors = false;
|
715 |
-
}
|
716 |
-
|
717 |
-
// ==================================================================
|
718 |
-
// Kill cached query results
|
719 |
-
|
720 |
-
function flush()
|
721 |
-
{
|
722 |
-
|
723 |
-
// Get rid of these
|
724 |
-
$this->last_result = null;
|
725 |
-
$this->col_info = null;
|
726 |
-
$this->last_query = null;
|
727 |
-
|
728 |
-
}
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
// ==================================================================
|
733 |
-
// Get one variable from the DB - see docs for more detail
|
734 |
-
|
735 |
-
function get_var($query=null,$x=0,$y=0)
|
736 |
-
{
|
737 |
-
|
738 |
-
// Log how the function was called
|
739 |
-
$this->func_call = "\$db->get_var(\"$query\",$x,$y)";
|
740 |
-
|
741 |
-
// If there is a query then perform it if not then use cached results..
|
742 |
-
if ( $query )
|
743 |
-
{
|
744 |
-
$this->query($query);
|
745 |
-
}
|
746 |
-
|
747 |
-
// Extract var out of cached results based x,y vals
|
748 |
-
if ( $this->last_result[$y] )
|
749 |
-
{
|
750 |
-
$values = array_values(get_object_vars($this->last_result[$y]));
|
751 |
-
}
|
752 |
-
|
753 |
-
// If there is a value return it else return null
|
754 |
-
return (isset($values[$x]) && $values[$x]!=='')?$values[$x]:null;
|
755 |
-
}
|
756 |
-
|
757 |
-
// ==================================================================
|
758 |
-
// Get one row from the DB - see docs for more detail
|
759 |
-
|
760 |
-
function get_row($query=null,$output=OBJECT,$y=0)
|
761 |
-
{
|
762 |
-
|
763 |
-
// Log how the function was called
|
764 |
-
$this->func_call = "\$db->get_row(\"$query\",$output,$y)";
|
765 |
-
|
766 |
-
// If there is a query then perform it if not then use cached results..
|
767 |
-
if ( $query )
|
768 |
-
{
|
769 |
-
$this->query($query);
|
770 |
-
}
|
771 |
-
|
772 |
-
// If the output is an object then return object using the row offset..
|
773 |
-
if ( $output == OBJECT )
|
774 |
-
{
|
775 |
-
return $this->last_result[$y]?$this->last_result[$y]:null;
|
776 |
-
}
|
777 |
-
// If the output is an associative array then return row as such..
|
778 |
-
elseif ( $output == ARRAY_A )
|
779 |
-
{
|
780 |
-
return $this->last_result[$y]?get_object_vars($this->last_result[$y]):null;
|
781 |
-
}
|
782 |
-
// If the output is an numerical array then return row as such..
|
783 |
-
elseif ( $output == ARRAY_N )
|
784 |
-
{
|
785 |
-
return $this->last_result[$y]?array_values(get_object_vars($this->last_result[$y])):null;
|
786 |
-
}
|
787 |
-
// If invalid output type was specified..
|
788 |
-
else
|
789 |
-
{
|
790 |
-
$this->print_error(" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N");
|
791 |
-
}
|
792 |
-
|
793 |
-
}
|
794 |
-
|
795 |
-
// ==================================================================
|
796 |
-
// Function to get 1 column from the cached result set based in X index
|
797 |
-
// se docs for usage and info
|
798 |
-
|
799 |
-
function get_col($query=null,$x=0)
|
800 |
-
{
|
801 |
-
|
802 |
-
// If there is a query then perform it if not then use cached results..
|
803 |
-
if ( $query )
|
804 |
-
{
|
805 |
-
$this->query($query);
|
806 |
-
}
|
807 |
-
|
808 |
-
// Extract the column values
|
809 |
-
for ( $i=0; $i < count($this->last_result); $i++ )
|
810 |
-
{
|
811 |
-
$new_array[$i] = $this->get_var(null,$x,$i);
|
812 |
-
}
|
813 |
-
|
814 |
-
if($i == 0){
|
815 |
-
$new_array = array();
|
816 |
-
}
|
817 |
-
|
818 |
-
return $new_array;
|
819 |
-
}
|
820 |
-
|
821 |
-
// ==================================================================
|
822 |
-
// Return the the query as a result set - see docs for more details
|
823 |
-
|
824 |
-
function get_results($query=null, $output = OBJECT)
|
825 |
-
{
|
826 |
-
|
827 |
-
// Log how the function was called
|
828 |
-
$this->func_call = "\$db->get_results(\"$query\", $output)";
|
829 |
-
|
830 |
-
// If there is a query then perform it if not then use cached results..
|
831 |
-
if ( $query )
|
832 |
-
{
|
833 |
-
$this->query($query);
|
834 |
-
}
|
835 |
-
|
836 |
-
// Send back array of objects. Each row is an object
|
837 |
-
if ( $output == OBJECT )
|
838 |
-
{
|
839 |
-
|
840 |
-
$out = get_object_vars($this->last_result);
|
841 |
-
|
842 |
-
return $this->last_result;
|
843 |
-
}
|
844 |
-
elseif ( $output == ARRAY_A || $output == ARRAY_N )
|
845 |
-
{
|
846 |
-
if ( $this->last_result )
|
847 |
-
{
|
848 |
-
$i=0;
|
849 |
-
foreach( $this->last_result as $row )
|
850 |
-
{
|
851 |
-
|
852 |
-
$new_array[$i] = get_object_vars($row);
|
853 |
-
|
854 |
-
if ( $output == ARRAY_N )
|
855 |
-
{
|
856 |
-
$new_array[$i] = array_values($new_array[$i]);
|
857 |
-
}
|
858 |
-
|
859 |
-
$i++;
|
860 |
-
}
|
861 |
-
|
862 |
-
return $new_array;
|
863 |
-
}
|
864 |
-
else
|
865 |
-
{
|
866 |
-
return null;
|
867 |
-
}
|
868 |
-
}
|
869 |
-
}
|
870 |
-
|
871 |
-
|
872 |
-
// ==================================================================
|
873 |
-
// Function to get column meta data info pertaining to the last query
|
874 |
-
// see docs for more info and usage
|
875 |
-
|
876 |
-
function get_col_info($info_type="name",$col_offset=-1)
|
877 |
-
{
|
878 |
-
|
879 |
-
if ( $this->col_info )
|
880 |
-
{
|
881 |
-
if ( $col_offset == -1 )
|
882 |
-
{
|
883 |
-
$i=0;
|
884 |
-
foreach($this->col_info as $col )
|
885 |
-
{
|
886 |
-
$new_array[$i] = $col->{$info_type};
|
887 |
-
$i++;
|
888 |
-
}
|
889 |
-
return $new_array;
|
890 |
-
}
|
891 |
-
else
|
892 |
-
{
|
893 |
-
return $this->col_info[$col_offset]->{$info_type};
|
894 |
-
}
|
895 |
-
|
896 |
-
}
|
897 |
-
|
898 |
-
}
|
899 |
-
|
900 |
-
|
901 |
-
// ==================================================================
|
902 |
-
// Dumps the contents of any input variable to screen in a nicely
|
903 |
-
// formatted and easy to understand way - any type: Object, Var or Array
|
904 |
-
|
905 |
-
function vardump($mixed='')
|
906 |
-
{
|
907 |
-
|
908 |
-
echo "<p><table><tr><td bgcolor=ffffff><blockquote><font color=000090>";
|
909 |
-
echo "<pre><font face=arial>";
|
910 |
-
|
911 |
-
if ( ! $this->vardump_called )
|
912 |
-
{
|
913 |
-
echo "<font color=800080><b>ezSQL</b> (v".EZSQL_VERSION.") <b>Variable Dump..</b></font>\n\n";
|
914 |
-
}
|
915 |
-
|
916 |
-
$var_type = gettype ($mixed);
|
917 |
-
print_r(($mixed?$mixed:"<font color=red>No Value / False</font>"));
|
918 |
-
echo "\n\n<b>Type:</b> " . ucfirst($var_type) . "\n";
|
919 |
-
echo "<b>Last Query</b> [$this->num_queries]<b>:</b> ".($this->last_query?$this->last_query:"NULL")."\n";
|
920 |
-
echo "<b>Last Function Call:</b> " . ($this->func_call?$this->func_call:"None")."\n";
|
921 |
-
echo "<b>Last Rows Returned:</b> ".count($this->last_result)."\n";
|
922 |
-
echo "</font></pre></font></blockquote></td></tr></table>".$this->donation();
|
923 |
-
echo "\n<hr size=1 noshade color=dddddd>";
|
924 |
-
|
925 |
-
$this->vardump_called = true;
|
926 |
-
|
927 |
-
}
|
928 |
-
|
929 |
-
// Alias for the above function
|
930 |
-
function dumpvar($mixed)
|
931 |
-
{
|
932 |
-
$this->vardump($mixed);
|
933 |
-
}
|
934 |
-
|
935 |
-
// ==================================================================
|
936 |
-
// Displays the last query string that was sent to the database & a
|
937 |
-
// table listing results (if there were any).
|
938 |
-
// (abstracted into a seperate file to save server overhead).
|
939 |
-
|
940 |
-
function debug()
|
941 |
-
{
|
942 |
-
|
943 |
-
echo "<blockquote>";
|
944 |
-
|
945 |
-
// Only show ezSQL credits once..
|
946 |
-
if ( ! $this->debug_called )
|
947 |
-
{
|
948 |
-
echo "<font color=800080 face=arial size=2><b>ezSQL</b> (v".EZSQL_VERSION.") <b>Debug..</b></font><p>\n";
|
949 |
-
}
|
950 |
-
echo "<font face=arial size=2 color=000099><b>Query</b> [$this->num_queries] <b>--</b> ";
|
951 |
-
echo "[<font color=000000><b>$this->last_query</b></font>]</font><p>";
|
952 |
-
|
953 |
-
echo "<font face=arial size=2 color=000099><b>Query Result..</b></font>";
|
954 |
-
echo "<blockquote>";
|
955 |
-
|
956 |
-
if ( $this->col_info )
|
957 |
-
{
|
958 |
-
|
959 |
-
// =====================================================
|
960 |
-
// Results top rows
|
961 |
-
|
962 |
-
echo "<table cellpadding=5 cellspacing=1 bgcolor=555555>";
|
963 |
-
echo "<tr bgcolor=eeeeee><td nowrap valign=bottom><font color=555599 face=arial size=2><b>(row)</b></font></td>";
|
964 |
-
|
965 |
-
|
966 |
-
for ( $i=0; $i < count($this->col_info); $i++ )
|
967 |
-
{
|
968 |
-
echo "<td nowrap align=left valign=top><font size=1 color=555599 face=arial>{$this->col_info[$i]->type} {$this->col_info[$i]->max_length}</font><br><span style='font-family: arial; font-size: 10pt; font-weight: bold;'>{$this->col_info[$i]->name}</span></td>";
|
969 |
-
}
|
970 |
-
|
971 |
-
echo "</tr>";
|
972 |
-
|
973 |
-
// ======================================================
|
974 |
-
// print main results
|
975 |
-
|
976 |
-
if ( $this->last_result )
|
977 |
-
{
|
978 |
-
|
979 |
-
$i=0;
|
980 |
-
foreach ( $this->get_results(null,ARRAY_N) as $one_row )
|
981 |
-
{
|
982 |
-
$i++;
|
983 |
-
echo "<tr bgcolor=ffffff><td bgcolor=eeeeee nowrap align=middle><font size=2 color=555599 face=arial>$i</font></td>";
|
984 |
-
|
985 |
-
foreach ( $one_row as $item )
|
986 |
-
{
|
987 |
-
echo "<td nowrap><font face=arial size=2>$item</font></td>";
|
988 |
-
}
|
989 |
-
|
990 |
-
echo "</tr>";
|
991 |
-
}
|
992 |
-
|
993 |
-
} // if last result
|
994 |
-
else
|
995 |
-
{
|
996 |
-
echo "<tr bgcolor=ffffff><td colspan=".(count($this->col_info)+1)."><font face=arial size=2>No Results</font></td></tr>";
|
997 |
-
}
|
998 |
-
|
999 |
-
echo "</table>";
|
1000 |
-
|
1001 |
-
} // if col_info
|
1002 |
-
else
|
1003 |
-
{
|
1004 |
-
echo "<font face=arial size=2>No Results</font>";
|
1005 |
-
}
|
1006 |
-
|
1007 |
-
echo "</blockquote></blockquote>".$this->donation()."<hr noshade color=dddddd size=1>";
|
1008 |
-
|
1009 |
-
|
1010 |
-
$this->debug_called = true;
|
1011 |
-
}
|
1012 |
-
|
1013 |
-
// =======================================================
|
1014 |
-
// Naughty little function to ask for some remuniration!
|
1015 |
-
|
1016 |
-
function donation()
|
1017 |
-
{
|
1018 |
-
return "<font size=1 face=arial color=000000>If ezSQL has helped <a href=\"https://www.paypal.com/xclick/business=justin%40justinvincent.com&item_name=ezSQL&no_note=1&tax=0\" style=\"color: 0000CC;\">make a donation!?</a> [ go on! you know you want to! ]</font>";
|
1019 |
-
}
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
/**
|
1025 |
-
* Sets the table prefix for the WordPress .
|
1026 |
-
*
|
1027 |
-
* Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to
|
1028 |
-
* override the WordPress users and usersmeta tables.
|
1029 |
-
*
|
1030 |
-
* @since 2.5.0
|
1031 |
-
*
|
1032 |
-
* @param string $prefix Alphanumeric name for the new prefix.
|
1033 |
-
* @return string Old prefix
|
1034 |
-
*/
|
1035 |
-
function set_prefix($prefix) {
|
1036 |
-
|
1037 |
-
if ( preg_match('|[^a-z0-9_]|i', $prefix) )
|
1038 |
-
return new WP_Error('invalid_db_prefix', /*WP_I18N_DB_BAD_PREFIX*/'Invalid database prefix'/*/WP_I18N_DB_BAD_PREFIX*/);
|
1039 |
-
|
1040 |
-
$old_prefix = $this->prefix;
|
1041 |
-
$this->prefix = $prefix;
|
1042 |
-
|
1043 |
-
foreach ( (array) $this->tables as $table )
|
1044 |
-
$this->$table = $this->prefix . $table;
|
1045 |
-
|
1046 |
-
if ( defined('CUSTOM_USER_TABLE') )
|
1047 |
-
$this->users = CUSTOM_USER_TABLE;
|
1048 |
-
|
1049 |
-
if ( defined('CUSTOM_USER_META_TABLE') )
|
1050 |
-
$this->usermeta = CUSTOM_USER_META_TABLE;
|
1051 |
-
|
1052 |
-
return $old_prefix;
|
1053 |
-
}
|
1054 |
-
|
1055 |
-
|
1056 |
-
/**
|
1057 |
-
* Whether to suppress database errors.
|
1058 |
-
*
|
1059 |
-
* @param unknown_type $suppress
|
1060 |
-
* @return unknown
|
1061 |
-
*/
|
1062 |
-
function suppress_errors( $suppress = true ) {
|
1063 |
-
$errors = $this->suppress_errors;
|
1064 |
-
$this->suppress_errors = $suppress;
|
1065 |
-
return $errors;
|
1066 |
-
}
|
1067 |
-
|
1068 |
-
|
1069 |
-
/**
|
1070 |
-
* Escapes content by reference for insertion into the database, for security
|
1071 |
-
*
|
1072 |
-
* @since 2.3.0
|
1073 |
-
*
|
1074 |
-
* @param string $s
|
1075 |
-
*/
|
1076 |
-
function escape_by_ref(&$s) {
|
1077 |
-
$s = $this->escape($s);
|
1078 |
-
}
|
1079 |
-
|
1080 |
-
/**
|
1081 |
-
* Generic function to determine if a database supports a particular feature
|
1082 |
-
* @param string $db_cap the feature
|
1083 |
-
* @param false|string|resource $dbh_or_table the databaese (the current database, the database housing the specified table, or the database of the mysql resource)
|
1084 |
-
* @return bool
|
1085 |
-
*/
|
1086 |
-
function has_cap( $db_cap ) {
|
1087 |
-
|
1088 |
-
|
1089 |
-
return false;
|
1090 |
-
}
|
1091 |
-
|
1092 |
-
/**
|
1093 |
-
* Insert an array of data into a table.
|
1094 |
-
*
|
1095 |
-
* @since 2.5.0
|
1096 |
-
*
|
1097 |
-
* @param string $table WARNING: not sanitized!
|
1098 |
-
* @param array $data Should not already be SQL-escaped
|
1099 |
-
* @return mixed Results of $this->query()
|
1100 |
-
*/
|
1101 |
-
function insert($table, $data) {
|
1102 |
-
$data = add_magic_quotes($data);
|
1103 |
-
$fields = array_keys($data);
|
1104 |
-
return $this->query("INSERT INTO $table (`" . implode('`,`',$fields) . "`) VALUES ('".implode("','",$data)."')");
|
1105 |
-
}
|
1106 |
-
|
1107 |
-
/**
|
1108 |
-
* Prepares a SQL query for safe use, using sprintf() syntax.
|
1109 |
-
*
|
1110 |
-
* @link http://php.net/sprintf See for syntax to use for query string.
|
1111 |
-
* @since 2.3.0
|
1112 |
-
*
|
1113 |
-
* @param null|string $args If string, first parameter must be query statement
|
1114 |
-
* @param mixed $args,... If additional parameters, they will be set inserted into the query.
|
1115 |
-
* @return null|string Sanitized query string
|
1116 |
-
*/
|
1117 |
-
function prepare($args=null) {
|
1118 |
-
if ( is_null( $args ) )
|
1119 |
-
return;
|
1120 |
-
$args = func_get_args();
|
1121 |
-
$query = array_shift($args);
|
1122 |
-
$query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
|
1123 |
-
$query = str_replace('"%s"', '%s', $query); // doublequote unquoting
|
1124 |
-
$query = str_replace('%s', "'%s'", $query); // quote the strings
|
1125 |
-
array_walk($args, array(&$this, 'escape_by_ref'));
|
1126 |
-
return @vsprintf($query, $args);
|
1127 |
-
}
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
/**
|
1132 |
-
* Update a row in the table with an array of data.
|
1133 |
-
*
|
1134 |
-
* @since 2.5.0
|
1135 |
-
*
|
1136 |
-
* @param string $table WARNING: not sanitized!
|
1137 |
-
* @param array $data Should not already be SQL-escaped
|
1138 |
-
* @param array $where A named array of WHERE column => value relationships. Multiple member pairs will be joined with ANDs. WARNING: the column names are not currently sanitized!
|
1139 |
-
* @return mixed Results of $this->query()
|
1140 |
-
*/
|
1141 |
-
function update($table, $data, $where){
|
1142 |
-
$data = add_magic_quotes($data);
|
1143 |
-
$bits = $wheres = array();
|
1144 |
-
foreach ( (array) array_keys($data) as $k )
|
1145 |
-
$bits[] = "`$k` = '$data[$k]'";
|
1146 |
-
|
1147 |
-
if ( is_array( $where ) )
|
1148 |
-
foreach ( $where as $c => $v ){
|
1149 |
-
$v = str_replace("'","'",$v);
|
1150 |
-
//$wheres[] = "$c = '" . $this->escape( $v ) . "'";
|
1151 |
-
$wheres[] = "$c = '" . $v . "'";
|
1152 |
-
}
|
1153 |
-
else
|
1154 |
-
return false;
|
1155 |
-
|
1156 |
-
return $this->query( "UPDATE $table SET " . implode( ', ', $bits ) . ' WHERE ' . implode( ' AND ', $wheres ) );
|
1157 |
-
}
|
1158 |
-
|
1159 |
-
/**
|
1160 |
-
* Whether or not MySQL database is minimal required version.
|
1161 |
-
*
|
1162 |
-
* @since 2.5.0
|
1163 |
-
* @uses $wp_version
|
1164 |
-
*
|
1165 |
-
* @return WP_Error
|
1166 |
-
*/
|
1167 |
-
function check_database_version()
|
1168 |
-
{
|
1169 |
-
global $wp_version;
|
1170 |
-
// Make sure the server has MySQL 4.0
|
1171 |
-
/*
|
1172 |
-
if ( version_compare($this->db_version(), '4.0.0', '<') )
|
1173 |
-
return new WP_Error('database_version',sprintf(__('<strong>ERROR</strong>: WordPress %s requires MySQL 4.0.0 or higher'), $wp_version));
|
1174 |
-
|
1175 |
-
*/
|
1176 |
-
|
1177 |
-
}
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
}
|
1200 |
-
|
1201 |
-
// automatically create a new $db object
|
1202 |
-
|
1203 |
-
//$wpdb = new db(EZSQL_DB_USER, EZSQL_DB_PASSWORD, EZSQL_DB_NAME, EZSQL_DB_HOST);
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
function array_to_object($array = array()) {
|
1209 |
-
if (!empty($array)) {
|
1210 |
-
$data = false;
|
1211 |
-
|
1212 |
-
foreach ($array as $akey => $aval) {
|
1213 |
-
if(!is_numeric($akey)){
|
1214 |
-
$data -> {$akey} = trim($aval);
|
1215 |
-
}
|
1216 |
-
}
|
1217 |
-
|
1218 |
-
return $data;
|
1219 |
-
}
|
1220 |
-
|
1221 |
-
return false;
|
1222 |
-
}
|
1223 |
-
|
1224 |
-
function pre($sting_to_pre = '',$ob=false){
|
1225 |
-
|
1226 |
-
if($sting_to_pre){
|
1227 |
-
|
1228 |
-
if($ob){
|
1229 |
-
|
1230 |
-
ob_start();
|
1231 |
-
echo '<pre>';
|
1232 |
-
print_r($sting_to_pre);
|
1233 |
-
echo '</pre>';
|
1234 |
-
$the_return = ob_get_contents();
|
1235 |
-
ob_end_clean();
|
1236 |
-
return $the_return;
|
1237 |
-
|
1238 |
-
}else{
|
1239 |
-
echo '<pre>';
|
1240 |
-
print_r($sting_to_pre);
|
1241 |
-
echo '</pre>';
|
1242 |
-
}
|
1243 |
-
|
1244 |
-
}
|
1245 |
-
}
|
1246 |
-
|
1247 |
-
function dbug($val,$prepend='',$prepend_color='red'){
|
1248 |
-
|
1249 |
-
/*
|
1250 |
-
$fp = fopen('E:\wwwusr\vhosts\tretinoin.dev.lamp2win.com\httpdocs\debug\log.txt', 'a');
|
1251 |
-
fwrite($fp, '<span style="color:'.$prepend_color.';"><b>'.$prepend.'</b></span> '.$val."\n");
|
1252 |
-
fclose($fp);
|
1253 |
-
*/
|
1254 |
-
}
|
1255 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/.htaccess
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
Options -Indexes
|
2 |
+
Order deny,allow
|
3 |
+
Deny from all
|
inc/define.php
CHANGED
@@ -1,6 +1,11 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
4 |
define('W3TC_POWERED_BY', 'W3 Total Cache/' . W3TC_VERSION);
|
5 |
define('W3TC_EMAIL', 'w3tc@w3-edge.com');
|
6 |
define('W3TC_PAYPAL_URL', 'https://www.paypal.com/cgi-bin/webscr');
|
@@ -16,6 +21,7 @@ define('W3TC_WIN', (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'));
|
|
16 |
|
17 |
defined('W3TC_DIR') || define('W3TC_DIR', realpath(dirname(__FILE__) . '/..'));
|
18 |
define('W3TC_FILE', 'w3-total-cache/w3-total-cache.php');
|
|
|
19 |
define('W3TC_LIB_DIR', W3TC_DIR . '/lib');
|
20 |
define('W3TC_LIB_W3_DIR', W3TC_LIB_DIR . '/W3');
|
21 |
define('W3TC_LIB_MINIFY_DIR', W3TC_LIB_DIR . '/Minify');
|
@@ -24,7 +30,6 @@ define('W3TC_LIB_CSSTIDY_DIR', W3TC_LIB_DIR . '/CSSTidy');
|
|
24 |
define('W3TC_LIB_MICROSOFT_DIR', W3TC_LIB_DIR . '/Microsoft');
|
25 |
define('W3TC_LIB_NUSOAP_DIR', W3TC_LIB_DIR . '/Nusoap');
|
26 |
define('W3TC_PLUGINS_DIR', W3TC_DIR . '/plugins');
|
27 |
-
define('W3TC_DB_DIR', W3TC_DIR . '/db');
|
28 |
define('W3TC_INSTALL_DIR', W3TC_DIR . '/wp-content');
|
29 |
define('W3TC_INSTALL_MINIFY_DIR', W3TC_INSTALL_DIR . '/w3tc/min');
|
30 |
|
@@ -86,87 +91,12 @@ define('W3TC_ADDIN_FILE_ADVANCED_CACHE', WP_CONTENT_DIR . '/advanced-cache.php')
|
|
86 |
define('W3TC_ADDIN_FILE_DB', WP_CONTENT_DIR . '/db.php');
|
87 |
define('W3TC_ADDIN_FILE_OBJECT_CACHE', WP_CONTENT_DIR . '/object-cache.php');
|
88 |
|
89 |
-
require_once
|
90 |
-
require_once
|
91 |
|
92 |
@ini_set('pcre.backtrack_limit', 4194304);
|
93 |
@ini_set('pcre.recursion_limit', 4194304);
|
94 |
|
95 |
-
/**
|
96 |
-
* Deactivate plugin after activation error
|
97 |
-
*
|
98 |
-
* @return void
|
99 |
-
*/
|
100 |
-
function w3_activation_cleanup() {
|
101 |
-
$active_plugins = (array) get_option('active_plugins');
|
102 |
-
$active_plugins_network = (array) get_site_option('active_sitewide_plugins');
|
103 |
-
|
104 |
-
// workaround for WPMU deactivation bug
|
105 |
-
remove_action('deactivate_' . W3TC_FILE, 'deactivate_sitewide_plugin');
|
106 |
-
|
107 |
-
do_action('deactivate_plugin', W3TC_FILE);
|
108 |
-
|
109 |
-
$key = array_search(W3TC_FILE, $active_plugins);
|
110 |
-
|
111 |
-
if ($key !== false) {
|
112 |
-
array_splice($active_plugins, $key, 1);
|
113 |
-
}
|
114 |
-
|
115 |
-
unset($active_plugins_network[W3TC_FILE]);
|
116 |
-
|
117 |
-
do_action('deactivate_' . W3TC_FILE);
|
118 |
-
do_action('deactivated_plugin', W3TC_FILE);
|
119 |
-
|
120 |
-
update_option('active_plugins', $active_plugins);
|
121 |
-
update_site_option('active_sitewide_plugins', $active_plugins_network);
|
122 |
-
}
|
123 |
-
|
124 |
-
/**
|
125 |
-
* W3 activate error
|
126 |
-
*
|
127 |
-
* @param string $error
|
128 |
-
* @return void
|
129 |
-
*/
|
130 |
-
function w3_activate_error($error) {
|
131 |
-
w3_activation_cleanup();
|
132 |
-
|
133 |
-
include W3TC_DIR . '/inc/error.phtml';
|
134 |
-
exit();
|
135 |
-
}
|
136 |
-
|
137 |
-
/**
|
138 |
-
* W3 writable error
|
139 |
-
*
|
140 |
-
* @param string $path
|
141 |
-
* @return string
|
142 |
-
*/
|
143 |
-
function w3_writable_error($path) {
|
144 |
-
$activate_url = wp_nonce_url('plugins.php?action=activate&plugin=' . W3TC_FILE, 'activate-plugin_' . W3TC_FILE);
|
145 |
-
$reactivate_button = sprintf('<input type="button" value="re-activate plugin" onclick="top.location.href = \'%s\'" />', addslashes($activate_url));
|
146 |
-
|
147 |
-
if (w3_check_open_basedir($path)) {
|
148 |
-
$error = sprintf('<strong>%s</strong> could not be created, please run following command:<br /><strong style="color: #f00;">chmod 777 %s</strong><br />then %s.', $path, (file_exists($path) ? $path : dirname($path)), $reactivate_button);
|
149 |
-
} else {
|
150 |
-
$error = sprintf('<strong>%s</strong> could not be created, <strong>open_basedir</strong> restriction in effect, please check your php.ini settings:<br /><strong style="color: #f00;">open_basedir = "%s"</strong><br />then %s.', $path, ini_get('open_basedir'), $reactivate_button);
|
151 |
-
}
|
152 |
-
|
153 |
-
w3_activate_error($error);
|
154 |
-
}
|
155 |
-
|
156 |
-
/**
|
157 |
-
* W3 Network activation error
|
158 |
-
*
|
159 |
-
* @return void
|
160 |
-
*/
|
161 |
-
function w3_network_activate_error() {
|
162 |
-
w3_activation_cleanup();
|
163 |
-
wp_redirect(plugins_url('inc/network_activation.php', W3TC_FILE));
|
164 |
-
|
165 |
-
echo '<p><strong>W3 Total Cache Error:</strong> plugin cannot be activated network-wide.</p>';
|
166 |
-
echo '<p><a href="javascript:history.back(-1);">Back</a>';
|
167 |
-
exit();
|
168 |
-
}
|
169 |
-
|
170 |
/**
|
171 |
* Returns current microtime
|
172 |
*
|
@@ -178,87 +108,6 @@ function w3_microtime() {
|
|
178 |
return ((double) $usec + (double) $sec);
|
179 |
}
|
180 |
|
181 |
-
/**
|
182 |
-
* Recursive creates directory
|
183 |
-
*
|
184 |
-
* @param string $path
|
185 |
-
* @param integer $mask
|
186 |
-
* @param string $curr_path
|
187 |
-
* @return boolean
|
188 |
-
*/
|
189 |
-
function w3_mkdir($path, $mask = 0777, $curr_path = '') {
|
190 |
-
$path = w3_realpath($path);
|
191 |
-
$path = trim($path, '/');
|
192 |
-
$dirs = explode('/', $path);
|
193 |
-
|
194 |
-
foreach ($dirs as $dir) {
|
195 |
-
if ($dir == '') {
|
196 |
-
return false;
|
197 |
-
}
|
198 |
-
|
199 |
-
$curr_path .= ($curr_path == '' ? '' : '/') . $dir;
|
200 |
-
|
201 |
-
if (!@is_dir($curr_path)) {
|
202 |
-
if (!@mkdir($curr_path, $mask)) {
|
203 |
-
return false;
|
204 |
-
}
|
205 |
-
}
|
206 |
-
}
|
207 |
-
|
208 |
-
return true;
|
209 |
-
}
|
210 |
-
|
211 |
-
/**
|
212 |
-
* Recursive remove dir
|
213 |
-
*
|
214 |
-
* @param string $path
|
215 |
-
* @param array $exclude
|
216 |
-
* @param bool $remove
|
217 |
-
* @return void
|
218 |
-
*/
|
219 |
-
function w3_rmdir($path, $exclude = array(), $remove = true) {
|
220 |
-
$dir = @opendir($path);
|
221 |
-
|
222 |
-
if ($dir) {
|
223 |
-
while (($entry = @readdir($dir)) !== false) {
|
224 |
-
if ($entry == '.' || $entry == '..') {
|
225 |
-
continue;
|
226 |
-
}
|
227 |
-
|
228 |
-
foreach ($exclude as $mask) {
|
229 |
-
if (fnmatch($mask, basename($entry))) {
|
230 |
-
continue 2;
|
231 |
-
}
|
232 |
-
}
|
233 |
-
|
234 |
-
$full_path = $path . DIRECTORY_SEPARATOR . $entry;
|
235 |
-
|
236 |
-
if (@is_dir($full_path)) {
|
237 |
-
w3_rmdir($full_path, $exclude);
|
238 |
-
} else {
|
239 |
-
@unlink($full_path);
|
240 |
-
}
|
241 |
-
}
|
242 |
-
|
243 |
-
@closedir($dir);
|
244 |
-
|
245 |
-
if ($remove) {
|
246 |
-
@rmdir($path);
|
247 |
-
}
|
248 |
-
}
|
249 |
-
}
|
250 |
-
|
251 |
-
/**
|
252 |
-
* Recursive empty dir
|
253 |
-
*
|
254 |
-
* @param string $path
|
255 |
-
* @param array $exclude
|
256 |
-
* @return void
|
257 |
-
*/
|
258 |
-
function w3_emptydir($path, $exclude = array()) {
|
259 |
-
w3_rmdir($path, $exclude, false);
|
260 |
-
}
|
261 |
-
|
262 |
/**
|
263 |
* Check if content is HTML or XML
|
264 |
*
|
@@ -274,7 +123,7 @@ function w3_is_xml($content) {
|
|
274 |
$content = preg_replace('~<!--.*?-->~s', '', $content);
|
275 |
}
|
276 |
|
277 |
-
$content = ltrim($content);
|
278 |
|
279 |
return (stripos($content, '<?xml') === 0 || stripos($content, '<html') === 0 || stripos($content, '<!DOCTYPE') === 0);
|
280 |
}
|
@@ -352,21 +201,6 @@ function w3_is_https() {
|
|
352 |
return false;
|
353 |
}
|
354 |
|
355 |
-
/**
|
356 |
-
* Check if WP permalink directives exists
|
357 |
-
*
|
358 |
-
* @return boolean
|
359 |
-
*/
|
360 |
-
function w3_is_permalink_rules() {
|
361 |
-
if (w3_is_apache() && !w3_is_network()) {
|
362 |
-
$path = w3_get_home_root() . '/.htaccess';
|
363 |
-
|
364 |
-
return (($data = @file_get_contents($path)) && strstr($data, W3TC_MARKER_BEGIN_WORDPRESS) !== false);
|
365 |
-
}
|
366 |
-
|
367 |
-
return true;
|
368 |
-
}
|
369 |
-
|
370 |
/**
|
371 |
* Check if there was database error
|
372 |
*
|
@@ -396,57 +230,40 @@ function w3_is_preview_mode() {
|
|
396 |
}
|
397 |
|
398 |
/**
|
399 |
-
*
|
400 |
*
|
401 |
-
* @param string $file
|
402 |
* @return boolean
|
403 |
*/
|
404 |
-
function
|
405 |
-
$
|
406 |
-
|
407 |
-
$fp = @fopen($file, 'a');
|
408 |
-
|
409 |
-
if ($fp) {
|
410 |
-
fclose($fp);
|
411 |
-
|
412 |
-
if (!$exists) {
|
413 |
-
@unlink($file);
|
414 |
-
}
|
415 |
-
|
416 |
-
return true;
|
417 |
-
}
|
418 |
-
|
419 |
-
return false;
|
420 |
}
|
421 |
|
422 |
/**
|
423 |
-
*
|
424 |
*
|
425 |
-
* @
|
426 |
-
* @return boolean
|
427 |
*/
|
428 |
-
function
|
429 |
-
$
|
430 |
-
|
431 |
-
return w3_is_writable($file);
|
432 |
}
|
433 |
|
434 |
/**
|
435 |
-
* Returns true if server is
|
436 |
*
|
437 |
* @return boolean
|
438 |
*/
|
439 |
-
function
|
440 |
-
return (isset($_SERVER['SERVER_SOFTWARE']) && stristr($_SERVER['SERVER_SOFTWARE'], '
|
441 |
}
|
442 |
|
443 |
/**
|
444 |
-
*
|
445 |
*
|
|
|
446 |
* @return boolean
|
447 |
*/
|
448 |
-
function
|
449 |
-
return (
|
450 |
}
|
451 |
|
452 |
/**
|
@@ -456,7 +273,7 @@ function w3_is_nginx() {
|
|
456 |
* @return bool
|
457 |
*/
|
458 |
function w3_is_cdn_mirror($engine) {
|
459 |
-
return in_array($engine, array('mirror', 'netdna', 'cotendo', 'cf2'));
|
460 |
}
|
461 |
|
462 |
/**
|
@@ -862,6 +679,22 @@ function w3_get_site_path() {
|
|
862 |
return $site_path;
|
863 |
}
|
864 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
865 |
/**
|
866 |
* Returns home path
|
867 |
*
|
@@ -952,126 +785,6 @@ function w3_get_host_id() {
|
|
952 |
return $host_id;
|
953 |
}
|
954 |
|
955 |
-
/**
|
956 |
-
* Returns nginx rules path
|
957 |
-
*
|
958 |
-
* @return string
|
959 |
-
*/
|
960 |
-
function w3_get_nginx_rules_path() {
|
961 |
-
require_once W3TC_LIB_W3_DIR . '/Config.php';
|
962 |
-
$config =& W3_Config::instance();
|
963 |
-
|
964 |
-
$path = $config->get_string('config.path');
|
965 |
-
|
966 |
-
if (!$path) {
|
967 |
-
$path = w3_get_document_root() . '/nginx.conf';
|
968 |
-
}
|
969 |
-
|
970 |
-
return $path;
|
971 |
-
}
|
972 |
-
|
973 |
-
/**
|
974 |
-
* Returns path of pagecache core rules file
|
975 |
-
*
|
976 |
-
* @return string
|
977 |
-
*/
|
978 |
-
function w3_get_pgcache_rules_core_path() {
|
979 |
-
switch (true) {
|
980 |
-
case w3_is_apache():
|
981 |
-
return w3_get_home_root() . '/.htaccess';
|
982 |
-
|
983 |
-
case w3_is_nginx():
|
984 |
-
return w3_get_nginx_rules_path();
|
985 |
-
}
|
986 |
-
|
987 |
-
return false;
|
988 |
-
}
|
989 |
-
|
990 |
-
/**
|
991 |
-
* Returns path of pgcache cache rules file
|
992 |
-
*
|
993 |
-
* @return string
|
994 |
-
*/
|
995 |
-
function w3_get_pgcache_rules_cache_path() {
|
996 |
-
switch (true) {
|
997 |
-
case w3_is_apache():
|
998 |
-
return W3TC_CACHE_FILE_PGCACHE_DIR . '/.htaccess';
|
999 |
-
|
1000 |
-
case w3_is_nginx():
|
1001 |
-
return w3_get_nginx_rules_path();
|
1002 |
-
}
|
1003 |
-
|
1004 |
-
return false;
|
1005 |
-
}
|
1006 |
-
|
1007 |
-
/**
|
1008 |
-
* Returns path of browsercache cache rules file
|
1009 |
-
*
|
1010 |
-
* @return string
|
1011 |
-
*/
|
1012 |
-
function w3_get_browsercache_rules_cache_path() {
|
1013 |
-
switch (true) {
|
1014 |
-
case w3_is_apache():
|
1015 |
-
return w3_get_home_root() . '/.htaccess';
|
1016 |
-
|
1017 |
-
case w3_is_nginx():
|
1018 |
-
return w3_get_nginx_rules_path();
|
1019 |
-
}
|
1020 |
-
|
1021 |
-
return false;
|
1022 |
-
}
|
1023 |
-
|
1024 |
-
/**
|
1025 |
-
* Returns path of browsercache no404wp rules file
|
1026 |
-
*
|
1027 |
-
* @return string
|
1028 |
-
*/
|
1029 |
-
function w3_get_browsercache_rules_no404wp_path() {
|
1030 |
-
switch (true) {
|
1031 |
-
case w3_is_apache():
|
1032 |
-
return w3_get_home_root() . '/.htaccess';
|
1033 |
-
|
1034 |
-
case w3_is_nginx():
|
1035 |
-
return w3_get_nginx_rules_path();
|
1036 |
-
}
|
1037 |
-
|
1038 |
-
return false;
|
1039 |
-
}
|
1040 |
-
|
1041 |
-
/**
|
1042 |
-
* Returns path of minify rules file
|
1043 |
-
*
|
1044 |
-
* @return string
|
1045 |
-
*/
|
1046 |
-
function w3_get_minify_rules_core_path() {
|
1047 |
-
switch (true) {
|
1048 |
-
case w3_is_apache():
|
1049 |
-
return W3TC_CACHE_FILE_MINIFY_DIR . '/.htaccess';
|
1050 |
-
|
1051 |
-
case w3_is_nginx():
|
1052 |
-
return w3_get_nginx_rules_path();
|
1053 |
-
}
|
1054 |
-
|
1055 |
-
return false;
|
1056 |
-
}
|
1057 |
-
|
1058 |
-
/**
|
1059 |
-
* Returns path of minify rules file
|
1060 |
-
*
|
1061 |
-
* @return string
|
1062 |
-
*/
|
1063 |
-
function w3_get_minify_rules_cache_path() {
|
1064 |
-
switch (true) {
|
1065 |
-
case w3_is_apache():
|
1066 |
-
return W3TC_CACHE_FILE_MINIFY_DIR . '/.htaccess';
|
1067 |
-
|
1068 |
-
case w3_is_nginx():
|
1069 |
-
return w3_get_nginx_rules_path();
|
1070 |
-
}
|
1071 |
-
|
1072 |
-
return false;
|
1073 |
-
}
|
1074 |
-
|
1075 |
/**
|
1076 |
* Returns WP config file path
|
1077 |
*
|
@@ -1119,53 +832,13 @@ function w3_get_theme_key_legacy($theme_root, $template, $stylesheet) {
|
|
1119 |
return substr(md5($theme_root . $template . $stylesheet), 0, 6);
|
1120 |
}
|
1121 |
|
1122 |
-
/**
|
1123 |
-
* Returns path of minify rules file
|
1124 |
-
*
|
1125 |
-
* @return string
|
1126 |
-
*/
|
1127 |
-
function w3_get_cdn_rules_path() {
|
1128 |
-
switch (true) {
|
1129 |
-
case w3_is_apache():
|
1130 |
-
return '.htaccess';
|
1131 |
-
|
1132 |
-
case w3_is_nginx():
|
1133 |
-
return 'nginx.conf';
|
1134 |
-
}
|
1135 |
-
|
1136 |
-
return false;
|
1137 |
-
}
|
1138 |
-
|
1139 |
/**
|
1140 |
* Returns true if we can check rules
|
1141 |
*
|
1142 |
* @return bool
|
1143 |
*/
|
1144 |
function w3_can_check_rules() {
|
1145 |
-
return (w3_is_apache() || w3_is_nginx());
|
1146 |
-
}
|
1147 |
-
|
1148 |
-
/**
|
1149 |
-
* Returns true if we can modify rules
|
1150 |
-
*
|
1151 |
-
* @param string $path
|
1152 |
-
* @return boolean
|
1153 |
-
*/
|
1154 |
-
function w3_can_modify_rules($path) {
|
1155 |
-
if (w3_is_network()) {
|
1156 |
-
if (w3_is_apache()) {
|
1157 |
-
switch ($path) {
|
1158 |
-
case w3_get_pgcache_rules_cache_path():
|
1159 |
-
case w3_get_minify_rules_core_path():
|
1160 |
-
case w3_get_minify_rules_cache_path():
|
1161 |
-
return true;
|
1162 |
-
}
|
1163 |
-
}
|
1164 |
-
|
1165 |
-
return false;
|
1166 |
-
}
|
1167 |
-
|
1168 |
-
return true;
|
1169 |
}
|
1170 |
|
1171 |
/**
|
@@ -1175,7 +848,7 @@ function w3_can_modify_rules($path) {
|
|
1175 |
* @return bool
|
1176 |
*/
|
1177 |
function w3_can_cdn_purge($engine) {
|
1178 |
-
return in_array($engine, array('ftp', 's3', 'cf', 'cf2', 'rscf', 'azure', 'netdna', 'cotendo'));
|
1179 |
}
|
1180 |
|
1181 |
/**
|
@@ -1338,393 +1011,32 @@ function w3_realpath($path) {
|
|
1338 |
}
|
1339 |
|
1340 |
/**
|
1341 |
-
* Returns
|
1342 |
-
*
|
1343 |
-
* @param string $path
|
1344 |
* @return string
|
1345 |
*/
|
1346 |
-
function
|
1347 |
-
|
1348 |
-
|
1349 |
-
if ($dirname == '.' || $dirname == '/' || $dirname == '\\') {
|
1350 |
-
$dirname = '';
|
1351 |
-
}
|
1352 |
-
|
1353 |
-
return $dirname;
|
1354 |
}
|
1355 |
|
1356 |
/**
|
1357 |
-
*
|
1358 |
*
|
1359 |
-
* @
|
|
|
|
|
1360 |
*/
|
1361 |
-
function
|
1362 |
-
|
1363 |
-
$open_basedirs = (W3TC_WIN ? preg_split('~[;,]~', $open_basedir_ini) : explode(':', $open_basedir_ini));
|
1364 |
-
$result = array();
|
1365 |
|
1366 |
-
|
1367 |
-
$open_basedir = trim($open_basedir);
|
1368 |
-
if ($open_basedir != '') {
|
1369 |
-
$result[] = w3_realpath($open_basedir);
|
1370 |
-
}
|
1371 |
-
}
|
1372 |
|
1373 |
-
|
|
|
1374 |
}
|
1375 |
|
1376 |
/**
|
1377 |
-
*
|
1378 |
-
*
|
1379 |
-
* @param string $path
|
1380 |
-
* @return boolean
|
1381 |
-
*/
|
1382 |
-
function w3_check_open_basedir($path) {
|
1383 |
-
$path = w3_realpath($path);
|
1384 |
-
$open_basedirs = w3_get_open_basedirs();
|
1385 |
-
|
1386 |
-
if (!count($open_basedirs)) {
|
1387 |
-
return true;
|
1388 |
-
}
|
1389 |
-
|
1390 |
-
foreach ($open_basedirs as $open_basedir) {
|
1391 |
-
if (strstr($path, $open_basedir) !== false) {
|
1392 |
-
return true;
|
1393 |
-
}
|
1394 |
-
}
|
1395 |
-
|
1396 |
-
return false;
|
1397 |
-
}
|
1398 |
-
|
1399 |
-
/**
|
1400 |
-
* Request URL
|
1401 |
-
*
|
1402 |
-
* @param string $method
|
1403 |
-
* @param string $url
|
1404 |
-
* @param string $data
|
1405 |
-
* @param string $auth
|
1406 |
-
* @param boolean $check_status
|
1407 |
-
* @return string
|
1408 |
-
*/
|
1409 |
-
function w3_http_request($method, $url, $data = '', $auth = '', $check_status = true) {
|
1410 |
-
$status = 0;
|
1411 |
-
$method = strtoupper($method);
|
1412 |
-
|
1413 |
-
if (function_exists('curl_init')) {
|
1414 |
-
$ch = curl_init();
|
1415 |
-
|
1416 |
-
curl_setopt($ch, CURLOPT_URL, $url);
|
1417 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
1418 |
-
curl_setopt($ch, CURLOPT_USERAGENT, W3TC_POWERED_BY);
|
1419 |
-
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
1420 |
-
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
|
1421 |
-
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
|
1422 |
-
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
1423 |
-
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
|
1424 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
1425 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
1426 |
-
|
1427 |
-
switch ($method) {
|
1428 |
-
case 'POST':
|
1429 |
-
curl_setopt($ch, CURLOPT_POST, true);
|
1430 |
-
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
1431 |
-
break;
|
1432 |
-
|
1433 |
-
case 'PURGE':
|
1434 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PURGE');
|
1435 |
-
break;
|
1436 |
-
}
|
1437 |
-
|
1438 |
-
if ($auth) {
|
1439 |
-
curl_setopt($ch, CURLOPT_USERPWD, $auth);
|
1440 |
-
}
|
1441 |
-
|
1442 |
-
$contents = curl_exec($ch);
|
1443 |
-
|
1444 |
-
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
1445 |
-
|
1446 |
-
curl_close($ch);
|
1447 |
-
} else {
|
1448 |
-
$parse_url = @parse_url($url);
|
1449 |
-
|
1450 |
-
if ($parse_url && isset($parse_url['host'])) {
|
1451 |
-
$host = $parse_url['host'];
|
1452 |
-
$port = (isset($parse_url['port']) ? (int) $parse_url['port'] : 80);
|
1453 |
-
$path = (!empty($parse_url['path']) ? $parse_url['path'] : '/');
|
1454 |
-
$query = (isset($parse_url['query']) ? $parse_url['query'] : '');
|
1455 |
-
$request_uri = $path . ($query != '' ? '?' . $query : '');
|
1456 |
-
|
1457 |
-
$request_headers_array = array(
|
1458 |
-
sprintf('%s %s HTTP/1.0', $method, $request_uri),
|
1459 |
-
sprintf('Host: %s', $host),
|
1460 |
-
sprintf('User-Agent: %s', W3TC_POWERED_BY),
|
1461 |
-
'Connection: close'
|
1462 |
-
);
|
1463 |
-
|
1464 |
-
if (!empty($data)) {
|
1465 |
-
$request_headers_array[] = sprintf('Content-Length: %d', strlen($data));
|
1466 |
-
}
|
1467 |
-
|
1468 |
-
if (!empty($auth)) {
|
1469 |
-
$request_headers_array[] = sprintf('Authorization: Basic %s', base64_encode($auth));
|
1470 |
-
}
|
1471 |
-
|
1472 |
-
$request_headers = implode("\r\n", $request_headers_array);
|
1473 |
-
$request = $request_headers . "\r\n\r\n" . $data;
|
1474 |
-
$errno = null;
|
1475 |
-
$errstr = null;
|
1476 |
-
|
1477 |
-
$fp = @fsockopen($host, $port, $errno, $errstr, 10);
|
1478 |
-
|
1479 |
-
if (!$fp) {
|
1480 |
-
return false;
|
1481 |
-
}
|
1482 |
-
|
1483 |
-
@stream_set_timeout($fp, 60);
|
1484 |
-
|
1485 |
-
$response = '';
|
1486 |
-
@fputs($fp, $request);
|
1487 |
-
|
1488 |
-
while (!@feof($fp)) {
|
1489 |
-
$response .= @fgets($fp, 4096);
|
1490 |
-
}
|
1491 |
-
|
1492 |
-
@fclose($fp);
|
1493 |
-
|
1494 |
-
list ($response_headers, $contents) = explode("\r\n\r\n", $response, 2);
|
1495 |
-
|
1496 |
-
$matches = null;
|
1497 |
-
|
1498 |
-
if (preg_match('~^HTTP/1.[01] (\d+)~', $response_headers, $matches)) {
|
1499 |
-
$status = (int) $matches[1];
|
1500 |
-
}
|
1501 |
-
}
|
1502 |
-
}
|
1503 |
-
|
1504 |
-
if (!$check_status || $status == 200) {
|
1505 |
-
return $contents;
|
1506 |
-
}
|
1507 |
-
|
1508 |
-
return false;
|
1509 |
-
}
|
1510 |
-
|
1511 |
-
/**
|
1512 |
-
* Download url via GET
|
1513 |
-
*
|
1514 |
-
* @param string $url
|
1515 |
-
* @param string $auth
|
1516 |
-
* $param boolean $check_status
|
1517 |
-
* @param bool $check_status
|
1518 |
-
* @return string
|
1519 |
-
*/
|
1520 |
-
function w3_http_get($url, $auth = '', $check_status = true) {
|
1521 |
-
return w3_http_request('GET', $url, null, $auth, $check_status);
|
1522 |
-
}
|
1523 |
-
|
1524 |
-
/**
|
1525 |
-
* Send POST request to URL
|
1526 |
-
*
|
1527 |
-
* @param string $url
|
1528 |
-
* @param string $data
|
1529 |
-
* @param string $auth
|
1530 |
-
* @param boolean $check_status
|
1531 |
-
* @return string
|
1532 |
-
*/
|
1533 |
-
function w3_http_post($url, $data = '', $auth = '', $check_status = true) {
|
1534 |
-
return w3_http_request('POST', $url, $data, $auth, $check_status);
|
1535 |
-
}
|
1536 |
-
|
1537 |
-
/**
|
1538 |
-
* Send PURGE request to Varnish server
|
1539 |
-
*
|
1540 |
-
* @param string $url
|
1541 |
-
* @param string $auth
|
1542 |
-
* $param boolean $check_status
|
1543 |
-
* @param bool $check_status
|
1544 |
-
* @return string
|
1545 |
-
*/
|
1546 |
-
function w3_http_purge($url, $auth = '', $check_status = true) {
|
1547 |
-
return w3_http_request('PURGE', $url, null, $auth, $check_status);
|
1548 |
-
}
|
1549 |
-
|
1550 |
-
/**
|
1551 |
-
* Returns GMT date
|
1552 |
-
* @param integer $time
|
1553 |
-
* @return string
|
1554 |
-
*/
|
1555 |
-
function w3_http_date($time) {
|
1556 |
-
return gmdate('D, d M Y H:i:s \G\M\T', $time);
|
1557 |
-
}
|
1558 |
-
|
1559 |
-
/**
|
1560 |
-
* Downloads data to a file
|
1561 |
-
*
|
1562 |
-
* @param string $url
|
1563 |
-
* @param string $file
|
1564 |
-
* @return boolean
|
1565 |
-
*/
|
1566 |
-
function w3_download($url, $file) {
|
1567 |
-
if (strpos($url, '//') === 0) {
|
1568 |
-
$url = (w3_is_https() ? 'https:' : 'http:') . $url;
|
1569 |
-
}
|
1570 |
-
|
1571 |
-
$data = w3_http_get($url);
|
1572 |
-
|
1573 |
-
if ($data !== false) {
|
1574 |
-
return @file_put_contents($file, $data);
|
1575 |
-
}
|
1576 |
-
|
1577 |
-
return false;
|
1578 |
-
}
|
1579 |
-
|
1580 |
-
/**
|
1581 |
-
* Returns upload info
|
1582 |
-
*
|
1583 |
-
* @return array
|
1584 |
-
*/
|
1585 |
-
function w3_upload_info() {
|
1586 |
-
static $upload_info = null;
|
1587 |
-
|
1588 |
-
if ($upload_info === null) {
|
1589 |
-
$upload_info = @wp_upload_dir();
|
1590 |
-
|
1591 |
-
if (empty($upload_info['error'])) {
|
1592 |
-
$parse_url = @parse_url($upload_info['baseurl']);
|
1593 |
-
|
1594 |
-
if ($parse_url) {
|
1595 |
-
$baseurlpath = (!empty($parse_url['path']) ? trim($parse_url['path'], '/') : '');
|
1596 |
-
} else {
|
1597 |
-
$baseurlpath = 'wp-content/uploads';
|
1598 |
-
}
|
1599 |
-
|
1600 |
-
$upload_info['baseurlpath'] = '/' . $baseurlpath . '/';
|
1601 |
-
} else {
|
1602 |
-
$upload_info = false;
|
1603 |
-
}
|
1604 |
-
}
|
1605 |
-
|
1606 |
-
return $upload_info;
|
1607 |
-
}
|
1608 |
-
|
1609 |
-
/**
|
1610 |
-
* Formats URL
|
1611 |
-
*
|
1612 |
-
* @param string $url
|
1613 |
-
* @param array $params
|
1614 |
-
* @param boolean $skip_empty
|
1615 |
-
* @param string $separator
|
1616 |
-
* @return string
|
1617 |
-
*/
|
1618 |
-
function w3_url_format($url = '', $params = array(), $skip_empty = false, $separator = '&') {
|
1619 |
-
if ($url != '') {
|
1620 |
-
$parse_url = @parse_url($url);
|
1621 |
-
$url = '';
|
1622 |
-
|
1623 |
-
if (!empty($parse_url['scheme'])) {
|
1624 |
-
$url .= $parse_url['scheme'] . '://';
|
1625 |
-
|
1626 |
-
if (!empty($parse_url['user'])) {
|
1627 |
-
$url .= $parse_url['user'];
|
1628 |
-
|
1629 |
-
if (!empty($parse_url['pass'])) {
|
1630 |
-
$url .= ':' . $parse_url['pass'];
|
1631 |
-
}
|
1632 |
-
}
|
1633 |
-
|
1634 |
-
if (!empty($parse_url['host'])) {
|
1635 |
-
$url .= $parse_url['host'];
|
1636 |
-
}
|
1637 |
-
|
1638 |
-
if (!empty($parse_url['port']) && $parse_url['port'] != 80) {
|
1639 |
-
$url .= ':' . (int) $parse_url['port'];
|
1640 |
-
}
|
1641 |
-
}
|
1642 |
-
|
1643 |
-
if (!empty($parse_url['path'])) {
|
1644 |
-
$url .= $parse_url['path'];
|
1645 |
-
}
|
1646 |
-
|
1647 |
-
if (!empty($parse_url['query'])) {
|
1648 |
-
$old_params = array();
|
1649 |
-
parse_str($parse_url['query'], $old_params);
|
1650 |
-
|
1651 |
-
$params = array_merge($old_params, $params);
|
1652 |
-
}
|
1653 |
-
|
1654 |
-
$query = w3_url_query($params);
|
1655 |
-
|
1656 |
-
if ($query != '') {
|
1657 |
-
$url .= '?' . $query;
|
1658 |
-
}
|
1659 |
-
|
1660 |
-
if (!empty($parse_url['fragment'])) {
|
1661 |
-
$url .= '#' . $parse_url['fragment'];
|
1662 |
-
}
|
1663 |
-
} else {
|
1664 |
-
$query = w3_url_query($params, $skip_empty, $separator);
|
1665 |
-
|
1666 |
-
if ($query != '') {
|
1667 |
-
$url = '?' . $query;
|
1668 |
-
}
|
1669 |
-
}
|
1670 |
-
|
1671 |
-
return $url;
|
1672 |
-
}
|
1673 |
-
|
1674 |
-
/**
|
1675 |
-
* Formats query string
|
1676 |
-
*
|
1677 |
-
* @param array $params
|
1678 |
-
* @param boolean $skip_empty
|
1679 |
-
* @param string $separator
|
1680 |
-
* @return string
|
1681 |
-
*/
|
1682 |
-
function w3_url_query($params = array(), $skip_empty = false, $separator = '&') {
|
1683 |
-
$str = '';
|
1684 |
-
static $stack = array();
|
1685 |
-
|
1686 |
-
foreach ((array) $params as $key => $value) {
|
1687 |
-
if ($skip_empty === true && empty($value)) {
|
1688 |
-
continue;
|
1689 |
-
}
|
1690 |
-
|
1691 |
-
array_push($stack, $key);
|
1692 |
-
|
1693 |
-
if (is_array($value)) {
|
1694 |
-
if (count($value)) {
|
1695 |
-
$str .= ($str != '' ? '&' : '') . w3_url_query($value, $skip_empty, $key);
|
1696 |
-
}
|
1697 |
-
} else {
|
1698 |
-
$name = '';
|
1699 |
-
foreach ($stack as $key) {
|
1700 |
-
$name .= ($name != '' ? '[' . $key . ']' : $key);
|
1701 |
-
}
|
1702 |
-
$str .= ($str != '' ? $separator : '') . $name . '=' . rawurlencode($value);
|
1703 |
-
}
|
1704 |
-
|
1705 |
-
array_pop($stack);
|
1706 |
-
}
|
1707 |
-
|
1708 |
-
return $str;
|
1709 |
-
}
|
1710 |
-
|
1711 |
-
|
1712 |
-
/**
|
1713 |
-
* Redirects to URL
|
1714 |
-
*
|
1715 |
-
* @param string $url
|
1716 |
-
* @param array $params
|
1717 |
-
* @return string
|
1718 |
-
*/
|
1719 |
-
function w3_redirect($url = '', $params = array()) {
|
1720 |
-
$url = w3_url_format($url, $params);
|
1721 |
-
|
1722 |
-
@header('Location: ' . $url);
|
1723 |
-
exit();
|
1724 |
-
}
|
1725 |
-
|
1726 |
-
/**
|
1727 |
-
* Returns caching engine name
|
1728 |
*
|
1729 |
* @param $engine
|
1730 |
* @return string
|
@@ -1752,23 +1064,11 @@ function w3_get_engine_name($engine) {
|
|
1752 |
break;
|
1753 |
|
1754 |
case 'file':
|
1755 |
-
$engine_name = 'disk';
|
1756 |
break;
|
1757 |
|
1758 |
case 'file_generic':
|
1759 |
-
$engine_name = 'disk
|
1760 |
-
break;
|
1761 |
-
|
1762 |
-
case 'mirror':
|
1763 |
-
$engine_name = 'mirror';
|
1764 |
-
break;
|
1765 |
-
|
1766 |
-
case 'netdna':
|
1767 |
-
$engine_name = 'netdna / maxcdn';
|
1768 |
-
break;
|
1769 |
-
|
1770 |
-
case 'cotendo':
|
1771 |
-
$engine_name = 'cotendo';
|
1772 |
break;
|
1773 |
|
1774 |
case 'ftp':
|
@@ -1795,6 +1095,22 @@ function w3_get_engine_name($engine) {
|
|
1795 |
$engine_name = 'microsoft azure storage';
|
1796 |
break;
|
1797 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1798 |
default:
|
1799 |
$engine_name = 'n/a';
|
1800 |
break;
|
@@ -1835,79 +1151,6 @@ function w3_to_boolean($value) {
|
|
1835 |
return (boolean) $value;
|
1836 |
}
|
1837 |
|
1838 |
-
/**
|
1839 |
-
* Returns file mime type
|
1840 |
-
*
|
1841 |
-
* @param string $file
|
1842 |
-
* @return string
|
1843 |
-
*/
|
1844 |
-
function w3_get_mime_type($file) {
|
1845 |
-
static $cache = array();
|
1846 |
-
|
1847 |
-
if (!isset($cache[$file])) {
|
1848 |
-
$mime_type = false;
|
1849 |
-
|
1850 |
-
/**
|
1851 |
-
* Try to detect by extension (fast)
|
1852 |
-
*/
|
1853 |
-
$mime_types = include W3TC_DIR . '/inc/mime/all.php';
|
1854 |
-
|
1855 |
-
foreach ($mime_types as $extension => $type) {
|
1856 |
-
if (preg_match('~\.(' . $extension . ')$~i', $file)) {
|
1857 |
-
$mime_type = $type;
|
1858 |
-
break;
|
1859 |
-
}
|
1860 |
-
}
|
1861 |
-
|
1862 |
-
/**
|
1863 |
-
* Try to detect using file info function
|
1864 |
-
*/
|
1865 |
-
if (!$mime_type && function_exists('finfo_open')) {
|
1866 |
-
$finfo = @finfo_open(FILEINFO_MIME);
|
1867 |
-
|
1868 |
-
if (!$finfo) {
|
1869 |
-
$finfo = @finfo_open(FILEINFO_MIME);
|
1870 |
-
}
|
1871 |
-
|
1872 |
-
if ($finfo) {
|
1873 |
-
$mime_type = @finfo_file($finfo, $file);
|
1874 |
-
|
1875 |
-
if ($mime_type) {
|
1876 |
-
$extra_mime_type_info = strpos($mime_type, "; ");
|
1877 |
-
|
1878 |
-
if ($extra_mime_type_info) {
|
1879 |
-
$mime_type = substr($mime_type, 0, $extra_mime_type_info);
|
1880 |
-
}
|
1881 |
-
|
1882 |
-
if ($mime_type == 'application/octet-stream') {
|
1883 |
-
$mime_type = false;
|
1884 |
-
}
|
1885 |
-
}
|
1886 |
-
|
1887 |
-
@finfo_close($finfo);
|
1888 |
-
}
|
1889 |
-
}
|
1890 |
-
|
1891 |
-
/**
|
1892 |
-
* Try to detect using mime type function
|
1893 |
-
*/
|
1894 |
-
if (!$mime_type && function_exists('mime_content_type')) {
|
1895 |
-
$mime_type = @mime_content_type($file);
|
1896 |
-
}
|
1897 |
-
|
1898 |
-
/**
|
1899 |
-
* If detection failed use default mime type
|
1900 |
-
*/
|
1901 |
-
if (!$mime_type) {
|
1902 |
-
$mime_type = 'application/octet-stream';
|
1903 |
-
}
|
1904 |
-
|
1905 |
-
$cache[$file] = $mime_type;
|
1906 |
-
}
|
1907 |
-
|
1908 |
-
return $cache[$file];
|
1909 |
-
}
|
1910 |
-
|
1911 |
/**
|
1912 |
* Quotes regular expression string
|
1913 |
*
|
@@ -1949,161 +1192,37 @@ function w3_stripslashes($var) {
|
|
1949 |
return $var;
|
1950 |
}
|
1951 |
|
1952 |
-
if (!function_exists('file_put_contents')) {
|
1953 |
-
if (!defined('FILE_APPEND')) {
|
1954 |
-
define('FILE_APPEND', 8);
|
1955 |
-
}
|
1956 |
-
|
1957 |
-
/**
|
1958 |
-
* Puts contents to the file
|
1959 |
-
*
|
1960 |
-
* @param string $filename
|
1961 |
-
* @param string $data
|
1962 |
-
* @param integer $flags
|
1963 |
-
* @return boolean
|
1964 |
-
*/
|
1965 |
-
function file_put_contents($filename, $data, $flags = 0) {
|
1966 |
-
$fp = fopen($filename, ($flags & FILE_APPEND ? 'a' : 'w'));
|
1967 |
-
|
1968 |
-
if ($fp) {
|
1969 |
-
fputs($fp, $data);
|
1970 |
-
fclose($fp);
|
1971 |
-
|
1972 |
-
return true;
|
1973 |
-
}
|
1974 |
-
|
1975 |
-
return false;
|
1976 |
-
}
|
1977 |
-
}
|
1978 |
-
|
1979 |
/**
|
1980 |
-
*
|
1981 |
-
*
|
1982 |
-
* @param string $rules
|
1983 |
-
* @return string
|
1984 |
-
*/
|
1985 |
-
function w3_trim_rules($rules) {
|
1986 |
-
$rules = trim($rules);
|
1987 |
-
|
1988 |
-
if ($rules != '') {
|
1989 |
-
$rules .= "\n";
|
1990 |
-
}
|
1991 |
-
|
1992 |
-
return $rules;
|
1993 |
-
}
|
1994 |
-
|
1995 |
-
/**
|
1996 |
-
* Cleanup rewrite rules
|
1997 |
-
*
|
1998 |
-
* @param string $rules
|
1999 |
-
* @return string
|
2000 |
-
*/
|
2001 |
-
function w3_clean_rules($rules) {
|
2002 |
-
$rules = preg_replace('~[\r\n]+~', "\n", $rules);
|
2003 |
-
$rules = preg_replace('~^\s+~m', '', $rules);
|
2004 |
-
$rules = w3_trim_rules($rules);
|
2005 |
-
|
2006 |
-
return $rules;
|
2007 |
-
}
|
2008 |
-
|
2009 |
-
/**
|
2010 |
-
* Erases text from start to end
|
2011 |
-
*
|
2012 |
-
* @param string $rules
|
2013 |
-
* @param string $start
|
2014 |
-
* @param string $end
|
2015 |
-
* @return string
|
2016 |
-
*/
|
2017 |
-
function w3_erase_rules($rules, $start, $end) {
|
2018 |
-
$rules = preg_replace('~' . w3_preg_quote($start) . "\n.*?" . w3_preg_quote($end) . "\n*~s", '', $rules);
|
2019 |
-
$rules = w3_trim_rules($rules);
|
2020 |
-
|
2021 |
-
return $rules;
|
2022 |
-
}
|
2023 |
-
|
2024 |
-
/**
|
2025 |
-
* Check if rules exist
|
2026 |
-
*
|
2027 |
-
* @param string $rules
|
2028 |
-
* @param string $start
|
2029 |
-
* @param string $end
|
2030 |
-
* @return int
|
2031 |
-
*/
|
2032 |
-
function w3_has_rules($rules, $start, $end) {
|
2033 |
-
return preg_match('~' . w3_preg_quote($start) . "\n.*?" . w3_preg_quote($end) . "\n*~s", $rules);
|
2034 |
-
}
|
2035 |
-
|
2036 |
-
/**
|
2037 |
-
* Extracts JS files from content
|
2038 |
*
|
2039 |
-
* @param string $
|
2040 |
-
* @return
|
2041 |
*/
|
2042 |
-
function
|
2043 |
-
$
|
2044 |
-
|
2045 |
-
|
2046 |
-
$content = preg_replace('~<!--.*?-->~s', '', $content);
|
2047 |
-
|
2048 |
-
if (preg_match_all('~<script\s+[^<>]*src=["\']?([^"\']+)["\']?[^<>]*>\s*</script>~is', $content, $matches)) {
|
2049 |
-
$files = $matches[1];
|
2050 |
}
|
2051 |
|
2052 |
-
|
2053 |
-
|
2054 |
-
return $files;
|
2055 |
}
|
2056 |
|
2057 |
/**
|
2058 |
-
*
|
2059 |
*
|
2060 |
-
* @param string $
|
2061 |
-
* @return
|
2062 |
*/
|
2063 |
-
function
|
2064 |
-
$
|
2065 |
-
$files = array();
|
2066 |
-
|
2067 |
-
$content = preg_replace('~<!--.*?-->~s', '', $content);
|
2068 |
-
|
2069 |
-
if (preg_match_all('~<link\s+([^>]+)/?>(.*</link>)?~Uis', $content, $matches, PREG_SET_ORDER)) {
|
2070 |
-
foreach ($matches as $match) {
|
2071 |
-
$attrs = array();
|
2072 |
-
$attr_matches = null;
|
2073 |
-
|
2074 |
-
if (preg_match_all('~(\w+)=["\']([^"\']*)["\']~', $match[1], $attr_matches, PREG_SET_ORDER)) {
|
2075 |
-
foreach ($attr_matches as $attr_match) {
|
2076 |
-
$attrs[$attr_match[1]] = trim($attr_match[2]);
|
2077 |
-
}
|
2078 |
-
}
|
2079 |
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
}
|
2085 |
|
2086 |
-
|
2087 |
-
|
2088 |
-
}
|
2089 |
-
|
2090 |
-
$files = array_values(array_unique($files));
|
2091 |
-
|
2092 |
-
return $files;
|
2093 |
-
}
|
2094 |
-
|
2095 |
-
/**
|
2096 |
-
* Escapes HTML comment
|
2097 |
-
*
|
2098 |
-
* @param string $comment
|
2099 |
-
* @return mixed
|
2100 |
-
*/
|
2101 |
-
function w3_escape_comment($comment) {
|
2102 |
-
while (strstr($comment, '--') !== false) {
|
2103 |
-
$comment = str_replace('--', '- -', $comment);
|
2104 |
-
}
|
2105 |
-
|
2106 |
-
return $comment;
|
2107 |
}
|
2108 |
|
2109 |
/**
|
1 |
<?php
|
2 |
|
3 |
+
if (!defined('ABSPATH')) {
|
4 |
+
die();
|
5 |
+
}
|
6 |
+
|
7 |
+
define('W3TC', true);
|
8 |
+
define('W3TC_VERSION', '0.9.2.4');
|
9 |
define('W3TC_POWERED_BY', 'W3 Total Cache/' . W3TC_VERSION);
|
10 |
define('W3TC_EMAIL', 'w3tc@w3-edge.com');
|
11 |
define('W3TC_PAYPAL_URL', 'https://www.paypal.com/cgi-bin/webscr');
|
21 |
|
22 |
defined('W3TC_DIR') || define('W3TC_DIR', realpath(dirname(__FILE__) . '/..'));
|
23 |
define('W3TC_FILE', 'w3-total-cache/w3-total-cache.php');
|
24 |
+
define('W3TC_INC_DIR', W3TC_DIR . '/inc');
|
25 |
define('W3TC_LIB_DIR', W3TC_DIR . '/lib');
|
26 |
define('W3TC_LIB_W3_DIR', W3TC_LIB_DIR . '/W3');
|
27 |
define('W3TC_LIB_MINIFY_DIR', W3TC_LIB_DIR . '/Minify');
|
30 |
define('W3TC_LIB_MICROSOFT_DIR', W3TC_LIB_DIR . '/Microsoft');
|
31 |
define('W3TC_LIB_NUSOAP_DIR', W3TC_LIB_DIR . '/Nusoap');
|
32 |
define('W3TC_PLUGINS_DIR', W3TC_DIR . '/plugins');
|
|
|
33 |
define('W3TC_INSTALL_DIR', W3TC_DIR . '/wp-content');
|
34 |
define('W3TC_INSTALL_MINIFY_DIR', W3TC_INSTALL_DIR . '/w3tc/min');
|
35 |
|
91 |
define('W3TC_ADDIN_FILE_DB', WP_CONTENT_DIR . '/db.php');
|
92 |
define('W3TC_ADDIN_FILE_OBJECT_CACHE', WP_CONTENT_DIR . '/object-cache.php');
|
93 |
|
94 |
+
require_once W3TC_INC_DIR . '/functions/compat.php';
|
95 |
+
require_once W3TC_INC_DIR . '/functions/plugin.php';
|
96 |
|
97 |
@ini_set('pcre.backtrack_limit', 4194304);
|
98 |
@ini_set('pcre.recursion_limit', 4194304);
|
99 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
/**
|
101 |
* Returns current microtime
|
102 |
*
|
108 |
return ((double) $usec + (double) $sec);
|
109 |
}
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
/**
|
112 |
* Check if content is HTML or XML
|
113 |
*
|
123 |
$content = preg_replace('~<!--.*?-->~s', '', $content);
|
124 |
}
|
125 |
|
126 |
+
$content = ltrim($content, "\x00\x09\x0A\x0D\x20\xBB\xBF\xEF");
|
127 |
|
128 |
return (stripos($content, '<?xml') === 0 || stripos($content, '<html') === 0 || stripos($content, '<!DOCTYPE') === 0);
|
129 |
}
|
201 |
return false;
|
202 |
}
|
203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
/**
|
205 |
* Check if there was database error
|
206 |
*
|
230 |
}
|
231 |
|
232 |
/**
|
233 |
+
* Returns true if server is Apache
|
234 |
*
|
|
|
235 |
* @return boolean
|
236 |
*/
|
237 |
+
function w3_is_apache() {
|
238 |
+
return (isset($_SERVER['SERVER_SOFTWARE']) && stristr($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
239 |
}
|
240 |
|
241 |
/**
|
242 |
+
* Check whether server is LiteSpeed
|
243 |
*
|
244 |
+
* @return bool
|
|
|
245 |
*/
|
246 |
+
function w3_is_litespeed() {
|
247 |
+
return (isset($_SERVER['SERVER_SOFTWARE']) && stristr($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
|
|
|
|
|
248 |
}
|
249 |
|
250 |
/**
|
251 |
+
* Returns true if server is nginx
|
252 |
*
|
253 |
* @return boolean
|
254 |
*/
|
255 |
+
function w3_is_nginx() {
|
256 |
+
return (isset($_SERVER['SERVER_SOFTWARE']) && stristr($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);
|
257 |
}
|
258 |
|
259 |
/**
|
260 |
+
* Check whether $engine is correct CDN engine
|
261 |
*
|
262 |
+
* @param string $engine
|
263 |
* @return boolean
|
264 |
*/
|
265 |
+
function w3_is_cdn_engine($engine) {
|
266 |
+
return in_array($engine, array('ftp', 's3', 'cf', 'cf2', 'rscf', 'azure', 'mirror', 'netdna', 'cotendo', 'edgecast'));
|
267 |
}
|
268 |
|
269 |
/**
|
273 |
* @return bool
|
274 |
*/
|
275 |
function w3_is_cdn_mirror($engine) {
|
276 |
+
return in_array($engine, array('mirror', 'netdna', 'cotendo', 'cf2', 'edgecast'));
|
277 |
}
|
278 |
|
279 |
/**
|
679 |
return $site_path;
|
680 |
}
|
681 |
|
682 |
+
/**
|
683 |
+
* Returns home domain
|
684 |
+
*
|
685 |
+
* @return string
|
686 |
+
*/
|
687 |
+
function w3_get_home_domain() {
|
688 |
+
$home_url = w3_get_home_url();
|
689 |
+
$parse_url = @parse_url($home_url);
|
690 |
+
|
691 |
+
if ($parse_url && isset($parse_url['host'])) {
|
692 |
+
return $parse_url['host'];
|
693 |
+
}
|
694 |
+
|
695 |
+
return w3_get_host();
|
696 |
+
}
|
697 |
+
|
698 |
/**
|
699 |
* Returns home path
|
700 |
*
|
785 |
return $host_id;
|
786 |
}
|
787 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
788 |
/**
|
789 |
* Returns WP config file path
|
790 |
*
|
832 |
return substr(md5($theme_root . $template . $stylesheet), 0, 6);
|
833 |
}
|
834 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
835 |
/**
|
836 |
* Returns true if we can check rules
|
837 |
*
|
838 |
* @return bool
|
839 |
*/
|
840 |
function w3_can_check_rules() {
|
841 |
+
return (w3_is_apache() || w3_is_litespeed() || w3_is_nginx());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
842 |
}
|
843 |
|
844 |
/**
|
848 |
* @return bool
|
849 |
*/
|
850 |
function w3_can_cdn_purge($engine) {
|
851 |
+
return in_array($engine, array('ftp', 's3', 'cf', 'cf2', 'rscf', 'azure', 'netdna', 'cotendo', 'edgecast'));
|
852 |
}
|
853 |
|
854 |
/**
|
1011 |
}
|
1012 |
|
1013 |
/**
|
1014 |
+
* Returns GMT date
|
1015 |
+
* @param integer $time
|
|
|
1016 |
* @return string
|
1017 |
*/
|
1018 |
+
function w3_http_date($time) {
|
1019 |
+
return gmdate('D, d M Y H:i:s \G\M\T', $time);
|
|
|
|
|
|
|
|
|
|
|
|
|
1020 |
}
|
1021 |
|
1022 |
/**
|
1023 |
+
* Redirects to URL
|
1024 |
*
|
1025 |
+
* @param string $url
|
1026 |
+
* @param array $params
|
1027 |
+
* @return string
|
1028 |
*/
|
1029 |
+
function w3_redirect($url = '', $params = array()) {
|
1030 |
+
require_once W3TC_INC_DIR . '/functions/url.php';
|
|
|
|
|
1031 |
|
1032 |
+
$url = w3_url_format($url, $params);
|
|
|
|
|
|
|
|
|
|
|
1033 |
|
1034 |
+
@header('Location: ' . $url);
|
1035 |
+
exit();
|
1036 |
}
|
1037 |
|
1038 |
/**
|
1039 |
+
* Returns caching engine name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1040 |
*
|
1041 |
* @param $engine
|
1042 |
* @return string
|
1064 |
break;
|
1065 |
|
1066 |
case 'file':
|
1067 |
+
$engine_name = 'disk: basic';
|
1068 |
break;
|
1069 |
|
1070 |
case 'file_generic':
|
1071 |
+
$engine_name = 'disk: enhanced';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1072 |
break;
|
1073 |
|
1074 |
case 'ftp':
|
1095 |
$engine_name = 'microsoft azure storage';
|
1096 |
break;
|
1097 |
|
1098 |
+
case 'mirror':
|
1099 |
+
$engine_name = 'mirror';
|
1100 |
+
break;
|
1101 |
+
|
1102 |
+
case 'netdna':
|
1103 |
+
$engine_name = 'netdna / maxcdn';
|
1104 |
+
break;
|
1105 |
+
|
1106 |
+
case 'cotendo':
|
1107 |
+
$engine_name = 'cotendo';
|
1108 |
+
break;
|
1109 |
+
|
1110 |
+
case 'edgecast':
|
1111 |
+
$engine_name = 'media template procdn / edgecast';
|
1112 |
+
break;
|
1113 |
+
|
1114 |
default:
|
1115 |
$engine_name = 'n/a';
|
1116 |
break;
|
1151 |
return (boolean) $value;
|
1152 |
}
|
1153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1154 |
/**
|
1155 |
* Quotes regular expression string
|
1156 |
*
|
1192 |
return $var;
|
1193 |
}
|
1194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1195 |
/**
|
1196 |
+
* Escapes HTML comment
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1197 |
*
|
1198 |
+
* @param string $comment
|
1199 |
+
* @return mixed
|
1200 |
*/
|
1201 |
+
function w3_escape_comment($comment) {
|
1202 |
+
while (strstr($comment, '--') !== false) {
|
1203 |
+
$comment = str_replace('--', '- -', $comment);
|
|
|
|
|
|
|
|
|
|
|
1204 |
}
|
1205 |
|
1206 |
+
return $comment;
|
|
|
|
|
1207 |
}
|
1208 |
|
1209 |
/**
|
1210 |
+
* Returns instance of singleton class
|
1211 |
*
|
1212 |
+
* @param string $class
|
1213 |
+
* @return object
|
1214 |
*/
|
1215 |
+
function &w3_instance($class) {
|
1216 |
+
static $instances = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1217 |
|
1218 |
+
if (!isset($instances[$class])) {
|
1219 |
+
require_once W3TC_LIB_W3_DIR . '/' .
|
1220 |
+
str_replace('_', '/', substr($class, 3)) . '.php';
|
1221 |
+
@$instances[$class] = & new $class();
|
1222 |
}
|
1223 |
|
1224 |
+
$v = $instances[$class]; // Don't return reference
|
1225 |
+
return $v;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1226 |
}
|
1227 |
|
1228 |
/**
|
inc/email/index.html
ADDED
File without changes
|
inc/email/minify_error_notification.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<html>
|
2 |
+
<head></head>
|
3 |
+
<body>
|
4 |
+
<p>Unfortunately an error occurred while creating the minify cache. Please check your settings to ensure your site is working as intended.</p>
|
5 |
+
<p>Thanks for using W3 Total Cache.</p>
|
6 |
+
</body>
|
7 |
+
</html>
|
inc/email/{support_request.phtml → support_request.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<html>
|
2 |
<head></head>
|
3 |
<body>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<html>
|
3 |
<head></head>
|
4 |
<body>
|
inc/{error.phtml → error.php}
RENAMED
@@ -1,7 +1,8 @@
|
|
|
|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2 |
<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
|
3 |
<head>
|
4 |
-
<link rel="stylesheet" type="text/css" href="<?php echo plugins_url('
|
5 |
<title>Error</title>
|
6 |
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
|
7 |
</head>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3 |
<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
|
4 |
<head>
|
5 |
+
<link rel="stylesheet" type="text/css" href="<?php echo plugins_url('pub/css/error.css?ver=' . W3TC_VERSION, W3TC_FILE); ?>" />
|
6 |
<title>Error</title>
|
7 |
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
|
8 |
</head>
|
inc/functions/activation.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Deactivate plugin after activation error
|
5 |
+
*
|
6 |
+
* @return void
|
7 |
+
*/
|
8 |
+
function w3_activation_cleanup() {
|
9 |
+
$active_plugins = (array) get_option('active_plugins');
|
10 |
+
$active_plugins_network = (array) get_site_option('active_sitewide_plugins');
|
11 |
+
|
12 |
+
// workaround for WPMU deactivation bug
|
13 |
+
remove_action('deactivate_' . W3TC_FILE, 'deactivate_sitewide_plugin');
|
14 |
+
|
15 |
+
do_action('deactivate_plugin', W3TC_FILE);
|
16 |
+
|
17 |
+
$key = array_search(W3TC_FILE, $active_plugins);
|
18 |
+
|
19 |
+
if ($key !== false) {
|
20 |
+
array_splice($active_plugins, $key, 1);
|
21 |
+
}
|
22 |
+
|
23 |
+
unset($active_plugins_network[W3TC_FILE]);
|
24 |
+
|
25 |
+
do_action('deactivate_' . W3TC_FILE);
|
26 |
+
do_action('deactivated_plugin', W3TC_FILE);
|
27 |
+
|
28 |
+
update_option('active_plugins', $active_plugins);
|
29 |
+
update_site_option('active_sitewide_plugins', $active_plugins_network);
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* W3 activate error
|
34 |
+
*
|
35 |
+
* @param string $error
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
function w3_activate_error($error) {
|
39 |
+
w3_activation_cleanup();
|
40 |
+
|
41 |
+
include W3TC_INC_DIR . '/error.php';
|
42 |
+
exit();
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* W3 writable error
|
47 |
+
*
|
48 |
+
* @param string $path
|
49 |
+
* @return string
|
50 |
+
*/
|
51 |
+
function w3_writable_error($path) {
|
52 |
+
$reactivate_url = wp_nonce_url('plugins.php?action=activate&plugin=' . W3TC_FILE, 'activate-plugin_' . W3TC_FILE);
|
53 |
+
$reactivate_button = sprintf('<input type="button" value="re-activate plugin" onclick="top.location.href = \'%s\'" />', addslashes($reactivate_url));
|
54 |
+
|
55 |
+
require_once W3TC_INC_DIR . '/functions/file.php';
|
56 |
+
|
57 |
+
if (w3_check_open_basedir($path)) {
|
58 |
+
$error = sprintf('<strong>%s</strong> could not be created, please run following command:<br /><strong style="color: #f00;">chmod 777 %s</strong><br />then %s.', $path, (file_exists($path) ? $path : dirname($path)), $reactivate_button);
|
59 |
+
} else {
|
60 |
+
$error = sprintf('<strong>%s</strong> could not be created, <strong>open_basedir</strong> restriction in effect, please check your php.ini settings:<br /><strong style="color: #f00;">open_basedir = "%s"</strong><br />then %s.', $path, ini_get('open_basedir'), $reactivate_button);
|
61 |
+
}
|
62 |
+
|
63 |
+
w3_activate_error($error);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* W3 Network activation error
|
68 |
+
*
|
69 |
+
* @return void
|
70 |
+
*/
|
71 |
+
function w3_network_activate_error() {
|
72 |
+
w3_activation_cleanup();
|
73 |
+
wp_redirect(plugins_url('pub/network_activation.php', W3TC_FILE));
|
74 |
+
|
75 |
+
echo '<p><strong>W3 Total Cache Error:</strong> plugin cannot be activated network-wide.</p>';
|
76 |
+
echo '<p><a href="javascript:history.back(-1);">Back</a>';
|
77 |
+
exit();
|
78 |
+
}
|
inc/{compat.php → functions/compat.php}
RENAMED
@@ -1,5 +1,24 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
if (!function_exists('json_encode')) {
|
4 |
function json_encode($string) {
|
5 |
global $json;
|
1 |
<?php
|
2 |
|
3 |
+
if (!function_exists('file_put_contents')) {
|
4 |
+
if (!defined('FILE_APPEND')) {
|
5 |
+
define('FILE_APPEND', 8);
|
6 |
+
}
|
7 |
+
|
8 |
+
function file_put_contents($filename, $data, $flags = 0) {
|
9 |
+
$fp = fopen($filename, ($flags & FILE_APPEND ? 'a' : 'w'));
|
10 |
+
|
11 |
+
if ($fp) {
|
12 |
+
fputs($fp, $data);
|
13 |
+
fclose($fp);
|
14 |
+
|
15 |
+
return true;
|
16 |
+
}
|
17 |
+
|
18 |
+
return false;
|
19 |
+
}
|
20 |
+
}
|
21 |
+
|
22 |
if (!function_exists('json_encode')) {
|
23 |
function json_encode($string) {
|
24 |
global $json;
|
inc/functions/extract.php
ADDED
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Extracts JS files from content
|
5 |
+
*
|
6 |
+
* @param string $content
|
7 |
+
* @return array
|
8 |
+
*/
|
9 |
+
function w3_extract_js($content) {
|
10 |
+
$matches = null;
|
11 |
+
$files = array();
|
12 |
+
|
13 |
+
$content = preg_replace('~<!--.*?-->~s', '', $content);
|
14 |
+
|
15 |
+
if (preg_match_all('~<script\s+[^<>]*src=["\']?([^"\']+)["\']?[^<>]*>\s*</script>~is', $content, $matches)) {
|
16 |
+
$files = $matches[1];
|
17 |
+
}
|
18 |
+
|
19 |
+
$files = array_values(array_unique($files));
|
20 |
+
|
21 |
+
return $files;
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Extract CSS files from content
|
26 |
+
*
|
27 |
+
* @param string $content
|
28 |
+
* @return array
|
29 |
+
*/
|
30 |
+
function w3_extract_css($content) {
|
31 |
+
$matches = null;
|
32 |
+
$files = array();
|
33 |
+
|
34 |
+
$content = preg_replace('~<!--.*?-->~s', '', $content);
|
35 |
+
|
36 |
+
if (preg_match_all('~<link\s+([^>]+)/?>(.*</link>)?~Uis', $content, $matches, PREG_SET_ORDER)) {
|
37 |
+
foreach ($matches as $match) {
|
38 |
+
$attrs = array();
|
39 |
+
$attr_matches = null;
|
40 |
+
|
41 |
+
if (preg_match_all('~(\w+)=["\']([^"\']*)["\']~', $match[1], $attr_matches, PREG_SET_ORDER)) {
|
42 |
+
foreach ($attr_matches as $attr_match) {
|
43 |
+
$attrs[$attr_match[1]] = trim($attr_match[2]);
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
if (isset($attrs['href']) && isset($attrs['rel']) && stristr($attrs['rel'], 'stylesheet') !== false && (!isset($attrs['media']) || stristr($attrs['media'], 'print') === false)) {
|
48 |
+
$files[] = $attrs['href'];
|
49 |
+
}
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
if (preg_match_all('~@import\s+(url\s*)?\(?["\']?\s*([^"\'\)\s]+)\s*["\']?\)?[^;]*;?~is', $content, $matches)) {
|
54 |
+
$files = array_merge($files, $matches[2]);
|
55 |
+
}
|
56 |
+
|
57 |
+
$files = array_values(array_unique($files));
|
58 |
+
|
59 |
+
return $files;
|
60 |
+
}
|
inc/functions/file.php
ADDED
@@ -0,0 +1,177 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Recursive creates directory
|
5 |
+
*
|
6 |
+
* @param string $path
|
7 |
+
* @param integer $mask
|
8 |
+
* @param string $curr_path
|
9 |
+
* @return boolean
|
10 |
+
*/
|
11 |
+
function w3_mkdir($path, $mask = 0777, $curr_path = '') {
|
12 |
+
$path = w3_realpath($path);
|
13 |
+
$path = trim($path, '/');
|
14 |
+
$dirs = explode('/', $path);
|
15 |
+
|
16 |
+
foreach ($dirs as $dir) {
|
17 |
+
if ($dir == '') {
|
18 |
+
return false;
|
19 |
+
}
|
20 |
+
|
21 |
+
$curr_path .= ($curr_path == '' ? '' : '/') . $dir;
|
22 |
+
|
23 |
+
if (!@is_dir($curr_path)) {
|
24 |
+
if (!@mkdir($curr_path, $mask)) {
|
25 |
+
return false;
|
26 |
+
}
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
return true;
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Recursive remove dir
|
35 |
+
*
|
36 |
+
* @param string $path
|
37 |
+
* @param array $exclude
|
38 |
+
* @param bool $remove
|
39 |
+
* @return void
|
40 |
+
*/
|
41 |
+
function w3_rmdir($path, $exclude = array(), $remove = true) {
|
42 |
+
$dir = @opendir($path);
|
43 |
+
|
44 |
+
if ($dir) {
|
45 |
+
while (($entry = @readdir($dir)) !== false) {
|
46 |
+
if ($entry == '.' || $entry == '..') {
|
47 |
+
continue;
|
48 |
+
}
|
49 |
+
|
50 |
+
foreach ($exclude as $mask) {
|
51 |
+
if (fnmatch($mask, basename($entry))) {
|
52 |
+
continue 2;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
$full_path = $path . DIRECTORY_SEPARATOR . $entry;
|
57 |
+
|
58 |
+
if (@is_dir($full_path)) {
|
59 |
+
w3_rmdir($full_path, $exclude);
|
60 |
+
} else {
|
61 |
+
@unlink($full_path);
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
@closedir($dir);
|
66 |
+
|
67 |
+
if ($remove) {
|
68 |
+
@rmdir($path);
|
69 |
+
}
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Recursive empty dir
|
75 |
+
*
|
76 |
+
* @param string $path
|
77 |
+
* @param array $exclude
|
78 |
+
* @return void
|
79 |
+
*/
|
80 |
+
function w3_emptydir($path, $exclude = array()) {
|
81 |
+
w3_rmdir($path, $exclude, false);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Check if file is write-able
|
86 |
+
*
|
87 |
+
* @param string $file
|
88 |
+
* @return boolean
|
89 |
+
*/
|
90 |
+
function w3_is_writable($file) {
|
91 |
+
$exists = file_exists($file);
|
92 |
+
|
93 |
+
$fp = @fopen($file, 'a');
|
94 |
+
|
95 |
+
if ($fp) {
|
96 |
+
fclose($fp);
|
97 |
+
|
98 |
+
if (!$exists) {
|
99 |
+
@unlink($file);
|
100 |
+
}
|
101 |
+
|
102 |
+
return true;
|
103 |
+
}
|
104 |
+
|
105 |
+
return false;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Cehck if dir is write-able
|
110 |
+
*
|
111 |
+
* @param string $dir
|
112 |
+
* @return boolean
|
113 |
+
*/
|
114 |
+
function w3_is_writable_dir($dir) {
|
115 |
+
$file = $dir . '/' . uniqid(mt_rand()) . '.tmp';
|
116 |
+
|
117 |
+
return w3_is_writable($file);
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Returns dirname of path
|
122 |
+
*
|
123 |
+
* @param string $path
|
124 |
+
* @return string
|
125 |
+
*/
|
126 |
+
function w3_dirname($path) {
|
127 |
+
$dirname = dirname($path);
|
128 |
+
|
129 |
+
if ($dirname == '.' || $dirname == '/' || $dirname == '\\') {
|
130 |
+
$dirname = '';
|
131 |
+
}
|
132 |
+
|
133 |
+
return $dirname;
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Returns open basedirs
|
138 |
+
*
|
139 |
+
* @return array
|
140 |
+
*/
|
141 |
+
function w3_get_open_basedirs() {
|
142 |
+
$open_basedir_ini = ini_get('open_basedir');
|
143 |
+
$open_basedirs = (W3TC_WIN ? preg_split('~[;,]~', $open_basedir_ini) : explode(':', $open_basedir_ini));
|
144 |
+
$result = array();
|
145 |
+
|
146 |
+
foreach ($open_basedirs as $open_basedir) {
|
147 |
+
$open_basedir = trim($open_basedir);
|
148 |
+
if ($open_basedir != '') {
|
149 |
+
$result[] = w3_realpath($open_basedir);
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
return $result;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* Checks if path is restricted by open_basedir
|
158 |
+
*
|
159 |
+
* @param string $path
|
160 |
+
* @return boolean
|
161 |
+
*/
|
162 |
+
function w3_check_open_basedir($path) {
|
163 |
+
$path = w3_realpath($path);
|
164 |
+
$open_basedirs = w3_get_open_basedirs();
|
165 |
+
|
166 |
+
if (!count($open_basedirs)) {
|
167 |
+
return true;
|
168 |
+
}
|
169 |
+
|
170 |
+
foreach ($open_basedirs as $open_basedir) {
|
171 |
+
if (strstr($path, $open_basedir) !== false) {
|
172 |
+
return true;
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
return false;
|
177 |
+
}
|
inc/functions/http.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Sends HTTP request
|
5 |
+
*
|
6 |
+
* @param $url string
|
7 |
+
* @param $args array
|
8 |
+
* @return WP_Error|array
|
9 |
+
*/
|
10 |
+
function w3_http_request($url, $args = array()) {
|
11 |
+
$args = array_merge(array(
|
12 |
+
'user-agent' => W3TC_POWERED_BY
|
13 |
+
), $args);
|
14 |
+
|
15 |
+
return wp_remote_request($url, $args);
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Sends HTTP GET request
|
20 |
+
*
|
21 |
+
* @param string $url
|
22 |
+
* @param array $args
|
23 |
+
* @return array|WP_Error
|
24 |
+
*/
|
25 |
+
function w3_http_get($url, $args = array()) {
|
26 |
+
$args = array_merge($args, array(
|
27 |
+
'method' => 'GET'
|
28 |
+
));
|
29 |
+
|
30 |
+
return w3_http_request($url, $args);
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Downloads URL into a file
|
35 |
+
*
|
36 |
+
* @param string $url
|
37 |
+
* @param string $file
|
38 |
+
* @return boolean
|
39 |
+
*/
|
40 |
+
function w3_download($url, $file) {
|
41 |
+
if (strpos($url, '//') === 0) {
|
42 |
+
$url = (w3_is_https() ? 'https:' : 'http:') . $url;
|
43 |
+
}
|
44 |
+
|
45 |
+
$response = w3_http_get($url);
|
46 |
+
|
47 |
+
if (!is_wp_error($response) && $response['response']['code'] == 200) {
|
48 |
+
return @file_put_contents($file, $response['body']);
|
49 |
+
}
|
50 |
+
|
51 |
+
return false;
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Returns upload info
|
56 |
+
*
|
57 |
+
* @return array
|
58 |
+
*/
|
59 |
+
function w3_upload_info() {
|
60 |
+
static $upload_info = null;
|
61 |
+
|
62 |
+
if ($upload_info === null) {
|
63 |
+
$upload_info = @wp_upload_dir();
|
64 |
+
|
65 |
+
if (empty($upload_info['error'])) {
|
66 |
+
$parse_url = @parse_url($upload_info['baseurl']);
|
67 |
+
|
68 |
+
if ($parse_url) {
|
69 |
+
$baseurlpath = (!empty($parse_url['path']) ? trim($parse_url['path'], '/') : '');
|
70 |
+
} else {
|
71 |
+
$baseurlpath = 'wp-content/uploads';
|
72 |
+
}
|
73 |
+
|
74 |
+
$upload_info['baseurlpath'] = '/' . $baseurlpath . '/';
|
75 |
+
} else {
|
76 |
+
$upload_info = false;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
return $upload_info;
|
81 |
+
}
|
inc/functions/mime.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Returns file mime type
|
5 |
+
*
|
6 |
+
* @param string $file
|
7 |
+
* @return string
|
8 |
+
*/
|
9 |
+
function w3_get_mime_type($file) {
|
10 |
+
static $cache = array();
|
11 |
+
|
12 |
+
if (!isset($cache[$file])) {
|
13 |
+
$mime_type = false;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Try to detect by extension (fast)
|
17 |
+
*/
|
18 |
+
$mime_types = include W3TC_INC_DIR . '/mime/all.php';
|
19 |
+
|
20 |
+
foreach ($mime_types as $extension => $type) {
|
21 |
+
if (preg_match('~\.(' . $extension . ')$~i', $file)) {
|
22 |
+
$mime_type = $type;
|
23 |
+
break;
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Try to detect using file info function
|
29 |
+
*/
|
30 |
+
if (!$mime_type && function_exists('finfo_open')) {
|
31 |
+
$finfo = @finfo_open(FILEINFO_MIME);
|
32 |
+
|
33 |
+
if (!$finfo) {
|
34 |
+
$finfo = @finfo_open(FILEINFO_MIME);
|
35 |
+
}
|
36 |
+
|
37 |
+
if ($finfo) {
|
38 |
+
$mime_type = @finfo_file($finfo, $file);
|
39 |
+
|
40 |
+
if ($mime_type) {
|
41 |
+
$extra_mime_type_info = strpos($mime_type, "; ");
|
42 |
+
|
43 |
+
if ($extra_mime_type_info) {
|
44 |
+
$mime_type = substr($mime_type, 0, $extra_mime_type_info);
|
45 |
+
}
|
46 |
+
|
47 |
+
if ($mime_type == 'application/octet-stream') {
|
48 |
+
$mime_type = false;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
@finfo_close($finfo);
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Try to detect using mime type function
|
58 |
+
*/
|
59 |
+
if (!$mime_type && function_exists('mime_content_type')) {
|
60 |
+
$mime_type = @mime_content_type($file);
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* If detection failed use default mime type
|
65 |
+
*/
|
66 |
+
if (!$mime_type) {
|
67 |
+
$mime_type = 'application/octet-stream';
|
68 |
+
}
|
69 |
+
|
70 |
+
$cache[$file] = $mime_type;
|
71 |
+
}
|
72 |
+
|
73 |
+
return $cache[$file];
|
74 |
+
}
|
inc/{plugin.php → functions/plugin.php}
RENAMED
@@ -40,10 +40,7 @@ function w3tc_do_action($action, $value = null) {
|
|
40 |
* @return boolean
|
41 |
*/
|
42 |
function w3tc_pgcache_flush() {
|
43 |
-
|
44 |
-
|
45 |
-
$w3_pgcache = & W3_PgCache::instance();
|
46 |
-
|
47 |
return $w3_pgcache->flush();
|
48 |
}
|
49 |
|
@@ -54,9 +51,7 @@ function w3tc_pgcache_flush() {
|
|
54 |
* @return boolean
|
55 |
*/
|
56 |
function w3tc_pgcache_flush_post($post_id) {
|
57 |
-
|
58 |
-
|
59 |
-
$w3_pgcache = & W3_PgCache::instance();
|
60 |
|
61 |
return $w3_pgcache->flush_post($post_id);
|
62 |
}
|
@@ -69,7 +64,7 @@ function w3tc_pgcache_flush_post($post_id) {
|
|
69 |
function w3tc_dbcache_flush() {
|
70 |
require_once W3TC_LIB_W3_DIR . '/Db.php';
|
71 |
|
72 |
-
|
73 |
|
74 |
return $w3_db->flush_cache();
|
75 |
}
|
@@ -80,9 +75,7 @@ function w3tc_dbcache_flush() {
|
|
80 |
* @return boolean
|
81 |
*/
|
82 |
function w3tc_minify_flush() {
|
83 |
-
|
84 |
-
|
85 |
-
$w3_minify = & W3_Minify::instance();
|
86 |
|
87 |
return $w3_minify->flush();
|
88 |
}
|
@@ -93,10 +86,7 @@ function w3tc_minify_flush() {
|
|
93 |
* @return boolean
|
94 |
*/
|
95 |
function w3tc_objectcache_flush() {
|
96 |
-
|
97 |
-
|
98 |
-
$w3_objectcache = & W3_ObjectCache::instance();
|
99 |
-
|
100 |
return $w3_objectcache->flush();
|
101 |
}
|
102 |
|
@@ -107,9 +97,7 @@ function w3tc_objectcache_flush() {
|
|
107 |
* @retun void
|
108 |
*/
|
109 |
function w3tc_minify_script_group($location) {
|
110 |
-
|
111 |
-
|
112 |
-
$w3_plugin_minify = & W3_Plugin_Minify::instance();
|
113 |
$w3_plugin_minify->printed_scripts[] = $location;
|
114 |
|
115 |
echo $w3_plugin_minify->get_script_group($location);
|
@@ -122,9 +110,7 @@ function w3tc_minify_script_group($location) {
|
|
122 |
* @retun void
|
123 |
*/
|
124 |
function w3tc_minify_style_group($location) {
|
125 |
-
|
126 |
-
|
127 |
-
$w3_plugin_minify = & W3_Plugin_Minify::instance();
|
128 |
$w3_plugin_minify->printed_styles[] = $location;
|
129 |
|
130 |
echo $w3_plugin_minify->get_style_group($location);
|
@@ -138,10 +124,7 @@ function w3tc_minify_style_group($location) {
|
|
138 |
* @return void
|
139 |
*/
|
140 |
function w3tc_minify_script_custom($files, $blocking = true) {
|
141 |
-
|
142 |
-
|
143 |
-
$w3_plugin_minify = & W3_Plugin_Minify::instance();
|
144 |
-
|
145 |
echo $w3_plugin_minify->get_script_custom($files, $blocking);
|
146 |
}
|
147 |
|
@@ -153,9 +136,6 @@ function w3tc_minify_script_custom($files, $blocking = true) {
|
|
153 |
* @return void
|
154 |
*/
|
155 |
function w3tc_minify_style_custom($files, $import = false) {
|
156 |
-
|
157 |
-
|
158 |
-
$w3_plugin_minify = & W3_Plugin_Minify::instance();
|
159 |
-
|
160 |
echo $w3_plugin_minify->get_style_custom($files, $import);
|
161 |
}
|
40 |
* @return boolean
|
41 |
*/
|
42 |
function w3tc_pgcache_flush() {
|
43 |
+
$w3_pgcache = & w3_instance('W3_PgCacheFlush');
|
|
|
|
|
|
|
44 |
return $w3_pgcache->flush();
|
45 |
}
|
46 |
|
51 |
* @return boolean
|
52 |
*/
|
53 |
function w3tc_pgcache_flush_post($post_id) {
|
54 |
+
$w3_pgcache = & w3_instance('W3_PgCacheFlush');
|
|
|
|
|
55 |
|
56 |
return $w3_pgcache->flush_post($post_id);
|
57 |
}
|
64 |
function w3tc_dbcache_flush() {
|
65 |
require_once W3TC_LIB_W3_DIR . '/Db.php';
|
66 |
|
67 |
+
@$w3_db = & W3_Db::instance();
|
68 |
|
69 |
return $w3_db->flush_cache();
|
70 |
}
|
75 |
* @return boolean
|
76 |
*/
|
77 |
function w3tc_minify_flush() {
|
78 |
+
$w3_minify = & w3_instance('W3_Minify');
|
|
|
|
|
79 |
|
80 |
return $w3_minify->flush();
|
81 |
}
|
86 |
* @return boolean
|
87 |
*/
|
88 |
function w3tc_objectcache_flush() {
|
89 |
+
$w3_objectcache = & w3_instance('W3_ObjectCache');
|
|
|
|
|
|
|
90 |
return $w3_objectcache->flush();
|
91 |
}
|
92 |
|
97 |
* @retun void
|
98 |
*/
|
99 |
function w3tc_minify_script_group($location) {
|
100 |
+
$w3_plugin_minify = & w3_instance('W3_Plugin_Minify');
|
|
|
|
|
101 |
$w3_plugin_minify->printed_scripts[] = $location;
|
102 |
|
103 |
echo $w3_plugin_minify->get_script_group($location);
|
110 |
* @retun void
|
111 |
*/
|
112 |
function w3tc_minify_style_group($location) {
|
113 |
+
$w3_plugin_minify = & w3_instance('W3_Plugin_Minify');
|
|
|
|
|
114 |
$w3_plugin_minify->printed_styles[] = $location;
|
115 |
|
116 |
echo $w3_plugin_minify->get_style_group($location);
|
124 |
* @return void
|
125 |
*/
|
126 |
function w3tc_minify_script_custom($files, $blocking = true) {
|
127 |
+
$w3_plugin_minify = & w3_instance('W3_Plugin_Minify');
|
|
|
|
|
|
|
128 |
echo $w3_plugin_minify->get_script_custom($files, $blocking);
|
129 |
}
|
130 |
|
136 |
* @return void
|
137 |
*/
|
138 |
function w3tc_minify_style_custom($files, $import = false) {
|
139 |
+
$w3_plugin_minify = & w3_instance('W3_Plugin_Minify');
|
|
|
|
|
|
|
140 |
echo $w3_plugin_minify->get_style_custom($files, $import);
|
141 |
}
|
inc/functions/rule.php
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Check if WP permalink directives exists
|
5 |
+
*
|
6 |
+
* @return boolean
|
7 |
+
*/
|
8 |
+
function w3_is_permalink_rules() {
|
9 |
+
if ((w3_is_apache() || w3_is_litespeed()) && !w3_is_network()) {
|
10 |
+
$path = w3_get_home_root() . '/.htaccess';
|
11 |
+
|
12 |
+
return (($data = @file_get_contents($path)) && strstr($data, W3TC_MARKER_BEGIN_WORDPRESS) !== false);
|
13 |
+
}
|
14 |
+
|
15 |
+
return true;
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Returns nginx rules path
|
20 |
+
*
|
21 |
+
* @return string
|
22 |
+
*/
|
23 |
+
function w3_get_nginx_rules_path() {
|
24 |
+
$config = & w3_instance('W3_Config');
|
25 |
+
|
26 |
+
$path = $config->get_string('config.path');
|
27 |
+
|
28 |
+
if (!$path) {
|
29 |
+
$path = w3_get_document_root() . '/nginx.conf';
|
30 |
+
}
|
31 |
+
|
32 |
+
return $path;
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Returns path of pagecache core rules file
|
37 |
+
*
|
38 |
+
* @return string
|
39 |
+
*/
|
40 |
+
function w3_get_pgcache_rules_core_path() {
|
41 |
+
switch (true) {
|
42 |
+
case w3_is_apache():
|
43 |
+
case w3_is_litespeed():
|
44 |
+
return w3_get_home_root() . '/.htaccess';
|
45 |
+
|
46 |
+
case w3_is_nginx():
|
47 |
+
return w3_get_nginx_rules_path();
|
48 |
+
}
|
49 |
+
|
50 |
+
return false;
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Returns path of pgcache cache rules file
|
55 |
+
*
|
56 |
+
* @return string
|
57 |
+
*/
|
58 |
+
function w3_get_pgcache_rules_cache_path() {
|
59 |
+
switch (true) {
|
60 |
+
case w3_is_apache():
|
61 |
+
case w3_is_litespeed():
|
62 |
+
return W3TC_CACHE_FILE_PGCACHE_DIR . '/.htaccess';
|
63 |
+
|
64 |
+
case w3_is_nginx():
|
65 |
+
return w3_get_nginx_rules_path();
|
66 |
+
}
|
67 |
+
|
68 |
+
return false;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Returns path of browsercache cache rules file
|
73 |
+
*
|
74 |
+
* @return string
|
75 |
+
*/
|
76 |
+
function w3_get_browsercache_rules_cache_path() {
|
77 |
+
switch (true) {
|
78 |
+
case w3_is_apache():
|
79 |
+
case w3_is_litespeed():
|
80 |
+
return w3_get_home_root() . '/.htaccess';
|
81 |
+
|
82 |
+
case w3_is_nginx():
|
83 |
+
return w3_get_nginx_rules_path();
|
84 |
+
}
|
85 |
+
|
86 |
+
return false;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Returns path of browsercache no404wp rules file
|
91 |
+
*
|
92 |
+
* @return string
|
93 |
+
*/
|
94 |
+
function w3_get_browsercache_rules_no404wp_path() {
|
95 |
+
switch (true) {
|
96 |
+
case w3_is_apache():
|
97 |
+
case w3_is_litespeed():
|
98 |
+
return w3_get_home_root() . '/.htaccess';
|
99 |
+
|
100 |
+
case w3_is_nginx():
|
101 |
+
return w3_get_nginx_rules_path();
|
102 |
+
}
|
103 |
+
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Returns path of minify rules file
|
109 |
+
*
|
110 |
+
* @return string
|
111 |
+
*/
|
112 |
+
function w3_get_minify_rules_core_path() {
|
113 |
+
switch (true) {
|
114 |
+
case w3_is_apache():
|
115 |
+
case w3_is_litespeed():
|
116 |
+
return W3TC_CACHE_FILE_MINIFY_DIR . '/.htaccess';
|
117 |
+
|
118 |
+
case w3_is_nginx():
|
119 |
+
return w3_get_nginx_rules_path();
|
120 |
+
}
|
121 |
+
|
122 |
+
return false;
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Returns path of minify rules file
|
127 |
+
*
|
128 |
+
* @return string
|
129 |
+
*/
|
130 |
+
function w3_get_minify_rules_cache_path() {
|
131 |
+
switch (true) {
|
132 |
+
case w3_is_apache():
|
133 |
+
case w3_is_litespeed():
|
134 |
+
return W3TC_CACHE_FILE_MINIFY_DIR . '/.htaccess';
|
135 |
+
|
136 |
+
case w3_is_nginx():
|
137 |
+
return w3_get_nginx_rules_path();
|
138 |
+
}
|
139 |
+
|
140 |
+
return false;
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Returns path of minify rules file
|
145 |
+
*
|
146 |
+
* @return string
|
147 |
+
*/
|
148 |
+
function w3_get_cdn_rules_path() {
|
149 |
+
switch (true) {
|
150 |
+
case w3_is_apache():
|
151 |
+
case w3_is_litespeed():
|
152 |
+
return '.htaccess';
|
153 |
+
|
154 |
+
case w3_is_nginx():
|
155 |
+
return 'nginx.conf';
|
156 |
+
}
|
157 |
+
|
158 |
+
return false;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Returns true if we can modify rules
|
163 |
+
*
|
164 |
+
* @param string $path
|
165 |
+
* @return boolean
|
166 |
+
*/
|
167 |
+
function w3_can_modify_rules($path) {
|
168 |
+
if (w3_is_network()) {
|
169 |
+
if (w3_is_apache() || w3_is_litespeed()) {
|
170 |
+
switch ($path) {
|
171 |
+
case w3_get_pgcache_rules_cache_path():
|
172 |
+
case w3_get_minify_rules_core_path():
|
173 |
+
case w3_get_minify_rules_cache_path():
|
174 |
+
return true;
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
return false;
|
179 |
+
}
|
180 |
+
|
181 |
+
return true;
|
182 |
+
}
|
183 |
+
|
184 |
+
/**
|
185 |
+
* Trim rules
|
186 |
+
*
|
187 |
+
* @param string $rules
|
188 |
+
* @return string
|
189 |
+
*/
|
190 |
+
function w3_trim_rules($rules) {
|
191 |
+
$rules = trim($rules);
|
192 |
+
|
193 |
+
if ($rules != '') {
|
194 |
+
$rules .= "\n";
|
195 |
+
}
|
196 |
+
|
197 |
+
return $rules;
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Cleanup rewrite rules
|
202 |
+
*
|
203 |
+
* @param string $rules
|
204 |
+
* @return string
|
205 |
+
*/
|
206 |
+
function w3_clean_rules($rules) {
|
207 |
+
$rules = preg_replace('~[\r\n]+~', "\n", $rules);
|
208 |
+
$rules = preg_replace('~^\s+~m', '', $rules);
|
209 |
+
$rules = w3_trim_rules($rules);
|
210 |
+
|
211 |
+
return $rules;
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Erases text from start to end
|
216 |
+
*
|
217 |
+
* @param string $rules
|
218 |
+
* @param string $start
|
219 |
+
* @param string $end
|
220 |
+
* @return string
|
221 |
+
*/
|
222 |
+
function w3_erase_rules($rules, $start, $end) {
|
223 |
+
$rules = preg_replace('~' . w3_preg_quote($start) . "\n.*?" . w3_preg_quote($end) . "\n*~s", '', $rules);
|
224 |
+
$rules = w3_trim_rules($rules);
|
225 |
+
|
226 |
+
return $rules;
|
227 |
+
}
|
228 |
+
|
229 |
+
/**
|
230 |
+
* Check if rules exist
|
231 |
+
*
|
232 |
+
* @param string $rules
|
233 |
+
* @param string $start
|
234 |
+
* @param string $end
|
235 |
+
* @return int
|
236 |
+
*/
|
237 |
+
function w3_has_rules($rules, $start, $end) {
|
238 |
+
return preg_match('~' . w3_preg_quote($start) . "\n.*?" . w3_preg_quote($end) . "\n*~s", $rules);
|
239 |
+
}
|
inc/functions/url.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Formats URL
|
5 |
+
*
|
6 |
+
* @param string $url
|
7 |
+
* @param array $params
|
8 |
+
* @param boolean $skip_empty
|
9 |
+
* @param string $separator
|
10 |
+
* @return string
|
11 |
+
*/
|
12 |
+
function w3_url_format($url = '', $params = array(), $skip_empty = false, $separator = '&') {
|
13 |
+
if ($url != '') {
|
14 |
+
$parse_url = @parse_url($url);
|
15 |
+
$url = '';
|
16 |
+
|
17 |
+
if (!empty($parse_url['scheme'])) {
|
18 |
+
$url .= $parse_url['scheme'] . '://';
|
19 |
+
|
20 |
+
if (!empty($parse_url['user'])) {
|
21 |
+
$url .= $parse_url['user'];
|
22 |
+
|
23 |
+
if (!empty($parse_url['pass'])) {
|
24 |
+
$url .= ':' . $parse_url['pass'];
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
if (!empty($parse_url['host'])) {
|
29 |
+
$url .= $parse_url['host'];
|
30 |
+
}
|
31 |
+
|
32 |
+
if (!empty($parse_url['port']) && $parse_url['port'] != 80) {
|
33 |
+
$url .= ':' . (int) $parse_url['port'];
|
34 |
+
}
|
35 |
+
}
|
36 |
+
|
37 |
+
if (!empty($parse_url['path'])) {
|
38 |
+
$url .= $parse_url['path'];
|
39 |
+
}
|
40 |
+
|
41 |
+
if (!empty($parse_url['query'])) {
|
42 |
+
$old_params = array();
|
43 |
+
parse_str($parse_url['query'], $old_params);
|
44 |
+
|
45 |
+
$params = array_merge($old_params, $params);
|
46 |
+
}
|
47 |
+
|
48 |
+
$query = w3_url_query($params);
|
49 |
+
|
50 |
+
if ($query != '') {
|
51 |
+
$url .= '?' . $query;
|
52 |
+
}
|
53 |
+
|
54 |
+
if (!empty($parse_url['fragment'])) {
|
55 |
+
$url .= '#' . $parse_url['fragment'];
|
56 |
+
}
|
57 |
+
} else {
|
58 |
+
$query = w3_url_query($params, $skip_empty, $separator);
|
59 |
+
|
60 |
+
if ($query != '') {
|
61 |
+
$url = '?' . $query;
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
return $url;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Formats query string
|
70 |
+
*
|
71 |
+
* @param array $params
|
72 |
+
* @param boolean $skip_empty
|
73 |
+
* @param string $separator
|
74 |
+
* @return string
|
75 |
+
*/
|
76 |
+
function w3_url_query($params = array(), $skip_empty = false, $separator = '&') {
|
77 |
+
$str = '';
|
78 |
+
static $stack = array();
|
79 |
+
|
80 |
+
foreach ((array) $params as $key => $value) {
|
81 |
+
if ($skip_empty === true && empty($value)) {
|
82 |
+
continue;
|
83 |
+
}
|
84 |
+
|
85 |
+
array_push($stack, $key);
|
86 |
+
|
87 |
+
if (is_array($value)) {
|
88 |
+
if (count($value)) {
|
89 |
+
$str .= ($str != '' ? '&' : '') . w3_url_query($value, $skip_empty, $key);
|
90 |
+
}
|
91 |
+
} else {
|
92 |
+
$name = '';
|
93 |
+
foreach ($stack as $key) {
|
94 |
+
$name .= ($name != '' ? '[' . $key . ']' : $key);
|
95 |
+
}
|
96 |
+
$str .= ($str != '' ? $separator : '') . $name . '=' . rawurlencode($value);
|
97 |
+
}
|
98 |
+
|
99 |
+
array_pop($stack);
|
100 |
+
}
|
101 |
+
|
102 |
+
return $str;
|
103 |
+
}
|
inc/index.html
ADDED
File without changes
|
inc/js/widget.js
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
jQuery(function() {
|
2 |
-
jQuery('.w3tc-widget-ps-view-all').click(function() {
|
3 |
-
window.open('admin.php?page=w3tc_general&w3tc_action=pagespeed_results', 'pagespeed_results', 'width=800,height=600,status=no,toolbar=no,menubar=no,scrollbars=yes');
|
4 |
-
|
5 |
-
return false;
|
6 |
-
});
|
7 |
-
|
8 |
-
jQuery('.w3tc-widget-ps-refresh').click(function() {
|
9 |
-
document.location.href = 'index.php?w3tc_widget_pagespeed_force=1';
|
10 |
-
});
|
11 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/lightbox/{cdn_s3_bucket_location.phtml → cdn_s3_bucket_location.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<h3>Select bucket location</h3>
|
2 |
|
3 |
<p>
|
@@ -10,7 +11,7 @@
|
|
10 |
</label>
|
11 |
</p>
|
12 |
<p>
|
13 |
-
<input id="cdn_create_container" class="button-primary
|
14 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
15 |
</p>
|
16 |
<p style="text-align: center;">
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<h3>Select bucket location</h3>
|
3 |
|
4 |
<p>
|
11 |
</label>
|
12 |
</p>
|
13 |
<p>
|
14 |
+
<input id="cdn_create_container" class="button-primary {type: '<?php echo $type; ?>', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Create bucket" />
|
15 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
16 |
</p>
|
17 |
<p style="text-align: center;">
|
inc/lightbox/index.html
ADDED
File without changes
|
inc/lightbox/{minify_recommendations.phtml → minify_recommendations.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<h3>Minify Help Wizard</h3>
|
2 |
|
3 |
<p>
|
@@ -26,7 +27,7 @@
|
|
26 |
<th>Template:</th>
|
27 |
<th colspan="2">Embed Location:</th>
|
28 |
</tr>
|
29 |
-
<tr
|
30 |
<td class="minify-files-add">
|
31 |
<input type="checkbox" name="recom_js_useit" value="1"<?php checked(isset($checked_js[$js_group][$js_file]), true); ?> />
|
32 |
</td>
|
@@ -86,7 +87,7 @@
|
|
86 |
<th>File URI:</th>
|
87 |
<th colspan="2">Template:</th>
|
88 |
</tr>
|
89 |
-
<tr
|
90 |
<td class="minify-files-add">
|
91 |
<input type="checkbox" name="recom_css_useit" value="1"<?php checked(isset($checked_css[$css_group][$css_file]), true); ?> />
|
92 |
</td>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<h3>Minify Help Wizard</h3>
|
3 |
|
4 |
<p>
|
27 |
<th>Template:</th>
|
28 |
<th colspan="2">Embed Location:</th>
|
29 |
</tr>
|
30 |
+
<tr>
|
31 |
<td class="minify-files-add">
|
32 |
<input type="checkbox" name="recom_js_useit" value="1"<?php checked(isset($checked_js[$js_group][$js_file]), true); ?> />
|
33 |
</td>
|
87 |
<th>File URI:</th>
|
88 |
<th colspan="2">Template:</th>
|
89 |
</tr>
|
90 |
+
<tr>
|
91 |
<td class="minify-files-add">
|
92 |
<input type="checkbox" name="recom_css_useit" value="1"<?php checked(isset($checked_css[$css_group][$css_file]), true); ?> />
|
93 |
</td>
|
inc/lightbox/{self_test.phtml → self_test.php}
RENAMED
@@ -1,3 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<h3>Compatibility Test</h3>
|
2 |
|
3 |
<fieldset>
|
@@ -171,6 +180,15 @@
|
|
171 |
<?php endif; ?>
|
172 |
</li>
|
173 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
<?php
|
175 |
if (w3_is_apache()):
|
176 |
$apache_modules = (function_exists('apache_get_modules') ? apache_get_modules() : false);
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('W3TC'))
|
4 |
+
die();
|
5 |
+
|
6 |
+
require_once W3TC_INC_DIR . '/functions/file.php';
|
7 |
+
require_once W3TC_INC_DIR . '/functions/rule.php';
|
8 |
+
|
9 |
+
?>
|
10 |
<h3>Compatibility Test</h3>
|
11 |
|
12 |
<fieldset>
|
180 |
<?php endif; ?>
|
181 |
</li>
|
182 |
|
183 |
+
<li>
|
184 |
+
set_time_limit:
|
185 |
+
<?php if (function_exists('set_time_limit')): ?>
|
186 |
+
<code>Available</code>
|
187 |
+
<?php else: ?>
|
188 |
+
<code>Not available</code>
|
189 |
+
<?php endif; ?>
|
190 |
+
</li>
|
191 |
+
|
192 |
<?php
|
193 |
if (w3_is_apache()):
|
194 |
$apache_modules = (function_exists('apache_get_modules') ? apache_get_modules() : false);
|
inc/lightbox/{support_us.phtml → support_us.php}
RENAMED
@@ -1,8 +1,9 @@
|
|
|
|
1 |
<h3>Support Us</h3>
|
2 |
|
3 |
<p>We noticed you've been using W3 Total cache for at least 30 days, would you like to help us improve WordPress?</p>
|
4 |
|
5 |
-
<form action="admin.php?page=<?php echo $this->_page; ?>&
|
6 |
<p>
|
7 |
<label>
|
8 |
Link to us:
|
@@ -13,13 +14,14 @@
|
|
13 |
<?php endforeach; ?>
|
14 |
</select>
|
15 |
</label>, tell your friends with a <input type="button" class="button button-tweet" value="tweet" />
|
16 |
-
(<input type="hidden" name="tweeted" value="0" /><label><input type="checkbox" name="tweeted" value="1"<?php checked($this->_config->get_boolean('common.tweeted', true)); ?> /> I've tweeted</label>)
|
17 |
and give us a great <input type="button" class="button button-rating" value="rating" />.
|
18 |
</p>
|
19 |
-
|
20 |
<div style="text-align: center;">
|
21 |
<h3>THANK YOU!</h3>
|
22 |
<p>
|
|
|
23 |
<input type="submit" class="button-primary" value="Save and close"> or
|
24 |
<?php echo $this->button_hide_note('Don\'t show this message again', 'support_us'); ?>
|
25 |
</p>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<h3>Support Us</h3>
|
3 |
|
4 |
<p>We noticed you've been using W3 Total cache for at least 30 days, would you like to help us improve WordPress?</p>
|
5 |
|
6 |
+
<form action="admin.php?page=<?php echo $this->_page; ?>&w3tc_save_support_us" method="post">
|
7 |
<p>
|
8 |
<label>
|
9 |
Link to us:
|
14 |
<?php endforeach; ?>
|
15 |
</select>
|
16 |
</label>, tell your friends with a <input type="button" class="button button-tweet" value="tweet" />
|
17 |
+
(<input type="hidden" name="tweeted" value="0" /><label><input type="checkbox" name="tweeted" value="1"<?php checked($this->_config->get_boolean('common.tweeted', true)); ?> /> I've tweeted</label>)
|
18 |
and give us a great <input type="button" class="button button-rating" value="rating" />.
|
19 |
</p>
|
20 |
+
|
21 |
<div style="text-align: center;">
|
22 |
<h3>THANK YOU!</h3>
|
23 |
<p>
|
24 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
25 |
<input type="submit" class="button-primary" value="Save and close"> or
|
26 |
<?php echo $this->button_hide_note('Don\'t show this message again', 'support_us'); ?>
|
27 |
</p>
|
inc/mime/all.php
CHANGED
@@ -202,6 +202,7 @@ return array(
|
|
202 |
'hpid' => 'application/vnd.hp-hpid',
|
203 |
'hps' => 'application/vnd.hp-hps',
|
204 |
'hqx' => 'application/mac-binhex40',
|
|
|
205 |
'htke' => 'application/vnd.kenameaapp',
|
206 |
'html|htm' => 'text/html',
|
207 |
'hvd' => 'application/vnd.yamaha.hv-dic',
|
202 |
'hpid' => 'application/vnd.hp-hpid',
|
203 |
'hps' => 'application/vnd.hp-hps',
|
204 |
'hqx' => 'application/mac-binhex40',
|
205 |
+
'htc' => 'text/x-component',
|
206 |
'htke' => 'application/vnd.kenameaapp',
|
207 |
'html|htm' => 'text/html',
|
208 |
'hvd' => 'application/vnd.yamaha.hv-dic',
|
inc/mime/cssjs.php
CHANGED
@@ -5,5 +5,6 @@
|
|
5 |
*/
|
6 |
return array(
|
7 |
'css' => 'text/css',
|
8 |
-
'js' => 'application/x-javascript'
|
|
|
9 |
);
|
5 |
*/
|
6 |
return array(
|
7 |
'css' => 'text/css',
|
8 |
+
'js' => 'application/x-javascript',
|
9 |
+
'htc' => 'text/x-component'
|
10 |
);
|
inc/mime/index.html
ADDED
File without changes
|
inc/mime/other.php
CHANGED
@@ -10,7 +10,8 @@ return array(
|
|
10 |
'class' => 'application/java',
|
11 |
'divx' => 'video/divx',
|
12 |
'doc|docx' => 'application/msword',
|
13 |
-
'
|
|
|
14 |
'gif' => 'image/gif',
|
15 |
'gz|gzip' => 'application/x-gzip',
|
16 |
'ico' => 'image/x-icon',
|
@@ -22,22 +23,25 @@ return array(
|
|
22 |
'mp4|m4v' => 'video/mp4',
|
23 |
'mpeg|mpg|mpe' => 'video/mpeg',
|
24 |
'mpp' => 'application/vnd.ms-project',
|
25 |
-
'
|
26 |
-
'
|
27 |
-
'
|
28 |
-
'
|
29 |
-
'
|
30 |
-
'
|
31 |
-
'
|
|
|
32 |
'ogg' => 'audio/ogg',
|
33 |
'pdf' => 'application/pdf',
|
34 |
'png' => 'image/png',
|
35 |
'pot|pps|ppt|pptx' => 'application/vnd.ms-powerpoint',
|
36 |
'ra|ram' => 'audio/x-realaudio',
|
37 |
-
'
|
38 |
-
'
|
|
|
39 |
'tif|tiff' => 'image/tiff',
|
40 |
-
'
|
|
|
41 |
'wma' => 'audio/wma',
|
42 |
'wri' => 'application/vnd.ms-write',
|
43 |
'xla|xls|xlsx|xlt|xlw' => 'application/vnd.ms-excel',
|
10 |
'class' => 'application/java',
|
11 |
'divx' => 'video/divx',
|
12 |
'doc|docx' => 'application/msword',
|
13 |
+
'eot' => 'application/vnd.ms-fontobject',
|
14 |
+
'exe' => 'application/x-msdownload',
|
15 |
'gif' => 'image/gif',
|
16 |
'gz|gzip' => 'application/x-gzip',
|
17 |
'ico' => 'image/x-icon',
|
23 |
'mp4|m4v' => 'video/mp4',
|
24 |
'mpeg|mpg|mpe' => 'video/mpeg',
|
25 |
'mpp' => 'application/vnd.ms-project',
|
26 |
+
'otf' => 'application/x-font-otf',
|
27 |
+
'odb' => 'application/vnd.oasis.opendocument.database',
|
28 |
+
'odc' => 'application/vnd.oasis.opendocument.chart',
|
29 |
+
'odf' => 'application/vnd.oasis.opendocument.formula',
|
30 |
+
'odg' => 'application/vnd.oasis.opendocument.graphics',
|
31 |
+
'odp' => 'application/vnd.oasis.opendocument.presentation',
|
32 |
+
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
|
33 |
+
'odt' => 'application/vnd.oasis.opendocument.text',
|
34 |
'ogg' => 'audio/ogg',
|
35 |
'pdf' => 'application/pdf',
|
36 |
'png' => 'image/png',
|
37 |
'pot|pps|ppt|pptx' => 'application/vnd.ms-powerpoint',
|
38 |
'ra|ram' => 'audio/x-realaudio',
|
39 |
+
'svg|svgz' => 'image/svg+xml',
|
40 |
+
'swf' => 'application/x-shockwave-flash',
|
41 |
+
'tar' => 'application/x-tar',
|
42 |
'tif|tiff' => 'image/tiff',
|
43 |
+
'ttf|ttc' => 'application/x-font-ttf',
|
44 |
+
'wav' => 'audio/wav',
|
45 |
'wma' => 'audio/wma',
|
46 |
'wri' => 'application/vnd.ms-write',
|
47 |
'xla|xls|xlsx|xlt|xlw' => 'application/vnd.ms-excel',
|
inc/options/{about.phtml → about.php}
RENAMED
@@ -1,8 +1,9 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<div id="about">
|
4 |
<p>User experience is an important aspect of every web site and all web sites can benefit from effective caching and file size reduction. We have applied web site optimization methods typically used with high traffic sites and simplified their implementation. Coupling these methods either <a href="http://www.danga.com/memcached/" target="_blank">memcached</a> and/or opcode caching and the <acronym title="Content Delivery Network">CDN</acronym> of your choosing to provide the following features and benefits:</p>
|
5 |
-
|
6 |
<ul>
|
7 |
<li>Improved Google search engine ranking</li>
|
8 |
<li>Increased visitor time on site</li>
|
@@ -23,13 +24,13 @@
|
|
23 |
<li>JavaScript embedding group and location management</li>
|
24 |
<li>Import post attachments directly into the Media Library (and <acronym title="Content Delivery Network">CDN</acronym>)</li>
|
25 |
</ul>
|
26 |
-
|
27 |
<p>Your users have less data to download, you can now serve more visitors at once without upgrading your hardware and you don't have to change how you do anything; just set it and forget it.</p>
|
28 |
-
|
29 |
<h4>Who do I thank for all of this?</h4>
|
30 |
-
|
31 |
<p>It's quite difficult to recall all of the innovators that have shared their thoughts, code and experiences in the blogosphere over the years, but here are some names to get you started:</p>
|
32 |
-
|
33 |
<ul>
|
34 |
<li><a href="http://stevesouders.com/" target="_blank">Steve Souders</a></li>
|
35 |
<li><a href="http://mrclay.org/" target="_blank">Steve Clay</a></li>
|
@@ -44,8 +45,8 @@
|
|
44 |
<li><a href="http://eaccelerator.net/" target="_blank">Bart Vanbraban</a></li>
|
45 |
<li><a href="http://xcache.lighttpd.net/" target="_blank">mOo</a></li>
|
46 |
</ul>
|
47 |
-
|
48 |
<p>Please reach out to all of these people and support their projects if you're so inclined.</p>
|
49 |
</div>
|
50 |
|
51 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<div id="about">
|
5 |
<p>User experience is an important aspect of every web site and all web sites can benefit from effective caching and file size reduction. We have applied web site optimization methods typically used with high traffic sites and simplified their implementation. Coupling these methods either <a href="http://www.danga.com/memcached/" target="_blank">memcached</a> and/or opcode caching and the <acronym title="Content Delivery Network">CDN</acronym> of your choosing to provide the following features and benefits:</p>
|
6 |
+
|
7 |
<ul>
|
8 |
<li>Improved Google search engine ranking</li>
|
9 |
<li>Increased visitor time on site</li>
|
24 |
<li>JavaScript embedding group and location management</li>
|
25 |
<li>Import post attachments directly into the Media Library (and <acronym title="Content Delivery Network">CDN</acronym>)</li>
|
26 |
</ul>
|
27 |
+
|
28 |
<p>Your users have less data to download, you can now serve more visitors at once without upgrading your hardware and you don't have to change how you do anything; just set it and forget it.</p>
|
29 |
+
|
30 |
<h4>Who do I thank for all of this?</h4>
|
31 |
+
|
32 |
<p>It's quite difficult to recall all of the innovators that have shared their thoughts, code and experiences in the blogosphere over the years, but here are some names to get you started:</p>
|
33 |
+
|
34 |
<ul>
|
35 |
<li><a href="http://stevesouders.com/" target="_blank">Steve Souders</a></li>
|
36 |
<li><a href="http://mrclay.org/" target="_blank">Steve Clay</a></li>
|
45 |
<li><a href="http://eaccelerator.net/" target="_blank">Bart Vanbraban</a></li>
|
46 |
<li><a href="http://xcache.lighttpd.net/" target="_blank">mOo</a></li>
|
47 |
</ul>
|
48 |
+
|
49 |
<p>Please reach out to all of these people and support their projects if you're so inclined.</p>
|
50 |
</div>
|
51 |
|
52 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{browsercache.phtml → browsercache.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<p>
|
4 |
Browser caching is currently <span class="w3tc-<?php if ($browsercache_enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>.
|
@@ -63,13 +64,14 @@
|
|
63 |
</table>
|
64 |
|
65 |
<p class="submit">
|
66 |
-
|
|
|
67 |
</p>
|
68 |
<?php echo $this->postbox_footer(); ?>
|
69 |
-
|
70 |
-
<?php echo $this->postbox_header('Cascading Style
|
71 |
-
<p>Specify browser cache policy for
|
72 |
-
|
73 |
<table class="form-table">
|
74 |
<tr>
|
75 |
<th colspan="2">
|
@@ -83,7 +85,7 @@
|
|
83 |
<label for="browsercache_cssjs_lifetime">Expires header lifetime:</label>
|
84 |
</th>
|
85 |
<td>
|
86 |
-
<input id="browsercache_cssjs_lifetime" type="text" name="browsercache.cssjs.lifetime" value="<?php echo $this->_config->get_integer('browsercache.cssjs.lifetime'); ?>" size="8" /> seconds
|
87 |
</td>
|
88 |
</tr>
|
89 |
<tr>
|
@@ -95,7 +97,7 @@
|
|
95 |
</tr>
|
96 |
<tr>
|
97 |
<th>
|
98 |
-
<label for="browsercache_cssjs_cache_policy">Cache Control policy:</label>
|
99 |
</th>
|
100 |
<td>
|
101 |
<select id="browsercache_cssjs_cache_policy" name="browsercache.cssjs.cache.policy">
|
@@ -139,13 +141,14 @@
|
|
139 |
</table>
|
140 |
|
141 |
<p class="submit">
|
142 |
-
|
|
|
143 |
</p>
|
144 |
<?php echo $this->postbox_footer(); ?>
|
145 |
-
|
146 |
-
<?php echo $this->postbox_header('<acronym title="Hypertext Markup Language">HTML</acronym>'); ?>
|
147 |
<p>Specify browser cache policy for posts, pages, feeds and text-based files.</p>
|
148 |
-
|
149 |
<table class="form-table">
|
150 |
<tr>
|
151 |
<th colspan="2">
|
@@ -159,7 +162,7 @@
|
|
159 |
<label for="browsercache_html_lifetime">Expires header lifetime:</label>
|
160 |
</th>
|
161 |
<td>
|
162 |
-
<input id="browsercache_html_lifetime" type="text" name="browsercache.html.lifetime" value="<?php echo $this->_config->get_integer('browsercache.html.lifetime'); ?>" size="8" /> seconds
|
163 |
</td>
|
164 |
</tr>
|
165 |
<tr>
|
@@ -171,7 +174,7 @@
|
|
171 |
</tr>
|
172 |
<tr>
|
173 |
<th>
|
174 |
-
<label for="browsercache_html_cache_policy">Cache Control policy:</label>
|
175 |
</th>
|
176 |
<td>
|
177 |
<select id="browsercache_html_cache_policy" name="browsercache.html.cache.policy">
|
@@ -208,10 +211,11 @@
|
|
208 |
</table>
|
209 |
|
210 |
<p class="submit">
|
211 |
-
|
|
|
212 |
</p>
|
213 |
<?php echo $this->postbox_footer(); ?>
|
214 |
-
|
215 |
<?php echo $this->postbox_header('Media & Other Files'); ?>
|
216 |
<table class="form-table">
|
217 |
<tr>
|
@@ -226,7 +230,7 @@
|
|
226 |
<label for="browsercache_other_lifetime">Expires header lifetime:</label>
|
227 |
</th>
|
228 |
<td>
|
229 |
-
<input id="browsercache_other_lifetime" type="text" name="browsercache.other.lifetime" value="<?php echo $this->_config->get_integer('browsercache.other.lifetime'); ?>" size="8" /> seconds
|
230 |
</td>
|
231 |
</tr>
|
232 |
<tr>
|
@@ -238,7 +242,7 @@
|
|
238 |
</tr>
|
239 |
<tr>
|
240 |
<th>
|
241 |
-
<label for="browsercache_other_cache_policy">Cache Control policy:</label>
|
242 |
</th>
|
243 |
<td>
|
244 |
<select id="browsercache_other_cache_policy" name="browsercache.other.cache.policy">
|
@@ -282,10 +286,11 @@
|
|
282 |
</table>
|
283 |
|
284 |
<p class="submit">
|
285 |
-
|
|
|
286 |
</p>
|
287 |
<?php echo $this->postbox_footer(); ?>
|
288 |
</div>
|
289 |
</form>
|
290 |
|
291 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<p>
|
5 |
Browser caching is currently <span class="w3tc-<?php if ($browsercache_enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>.
|
64 |
</table>
|
65 |
|
66 |
<p class="submit">
|
67 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
68 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
69 |
</p>
|
70 |
<?php echo $this->postbox_footer(); ?>
|
71 |
+
|
72 |
+
<?php echo $this->postbox_header('<acronym title="Cascading Style Sheet">CSS</acronym> & <acronym title="JavaScript">JS</acronym>'); ?>
|
73 |
+
<p>Specify browser cache policy for Cascading Style Sheets and JavaScript files.</p>
|
74 |
+
|
75 |
<table class="form-table">
|
76 |
<tr>
|
77 |
<th colspan="2">
|
85 |
<label for="browsercache_cssjs_lifetime">Expires header lifetime:</label>
|
86 |
</th>
|
87 |
<td>
|
88 |
+
<input id="browsercache_cssjs_lifetime" type="text" name="browsercache.cssjs.lifetime" value="<?php echo $this->_config->get_integer('browsercache.cssjs.lifetime'); ?>" size="8" /> seconds
|
89 |
</td>
|
90 |
</tr>
|
91 |
<tr>
|
97 |
</tr>
|
98 |
<tr>
|
99 |
<th>
|
100 |
+
<label for="browsercache_cssjs_cache_policy">Cache Control policy:</label>
|
101 |
</th>
|
102 |
<td>
|
103 |
<select id="browsercache_cssjs_cache_policy" name="browsercache.cssjs.cache.policy">
|
141 |
</table>
|
142 |
|
143 |
<p class="submit">
|
144 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
145 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
146 |
</p>
|
147 |
<?php echo $this->postbox_footer(); ?>
|
148 |
+
|
149 |
+
<?php echo $this->postbox_header('<acronym title="Hypertext Markup Language">HTML</acronym> & <acronym title="Extensible Markup Language">XML</acronym>'); ?>
|
150 |
<p>Specify browser cache policy for posts, pages, feeds and text-based files.</p>
|
151 |
+
|
152 |
<table class="form-table">
|
153 |
<tr>
|
154 |
<th colspan="2">
|
162 |
<label for="browsercache_html_lifetime">Expires header lifetime:</label>
|
163 |
</th>
|
164 |
<td>
|
165 |
+
<input id="browsercache_html_lifetime" type="text" name="browsercache.html.lifetime" value="<?php echo $this->_config->get_integer('browsercache.html.lifetime'); ?>" size="8" /> seconds
|
166 |
</td>
|
167 |
</tr>
|
168 |
<tr>
|
174 |
</tr>
|
175 |
<tr>
|
176 |
<th>
|
177 |
+
<label for="browsercache_html_cache_policy">Cache Control policy:</label>
|
178 |
</th>
|
179 |
<td>
|
180 |
<select id="browsercache_html_cache_policy" name="browsercache.html.cache.policy">
|
211 |
</table>
|
212 |
|
213 |
<p class="submit">
|
214 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
215 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
216 |
</p>
|
217 |
<?php echo $this->postbox_footer(); ?>
|
218 |
+
|
219 |
<?php echo $this->postbox_header('Media & Other Files'); ?>
|
220 |
<table class="form-table">
|
221 |
<tr>
|
230 |
<label for="browsercache_other_lifetime">Expires header lifetime:</label>
|
231 |
</th>
|
232 |
<td>
|
233 |
+
<input id="browsercache_other_lifetime" type="text" name="browsercache.other.lifetime" value="<?php echo $this->_config->get_integer('browsercache.other.lifetime'); ?>" size="8" /> seconds
|
234 |
</td>
|
235 |
</tr>
|
236 |
<tr>
|
242 |
</tr>
|
243 |
<tr>
|
244 |
<th>
|
245 |
+
<label for="browsercache_other_cache_policy">Cache Control policy:</label>
|
246 |
</th>
|
247 |
<td>
|
248 |
<select id="browsercache_other_cache_policy" name="browsercache.other.cache.policy">
|
286 |
</table>
|
287 |
|
288 |
<p class="submit">
|
289 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
290 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
291 |
</p>
|
292 |
<?php echo $this->postbox_footer(); ?>
|
293 |
</div>
|
294 |
</form>
|
295 |
|
296 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{cdn.phtml → cdn.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<p>
|
4 |
Content Delivery Network support via
|
@@ -8,21 +9,21 @@
|
|
8 |
|
9 |
<?php if ($cdn_mirror): ?>
|
10 |
<p>
|
11 |
-
Maximize <acronym title="Content Delivery Network">CDN</acronym> usage by <input id="cdn_rename_domain" class="button" type="button" value="modify attachment URLs" /> or
|
12 |
-
<input id="cdn_import_library" class="button" type="button" value="importing attachments into the Media Library" />.
|
13 |
<?php if (w3_can_cdn_purge($cdn_engine)): ?>
|
14 |
-
<input id="cdn_purge" class="button" type="button" value="Purge" /> objects from the CDN using this tool.
|
15 |
<?php endif; ?>
|
16 |
</p>
|
17 |
<?php else: ?>
|
18 |
<p>
|
19 |
Prepare the <acronym title="Content Delivery Network">CDN</acronym> by:
|
20 |
-
<input id="cdn_import_library" class="button" type="button" value="importing attachments into the Media Library" />.
|
21 |
-
Check <input id="cdn_queue" class="button" type="button" value="unsuccessful file transfers" /> if some objects appear to be missing.
|
22 |
<?php if (w3_can_cdn_purge($cdn_engine)): ?>
|
23 |
-
<input id="cdn_purge" class="button" type="button" value="Purge" /> objects from the <acronym title="Content Delivery Network">CDN</acronym> if needed.
|
24 |
<?php endif; ?>
|
25 |
-
<input id="cdn_rename_domain" class="button" type="button" value="Modify attachment URLs" /> if the domain name of your site has ever changed.
|
26 |
</p>
|
27 |
<?php endif; ?>
|
28 |
|
@@ -38,7 +39,7 @@
|
|
38 |
</th>
|
39 |
<?php if (! $cdn_mirror): ?>
|
40 |
<td>
|
41 |
-
<input id="cdn_export_library" class="button" type="button" value="Upload attachments" />
|
42 |
</td>
|
43 |
<?php endif; ?>
|
44 |
</tr>
|
@@ -50,7 +51,7 @@
|
|
50 |
</th>
|
51 |
<?php if (! $cdn_mirror): ?>
|
52 |
<td>
|
53 |
-
<input class="button cdn_export" type="button"
|
54 |
</td>
|
55 |
<?php endif; ?>
|
56 |
</tr>
|
@@ -62,7 +63,7 @@
|
|
62 |
</th>
|
63 |
<?php if (! $cdn_mirror): ?>
|
64 |
<td>
|
65 |
-
<input class="button cdn_export" type="button"
|
66 |
</td>
|
67 |
<?php endif; ?>
|
68 |
</tr>
|
@@ -74,7 +75,7 @@
|
|
74 |
</th>
|
75 |
<?php if (! $cdn_mirror): ?>
|
76 |
<td>
|
77 |
-
<input class="button cdn_export" type="button"
|
78 |
</td>
|
79 |
<?php endif; ?>
|
80 |
</tr>
|
@@ -86,7 +87,7 @@
|
|
86 |
</th>
|
87 |
<?php if (! $cdn_mirror): ?>
|
88 |
<td>
|
89 |
-
<input class="button cdn_export" type="button"
|
90 |
</td>
|
91 |
<?php endif; ?>
|
92 |
</tr>
|
@@ -109,31 +110,23 @@
|
|
109 |
</table>
|
110 |
|
111 |
<p class="submit">
|
112 |
-
|
|
|
113 |
</p>
|
114 |
<?php echo $this->postbox_footer(); ?>
|
115 |
|
116 |
<?php echo $this->postbox_header('Configuration'); ?>
|
117 |
<table class="form-table">
|
118 |
<?php
|
119 |
-
|
120 |
-
|
121 |
-
case 'netdna':
|
122 |
-
case 'cotendo':
|
123 |
-
case 'ftp':
|
124 |
-
case 's3':
|
125 |
-
case 'cf':
|
126 |
-
case 'cf2':
|
127 |
-
case 'rscf':
|
128 |
-
case 'azure':
|
129 |
-
include W3TC_DIR . '/inc/options/cdn/' . $cdn_engine . '.phtml';
|
130 |
-
break;
|
131 |
}
|
132 |
?>
|
133 |
</table>
|
134 |
|
135 |
<p class="submit">
|
136 |
-
|
|
|
137 |
</p>
|
138 |
<?php echo $this->postbox_footer(); ?>
|
139 |
|
@@ -142,7 +135,7 @@
|
|
142 |
<tr>
|
143 |
<th colspan="2">
|
144 |
<input type="hidden" name="cdn.reject.admins" value="0" />
|
145 |
-
<label><input type="checkbox" name="cdn.reject.admins" value="1"<?php checked($this->_config->get_boolean('cdn.reject.admins'), true); ?> /> Don't replace
|
146 |
<span class="description">Authenticated administrators will use the origin server exclusively when this option is selected.</span>
|
147 |
</th>
|
148 |
</tr>
|
@@ -230,13 +223,14 @@
|
|
230 |
<input type="hidden" name="set_cookie_domain_old" value="<?php echo (int) $set_cookie_domain; ?>" />
|
231 |
<input type="hidden" name="set_cookie_domain_new" value="0" />
|
232 |
<label><input type="checkbox" name="set_cookie_domain_new" value="1"<?php checked($set_cookie_domain, true); ?> /> Set cookie domain to "<?php echo htmlspecialchars($cookie_domain); ?>"</label>
|
233 |
-
<br /><span class="description">If using subdomain for CDN functionality, this setting helps prevent new users from sending cookies in requests to the CDN subdomain.</span>
|
234 |
</th>
|
235 |
</tr>
|
236 |
</table>
|
237 |
|
238 |
<p class="submit">
|
239 |
-
|
|
|
240 |
</p>
|
241 |
<?php echo $this->postbox_footer(); ?>
|
242 |
|
@@ -254,4 +248,4 @@
|
|
254 |
</div>
|
255 |
</form>
|
256 |
|
257 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<p>
|
5 |
Content Delivery Network support via
|
9 |
|
10 |
<?php if ($cdn_mirror): ?>
|
11 |
<p>
|
12 |
+
Maximize <acronym title="Content Delivery Network">CDN</acronym> usage by <input id="cdn_rename_domain" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="modify attachment URLs" /> or
|
13 |
+
<input id="cdn_import_library" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="importing attachments into the Media Library" />.
|
14 |
<?php if (w3_can_cdn_purge($cdn_engine)): ?>
|
15 |
+
<input id="cdn_purge" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Purge" /> objects from the <acronym title="Content Delivery Network">CDN</acronym> using this tool.
|
16 |
<?php endif; ?>
|
17 |
</p>
|
18 |
<?php else: ?>
|
19 |
<p>
|
20 |
Prepare the <acronym title="Content Delivery Network">CDN</acronym> by:
|
21 |
+
<input id="cdn_import_library" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="importing attachments into the Media Library" />.
|
22 |
+
Check <input id="cdn_queue" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="unsuccessful file transfers" /> if some objects appear to be missing.
|
23 |
<?php if (w3_can_cdn_purge($cdn_engine)): ?>
|
24 |
+
<input id="cdn_purge" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Purge" /> objects from the <acronym title="Content Delivery Network">CDN</acronym> if needed.
|
25 |
<?php endif; ?>
|
26 |
+
<input id="cdn_rename_domain" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Modify attachment URLs" /> if the domain name of your site has ever changed.
|
27 |
</p>
|
28 |
<?php endif; ?>
|
29 |
|
39 |
</th>
|
40 |
<?php if (! $cdn_mirror): ?>
|
41 |
<td>
|
42 |
+
<input id="cdn_export_library" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Upload attachments" />
|
43 |
</td>
|
44 |
<?php endif; ?>
|
45 |
</tr>
|
51 |
</th>
|
52 |
<?php if (! $cdn_mirror): ?>
|
53 |
<td>
|
54 |
+
<input class="button cdn_export {type: 'includes', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Upload includes files" />
|
55 |
</td>
|
56 |
<?php endif; ?>
|
57 |
</tr>
|
63 |
</th>
|
64 |
<?php if (! $cdn_mirror): ?>
|
65 |
<td>
|
66 |
+
<input class="button cdn_export {type: 'theme', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Upload theme files" />
|
67 |
</td>
|
68 |
<?php endif; ?>
|
69 |
</tr>
|
75 |
</th>
|
76 |
<?php if (! $cdn_mirror): ?>
|
77 |
<td>
|
78 |
+
<input class="button cdn_export {type: 'minify', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Upload minify files"<?php if (!$minify_enabled): ?> disabled="disabled"<?php endif; ?> />
|
79 |
</td>
|
80 |
<?php endif; ?>
|
81 |
</tr>
|
87 |
</th>
|
88 |
<?php if (! $cdn_mirror): ?>
|
89 |
<td>
|
90 |
+
<input class="button cdn_export {type: 'custom', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Upload custom files" />
|
91 |
</td>
|
92 |
<?php endif; ?>
|
93 |
</tr>
|
110 |
</table>
|
111 |
|
112 |
<p class="submit">
|
113 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
114 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
115 |
</p>
|
116 |
<?php echo $this->postbox_footer(); ?>
|
117 |
|
118 |
<?php echo $this->postbox_header('Configuration'); ?>
|
119 |
<table class="form-table">
|
120 |
<?php
|
121 |
+
if (w3_is_cdn_engine($cdn_engine)) {
|
122 |
+
include W3TC_INC_DIR . '/options/cdn/' . $cdn_engine . '.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
}
|
124 |
?>
|
125 |
</table>
|
126 |
|
127 |
<p class="submit">
|
128 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
129 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
130 |
</p>
|
131 |
<?php echo $this->postbox_footer(); ?>
|
132 |
|
135 |
<tr>
|
136 |
<th colspan="2">
|
137 |
<input type="hidden" name="cdn.reject.admins" value="0" />
|
138 |
+
<label><input type="checkbox" name="cdn.reject.admins" value="1"<?php checked($this->_config->get_boolean('cdn.reject.admins'), true); ?> /> Don't replace <acronym title="Uniform Resource Indicator">URL</acronym>s for logged in administrators</label><br />
|
139 |
<span class="description">Authenticated administrators will use the origin server exclusively when this option is selected.</span>
|
140 |
</th>
|
141 |
</tr>
|
223 |
<input type="hidden" name="set_cookie_domain_old" value="<?php echo (int) $set_cookie_domain; ?>" />
|
224 |
<input type="hidden" name="set_cookie_domain_new" value="0" />
|
225 |
<label><input type="checkbox" name="set_cookie_domain_new" value="1"<?php checked($set_cookie_domain, true); ?> /> Set cookie domain to "<?php echo htmlspecialchars($cookie_domain); ?>"</label>
|
226 |
+
<br /><span class="description">If using subdomain for <acronym title="Content Delivery Network">CDN</acronym> functionality, this setting helps prevent new users from sending cookies in requests to the <acronym title="Content Delivery Network">CDN</acronym> subdomain.</span>
|
227 |
</th>
|
228 |
</tr>
|
229 |
</table>
|
230 |
|
231 |
<p class="submit">
|
232 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
233 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
234 |
</p>
|
235 |
<?php echo $this->postbox_footer(); ?>
|
236 |
|
248 |
</div>
|
249 |
</form>
|
250 |
|
251 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/cdn/{azure.phtml → azure.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_azure_user">Account name:</label></th>
|
3 |
<td>
|
@@ -14,7 +15,7 @@
|
|
14 |
<th><label for="cdn_azure_container">Container:</label></th>
|
15 |
<td>
|
16 |
<input id="cdn_azure_container" type="text" name="cdn.azure.container" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.azure.container')); ?>" size="30" />
|
17 |
-
<input id="cdn_create_container" class="button
|
18 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
19 |
</td>
|
20 |
</tr>
|
@@ -37,11 +38,11 @@
|
|
37 |
<?php else: ?>
|
38 |
<account name>.blob.core.windows.net
|
39 |
<?php endif; ?> or CNAME:
|
40 |
-
<?php $cnames = $this->_config->get_array('cdn.azure.cname'); include
|
41 |
</td>
|
42 |
</tr>
|
43 |
<tr>
|
44 |
<th colspan="2">
|
45 |
-
<input id="cdn_test" class="button
|
46 |
</th>
|
47 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_azure_user">Account name:</label></th>
|
4 |
<td>
|
15 |
<th><label for="cdn_azure_container">Container:</label></th>
|
16 |
<td>
|
17 |
<input id="cdn_azure_container" type="text" name="cdn.azure.container" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.azure.container')); ?>" size="30" />
|
18 |
+
<input id="cdn_create_container" class="button {type: 'azure', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Create container" />
|
19 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
20 |
</td>
|
21 |
</tr>
|
38 |
<?php else: ?>
|
39 |
<account name>.blob.core.windows.net
|
40 |
<?php endif; ?> or CNAME:
|
41 |
+
<?php $cnames = $this->_config->get_array('cdn.azure.cname'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
42 |
</td>
|
43 |
</tr>
|
44 |
<tr>
|
45 |
<th colspan="2">
|
46 |
+
<input id="cdn_test" class="button {type: 'azure', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test Microsoft Azure Storage upload" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
47 |
</th>
|
48 |
</tr>
|
inc/options/cdn/{cf.phtml → cf.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_cf_key">Access key ID:</label></th>
|
3 |
<td>
|
@@ -14,7 +15,7 @@
|
|
14 |
<th><label for="cdn_cf_bucket">Bucket:</label></th>
|
15 |
<td>
|
16 |
<input id="cdn_cf_bucket" type="text" name="cdn.cf.bucket" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.cf.bucket')); ?>" size="30" />
|
17 |
-
<input class="button button-cdn-cf-bucket-location cdn_cf" type="button" value="Create bucket & distribution" />
|
18 |
</td>
|
19 |
</tr>
|
20 |
<tr>
|
@@ -32,12 +33,12 @@
|
|
32 |
<th><label for="cdn_cf_id">Replace site's hostname with:</label></th>
|
33 |
<td>
|
34 |
<input id="cdn_cf_id" type="text" name="cdn.cf.id" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.cf.id')); ?>" size="18" style="text-align: right;" />.cloudfront.net or CNAME:
|
35 |
-
<?php $cnames = $this->_config->get_array('cdn.cf.cname'); include
|
36 |
<br /><span class="description">If you have already added a <a href="http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/index.html?CNAMEs.html" target="_blank">CNAME</a> to your <acronym title="Domain Name System">DNS</acronym> Zone, enter it here.</span>
|
37 |
</td>
|
38 |
</tr>
|
39 |
<tr>
|
40 |
<th colspan="2">
|
41 |
-
<input id="cdn_test" class="button
|
42 |
</th>
|
43 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_cf_key">Access key ID:</label></th>
|
4 |
<td>
|
15 |
<th><label for="cdn_cf_bucket">Bucket:</label></th>
|
16 |
<td>
|
17 |
<input id="cdn_cf_bucket" type="text" name="cdn.cf.bucket" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.cf.bucket')); ?>" size="30" />
|
18 |
+
<input class="button button-cdn-cf-bucket-location cdn_cf {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Create bucket & distribution" />
|
19 |
</td>
|
20 |
</tr>
|
21 |
<tr>
|
33 |
<th><label for="cdn_cf_id">Replace site's hostname with:</label></th>
|
34 |
<td>
|
35 |
<input id="cdn_cf_id" type="text" name="cdn.cf.id" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.cf.id')); ?>" size="18" style="text-align: right;" />.cloudfront.net or CNAME:
|
36 |
+
<?php $cnames = $this->_config->get_array('cdn.cf.cname'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
37 |
<br /><span class="description">If you have already added a <a href="http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/index.html?CNAMEs.html" target="_blank">CNAME</a> to your <acronym title="Domain Name System">DNS</acronym> Zone, enter it here.</span>
|
38 |
</td>
|
39 |
</tr>
|
40 |
<tr>
|
41 |
<th colspan="2">
|
42 |
+
<input id="cdn_test" class="button {type: 'cf', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test S3 upload & CloudFront distribution" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
43 |
</th>
|
44 |
</tr>
|
inc/options/cdn/{cf2.phtml → cf2.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_cf2_key">Access key ID:</label></th>
|
3 |
<td>
|
@@ -14,7 +15,7 @@
|
|
14 |
<th>Origin:</th>
|
15 |
<td>
|
16 |
<?php echo w3_get_host(); ?>
|
17 |
-
<input id="cdn_create_container" class="button
|
18 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
19 |
</td>
|
20 |
</tr>
|
@@ -33,12 +34,12 @@
|
|
33 |
<th><label for="cdn_cf2_id">Replace site's hostname with:</label></th>
|
34 |
<td>
|
35 |
<input id="cdn_cf2_id" type="text" name="cdn.cf2.id" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.cf2.id')); ?>" size="18" style="text-align: right;" />.cloudfront.net or CNAME:
|
36 |
-
<?php $cnames = $this->_config->get_array('cdn.cf2.cname'); include
|
37 |
<br /><span class="description">If you have already added a <a href="http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/index.html?CNAMEs.html" target="_blank">CNAME</a> to your <acronym title="Domain Name System">DNS</acronym> Zone, enter it here.</span>
|
38 |
</td>
|
39 |
</tr>
|
40 |
<tr>
|
41 |
<th colspan="2">
|
42 |
-
<input id="cdn_test" class="button
|
43 |
</th>
|
44 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_cf2_key">Access key ID:</label></th>
|
4 |
<td>
|
15 |
<th>Origin:</th>
|
16 |
<td>
|
17 |
<?php echo w3_get_host(); ?>
|
18 |
+
<input id="cdn_create_container" class="button {type: 'cf2', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Create distribution" />
|
19 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
20 |
</td>
|
21 |
</tr>
|
34 |
<th><label for="cdn_cf2_id">Replace site's hostname with:</label></th>
|
35 |
<td>
|
36 |
<input id="cdn_cf2_id" type="text" name="cdn.cf2.id" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.cf2.id')); ?>" size="18" style="text-align: right;" />.cloudfront.net or CNAME:
|
37 |
+
<?php $cnames = $this->_config->get_array('cdn.cf2.cname'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
38 |
<br /><span class="description">If you have already added a <a href="http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/index.html?CNAMEs.html" target="_blank">CNAME</a> to your <acronym title="Domain Name System">DNS</acronym> Zone, enter it here.</span>
|
39 |
</td>
|
40 |
</tr>
|
41 |
<tr>
|
42 |
<th colspan="2">
|
43 |
+
<input id="cdn_test" class="button {type: 'cf2', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test CloudFront distribution" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
44 |
</th>
|
45 |
</tr>
|
inc/options/cdn/common/{cnames.phtml → cnames.php}
RENAMED
@@ -1,5 +1,6 @@
|
|
|
|
1 |
<ol id="cdn_cnames">
|
2 |
-
<?php
|
3 |
if (! count($cnames)) {
|
4 |
$cnames = array('');
|
5 |
}
|
@@ -8,33 +9,33 @@ $count = count($cnames);
|
|
8 |
|
9 |
foreach ($cnames as $index => $cname):
|
10 |
$label = '';
|
11 |
-
|
12 |
if ($count > 1):
|
13 |
switch ($index):
|
14 |
case 0:
|
15 |
-
$label = '(reserved for CSS)';
|
16 |
break;
|
17 |
-
|
18 |
case 1:
|
19 |
-
$label = '(reserved for JS in <head>)';
|
20 |
break;
|
21 |
-
|
22 |
case 2:
|
23 |
-
$label = '(reserved for JS after <body>)';
|
24 |
break;
|
25 |
-
|
26 |
case 3:
|
27 |
-
$label = '(reserved for JS before </body>)';
|
28 |
break;
|
29 |
-
|
30 |
default:
|
31 |
$label = '';
|
32 |
break;
|
33 |
endswitch;
|
34 |
-
endif;
|
35 |
?>
|
36 |
<li>
|
37 |
-
<input type="text" name="cdn_cnames[]" value="<?php echo htmlspecialchars($cname); ?>" size="
|
38 |
<input class="button cdn_cname_delete" type="button" value="Delete"<?php if (!$index): ?> style="display: none;"<?php endif; ?> />
|
39 |
<span><?php echo htmlspecialchars($label); ?></span>
|
40 |
</li>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<ol id="cdn_cnames">
|
3 |
+
<?php
|
4 |
if (! count($cnames)) {
|
5 |
$cnames = array('');
|
6 |
}
|
9 |
|
10 |
foreach ($cnames as $index => $cname):
|
11 |
$label = '';
|
12 |
+
|
13 |
if ($count > 1):
|
14 |
switch ($index):
|
15 |
case 0:
|
16 |
+
$label = '(reserved for <acronym title="Cascading Style Sheet">CSS</acronym>)';
|
17 |
break;
|
18 |
+
|
19 |
case 1:
|
20 |
+
$label = '(reserved for <acronym title="JavaScript">JS</acronym> in <head>)';
|
21 |
break;
|
22 |
+
|
23 |
case 2:
|
24 |
+
$label = '(reserved for <acronym title="JavaScript">JS</acronym> after <body>)';
|
25 |
break;
|
26 |
+
|
27 |
case 3:
|
28 |
+
$label = '(reserved for <acronym title="JavaScript">JS</acronym> before </body>)';
|
29 |
break;
|
30 |
+
|
31 |
default:
|
32 |
$label = '';
|
33 |
break;
|
34 |
endswitch;
|
35 |
+
endif;
|
36 |
?>
|
37 |
<li>
|
38 |
+
<input type="text" name="cdn_cnames[]" value="<?php echo htmlspecialchars($cname); ?>" size="60" />
|
39 |
<input class="button cdn_cname_delete" type="button" value="Delete"<?php if (!$index): ?> style="display: none;"<?php endif; ?> />
|
40 |
<span><?php echo htmlspecialchars($label); ?></span>
|
41 |
</li>
|
inc/options/cdn/common/index.html
ADDED
File without changes
|
inc/options/cdn/{cotendo.phtml → cotendo.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_cotendo_username">Username:</label></th>
|
3 |
<td>
|
@@ -30,12 +31,12 @@
|
|
30 |
<tr>
|
31 |
<th>Replace site's hostname with:</th>
|
32 |
<td>
|
33 |
-
<?php $cnames = $this->_config->get_array('cdn.cotendo.domain'); include
|
34 |
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
35 |
</td>
|
36 |
</tr>
|
37 |
<tr>
|
38 |
<th colspan="2">
|
39 |
-
<input id="cdn_test" class="button
|
40 |
</th>
|
41 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_cotendo_username">Username:</label></th>
|
4 |
<td>
|
31 |
<tr>
|
32 |
<th>Replace site's hostname with:</th>
|
33 |
<td>
|
34 |
+
<?php $cnames = $this->_config->get_array('cdn.cotendo.domain'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
35 |
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
36 |
</td>
|
37 |
</tr>
|
38 |
<tr>
|
39 |
<th colspan="2">
|
40 |
+
<input id="cdn_test" class="button {type: 'cotendo', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test Cotendo" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
41 |
</th>
|
42 |
</tr>
|
inc/options/cdn/edgecast.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<tr>
|
3 |
+
<th style="width: 300px;"><label for="cdn_edgecast_account">Account #:</label></th>
|
4 |
+
<td>
|
5 |
+
<input id="cdn_edgecast_account" class="w3tc-ignore-change" type="text" name="cdn.edgecast.account" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.edgecast.account')); ?>" size="60" />
|
6 |
+
</td>
|
7 |
+
</tr>
|
8 |
+
<tr>
|
9 |
+
<th><label for="cdn_edgecast_token">Token:</th>
|
10 |
+
<td>
|
11 |
+
<input id="cdn_edgecast_token" class="w3tc-ignore-change" type="password" name="cdn.edgecast.token" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.edgecast.token')); ?>" size="60" />
|
12 |
+
</td>
|
13 |
+
</tr>
|
14 |
+
<tr>
|
15 |
+
<th><label for="cdn_edgecast_ssl"><acronym title="Secure Sockets Layer">SSL</acronym> support:</label></th>
|
16 |
+
<td>
|
17 |
+
<select id="cdn_edgecast_ssl" name="cdn.edgecast.ssl">
|
18 |
+
<option value="auto"<?php selected($this->_config->get_string('cdn.edgecast.ssl'), 'auto'); ?>>Auto (determine connection type automatically)</option>
|
19 |
+
<option value="enabled"<?php selected($this->_config->get_string('cdn.edgecast.ssl'), 'enabled'); ?>>Enabled (always use SSL)</option>
|
20 |
+
<option value="disabled"<?php selected($this->_config->get_string('cdn.edgecast.ssl'), 'disabled'); ?>>Disabled (always use HTTP)</option>
|
21 |
+
</select>
|
22 |
+
<br /><span class="description">Some <acronym>CDN</acronym> providers may or may not support <acronym title="Secure Sockets Layer">SSL</acronym>, contact your vendor for more information.</span>
|
23 |
+
</td>
|
24 |
+
</tr>
|
25 |
+
<tr>
|
26 |
+
<th>Replace site's hostname with:</th>
|
27 |
+
<td>
|
28 |
+
<?php $cnames = $this->_config->get_array('cdn.edgecast.domain'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
29 |
+
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
30 |
+
</td>
|
31 |
+
</tr>
|
32 |
+
<tr>
|
33 |
+
<th colspan="2">
|
34 |
+
<input id="cdn_test" class="button {type: 'edgecast', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test EdgeCast" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
35 |
+
</th>
|
36 |
+
</tr>
|
inc/options/cdn/{ftp.phtml → ftp.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th colspan="2">
|
3 |
<input type="hidden" name="cdn.ftp.pasv" value="0" />
|
@@ -45,12 +46,12 @@
|
|
45 |
<tr>
|
46 |
<th>Replace site's hostname with:</th>
|
47 |
<td>
|
48 |
-
<?php $cnames = $this->_config->get_array('cdn.ftp.domain'); include
|
49 |
-
<br /><span class="description">Enter the hostname or CNAME(s) of your FTP server configured above, these values will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
50 |
</td>
|
51 |
</tr>
|
52 |
<tr>
|
53 |
<th colspan="2">
|
54 |
-
<input id="cdn_test" class="button
|
55 |
</th>
|
56 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th colspan="2">
|
4 |
<input type="hidden" name="cdn.ftp.pasv" value="0" />
|
46 |
<tr>
|
47 |
<th>Replace site's hostname with:</th>
|
48 |
<td>
|
49 |
+
<?php $cnames = $this->_config->get_array('cdn.ftp.domain'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
50 |
+
<br /><span class="description">Enter the hostname or CNAME(s) of your <acronym title="File Transfer Protocol">FTP</acronym> server configured above, these values will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
51 |
</td>
|
52 |
</tr>
|
53 |
<tr>
|
54 |
<th colspan="2">
|
55 |
+
<input id="cdn_test" class="button {type: 'ftp', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test FTP server" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
56 |
</th>
|
57 |
</tr>
|
inc/options/cdn/index.html
ADDED
File without changes
|
inc/options/cdn/{mirror.phtml → mirror.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th><label for="cdn_mirror_ssl"><acronym title="Secure Sockets Layer">SSL</acronym> support:</label></th>
|
3 |
<td>
|
@@ -12,12 +13,12 @@
|
|
12 |
<tr>
|
13 |
<th>Replace site's hostname with:</th>
|
14 |
<td>
|
15 |
-
<?php $cnames = $this->_config->get_array('cdn.mirror.domain'); include
|
16 |
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
17 |
</td>
|
18 |
</tr>
|
19 |
<tr>
|
20 |
<th colspan="2">
|
21 |
-
<input id="cdn_test" class="button
|
22 |
</th>
|
23 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th><label for="cdn_mirror_ssl"><acronym title="Secure Sockets Layer">SSL</acronym> support:</label></th>
|
4 |
<td>
|
13 |
<tr>
|
14 |
<th>Replace site's hostname with:</th>
|
15 |
<td>
|
16 |
+
<?php $cnames = $this->_config->get_array('cdn.mirror.domain'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
17 |
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
18 |
</td>
|
19 |
</tr>
|
20 |
<tr>
|
21 |
<th colspan="2">
|
22 |
+
<input id="cdn_test" class="button {type: 'mirror', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test Mirror" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
23 |
</th>
|
24 |
</tr>
|
inc/options/cdn/{netdna.phtml → netdna.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_netdna_apiid"><acronym title="Application Programming Interface">API</acronym> ID:</label></th>
|
3 |
<td>
|
@@ -24,12 +25,12 @@
|
|
24 |
<tr>
|
25 |
<th>Replace site's hostname with:</th>
|
26 |
<td>
|
27 |
-
<?php $cnames = $this->_config->get_array('cdn.netdna.domain'); include
|
28 |
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
29 |
</td>
|
30 |
</tr>
|
31 |
<tr>
|
32 |
<th colspan="2">
|
33 |
-
<input id="cdn_test" class="button
|
34 |
</th>
|
35 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_netdna_apiid"><acronym title="Application Programming Interface">API</acronym> ID:</label></th>
|
4 |
<td>
|
25 |
<tr>
|
26 |
<th>Replace site's hostname with:</th>
|
27 |
<td>
|
28 |
+
<?php $cnames = $this->_config->get_array('cdn.netdna.domain'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
29 |
<br /><span class="description">Enter the hostname provided by your <acronym>CDN</acronym> provider, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
30 |
</td>
|
31 |
</tr>
|
32 |
<tr>
|
33 |
<th colspan="2">
|
34 |
+
<input id="cdn_test" class="button {type: 'netdna', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test NetDNA" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
35 |
</th>
|
36 |
</tr>
|
inc/options/cdn/{rscf.phtml → rscf.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_rscf_user">Username:</label></th>
|
3 |
<td>
|
@@ -23,7 +24,7 @@
|
|
23 |
<th><label for="cdn_rscf_container">Container:</label></th>
|
24 |
<td>
|
25 |
<input id="cdn_rscf_container" type="text" name="cdn.rscf.container" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.rscf.container')); ?>" size="30" />
|
26 |
-
<input id="cdn_create_container" class="button
|
27 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
28 |
</td>
|
29 |
</tr>
|
@@ -41,12 +42,12 @@
|
|
41 |
<tr>
|
42 |
<th>Replace site's hostname with:</th>
|
43 |
<td>
|
44 |
-
<?php $cnames = $this->_config->get_array('cdn.rscf.cname'); include
|
45 |
<br /><span class="description">Enter the hostname provided by Rackspace Cloud Files, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
46 |
</td>
|
47 |
</tr>
|
48 |
<tr>
|
49 |
<th colspan="2">
|
50 |
-
<input id="cdn_test" class="button
|
51 |
</th>
|
52 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_rscf_user">Username:</label></th>
|
4 |
<td>
|
24 |
<th><label for="cdn_rscf_container">Container:</label></th>
|
25 |
<td>
|
26 |
<input id="cdn_rscf_container" type="text" name="cdn.rscf.container" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.rscf.container')); ?>" size="30" />
|
27 |
+
<input id="cdn_create_container" class="button {type: 'rscf', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Create container" />
|
28 |
<span id="cdn_create_container_status" class="w3tc-status w3tc-process"></span>
|
29 |
</td>
|
30 |
</tr>
|
42 |
<tr>
|
43 |
<th>Replace site's hostname with:</th>
|
44 |
<td>
|
45 |
+
<?php $cnames = $this->_config->get_array('cdn.rscf.cname'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
46 |
<br /><span class="description">Enter the hostname provided by Rackspace Cloud Files, this value will replace your site's hostname in the <acronym title="Hypertext Markup Language">HTML</acronym>.</span>
|
47 |
</td>
|
48 |
</tr>
|
49 |
<tr>
|
50 |
<th colspan="2">
|
51 |
+
<input id="cdn_test" class="button {type: 'rscf', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test Cloud Files upload" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
52 |
</th>
|
53 |
</tr>
|
inc/options/cdn/{s3.phtml → s3.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th style="width: 300px;"><label for="cdn_s3_key">Access key ID:</label></th>
|
3 |
<td>
|
@@ -14,7 +15,7 @@
|
|
14 |
<th><label for="cdn_s3_bucket">Bucket:</label></th>
|
15 |
<td>
|
16 |
<input id="cdn_s3_bucket" type="text" name="cdn.s3.bucket" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.s3.bucket')); ?>" size="30" />
|
17 |
-
<input class="button button-cdn-s3-bucket-location cdn_s3" type="button" value="Create bucket" />
|
18 |
</td>
|
19 |
</tr>
|
20 |
<tr>
|
@@ -36,12 +37,12 @@
|
|
36 |
<?php else: ?>
|
37 |
<bucket>.s3.amazonaws.com
|
38 |
<?php endif; ?> or CNAME:
|
39 |
-
<?php $cnames = $this->_config->get_array('cdn.s3.cname'); include
|
40 |
<br /><span class="description">If you have already added a <a href="http://docs.amazonwebservices.com/AmazonS3/latest/DeveloperGuide/VirtualHosting.html#VirtualHostingCustomURLs" target="_blank">CNAME</a> to your <acronym title="Domain Name System">DNS</acronym> Zone, enter it here.</span>
|
41 |
</td>
|
42 |
</tr>
|
43 |
<tr>
|
44 |
<th colspan="2">
|
45 |
-
<input id="cdn_test" class="button
|
46 |
</th>
|
47 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th style="width: 300px;"><label for="cdn_s3_key">Access key ID:</label></th>
|
4 |
<td>
|
15 |
<th><label for="cdn_s3_bucket">Bucket:</label></th>
|
16 |
<td>
|
17 |
<input id="cdn_s3_bucket" type="text" name="cdn.s3.bucket" value="<?php echo htmlspecialchars($this->_config->get_string('cdn.s3.bucket')); ?>" size="30" />
|
18 |
+
<input class="button button-cdn-s3-bucket-location cdn_s3 {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Create bucket" />
|
19 |
</td>
|
20 |
</tr>
|
21 |
<tr>
|
37 |
<?php else: ?>
|
38 |
<bucket>.s3.amazonaws.com
|
39 |
<?php endif; ?> or CNAME:
|
40 |
+
<?php $cnames = $this->_config->get_array('cdn.s3.cname'); include W3TC_INC_DIR . '/options/cdn/common/cnames.php'; ?>
|
41 |
<br /><span class="description">If you have already added a <a href="http://docs.amazonwebservices.com/AmazonS3/latest/DeveloperGuide/VirtualHosting.html#VirtualHostingCustomURLs" target="_blank">CNAME</a> to your <acronym title="Domain Name System">DNS</acronym> Zone, enter it here.</span>
|
42 |
</td>
|
43 |
</tr>
|
44 |
<tr>
|
45 |
<th colspan="2">
|
46 |
+
<input id="cdn_test" class="button {type: 's3', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test S3 upload" /> <span id="cdn_test_status" class="w3tc-status w3tc-process"></span>
|
47 |
</th>
|
48 |
</tr>
|
inc/options/common/{footer.phtml → footer.php}
RENAMED
File without changes
|
inc/options/common/{header.phtml → header.php}
RENAMED
@@ -1,7 +1,9 @@
|
|
|
|
|
|
1 |
<?php if ($this->_support_reminder): ?>
|
2 |
<script type="text/javascript">/*<![CDATA[*/
|
3 |
jQuery(function($) {
|
4 |
-
w3tc_lightbox_support_us();
|
5 |
});
|
6 |
/*]]>*/</script>
|
7 |
<?php endif; ?>
|
@@ -36,7 +38,7 @@ jQuery(function($) {
|
|
36 |
<a href="?page=w3tc_browsercache"<?php if ($this->_page == 'w3tc_browsercache'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>Browser Cache</a> |
|
37 |
<a href="?page=w3tc_mobile"<?php if ($this->_page == 'w3tc_mobile'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>User Agent Groups</a> |
|
38 |
<a href="?page=w3tc_referrer"<?php if ($this->_page == 'w3tc_referrer'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>Referrer Groups</a> |
|
39 |
-
<a href="?page=w3tc_cdn"<?php if ($this->_page == 'w3tc_cdn'): ?> class="w3tc-options-menu-selected"<?php endif;
|
40 |
<a href="?page=w3tc_faq"<?php if ($this->_page == 'w3tc_faq'): ?> class="w3tc-options-menu-selected"<?php endif; ?>><acronym title="Frequently Asked Questions">FAQ</acronym></a> |
|
41 |
<a href="?page=w3tc_support"<?php if ($this->_page == 'w3tc_support'): ?> class="w3tc-options-menu-selected"<?php endif; ?> style="color: red;">Support</a> |
|
42 |
<a href="?page=w3tc_install"<?php if ($this->_page == 'w3tc_install'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>Install</a> |
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
|
3 |
<?php if ($this->_support_reminder): ?>
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
jQuery(function($) {
|
6 |
+
w3tc_lightbox_support_us('<?php echo wp_create_nonce('w3tc'); ?>');
|
7 |
});
|
8 |
/*]]>*/</script>
|
9 |
<?php endif; ?>
|
38 |
<a href="?page=w3tc_browsercache"<?php if ($this->_page == 'w3tc_browsercache'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>Browser Cache</a> |
|
39 |
<a href="?page=w3tc_mobile"<?php if ($this->_page == 'w3tc_mobile'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>User Agent Groups</a> |
|
40 |
<a href="?page=w3tc_referrer"<?php if ($this->_page == 'w3tc_referrer'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>Referrer Groups</a> |
|
41 |
+
<a href="?page=w3tc_cdn"<?php if ($this->_page == 'w3tc_cdn'): ?> class="w3tc-options-menu-selected"<?php endif; ?>><acronym title="Content Delivery Network">CDN</acronym></a> |
|
42 |
<a href="?page=w3tc_faq"<?php if ($this->_page == 'w3tc_faq'): ?> class="w3tc-options-menu-selected"<?php endif; ?>><acronym title="Frequently Asked Questions">FAQ</acronym></a> |
|
43 |
<a href="?page=w3tc_support"<?php if ($this->_page == 'w3tc_support'): ?> class="w3tc-options-menu-selected"<?php endif; ?> style="color: red;">Support</a> |
|
44 |
<a href="?page=w3tc_install"<?php if ($this->_page == 'w3tc_install'): ?> class="w3tc-options-menu-selected"<?php endif; ?>>Install</a> |
|
inc/options/common/{help.phtml → help.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<div id="w3tc-help">
|
2 |
<p>Request professional <a href="admin.php?page=w3tc_support" style="color: red;"><strong>support</strong></a> or troubleshoot issues using the common questions below:</p>
|
3 |
|
@@ -10,6 +11,6 @@
|
|
10 |
<?php endforeach; ?>
|
11 |
</ul>
|
12 |
<?php endforeach; ?>
|
13 |
-
|
14 |
<div style="clear: left;"></div>
|
15 |
</div>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<div id="w3tc-help">
|
3 |
<p>Request professional <a href="admin.php?page=w3tc_support" style="color: red;"><strong>support</strong></a> or troubleshoot issues using the common questions below:</p>
|
4 |
|
11 |
<?php endforeach; ?>
|
12 |
</ul>
|
13 |
<?php endforeach; ?>
|
14 |
+
|
15 |
<div style="clear: left;"></div>
|
16 |
</div>
|
inc/options/common/index.html
ADDED
File without changes
|
inc/options/{dbcache.phtml → dbcache.php}
RENAMED
@@ -1,16 +1,17 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
-
<form action="admin.php">
|
4 |
<p>
|
5 |
Database caching via
|
6 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('dbcache.engine')); ?></strong>
|
7 |
is currently <span class="w3tc-<?php if ($dbcache_enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>.
|
8 |
</p>
|
9 |
<p>
|
10 |
-
To rebuild the database cache use the
|
11 |
-
|
|
|
12 |
operation.
|
13 |
-
<input type="hidden" name="page" value="<?php echo $this->_page; ?>" />
|
14 |
</p>
|
15 |
</form>
|
16 |
|
@@ -28,7 +29,8 @@
|
|
28 |
</table>
|
29 |
|
30 |
<p class="submit">
|
31 |
-
|
|
|
32 |
</p>
|
33 |
<?php echo $this->postbox_footer(); ?>
|
34 |
|
@@ -39,7 +41,7 @@
|
|
39 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
40 |
<td>
|
41 |
<input id="memcached_servers" type="text" name="dbcache.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('dbcache.memcached.servers'))); ?>" size="100" />
|
42 |
-
<input id="memcached_test" class="button" type="button" value="Test" />
|
43 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
44 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
45 |
</td>
|
@@ -74,10 +76,11 @@
|
|
74 |
</table>
|
75 |
|
76 |
<p class="submit">
|
77 |
-
|
|
|
78 |
</p>
|
79 |
<?php echo $this->postbox_footer(); ?>
|
80 |
</div>
|
81 |
</form>
|
82 |
|
83 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
+
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
5 |
<p>
|
6 |
Database caching via
|
7 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('dbcache.engine')); ?></strong>
|
8 |
is currently <span class="w3tc-<?php if ($dbcache_enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>.
|
9 |
</p>
|
10 |
<p>
|
11 |
+
To rebuild the database cache use the
|
12 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
13 |
+
<input type="submit" name="w3tc_flush_dbcache" value="empty cache"<?php if (! $dbcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
14 |
operation.
|
|
|
15 |
</p>
|
16 |
</form>
|
17 |
|
29 |
</table>
|
30 |
|
31 |
<p class="submit">
|
32 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
33 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
34 |
</p>
|
35 |
<?php echo $this->postbox_footer(); ?>
|
36 |
|
41 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
42 |
<td>
|
43 |
<input id="memcached_servers" type="text" name="dbcache.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('dbcache.memcached.servers'))); ?>" size="100" />
|
44 |
+
<input id="memcached_test" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test" />
|
45 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
46 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
47 |
</td>
|
76 |
</table>
|
77 |
|
78 |
<p class="submit">
|
79 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
80 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
81 |
</p>
|
82 |
<?php echo $this->postbox_footer(); ?>
|
83 |
</div>
|
84 |
</form>
|
85 |
|
86 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{faq.phtml → faq.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<h4>Table of Contents</h4>
|
4 |
|
@@ -27,4 +28,4 @@
|
|
27 |
<?php endforeach; ?>
|
28 |
</div>
|
29 |
|
30 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<h4>Table of Contents</h4>
|
5 |
|
28 |
<?php endforeach; ?>
|
29 |
</div>
|
30 |
|
31 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/faq.xml
CHANGED
@@ -546,7 +546,7 @@
|
|
546 |
<li>define('DONOTCACHEDB', true);<br />Disables database caching for given page.</li>
|
547 |
<li>define('DONOTMINIFY', true);<br />Disables minify for a given page.</li>
|
548 |
<li>define('DONOTCDN', true);<br />Disables content delivery network for a given page.</li>
|
549 |
-
<li>define('
|
550 |
</ul>
|
551 |
]]></answer>
|
552 |
</entry>
|
@@ -622,7 +622,7 @@
|
|
622 |
<section name="Requirements">
|
623 |
<entry>
|
624 |
<question><![CDATA[ Which web servers do you support? ]]></question>
|
625 |
-
<answer><![CDATA[ <p>We are aware of no incompatibilities with <a href="http://httpd.apache.org/" target="_blank">apache</a> 1.3+, <a href="http://www.iis.net/" target="_blank">IIS</a> 5+ or <a href="http://litespeedtech.com/products/webserver/overview/" target="_blank">litespeed</a> 4.0.2+. If there's a web server you feel we should be actively testing (e.g. <a href="http://www.lighttpd.net/" target="_blank">lighttpd</a>), we're <a href="mailto:wordpressexperts@w3-edge.com">interested in hearing</a>.</p> ]]></answer>
|
626 |
</entry>
|
627 |
<entry>
|
628 |
<question><![CDATA[ Do I need to enable mod_gzip, mod_rewrite or install any <acronym title="Hypertext Transfer Protocol">HTTP</acronym> compression software on my server? ]]></question>
|
546 |
<li>define('DONOTCACHEDB', true);<br />Disables database caching for given page.</li>
|
547 |
<li>define('DONOTMINIFY', true);<br />Disables minify for a given page.</li>
|
548 |
<li>define('DONOTCDN', true);<br />Disables content delivery network for a given page.</li>
|
549 |
+
<li>define('DONOTCACHEOBJECT', true);<br />Disables object cache for a given page.</li>
|
550 |
</ul>
|
551 |
]]></answer>
|
552 |
</entry>
|
622 |
<section name="Requirements">
|
623 |
<entry>
|
624 |
<question><![CDATA[ Which web servers do you support? ]]></question>
|
625 |
+
<answer><![CDATA[ <p>We are aware of no incompatibilities with <a href="http://httpd.apache.org/" target="_blank">apache</a> 1.3+, <a href="http://wiki.nginx.org/" target="_blank">nginx 0.7+</a>, , <a href="http://www.iis.net/" target="_blank">IIS</a> 5+ or <a href="http://litespeedtech.com/products/webserver/overview/" target="_blank">litespeed</a> 4.0.2+. If there's a web server you feel we should be actively testing (e.g. <a href="http://www.lighttpd.net/" target="_blank">lighttpd</a>), we're <a href="mailto:wordpressexperts@w3-edge.com">interested in hearing</a>.</p> ]]></answer>
|
626 |
</entry>
|
627 |
<entry>
|
628 |
<question><![CDATA[ Do I need to enable mod_gzip, mod_rewrite or install any <acronym title="Hypertext Transfer Protocol">HTTP</acronym> compression software on my server? ]]></question>
|
inc/options/{general.phtml → general.php}
RENAMED
@@ -1,18 +1,19 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<p>
|
4 |
The plugin is currently <span class="w3tc-<?php if ($enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>. If an option is disabled it means that either your current installation is not compatible or software installation is required.
|
5 |
</p>
|
6 |
|
7 |
-
<form action="admin.php">
|
8 |
<p>
|
9 |
Perform a
|
10 |
-
<input type="
|
11 |
-
|
12 |
-
<input class="button" type="submit" name="
|
13 |
-
<input class="button" type="submit" name="
|
14 |
-
<input class="button" type="submit" name="
|
15 |
-
<input class="button" type="submit" name="
|
16 |
</p>
|
17 |
</form>
|
18 |
|
@@ -31,14 +32,15 @@
|
|
31 |
<tr>
|
32 |
<th>Preview Mode:</th>
|
33 |
<td>
|
|
|
34 |
<?php if ($preview): ?>
|
35 |
<input type="hidden" name="preview" value="0" />
|
36 |
-
<input type="submit" name="
|
37 |
<?php echo $this->button_link('Preview', w3_get_home_url() . '/?w3tc_preview=1', true); ?>
|
38 |
-
<?php echo $this->button_link('Deploy', sprintf('admin.php?page=%s&
|
39 |
<?php else: ?>
|
40 |
<input type="hidden" name="preview" value="1" />
|
41 |
-
<input type="submit" name="
|
42 |
<?php endif; ?>
|
43 |
<br /><span class="description">Use preview mode to test configuration scenarios prior to releasing them (deploy) on the actual site.</span>
|
44 |
</td>
|
@@ -46,7 +48,8 @@
|
|
46 |
</table>
|
47 |
|
48 |
<p class="submit">
|
49 |
-
|
|
|
50 |
</p>
|
51 |
<?php echo $this->postbox_footer(); ?>
|
52 |
|
@@ -67,8 +70,8 @@
|
|
67 |
<td>
|
68 |
<select name="pgcache.engine">
|
69 |
<optgroup label="Shared Server (disk enhanced is best):">
|
70 |
-
<option value="
|
71 |
-
<option value="
|
72 |
</optgroup>
|
73 |
<optgroup label="Dedicated / Virtual Server:">
|
74 |
<option value="apc"<?php selected($this->_config->get_string('pgcache.engine'), 'apc'); ?><?php if (! $check_apc): ?> disabled="disabled"<?php endif; ?>>Opcode: Alternative PHP Cache (APC)</option>
|
@@ -85,8 +88,9 @@
|
|
85 |
</table>
|
86 |
|
87 |
<p class="submit">
|
88 |
-
|
89 |
-
<input type="submit" name="
|
|
|
90 |
</p>
|
91 |
<?php echo $this->postbox_footer(); ?>
|
92 |
|
@@ -161,8 +165,9 @@
|
|
161 |
</table>
|
162 |
|
163 |
<p class="submit">
|
164 |
-
|
165 |
-
<input type="submit" name="
|
|
|
166 |
</p>
|
167 |
<?php echo $this->postbox_footer(); ?>
|
168 |
|
@@ -200,8 +205,9 @@
|
|
200 |
</table>
|
201 |
|
202 |
<p class="submit">
|
203 |
-
|
204 |
-
<input type="submit" name="
|
|
|
205 |
</p>
|
206 |
<?php echo $this->postbox_footer(); ?>
|
207 |
|
@@ -239,15 +245,102 @@
|
|
239 |
</table>
|
240 |
|
241 |
<p class="submit">
|
242 |
-
|
243 |
-
<input type="submit" name="
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
</p>
|
245 |
<?php echo $this->postbox_footer(); ?>
|
246 |
|
247 |
<?php echo $this->postbox_header('Network Performance & Security powered by CloudFlare'); ?>
|
248 |
<p>
|
249 |
CloudFlare protects and accelerates websites. <a href="https://www.cloudflare.com/sign-up.html?affiliate=w3edge&seed_domain=<?php echo w3_get_host(); ?>&email=<?php echo htmlspecialchars($cloudflare_signup_email); ?>&username=<?php echo htmlspecialchars($cloudflare_signup_user); ?>" target="_blank">Sign up now for free</a> to get started,
|
250 |
-
or if you have an account simply log in to obtain your <acronym title="Application Programming Interface">API</acronym> key from the <a href="https://www.cloudflare.com/my-account.html">
|
251 |
Contact the CloudFlare <a href="http://www.cloudflare.com/help.html" target="_blank">support team</a> with any questions.
|
252 |
</p>
|
253 |
|
@@ -305,90 +398,9 @@
|
|
305 |
</table>
|
306 |
|
307 |
<p class="submit">
|
308 |
-
|
309 |
-
<input
|
310 |
-
|
311 |
-
<?php echo $this->postbox_footer(); ?>
|
312 |
-
|
313 |
-
<?php echo $this->postbox_header('Varnish'); ?>
|
314 |
-
<table class="form-table">
|
315 |
-
<tr>
|
316 |
-
<th colspan="2">
|
317 |
-
<input type="hidden" name="varnish.enabled" value="0" />
|
318 |
-
<label><input class="enabled" type="checkbox" name="varnish.enabled" value="1"<?php checked($varnish_enabled, true); ?> /> Enable varnish cache purging</label><br />
|
319 |
-
</th>
|
320 |
-
</tr>
|
321 |
-
<tr>
|
322 |
-
<th><label for="pgcache_varnish_servers">Varnish servers:</label></th>
|
323 |
-
<td>
|
324 |
-
<textarea id="pgcache_varnish_servers" name="varnish.servers" cols="40" rows="5"><?php echo htmlspecialchars(implode("\r\n", $this->_config->get_array('varnish.servers'))); ?></textarea><br />
|
325 |
-
<span class="description">Specify the IP addresses of your varnish instances above. Your <acronym title="Varnish Configuration Language">VCL</acronym>'s <acronym title="Access Control List">ACL</acronym> must allow this request.</span>
|
326 |
-
</td>
|
327 |
-
</tr>
|
328 |
-
</table>
|
329 |
-
|
330 |
-
<p class="submit">
|
331 |
-
<input type="submit" name="options_save" class="w3tc-button-save button-primary" value="Save all settings" />
|
332 |
-
</p>
|
333 |
-
<?php echo $this->postbox_footer(); ?>
|
334 |
-
|
335 |
-
<?php echo $this->postbox_header('Content Delivery Network'); ?>
|
336 |
-
<p>Host static files with your content delivery network provider to reduce page load time.</p>
|
337 |
-
|
338 |
-
<table class="form-table">
|
339 |
-
<tr>
|
340 |
-
<th><acronym title="Content Delivery Network">CDN</acronym>:</th>
|
341 |
-
<td>
|
342 |
-
<input type="hidden" name="cdn.enabled" value="0" />
|
343 |
-
<label><input class="enabled" type="checkbox" name="cdn.enabled" value="1"<?php checked($cdn_enabled, true); ?> /> <strong>Enable</strong></label>
|
344 |
-
<br /><span class="description">Theme files, media library attachments, <acronym title="Cascading Style Sheet">CSS</acronym>, <acronym title="JavaScript">JS</acronym> files etc will appear to load instantly for site visitors.</span>
|
345 |
-
</td>
|
346 |
-
</tr>
|
347 |
-
<tr>
|
348 |
-
<th><acronym title="Content Delivery Network">CDN</acronym> Type:</th>
|
349 |
-
<td>
|
350 |
-
<select name="cdn.engine">
|
351 |
-
<optgroup label="Origin Pull (mirror is best):">
|
352 |
-
<option value="mirror"<?php selected($this->_config->get_string('cdn.engine'), 'mirror'); ?>>Mirror</option>
|
353 |
-
<option value="netdna"<?php selected($this->_config->get_string('cdn.engine'), 'netdna'); ?>>NetDNA / MaxCDN</option>
|
354 |
-
<option value="cotendo"<?php selected($this->_config->get_string('cdn.engine'), 'cotendo'); ?>>Cotendo</option>
|
355 |
-
<option value="cf2"<?php selected($this->_config->get_string('cdn.engine'), 'cf2'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Amazon CloudFront</option>
|
356 |
-
</optgroup>
|
357 |
-
<optgroup label="Origin Push:">
|
358 |
-
<option value="rscf"<?php selected($this->_config->get_string('cdn.engine'), 'rscf'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Rackspace Cloud Files</option>
|
359 |
-
<option value="cf"<?php selected($this->_config->get_string('cdn.engine'), 'cf'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Amazon CloudFront</option>
|
360 |
-
<option value="s3"<?php selected($this->_config->get_string('cdn.engine'), 's3'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Amazon Simple Storage Service (S3)</option>
|
361 |
-
<option value="azure"<?php selected($this->_config->get_string('cdn.engine'), 'azure'); ?><?php if (!W3TC_PHP5): ?> disabled="disabled"<?php endif; ?>>Microsoft Azure Storage</option>
|
362 |
-
<option value="ftp"<?php selected($this->_config->get_string('cdn.engine'), 'ftp'); ?><?php if (!$check_ftp): ?> disabled="disabled"<?php endif; ?>>Self-hosted / File Transfer Protocol Upload</option>
|
363 |
-
</optgroup>
|
364 |
-
</select><br />
|
365 |
-
<span class="description">Select the <acronym title="Content Delivery Network">CDN</acronym> type you wish to use.</span>
|
366 |
-
</td>
|
367 |
-
</tr>
|
368 |
-
</table>
|
369 |
-
|
370 |
-
<p class="submit">
|
371 |
-
<input type="submit" name="options_save" class="w3tc-button-save button-primary" value="Save all settings" />
|
372 |
-
<input id="cdn_purge" type="button" value="Purge cache"<?php if (!$cdn_enabled || !w3_can_cdn_purge($this->_config->get_string('cdn.engine'))): ?> disabled="disabled"<?php endif; ?> class="button" />
|
373 |
-
</p>
|
374 |
-
<?php echo $this->postbox_footer(); ?>
|
375 |
-
|
376 |
-
<?php echo $this->postbox_header('Browser Cache'); ?>
|
377 |
-
<p>Reduce server load and decrease response time by using the cache available in site visitor's web browser.</p>
|
378 |
-
|
379 |
-
<table class="form-table">
|
380 |
-
<tr>
|
381 |
-
<th>Browser Cache:</th>
|
382 |
-
<td>
|
383 |
-
<input type="hidden" name="browsercache.enabled" value="0" />
|
384 |
-
<label><input class="enabled" type="checkbox" name="browsercache.enabled" value="1"<?php checked($browsercache_enabled, true); ?> /> <strong>Enable</strong></label>
|
385 |
-
<br /><span class="description">Enable <acronym title="Hypertext Transfer Protocol">HTTP</acronym> compression and add headers to reduce server load and decrease file load time.</span>
|
386 |
-
</td>
|
387 |
-
</tr>
|
388 |
-
</table>
|
389 |
-
|
390 |
-
<p class="submit">
|
391 |
-
<input type="submit" name="options_save" class="w3tc-button-save button-primary" value="Save all settings" />
|
392 |
</p>
|
393 |
<?php echo $this->postbox_footer(); ?>
|
394 |
|
@@ -412,39 +424,10 @@
|
|
412 |
<p><textarea cols="80" rows="4">Performance Optimization <a href="http://www.w3-edge.com/wordpress-plugins/" rel="external">WordPress Plugins</a> by W3 EDGE</textarea></p>
|
413 |
|
414 |
<p class="submit">
|
415 |
-
|
416 |
-
|
417 |
-
<?php echo $this->postbox_footer(); ?>
|
418 |
-
|
419 |
-
<?php echo $this->postbox_header('Debug'); ?>
|
420 |
-
<p>Detailed information about each cache will be appended in (publicly available) <acronym title="Hypertext Markup Language">HTML</acronym> comments in the page's source code. Performance in this mode will not be optimal, use sparingly and disable when not in use.</p>
|
421 |
-
|
422 |
-
<table class="form-table">
|
423 |
-
<tr>
|
424 |
-
<th>Debug Mode:</th>
|
425 |
-
<td>
|
426 |
-
<input type="hidden" name="pgcache.debug" value="0" />
|
427 |
-
<input type="hidden" name="minify.debug" value="0" />
|
428 |
-
<input type="hidden" name="dbcache.debug" value="0" />
|
429 |
-
<input type="hidden" name="objectcache.debug" value="0" />
|
430 |
-
<input type="hidden" name="cdn.debug" value="0" />
|
431 |
-
<input type="hidden" name="varnish.debug" value="0" />
|
432 |
-
<label><input type="checkbox" name="pgcache.debug" value="pgcache"<?php checked($this->_config->get_boolean('pgcache.debug'), true); ?> /> Page Cache</label><br />
|
433 |
-
<label><input type="checkbox" name="minify.debug" value="minify"<?php checked($this->_config->get_boolean('minify.debug'), true); ?> /> Minify</label><br />
|
434 |
-
<label><input type="checkbox" name="dbcache.debug" value="dbcache"<?php checked($this->_config->get_boolean('dbcache.debug'), true); ?> /> Database Cache</label><br />
|
435 |
-
<label><input type="checkbox" name="objectcache.debug" value="objectcache"<?php checked($this->_config->get_boolean('objectcache.debug'), true); ?> /> Object Cache</label><br />
|
436 |
-
<label><input type="checkbox" name="cdn.debug" value="cdn"<?php checked($this->_config->get_boolean('cdn.debug'), true); ?> /> Content Delivery Network</label><br />
|
437 |
-
<label><input type="checkbox" name="varnish.debug" value="varnish"<?php checked($this->_config->get_boolean('varnish.debug'), true); ?> /> Varnish</label><br />
|
438 |
-
<span class="description">If selected, detailed caching information will be appear at the end of each page in a <acronym title="Hypertext Markup Language">HTML</acronym> comment. View a page's source code to review.</span>
|
439 |
-
</td>
|
440 |
-
</tr>
|
441 |
-
</table>
|
442 |
-
|
443 |
-
<p class="submit">
|
444 |
-
<input type="submit" name="options_save" class="w3tc-button-save button-primary" value="Save all settings" />
|
445 |
</p>
|
446 |
<?php echo $this->postbox_footer(); ?>
|
447 |
-
|
448 |
<?php echo $this->postbox_header('Miscellaneous'); ?>
|
449 |
<table class="form-table">
|
450 |
<?php if (w3_is_nginx()): ?>
|
@@ -470,6 +453,13 @@
|
|
470 |
<br /><span class="description">Not recommended for "slow" network-based file systems.</span>
|
471 |
</th>
|
472 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
473 |
<tr>
|
474 |
<th colspan="2">
|
475 |
<input type="hidden" name="widget.latest.enabled" value="0" />
|
@@ -495,7 +485,38 @@
|
|
495 |
</table>
|
496 |
|
497 |
<p class="submit">
|
498 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
</p>
|
500 |
<?php echo $this->postbox_footer(); ?>
|
501 |
</div>
|
@@ -504,26 +525,27 @@
|
|
504 |
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post" enctype="multipart/form-data">
|
505 |
<div class="metabox-holder">
|
506 |
<?php echo $this->postbox_header('Import / Export Settings'); ?>
|
|
|
507 |
<table class="form-table">
|
508 |
<tr>
|
509 |
<th>Import configuration:</th>
|
510 |
<td>
|
511 |
<input type="file" name="config_file" />
|
512 |
-
<input type="submit" name="
|
513 |
<br /><span class="description">Upload and replace the active settings file.</span>
|
514 |
</td>
|
515 |
</tr>
|
516 |
<tr>
|
517 |
<th>Export configuration:</th>
|
518 |
<td>
|
519 |
-
<input type="submit" name="
|
520 |
<br /><span class="description">Download the active settings file.</span>
|
521 |
</td>
|
522 |
</tr>
|
523 |
<tr>
|
524 |
<th>Reset configuration:</th>
|
525 |
<td>
|
526 |
-
<input type="submit" name="
|
527 |
<br /><span class="description">Revert all settings to the defaults. Any settings staged in preview mode will not be modified.</span>
|
528 |
</td>
|
529 |
</tr>
|
@@ -532,4 +554,4 @@
|
|
532 |
</div>
|
533 |
</form>
|
534 |
|
535 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<p>
|
5 |
The plugin is currently <span class="w3tc-<?php if ($enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>. If an option is disabled it means that either your current installation is not compatible or software installation is required.
|
6 |
</p>
|
7 |
|
8 |
+
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
9 |
<p>
|
10 |
Perform a
|
11 |
+
<input type="button" class="button button-self-test {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" value="compatibility check" />,
|
12 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
13 |
+
<input class="button" type="submit" name="w3tc_flush_all" value="empty all caches"<?php if (! $can_empty_memcache && ! $can_empty_opcode && ! $can_empty_file): ?> disabled="disabled"<?php endif; ?> /> at once or
|
14 |
+
<input class="button" type="submit" name="w3tc_flush_memcached" value="empty only the memcached cache(s)"<?php if (! $can_empty_memcache): ?> disabled="disabled"<?php endif; ?> /> or
|
15 |
+
<input class="button" type="submit" name="w3tc_flush_opcode" value="empty only the opcode cache"<?php if (! $can_empty_opcode): ?> disabled="disabled"<?php endif; ?> /> or
|
16 |
+
<input class="button" type="submit" name="w3tc_flush_file" value="empty only the disk cache(s)"<?php if (! $can_empty_file): ?> disabled="disabled"<?php endif; ?> />.
|
17 |
</p>
|
18 |
</form>
|
19 |
|
32 |
<tr>
|
33 |
<th>Preview Mode:</th>
|
34 |
<td>
|
35 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
36 |
<?php if ($preview): ?>
|
37 |
<input type="hidden" name="preview" value="0" />
|
38 |
+
<input type="submit" name="w3tc_preview_save" class="button-primary" value="Disable" />
|
39 |
<?php echo $this->button_link('Preview', w3_get_home_url() . '/?w3tc_preview=1', true); ?>
|
40 |
+
<?php echo $this->button_link('Deploy', sprintf('admin.php?page=%s&w3tc_preview_deploy', $this->_page)); ?>
|
41 |
<?php else: ?>
|
42 |
<input type="hidden" name="preview" value="1" />
|
43 |
+
<input type="submit" name="w3tc_preview_save" class="button-primary" value="Enable" />
|
44 |
<?php endif; ?>
|
45 |
<br /><span class="description">Use preview mode to test configuration scenarios prior to releasing them (deploy) on the actual site.</span>
|
46 |
</td>
|
48 |
</table>
|
49 |
|
50 |
<p class="submit">
|
51 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
52 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
53 |
</p>
|
54 |
<?php echo $this->postbox_footer(); ?>
|
55 |
|
70 |
<td>
|
71 |
<select name="pgcache.engine">
|
72 |
<optgroup label="Shared Server (disk enhanced is best):">
|
73 |
+
<option value="file"<?php selected($this->_config->get_string('pgcache.engine'), 'file'); ?>>Disk: Basic</option>
|
74 |
+
<option value="file_generic"<?php selected($this->_config->get_string('pgcache.engine'), 'file_generic'); ?><?php if (! $check_rules): ?> disabled="disabled"<?php endif; ?>>Disk: Enhanced</option>
|
75 |
</optgroup>
|
76 |
<optgroup label="Dedicated / Virtual Server:">
|
77 |
<option value="apc"<?php selected($this->_config->get_string('pgcache.engine'), 'apc'); ?><?php if (! $check_apc): ?> disabled="disabled"<?php endif; ?>>Opcode: Alternative PHP Cache (APC)</option>
|
88 |
</table>
|
89 |
|
90 |
<p class="submit">
|
91 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
92 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
93 |
+
<input type="submit" name="w3tc_flush_pgcache" value="Empty cache"<?php if (! $pgcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
94 |
</p>
|
95 |
<?php echo $this->postbox_footer(); ?>
|
96 |
|
165 |
</table>
|
166 |
|
167 |
<p class="submit">
|
168 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
169 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
170 |
+
<input type="submit" name="w3tc_flush_minify" value="Empty cache"<?php if (! $minify_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
171 |
</p>
|
172 |
<?php echo $this->postbox_footer(); ?>
|
173 |
|
205 |
</table>
|
206 |
|
207 |
<p class="submit">
|
208 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
209 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
210 |
+
<input type="submit" name="w3tc_flush_dbcache" value="Empty cache"<?php if (! $dbcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
211 |
</p>
|
212 |
<?php echo $this->postbox_footer(); ?>
|
213 |
|
245 |
</table>
|
246 |
|
247 |
<p class="submit">
|
248 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
249 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
250 |
+
<input type="submit" name="w3tc_flush_objectcache" value="Empty cache"<?php if (! $objectcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
251 |
+
</p>
|
252 |
+
<?php echo $this->postbox_footer(); ?>
|
253 |
+
|
254 |
+
<?php echo $this->postbox_header('Browser Cache'); ?>
|
255 |
+
<p>Reduce server load and decrease response time by using the cache available in site visitor's web browser.</p>
|
256 |
+
|
257 |
+
<table class="form-table">
|
258 |
+
<tr>
|
259 |
+
<th>Browser Cache:</th>
|
260 |
+
<td>
|
261 |
+
<input type="hidden" name="browsercache.enabled" value="0" />
|
262 |
+
<label><input class="enabled" type="checkbox" name="browsercache.enabled" value="1"<?php checked($browsercache_enabled, true); ?> /> <strong>Enable</strong></label>
|
263 |
+
<br /><span class="description">Enable <acronym title="Hypertext Transfer Protocol">HTTP</acronym> compression and add headers to reduce server load and decrease file load time.</span>
|
264 |
+
</td>
|
265 |
+
</tr>
|
266 |
+
</table>
|
267 |
+
|
268 |
+
<p class="submit">
|
269 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
270 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
271 |
+
</p>
|
272 |
+
<?php echo $this->postbox_footer(); ?>
|
273 |
+
|
274 |
+
<?php echo $this->postbox_header('<acronym title="Content Delivery Network">CDN</acronym>'); ?>
|
275 |
+
<p>Host static files with your content delivery network provider to reduce page load time.</p>
|
276 |
+
|
277 |
+
<table class="form-table">
|
278 |
+
<tr>
|
279 |
+
<th><acronym title="Content Delivery Network">CDN</acronym>:</th>
|
280 |
+
<td>
|
281 |
+
<input type="hidden" name="cdn.enabled" value="0" />
|
282 |
+
<label><input class="enabled" type="checkbox" name="cdn.enabled" value="1"<?php checked($cdn_enabled, true); ?> /> <strong>Enable</strong></label>
|
283 |
+
<br /><span class="description">Theme files, media library attachments, <acronym title="Cascading Style Sheet">CSS</acronym>, <acronym title="JavaScript">JS</acronym> files etc will appear to load instantly for site visitors.</span>
|
284 |
+
</td>
|
285 |
+
</tr>
|
286 |
+
<tr>
|
287 |
+
<th><acronym title="Content Delivery Network">CDN</acronym> Type:</th>
|
288 |
+
<td>
|
289 |
+
<select name="cdn.engine">
|
290 |
+
<optgroup label="Origin Pull (mirror is best):">
|
291 |
+
<option value="cf2"<?php selected($this->_config->get_string('cdn.engine'), 'cf2'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Amazon CloudFront</option>
|
292 |
+
<option value="cotendo"<?php selected($this->_config->get_string('cdn.engine'), 'cotendo'); ?>>Cotendo</option>
|
293 |
+
<option value="mirror"<?php selected($this->_config->get_string('cdn.engine'), 'mirror'); ?>>Generic Mirror</option>
|
294 |
+
<option value="edgecast"<?php selected($this->_config->get_string('cdn.engine'), 'edgecast'); ?>>Media Temple ProCDN / EdgeCast</option>
|
295 |
+
<option value="netdna"<?php selected($this->_config->get_string('cdn.engine'), 'netdna'); ?>>NetDNA / MaxCDN</option>
|
296 |
+
</optgroup>
|
297 |
+
<optgroup label="Origin Push:">
|
298 |
+
<option value="cf"<?php selected($this->_config->get_string('cdn.engine'), 'cf'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Amazon CloudFront</option>
|
299 |
+
<option value="s3"<?php selected($this->_config->get_string('cdn.engine'), 's3'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Amazon Simple Storage Service (S3)</option>
|
300 |
+
<option value="azure"<?php selected($this->_config->get_string('cdn.engine'), 'azure'); ?><?php if (!W3TC_PHP5): ?> disabled="disabled"<?php endif; ?>>Microsoft Azure Storage</option>
|
301 |
+
<option value="rscf"<?php selected($this->_config->get_string('cdn.engine'), 'rscf'); ?><?php if (!W3TC_PHP5 || !$check_curl): ?> disabled="disabled"<?php endif; ?>>Rackspace Cloud Files</option>
|
302 |
+
<option value="ftp"<?php selected($this->_config->get_string('cdn.engine'), 'ftp'); ?><?php if (!$check_ftp): ?> disabled="disabled"<?php endif; ?>>Self-hosted / File Transfer Protocol Upload</option>
|
303 |
+
</optgroup>
|
304 |
+
</select><br />
|
305 |
+
<span class="description">Select the <acronym title="Content Delivery Network">CDN</acronym> type you wish to use.</span>
|
306 |
+
</td>
|
307 |
+
</tr>
|
308 |
+
</table>
|
309 |
+
|
310 |
+
<p class="submit">
|
311 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
312 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
313 |
+
<input id="cdn_purge" type="button" value="Purge cache"<?php if (!$cdn_enabled || !w3_can_cdn_purge($this->_config->get_string('cdn.engine'))): ?> disabled="disabled"<?php endif; ?> class="button" />
|
314 |
+
</p>
|
315 |
+
<?php echo $this->postbox_footer(); ?>
|
316 |
+
|
317 |
+
<?php echo $this->postbox_header('Varnish'); ?>
|
318 |
+
<table class="form-table">
|
319 |
+
<tr>
|
320 |
+
<th colspan="2">
|
321 |
+
<input type="hidden" name="varnish.enabled" value="0" />
|
322 |
+
<label><input class="enabled" type="checkbox" name="varnish.enabled" value="1"<?php checked($varnish_enabled, true); ?> /> Enable varnish cache purging</label><br />
|
323 |
+
</th>
|
324 |
+
</tr>
|
325 |
+
<tr>
|
326 |
+
<th><label for="pgcache_varnish_servers">Varnish servers:</label></th>
|
327 |
+
<td>
|
328 |
+
<textarea id="pgcache_varnish_servers" name="varnish.servers" cols="40" rows="5"><?php echo htmlspecialchars(implode("\r\n", $this->_config->get_array('varnish.servers'))); ?></textarea><br />
|
329 |
+
<span class="description">Specify the IP addresses of your varnish instances above. Your <acronym title="Varnish Configuration Language">VCL</acronym>'s <acronym title="Access Control List">ACL</acronym> must allow this request.</span>
|
330 |
+
</td>
|
331 |
+
</tr>
|
332 |
+
</table>
|
333 |
+
|
334 |
+
<p class="submit">
|
335 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
336 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
337 |
</p>
|
338 |
<?php echo $this->postbox_footer(); ?>
|
339 |
|
340 |
<?php echo $this->postbox_header('Network Performance & Security powered by CloudFlare'); ?>
|
341 |
<p>
|
342 |
CloudFlare protects and accelerates websites. <a href="https://www.cloudflare.com/sign-up.html?affiliate=w3edge&seed_domain=<?php echo w3_get_host(); ?>&email=<?php echo htmlspecialchars($cloudflare_signup_email); ?>&username=<?php echo htmlspecialchars($cloudflare_signup_user); ?>" target="_blank">Sign up now for free</a> to get started,
|
343 |
+
or if you have an account simply log in to obtain your <acronym title="Application Programming Interface">API</acronym> key from the <a href="https://www.cloudflare.com/my-account.html">account page</a> to enter it below.
|
344 |
Contact the CloudFlare <a href="http://www.cloudflare.com/help.html" target="_blank">support team</a> with any questions.
|
345 |
</p>
|
346 |
|
398 |
</table>
|
399 |
|
400 |
<p class="submit">
|
401 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
402 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
403 |
+
<input id="cloudflare_purge_cache" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Purge cache"<?php if (! $cloudflare_enabled): ?> disabled="disabled"<?php endif; ?> />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
</p>
|
405 |
<?php echo $this->postbox_footer(); ?>
|
406 |
|
424 |
<p><textarea cols="80" rows="4">Performance Optimization <a href="http://www.w3-edge.com/wordpress-plugins/" rel="external">WordPress Plugins</a> by W3 EDGE</textarea></p>
|
425 |
|
426 |
<p class="submit">
|
427 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
428 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
429 |
</p>
|
430 |
<?php echo $this->postbox_footer(); ?>
|
|
|
431 |
<?php echo $this->postbox_header('Miscellaneous'); ?>
|
432 |
<table class="form-table">
|
433 |
<?php if (w3_is_nginx()): ?>
|
453 |
<br /><span class="description">Not recommended for "slow" network-based file systems.</span>
|
454 |
</th>
|
455 |
</tr>
|
456 |
+
<tr>
|
457 |
+
<th colspan="2">
|
458 |
+
<input type="hidden" name="file_nfs" value="0"<?php if (! $can_empty_file): ?> disabled="disabled"<?php endif; ?> />
|
459 |
+
<label><input type="checkbox" name="file_nfs" value="1"<?php checked($file_nfs, true); ?><?php if (! $can_empty_file): ?> disabled="disabled"<?php endif; ?> /> Optimize disk enhanced page and minify caching for <acronym title="Network File System">NFS</acronym></label>
|
460 |
+
<br /><span class="description">Try this option if your hosting environment uses a network based file system for a possible performance improvement.</span>
|
461 |
+
</th>
|
462 |
+
</tr>
|
463 |
<tr>
|
464 |
<th colspan="2">
|
465 |
<input type="hidden" name="widget.latest.enabled" value="0" />
|
485 |
</table>
|
486 |
|
487 |
<p class="submit">
|
488 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
489 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
490 |
+
</p>
|
491 |
+
<?php echo $this->postbox_footer(); ?>
|
492 |
+
|
493 |
+
<?php echo $this->postbox_header('Debug'); ?>
|
494 |
+
<p>Detailed information about each cache will be appended in (publicly available) <acronym title="Hypertext Markup Language">HTML</acronym> comments in the page's source code. Performance in this mode will not be optimal, use sparingly and disable when not in use.</p>
|
495 |
+
|
496 |
+
<table class="form-table">
|
497 |
+
<tr>
|
498 |
+
<th>Debug Mode:</th>
|
499 |
+
<td>
|
500 |
+
<input type="hidden" name="pgcache.debug" value="<?php echo ((!$this->_config->get_boolean('pgcache.enabled') && $this->_config->get_boolean('pgcache.debug')) ? "1" : "0") ?>" />
|
501 |
+
<input type="hidden" name="minify.debug" value="<?php echo ((!$this->_config->get_boolean('minify.enabled') && $this->_config->get_boolean('minify.debug')) ? "1" : "0") ?>" />
|
502 |
+
<input type="hidden" name="dbcache.debug" value="<?php echo ((!$this->_config->get_boolean('dbcache.enabled') && $this->_config->get_boolean('dbcache.debug')) ? "1" : "0") ?>" />
|
503 |
+
<input type="hidden" name="objectcache.debug" value="<?php echo ((!$this->_config->get_boolean('objectcache.enabled') && $this->_config->get_boolean('objectcache.debug')) ? "1" : "0") ?>" />
|
504 |
+
<input type="hidden" name="cdn.debug" value="<?php echo ((!$this->_config->get_boolean('cdn.enabled') && $this->_config->get_boolean('cdn.debug')) ? "1" : "0") ?>" />
|
505 |
+
<input type="hidden" name="varnish.debug" value="<?php echo ((!$this->_config->get_boolean('varnish.enabled') && $this->_config->get_boolean('varnish.debug')) ? "1" : "0") ?>" />
|
506 |
+
<label><input type="checkbox" name="pgcache.debug" value="pgcache"<?php checked($this->_config->get_boolean('pgcache.debug') && $this->_config->get_boolean('pgcache.enabled'), true); ?> <?php if (!$this->_config->get_boolean('pgcache.enabled')): ?> disabled="disabled"<?php endif; ?>/> Page Cache</label><br />
|
507 |
+
<label><input type="checkbox" name="minify.debug" value="minify"<?php checked($this->_config->get_boolean('minify.debug') && $this->_config->get_boolean('minify.enabled'), true); ?> <?php if (!$this->_config->get_boolean('minify.enabled')): ?> disabled="disabled"<?php endif; ?>/> Minify</label><br />
|
508 |
+
<label><input type="checkbox" name="dbcache.debug" value="dbcache"<?php checked($this->_config->get_boolean('dbcache.debug') && $this->_config->get_boolean('dbcache.enabled'), true); ?> <?php if (!$this->_config->get_boolean('dbcache.enabled')): ?> disabled="disabled"<?php endif; ?>/> Database Cache</label><br />
|
509 |
+
<label><input type="checkbox" name="objectcache.debug" value="objectcache"<?php checked($this->_config->get_boolean('objectcache.debug') && $this->_config->get_boolean('objectcache.enabled'), true); ?> <?php if (!$this->_config->get_boolean('objectcache.enabled')): ?> disabled="disabled"<?php endif; ?>/> Object Cache</label><br />
|
510 |
+
<label><input type="checkbox" name="cdn.debug" value="cdn"<?php checked($this->_config->get_boolean('cdn.debug') && $this->_config->get_boolean('cdn.enabled'), true); ?> <?php if (!$this->_config->get_boolean('cdn.enabled')): ?> disabled="disabled"<?php endif; ?>/> Content Delivery Network</label><br />
|
511 |
+
<label><input type="checkbox" name="varnish.debug" value="varnish"<?php checked($this->_config->get_boolean('varnish.debug') && $this->_config->get_boolean('varnish.enabled'), true); ?> <?php if (!$this->_config->get_boolean('varnish.enabled')): ?> disabled="disabled"<?php endif; ?>/> Varnish</label><br />
|
512 |
+
<span class="description">If selected, detailed caching information will be appear at the end of each page in a <acronym title="Hypertext Markup Language">HTML</acronym> comment. View a page's source code to review.</span>
|
513 |
+
</td>
|
514 |
+
</tr>
|
515 |
+
</table>
|
516 |
+
|
517 |
+
<p class="submit">
|
518 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
519 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
520 |
</p>
|
521 |
<?php echo $this->postbox_footer(); ?>
|
522 |
</div>
|
525 |
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post" enctype="multipart/form-data">
|
526 |
<div class="metabox-holder">
|
527 |
<?php echo $this->postbox_header('Import / Export Settings'); ?>
|
528 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
529 |
<table class="form-table">
|
530 |
<tr>
|
531 |
<th>Import configuration:</th>
|
532 |
<td>
|
533 |
<input type="file" name="config_file" />
|
534 |
+
<input type="submit" name="w3tc_config_import" class="button" value="Upload" />
|
535 |
<br /><span class="description">Upload and replace the active settings file.</span>
|
536 |
</td>
|
537 |
</tr>
|
538 |
<tr>
|
539 |
<th>Export configuration:</th>
|
540 |
<td>
|
541 |
+
<input type="submit" name="w3tc_config_export" class="button" value="Download" />
|
542 |
<br /><span class="description">Download the active settings file.</span>
|
543 |
</td>
|
544 |
</tr>
|
545 |
<tr>
|
546 |
<th>Reset configuration:</th>
|
547 |
<td>
|
548 |
+
<input type="submit" name="w3tc_config_reset" class="button" value="Restore Default Settings" />
|
549 |
<br /><span class="description">Revert all settings to the defaults. Any settings staged in preview mode will not be modified.</span>
|
550 |
</td>
|
551 |
</tr>
|
554 |
</div>
|
555 |
</form>
|
556 |
|
557 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/index.html
ADDED
File without changes
|
inc/options/{install.phtml → install.php}
RENAMED
@@ -1,26 +1,27 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<div id="install">
|
4 |
-
<ol>
|
5 |
<li>
|
6 |
Set the permissions of wp-content/ back to 755, e.g.:
|
7 |
<pre class="console"># chmod 755 /var/www/vhosts/domain.com/httpdocs/wp-content/</pre>
|
8 |
-
|
9 |
<li>On the "<a href="admin.php?page=w3tc_general">General</a>" tab and select your caching methods for page, database and minify. In most cases, "disk enhanced" mode for page cache, "disk" mode for minify and "disk" mode for database caching are "good" settings.</li>
|
10 |
<li><em>Recommended:</em> On the "<a href="admin.php?page=w3tc_minify">Minify</a>" tab all of the recommended settings are preset. Use the help button to simplify discovery of your <acronym title="Cascading Style Sheet">CSS</acronym> and <acronym title="JavaScript">JS</acronym> files and groups. Pay close attention to the method and location of your <acronym title="JavaScript">JS</acronym> group embeddings. See the plugin's <a href="admin.php?page=w3tc_faq">FAQ</a> for more information on usage.</li>
|
11 |
-
<li><em>Recommended:</em> On the "<a href="admin.php?page=w3tc_browsercache">Browser Cache</a>" tab, HTTP compression is enabled by default. Make sure to enable other options to suit your goals.</li>
|
12 |
<li><em>Recommended:</em> If you already have a content delivery network (<acronym title="Content Delivery Network">CDN</acronym>) provider, proceed to the "<a href="admin.php?page=w3tc_cdn">Content Delivery Network</a>" tab and populate the fields and set your preferences. If you do not use the Media Library, you will need to import your images etc into the default locations. Use the Media Library Import Tool on the "Content Delivery Network" tab to perform this task. If you do not have a <acronym title="Content Delivery Network">CDN</acronym> provider, you can still improve your site's performance using the "Self-hosted" method. On your own server, create a subdomain and matching <acronym title="Domain Name System">DNS</acronym> Zone record; e.g. static.domain.com and configure <acronym title="File Transfer Protocol">FTP</acronym> options on the "Content Delivery Network" tab accordingly. Be sure to <acronym title="File Transfer Protocol">FTP</acronym> upload the appropriate files, using the available upload buttons.</li>
|
13 |
<li><em>Optional:</em> On the "<a href="admin.php?page=w3tc_dbcache">Database Cache</a>" tab the recommended settings are preset. If using a shared hosting account use the "disk" method with caution; in either of these cases the response time of the disk may not be fast enough, so this option is disabled by default.</li>
|
14 |
<li><em>Optional:</em> On the "<a href="admin.php?page=w3tc_objectcache">Object Cache</a>" tab the recommended settings are preset. If using a shared hosting account use the "disk" method with caution, the response time of the disk may not be fast enough, so this option is disabled by default. Test this option with and without database cache to ensure that it provides a performance increase.</li>
|
15 |
<li><em>Optional:</em> On the "<a href="admin.php?page=w3tc_mobile">User Agent Groups</a>" tab, specify any user agents, like mobile phones if a mobile theme is used.</li>
|
16 |
</ol>
|
17 |
-
|
18 |
<p>
|
19 |
Check out the <acronym title="Frequently Asked Questions">FAQ</acronym> for more details on <a href="admin.php?page=w3tc_faq">usage</a>.
|
20 |
</p>
|
21 |
-
|
22 |
<hr />
|
23 |
-
|
24 |
<?php if (count($rewrite_rules)): ?>
|
25 |
<h3>Rewrite rules</h3>
|
26 |
|
@@ -31,12 +32,12 @@
|
|
31 |
|
32 |
<hr />
|
33 |
<?php endif; ?>
|
34 |
-
|
35 |
<h3>Software Installation for Dedicated / Virtual Dedicated / Multiple Servers (Optional)</h3>
|
36 |
-
|
37 |
<p><strong>Server Preparation:</strong><br /><em>Time required: ~1 minute</em></p>
|
38 |
-
|
39 |
-
<ol>
|
40 |
<li>
|
41 |
<a href="http://www.google.com/search?q=installing%20yum&output=search&tbs=qdr:y&tbo=1" target="_blank">Install yum</a> if you don't already have it. Then, if you like, you can update all of your installed software, but do so only if you have the experience and time to double check configurations afterwards:
|
42 |
<pre class="console"># yum update</pre>
|
@@ -68,16 +69,16 @@
|
|
68 |
</ol>
|
69 |
|
70 |
<hr />
|
71 |
-
|
72 |
<p id="memcached"><strong>Memcached (Daemon) Installation:</strong><br /><em>Time required: 2 minutes</em></p>
|
73 |
|
74 |
-
<ol>
|
75 |
<li>
|
76 |
Try to install with yum:
|
77 |
<pre class="console"># yum install libevent libevent-devel</pre>
|
78 |
-
|
79 |
If this succeeds skip to #5. If this fails, then let's compile. Download and extract the <a href="http://www.monkey.org/~provos/libevent/" target="_blank">latest stable version</a>:
|
80 |
-
<pre class="console"># cd /usr/local/src && wget <a href="http://www.monkey.org/~provos/libevent-
|
81 |
</li>
|
82 |
<li>
|
83 |
Let's compile:
|
@@ -94,8 +95,8 @@
|
|
94 |
<pre class="console"># ldconfig -v</pre>
|
95 |
</li>
|
96 |
<li>
|
97 |
-
Now find the <a href="http://
|
98 |
-
<pre class="console"># cd /usr/local/src && wget <a href="http://memcached.googlecode.com/files/memcached-1.4.
|
99 |
</li>
|
100 |
<li>
|
101 |
Let's compile:
|
@@ -118,15 +119,15 @@
|
|
118 |
<hr />
|
119 |
|
120 |
<p id="memcache"><strong><acronym title="PHP Extension Community Library">PECL</acronym> Memcache Module Installation:</strong><br /><em>Time required: 1 minute</em></p>
|
121 |
-
|
122 |
-
<ol>
|
123 |
<li>
|
124 |
Either use <acronym title="PHP Extension Community Library">PECL</acronym> (and skip to #4 if successful):
|
125 |
<pre class="console"># pecl install memcache</pre>
|
126 |
</li>
|
127 |
<li>
|
128 |
Or via compilation. Download the <a href="http://pecl.php.net/package/memcache" target="_blank">latest stable version</a> and extract:
|
129 |
-
<pre class="console"># cd /usr/local/src/ && wget <a href="http://pecl.php.net/get/memcache-2.2.
|
130 |
</li>
|
131 |
<li>
|
132 |
Now we start to compile:
|
@@ -145,19 +146,19 @@
|
|
145 |
<pre class="console"># php -r 'phpinfo();' | grep 'memcache'</pre>
|
146 |
</li>
|
147 |
</ol>
|
148 |
-
|
149 |
<hr />
|
150 |
-
|
151 |
<p id="APC"><strong><acronym title="PHP Extension Community Library">PECL</acronym> Alternative PHP Cache (<acronym title="Alternative PHP Cache">APC</acronym>) Installation (Recommended):</strong><br /><em>Time required: 1 minute</em></p>
|
152 |
-
|
153 |
-
<ol>
|
154 |
<li>
|
155 |
Install <acronym title="Alternative PHP Cache">APC</acronym> using the <acronym title="PHP Extension Community Library">PECL</acronym> command (and skip to #5 if successful):
|
156 |
<pre class="console"># pecl install apc</pre>
|
157 |
</li>
|
158 |
<li>
|
159 |
Or via compilation. Download the <a href="http://pecl.php.net/package/APC" target="_blank">latest stable version</a> and extract:
|
160 |
-
<pre class="console"># cd /usr/local/src && wget <a href="http://pecl.php.net/get/APC-3.1.
|
161 |
</li>
|
162 |
<li>
|
163 |
Note the paths returned for the following commands:
|
@@ -183,15 +184,15 @@
|
|
183 |
<pre class="console"># php -r 'phpinfo();' | grep 'apc'</pre>
|
184 |
</li>
|
185 |
</ol>
|
186 |
-
|
187 |
<hr />
|
188 |
-
|
189 |
<p id="XCache"><strong>XCache Installation:</strong><br /><em>Time required: 1 minute</em></p>
|
190 |
-
|
191 |
-
<ol>
|
192 |
<li>
|
193 |
Download the <a href="http://xcache.lighttpd.net/wiki/ReleaseArchive" target="_blank">latest compatible version</a> and extract:
|
194 |
-
<pre class="console"># cd /usr/local/src && wget <a href="http://xcache.lighttpd.net/pub/Releases/1.3.
|
195 |
</li>
|
196 |
<li>
|
197 |
Note the path returned for the following command:
|
@@ -216,15 +217,15 @@
|
|
216 |
<pre class="console"># php -r 'phpinfo();' | grep 'xcache'</pre>
|
217 |
</li>
|
218 |
</ol>
|
219 |
-
|
220 |
<hr />
|
221 |
-
|
222 |
<p id="eAccelerator"><strong>eAccelerator Installation:</strong><br /><em>Time required: 1 minute</em></p>
|
223 |
-
|
224 |
-
<ol>
|
225 |
<li>
|
226 |
If using <acronym title="Hypertext Preprocessor">PHP</acronym> v5+, download the <a href="http://eaccelerator.net/" target="_blank">lastest compatible version</a> and extract. Remember v0.9.5.3 is the last version that supports user objects, later versions only support opcode caching.
|
227 |
-
<pre class="console"># cd /usr/local/src && wget <a href="http://
|
228 |
</li>
|
229 |
<li>
|
230 |
Note the path returned for the following command:
|
@@ -249,9 +250,9 @@
|
|
249 |
<pre class="console"># php -r 'phpinfo();' | grep 'eaccelerator'</pre>
|
250 |
</li>
|
251 |
</ol>
|
252 |
-
|
253 |
<hr />
|
254 |
-
|
255 |
<div class="metabox-holder">
|
256 |
<?php echo $this->postbox_header('Note(s):'); ?>
|
257 |
<table class="form-table">
|
@@ -272,4 +273,4 @@
|
|
272 |
</div>
|
273 |
</div>
|
274 |
|
275 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<div id="install">
|
5 |
+
<ol>
|
6 |
<li>
|
7 |
Set the permissions of wp-content/ back to 755, e.g.:
|
8 |
<pre class="console"># chmod 755 /var/www/vhosts/domain.com/httpdocs/wp-content/</pre>
|
9 |
+
</li>
|
10 |
<li>On the "<a href="admin.php?page=w3tc_general">General</a>" tab and select your caching methods for page, database and minify. In most cases, "disk enhanced" mode for page cache, "disk" mode for minify and "disk" mode for database caching are "good" settings.</li>
|
11 |
<li><em>Recommended:</em> On the "<a href="admin.php?page=w3tc_minify">Minify</a>" tab all of the recommended settings are preset. Use the help button to simplify discovery of your <acronym title="Cascading Style Sheet">CSS</acronym> and <acronym title="JavaScript">JS</acronym> files and groups. Pay close attention to the method and location of your <acronym title="JavaScript">JS</acronym> group embeddings. See the plugin's <a href="admin.php?page=w3tc_faq">FAQ</a> for more information on usage.</li>
|
12 |
+
<li><em>Recommended:</em> On the "<a href="admin.php?page=w3tc_browsercache">Browser Cache</a>" tab, <acronym title="Hypertext Transfer Protocol">HTTP</acronym> compression is enabled by default. Make sure to enable other options to suit your goals.</li>
|
13 |
<li><em>Recommended:</em> If you already have a content delivery network (<acronym title="Content Delivery Network">CDN</acronym>) provider, proceed to the "<a href="admin.php?page=w3tc_cdn">Content Delivery Network</a>" tab and populate the fields and set your preferences. If you do not use the Media Library, you will need to import your images etc into the default locations. Use the Media Library Import Tool on the "Content Delivery Network" tab to perform this task. If you do not have a <acronym title="Content Delivery Network">CDN</acronym> provider, you can still improve your site's performance using the "Self-hosted" method. On your own server, create a subdomain and matching <acronym title="Domain Name System">DNS</acronym> Zone record; e.g. static.domain.com and configure <acronym title="File Transfer Protocol">FTP</acronym> options on the "Content Delivery Network" tab accordingly. Be sure to <acronym title="File Transfer Protocol">FTP</acronym> upload the appropriate files, using the available upload buttons.</li>
|
14 |
<li><em>Optional:</em> On the "<a href="admin.php?page=w3tc_dbcache">Database Cache</a>" tab the recommended settings are preset. If using a shared hosting account use the "disk" method with caution; in either of these cases the response time of the disk may not be fast enough, so this option is disabled by default.</li>
|
15 |
<li><em>Optional:</em> On the "<a href="admin.php?page=w3tc_objectcache">Object Cache</a>" tab the recommended settings are preset. If using a shared hosting account use the "disk" method with caution, the response time of the disk may not be fast enough, so this option is disabled by default. Test this option with and without database cache to ensure that it provides a performance increase.</li>
|
16 |
<li><em>Optional:</em> On the "<a href="admin.php?page=w3tc_mobile">User Agent Groups</a>" tab, specify any user agents, like mobile phones if a mobile theme is used.</li>
|
17 |
</ol>
|
18 |
+
|
19 |
<p>
|
20 |
Check out the <acronym title="Frequently Asked Questions">FAQ</acronym> for more details on <a href="admin.php?page=w3tc_faq">usage</a>.
|
21 |
</p>
|
22 |
+
|
23 |
<hr />
|
24 |
+
|
25 |
<?php if (count($rewrite_rules)): ?>
|
26 |
<h3>Rewrite rules</h3>
|
27 |
|
32 |
|
33 |
<hr />
|
34 |
<?php endif; ?>
|
35 |
+
|
36 |
<h3>Software Installation for Dedicated / Virtual Dedicated / Multiple Servers (Optional)</h3>
|
37 |
+
|
38 |
<p><strong>Server Preparation:</strong><br /><em>Time required: ~1 minute</em></p>
|
39 |
+
|
40 |
+
<ol>
|
41 |
<li>
|
42 |
<a href="http://www.google.com/search?q=installing%20yum&output=search&tbs=qdr:y&tbo=1" target="_blank">Install yum</a> if you don't already have it. Then, if you like, you can update all of your installed software, but do so only if you have the experience and time to double check configurations afterwards:
|
43 |
<pre class="console"># yum update</pre>
|
69 |
</ol>
|
70 |
|
71 |
<hr />
|
72 |
+
|
73 |
<p id="memcached"><strong>Memcached (Daemon) Installation:</strong><br /><em>Time required: 2 minutes</em></p>
|
74 |
|
75 |
+
<ol>
|
76 |
<li>
|
77 |
Try to install with yum:
|
78 |
<pre class="console"># yum install libevent libevent-devel</pre>
|
79 |
+
|
80 |
If this succeeds skip to #5. If this fails, then let's compile. Download and extract the <a href="http://www.monkey.org/~provos/libevent/" target="_blank">latest stable version</a>:
|
81 |
+
<pre class="console"># cd /usr/local/src && wget <a href="http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz" target="_blank">http://monkey.org/~provos/libevent-2.0.14-stable.tar.gz</a> && tar -xzf libevent-2.0.12-stable.tar.gz && cd libevent-2.0.12-stable</pre>
|
82 |
</li>
|
83 |
<li>
|
84 |
Let's compile:
|
95 |
<pre class="console"># ldconfig -v</pre>
|
96 |
</li>
|
97 |
<li>
|
98 |
+
Now find the <a href="http://memcached.org/" target="_blank">latest stable memcached</a>, download and extract:
|
99 |
+
<pre class="console"># cd /usr/local/src && wget <a href="http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz" target="_blank">http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz</a> && tar -xzf memcached-1.4.6.tar.gz && cd memcached-1.4.6</pre>
|
100 |
</li>
|
101 |
<li>
|
102 |
Let's compile:
|
119 |
<hr />
|
120 |
|
121 |
<p id="memcache"><strong><acronym title="PHP Extension Community Library">PECL</acronym> Memcache Module Installation:</strong><br /><em>Time required: 1 minute</em></p>
|
122 |
+
|
123 |
+
<ol>
|
124 |
<li>
|
125 |
Either use <acronym title="PHP Extension Community Library">PECL</acronym> (and skip to #4 if successful):
|
126 |
<pre class="console"># pecl install memcache</pre>
|
127 |
</li>
|
128 |
<li>
|
129 |
Or via compilation. Download the <a href="http://pecl.php.net/package/memcache" target="_blank">latest stable version</a> and extract:
|
130 |
+
<pre class="console"># cd /usr/local/src/ && wget <a href="http://pecl.php.net/get/memcache-2.2.6.tgz" target="_blank">http://pecl.php.net/get/memcache-2.2.6.tgz</a> && tar -xzf memcache-2.2.6.tgz && cd memcache-2.2.6</pre>
|
131 |
</li>
|
132 |
<li>
|
133 |
Now we start to compile:
|
146 |
<pre class="console"># php -r 'phpinfo();' | grep 'memcache'</pre>
|
147 |
</li>
|
148 |
</ol>
|
149 |
+
|
150 |
<hr />
|
151 |
+
|
152 |
<p id="APC"><strong><acronym title="PHP Extension Community Library">PECL</acronym> Alternative PHP Cache (<acronym title="Alternative PHP Cache">APC</acronym>) Installation (Recommended):</strong><br /><em>Time required: 1 minute</em></p>
|
153 |
+
|
154 |
+
<ol>
|
155 |
<li>
|
156 |
Install <acronym title="Alternative PHP Cache">APC</acronym> using the <acronym title="PHP Extension Community Library">PECL</acronym> command (and skip to #5 if successful):
|
157 |
<pre class="console"># pecl install apc</pre>
|
158 |
</li>
|
159 |
<li>
|
160 |
Or via compilation. Download the <a href="http://pecl.php.net/package/APC" target="_blank">latest stable version</a> and extract:
|
161 |
+
<pre class="console"># cd /usr/local/src && wget <a href="http://pecl.php.net/get/APC-3.1.9.tgz" target="_blank">http://pecl.php.net/get/APC-3.1.9.tgz</a> && tar -xzf APC-3.1.9.tgz && cd APC-3.1.9</pre>
|
162 |
</li>
|
163 |
<li>
|
164 |
Note the paths returned for the following commands:
|
184 |
<pre class="console"># php -r 'phpinfo();' | grep 'apc'</pre>
|
185 |
</li>
|
186 |
</ol>
|
187 |
+
|
188 |
<hr />
|
189 |
+
|
190 |
<p id="XCache"><strong>XCache Installation:</strong><br /><em>Time required: 1 minute</em></p>
|
191 |
+
|
192 |
+
<ol>
|
193 |
<li>
|
194 |
Download the <a href="http://xcache.lighttpd.net/wiki/ReleaseArchive" target="_blank">latest compatible version</a> and extract:
|
195 |
+
<pre class="console"># cd /usr/local/src && wget <a href="http://xcache.lighttpd.net/pub/Releases/1.3.2/xcache-1.3.2.tar.gz" target="_blank">http://xcache.lighttpd.net/pub/Releases/1.3.2/xcache-1.3.2.tar.gz</a> && tar -xzf xcache-1.3.2.tar.gz && cd xcache-1.3.2</pre>
|
196 |
</li>
|
197 |
<li>
|
198 |
Note the path returned for the following command:
|
217 |
<pre class="console"># php -r 'phpinfo();' | grep 'xcache'</pre>
|
218 |
</li>
|
219 |
</ol>
|
220 |
+
|
221 |
<hr />
|
222 |
+
|
223 |
<p id="eAccelerator"><strong>eAccelerator Installation:</strong><br /><em>Time required: 1 minute</em></p>
|
224 |
+
|
225 |
+
<ol>
|
226 |
<li>
|
227 |
If using <acronym title="Hypertext Preprocessor">PHP</acronym> v5+, download the <a href="http://eaccelerator.net/" target="_blank">lastest compatible version</a> and extract. Remember v0.9.5.3 is the last version that supports user objects, later versions only support opcode caching.
|
228 |
+
<pre class="console"># cd /usr/local/src && wget <a href="http://autosetup1.googlecode.com/files/eaccelerator-0.9.5.3.tar.bz2" target="_blank">http://autosetup1.googlecode.com/files/eaccelerator-0.9.5.3.tar.bz2</a> && tar -xjf eaccelerator-0.9.5.3.tar.bz2 && cd eaccelerator-0.9.5.3</pre>
|
229 |
</li>
|
230 |
<li>
|
231 |
Note the path returned for the following command:
|
250 |
<pre class="console"># php -r 'phpinfo();' | grep 'eaccelerator'</pre>
|
251 |
</li>
|
252 |
</ol>
|
253 |
+
|
254 |
<hr />
|
255 |
+
|
256 |
<div class="metabox-holder">
|
257 |
<?php echo $this->postbox_header('Note(s):'); ?>
|
258 |
<table class="form-table">
|
273 |
</div>
|
274 |
</div>
|
275 |
|
276 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{minify.phtml → minify.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
var minify_templates = {};
|
@@ -10,7 +11,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
10 |
<?php endforeach; ?>
|
11 |
/*]]>*/</script>
|
12 |
|
13 |
-
<form action="admin.php">
|
14 |
<p>
|
15 |
Minify via
|
16 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('minify.engine')); ?></strong>
|
@@ -18,12 +19,12 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
18 |
</p>
|
19 |
<p>
|
20 |
To rebuild the minify cache use the
|
21 |
-
|
22 |
-
<input type="submit" name="
|
23 |
operation.
|
24 |
<?php if (!$auto): ?>
|
25 |
Get minify hints using the
|
26 |
-
<input type="button" class="button button-minify-recommendations" value="help" />
|
27 |
wizard.
|
28 |
<?php endif; ?>
|
29 |
</p>
|
@@ -65,7 +66,8 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
65 |
</table>
|
66 |
|
67 |
<p class="submit">
|
68 |
-
|
|
|
69 |
</p>
|
70 |
<?php echo $this->postbox_footer(); ?>
|
71 |
|
@@ -88,7 +90,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
88 |
switch ($html_engine) {
|
89 |
case 'html':
|
90 |
case 'htmltidy':
|
91 |
-
$html_engine_file =
|
92 |
break;
|
93 |
}
|
94 |
|
@@ -111,7 +113,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
111 |
switch ($html_engine_file2) {
|
112 |
case 'html':
|
113 |
case 'htmltidy':
|
114 |
-
$html_engine_file =
|
115 |
break;
|
116 |
}
|
117 |
|
@@ -122,11 +124,12 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
122 |
</table>
|
123 |
|
124 |
<p class="submit">
|
125 |
-
|
|
|
126 |
</p>
|
127 |
<?php echo $this->postbox_footer(); ?>
|
128 |
|
129 |
-
<?php echo $this->postbox_header('JavaScript'); ?>
|
130 |
<table class="form-table">
|
131 |
<tr>
|
132 |
<th><acronym title="JavaScript">JS</acronym> minify settings:</th>
|
@@ -146,7 +149,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
146 |
case 'js':
|
147 |
case 'yuijs':
|
148 |
case 'ccjs':
|
149 |
-
$js_engine_file =
|
150 |
break;
|
151 |
}
|
152 |
|
@@ -163,7 +166,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
163 |
case 'js':
|
164 |
case 'yuijs':
|
165 |
case 'ccjs':
|
166 |
-
$js_engine_file2 =
|
167 |
break;
|
168 |
}
|
169 |
|
@@ -245,11 +248,12 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
245 |
</table>
|
246 |
|
247 |
<p class="submit">
|
248 |
-
|
|
|
249 |
</p>
|
250 |
<?php echo $this->postbox_footer(); ?>
|
251 |
|
252 |
-
<?php echo $this->postbox_header('Cascading Style
|
253 |
<table class="form-table">
|
254 |
<tr>
|
255 |
<th><acronym title="Cascading Style Sheet">CSS</acronym> minify settings:</th>
|
@@ -265,7 +269,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
265 |
case 'css':
|
266 |
case 'yuicss':
|
267 |
case 'csstidy':
|
268 |
-
$css_engine_file =
|
269 |
break;
|
270 |
}
|
271 |
|
@@ -292,7 +296,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
292 |
case 'css':
|
293 |
case 'yuicss':
|
294 |
case 'csstidy':
|
295 |
-
$css_engine_file2 =
|
296 |
break;
|
297 |
}
|
298 |
|
@@ -359,7 +363,8 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
359 |
</table>
|
360 |
|
361 |
<p class="submit">
|
362 |
-
|
|
|
363 |
</p>
|
364 |
<?php echo $this->postbox_footer(); ?>
|
365 |
|
@@ -370,7 +375,7 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
370 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
371 |
<td>
|
372 |
<input id="memcached_servers" type="text" name="minify.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('minify.memcached.servers'))); ?>" size="100" />
|
373 |
-
<input id="memcached_test" class="button" type="button" value="Test" />
|
374 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
375 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
376 |
</td>
|
@@ -404,7 +409,8 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
404 |
</table>
|
405 |
|
406 |
<p class="submit">
|
407 |
-
|
|
|
408 |
</p>
|
409 |
<?php echo $this->postbox_footer(); ?>
|
410 |
|
@@ -423,4 +429,4 @@ minify_templates['<?php echo addslashes($theme_key); ?>']['<?php echo addslashes
|
|
423 |
</div>
|
424 |
</form>
|
425 |
|
426 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
var minify_templates = {};
|
11 |
<?php endforeach; ?>
|
12 |
/*]]>*/</script>
|
13 |
|
14 |
+
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
15 |
<p>
|
16 |
Minify via
|
17 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('minify.engine')); ?></strong>
|
19 |
</p>
|
20 |
<p>
|
21 |
To rebuild the minify cache use the
|
22 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
23 |
+
<input type="submit" name="w3tc_flush_minify" value="empty cache"<?php if (! $minify_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
24 |
operation.
|
25 |
<?php if (!$auto): ?>
|
26 |
Get minify hints using the
|
27 |
+
<input type="button" class="button button-minify-recommendations {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" value="help" />
|
28 |
wizard.
|
29 |
<?php endif; ?>
|
30 |
</p>
|
66 |
</table>
|
67 |
|
68 |
<p class="submit">
|
69 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
70 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
71 |
</p>
|
72 |
<?php echo $this->postbox_footer(); ?>
|
73 |
|
90 |
switch ($html_engine) {
|
91 |
case 'html':
|
92 |
case 'htmltidy':
|
93 |
+
$html_engine_file = W3TC_INC_DIR . '/options/minify/' . $html_engine . '.php';
|
94 |
break;
|
95 |
}
|
96 |
|
113 |
switch ($html_engine_file2) {
|
114 |
case 'html':
|
115 |
case 'htmltidy':
|
116 |
+
$html_engine_file = W3TC_INC_DIR . '/options/minify/' . $html_engine . '2.php';
|
117 |
break;
|
118 |
}
|
119 |
|
124 |
</table>
|
125 |
|
126 |
<p class="submit">
|
127 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
128 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
129 |
</p>
|
130 |
<?php echo $this->postbox_footer(); ?>
|
131 |
|
132 |
+
<?php echo $this->postbox_header('<acronym title="JavaScript">JS</acronym>'); ?>
|
133 |
<table class="form-table">
|
134 |
<tr>
|
135 |
<th><acronym title="JavaScript">JS</acronym> minify settings:</th>
|
149 |
case 'js':
|
150 |
case 'yuijs':
|
151 |
case 'ccjs':
|
152 |
+
$js_engine_file = W3TC_INC_DIR . '/options/minify/' . $js_engine . '.php';
|
153 |
break;
|
154 |
}
|
155 |
|
166 |
case 'js':
|
167 |
case 'yuijs':
|
168 |
case 'ccjs':
|
169 |
+
$js_engine_file2 = W3TC_INC_DIR . '/options/minify/' . $js_engine . '2.php';
|
170 |
break;
|
171 |
}
|
172 |
|
248 |
</table>
|
249 |
|
250 |
<p class="submit">
|
251 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
252 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
253 |
</p>
|
254 |
<?php echo $this->postbox_footer(); ?>
|
255 |
|
256 |
+
<?php echo $this->postbox_header('<acronym title="Cascading Style Sheet">CSS</acronym>'); ?>
|
257 |
<table class="form-table">
|
258 |
<tr>
|
259 |
<th><acronym title="Cascading Style Sheet">CSS</acronym> minify settings:</th>
|
269 |
case 'css':
|
270 |
case 'yuicss':
|
271 |
case 'csstidy':
|
272 |
+
$css_engine_file = W3TC_INC_DIR . '/options/minify/' . $css_engine . '.php';
|
273 |
break;
|
274 |
}
|
275 |
|
296 |
case 'css':
|
297 |
case 'yuicss':
|
298 |
case 'csstidy':
|
299 |
+
$css_engine_file2 = W3TC_INC_DIR . '/options/minify/' . $css_engine . '2.php';
|
300 |
break;
|
301 |
}
|
302 |
|
363 |
</table>
|
364 |
|
365 |
<p class="submit">
|
366 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
367 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
368 |
</p>
|
369 |
<?php echo $this->postbox_footer(); ?>
|
370 |
|
375 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
376 |
<td>
|
377 |
<input id="memcached_servers" type="text" name="minify.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('minify.memcached.servers'))); ?>" size="100" />
|
378 |
+
<input id="memcached_test" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test" />
|
379 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
380 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
381 |
</td>
|
409 |
</table>
|
410 |
|
411 |
<p class="submit">
|
412 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
413 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
414 |
</p>
|
415 |
<?php echo $this->postbox_footer(); ?>
|
416 |
|
429 |
</div>
|
430 |
</form>
|
431 |
|
432 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/minify/{ccjs.phtml → ccjs.php}
RENAMED
@@ -1,2 +1,3 @@
|
|
|
|
1 |
<input type="hidden" name="minify.ccjs.options.formatting" value="" />
|
2 |
<label><input class="js_enabled" type="checkbox" name="minify.ccjs.options.formatting" value="pretty_print"<?php checked($this->_config->get_string('minify.ccjs.options.formatting'), 'pretty_print'); ?> /> Pretty print</label><br />
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<input type="hidden" name="minify.ccjs.options.formatting" value="" />
|
3 |
<label><input class="js_enabled" type="checkbox" name="minify.ccjs.options.formatting" value="pretty_print"<?php checked($this->_config->get_string('minify.ccjs.options.formatting'), 'pretty_print'); ?> /> Pretty print</label><br />
|
inc/options/minify/{ccjs2.phtml → ccjs2.php}
RENAMED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
$compilation_levels = array(
|
3 |
'WHITESPACE_ONLY' => 'Whitespace only',
|
4 |
'SIMPLE_OPTIMIZATIONS' => 'Simple optimizations',
|
@@ -18,7 +23,7 @@ $compilation_level = $this->_config->get_string('minify.ccjs.options.compilation
|
|
18 |
<tr>
|
19 |
<th> </th>
|
20 |
<td>
|
21 |
-
<input class="minifier_test
|
22 |
<span class="minifier_test_status w3tc-status w3tc-process"></span>
|
23 |
</td>
|
24 |
</tr>
|
1 |
<?php
|
2 |
+
|
3 |
+
if (!defined('W3TC')) {
|
4 |
+
die();
|
5 |
+
}
|
6 |
+
|
7 |
$compilation_levels = array(
|
8 |
'WHITESPACE_ONLY' => 'Whitespace only',
|
9 |
'SIMPLE_OPTIMIZATIONS' => 'Simple optimizations',
|
23 |
<tr>
|
24 |
<th> </th>
|
25 |
<td>
|
26 |
+
<input class="minifier_test button {type: 'ccjs', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test Closure Compiler" />
|
27 |
<span class="minifier_test_status w3tc-status w3tc-process"></span>
|
28 |
</td>
|
29 |
</tr>
|
inc/options/minify/{css.phtml → css.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<input type="hidden" name="minify.css.strip.comments" value="0" />
|
2 |
<input type="hidden" name="minify.css.strip.crlf" value="0" />
|
3 |
<label><input class="css_enabled" type="checkbox" name="minify.css.strip.comments" value="1"<?php checked($this->_config->get_boolean('minify.css.strip.comments'), true); ?> /> Preserved comment removal (not applied when combine only is active)</label><br />
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<input type="hidden" name="minify.css.strip.comments" value="0" />
|
3 |
<input type="hidden" name="minify.css.strip.crlf" value="0" />
|
4 |
<label><input class="css_enabled" type="checkbox" name="minify.css.strip.comments" value="1"<?php checked($this->_config->get_boolean('minify.css.strip.comments'), true); ?> /> Preserved comment removal (not applied when combine only is active)</label><br />
|
inc/options/minify/{csstidy.phtml → csstidy.php}
RENAMED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
$css_levels = array(
|
3 |
'CSS2.1',
|
4 |
'CSS2.0',
|
1 |
<?php
|
2 |
+
|
3 |
+
if (!defined('W3TC')) {
|
4 |
+
die();
|
5 |
+
}
|
6 |
+
|
7 |
$css_levels = array(
|
8 |
'CSS2.1',
|
9 |
'CSS2.0',
|
inc/options/minify/{csstidy2.phtml → csstidy2.php}
RENAMED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
$csstidy_templates = array(
|
3 |
'highest_compression' => 'Highest (no readability, smallest size)',
|
4 |
'high_compression' => 'High (moderate readability, smaller size)',
|
1 |
<?php
|
2 |
+
|
3 |
+
if (!defined('W3TC')) {
|
4 |
+
die();
|
5 |
+
}
|
6 |
+
|
7 |
$csstidy_templates = array(
|
8 |
'highest_compression' => 'Highest (no readability, smallest size)',
|
9 |
'high_compression' => 'High (moderate readability, smaller size)',
|
inc/options/minify/{html.phtml → html.php}
RENAMED
@@ -1,2 +1,3 @@
|
|
|
|
1 |
<input type="hidden" name="minify.html.strip.crlf" value="0" />
|
2 |
<label><input class="html_enabled" type="checkbox" name="minify.html.strip.crlf" value="1"<?php checked($this->_config->get_boolean('minify.html.strip.crlf'), true); ?> /> Line break removal</label><br />
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<input type="hidden" name="minify.html.strip.crlf" value="0" />
|
3 |
<label><input class="html_enabled" type="checkbox" name="minify.html.strip.crlf" value="1"<?php checked($this->_config->get_boolean('minify.html.strip.crlf'), true); ?> /> Line break removal</label><br />
|
inc/options/minify/{htmltidy.phtml → htmltidy.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<input type="hidden" name="minify.htmltidy.options.clean" value="0" />
|
2 |
<input type="hidden" name="minify.htmltidy.options.hide-comments" value="0" />
|
3 |
<label><input class="html_enabled" type="checkbox" name="minify.htmltidy.options.clean" value="1"<?php checked($this->_config->get_boolean('minify.htmltidy.options.clean'), true); ?> /> Clean</label><br />
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<input type="hidden" name="minify.htmltidy.options.clean" value="0" />
|
3 |
<input type="hidden" name="minify.htmltidy.options.hide-comments" value="0" />
|
4 |
<label><input class="html_enabled" type="checkbox" name="minify.htmltidy.options.clean" value="1"<?php checked($this->_config->get_boolean('minify.htmltidy.options.clean'), true); ?> /> Clean</label><br />
|
inc/options/minify/{htmltidy2.phtml → htmltidy2.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th><label for="minify_htmltidy_options_wrap">Wrap after:</label></th>
|
3 |
<td><input id="minify_htmltidy_options_wrap" class="html_enabled" type="text" name="minify.htmltidy.options.wrap" value="<?php echo htmlspecialchars($this->_config->get_integer('minify.htmltidy.options.wrap')); ?>" size="8" style="text-align: right;" /> symbols (set to 0 to disable)</td>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th><label for="minify_htmltidy_options_wrap">Wrap after:</label></th>
|
4 |
<td><input id="minify_htmltidy_options_wrap" class="html_enabled" type="text" name="minify.htmltidy.options.wrap" value="<?php echo htmlspecialchars($this->_config->get_integer('minify.htmltidy.options.wrap')); ?>" size="8" style="text-align: right;" /> symbols (set to 0 to disable)</td>
|
inc/options/minify/index.html
ADDED
File without changes
|
inc/options/minify/{js.phtml → js.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<input type="hidden" name="minify.js.strip.comments" value="0" />
|
2 |
<input type="hidden" name="minify.js.strip.crlf" value="0" />
|
3 |
<label><input class="js_enabled" type="checkbox" name="minify.js.strip.comments" value="1"<?php checked($this->_config->get_boolean('minify.js.strip.comments'), true); ?> /> Preserved comment removal (not applied when combine only is active)</label><br />
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<input type="hidden" name="minify.js.strip.comments" value="0" />
|
3 |
<input type="hidden" name="minify.js.strip.crlf" value="0" />
|
4 |
<label><input class="js_enabled" type="checkbox" name="minify.js.strip.comments" value="1"<?php checked($this->_config->get_boolean('minify.js.strip.comments'), true); ?> /> Preserved comment removal (not applied when combine only is active)</label><br />
|
inc/options/minify/{yuicss2.phtml → yuicss2.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th><label for="minify_yuicss_path_java">Path to JAVA executable:</label></th>
|
3 |
<td><input class="css_enabled" id="minify_yuicss_path_java" type="text" name="minify.yuicss.path.java" value="<?php echo htmlspecialchars($this->_config->get_string('minify.yuicss.path.java')); ?>" size="100" /></td>
|
@@ -9,7 +10,7 @@
|
|
9 |
<tr>
|
10 |
<th> </th>
|
11 |
<td>
|
12 |
-
<input class="minifier_test
|
13 |
<span class="minifier_test_status w3tc-status w3tc-process"></span>
|
14 |
</td>
|
15 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th><label for="minify_yuicss_path_java">Path to JAVA executable:</label></th>
|
4 |
<td><input class="css_enabled" id="minify_yuicss_path_java" type="text" name="minify.yuicss.path.java" value="<?php echo htmlspecialchars($this->_config->get_string('minify.yuicss.path.java')); ?>" size="100" /></td>
|
10 |
<tr>
|
11 |
<th> </th>
|
12 |
<td>
|
13 |
+
<input class="minifier_test button {type: 'yuicss', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test YUI Compressor" />
|
14 |
<span class="minifier_test_status w3tc-status w3tc-process"></span>
|
15 |
</td>
|
16 |
</tr>
|
inc/options/minify/{yuijs.phtml → yuijs.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<input type="hidden" name="minify.yuijs.options.nomunge" value="0" />
|
2 |
<input type="hidden" name="minify.yuijs.options.preserve-semi" value="0" />
|
3 |
<input type="hidden" name="minify.yuijs.options.disable-optimizations" value="0" />
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<input type="hidden" name="minify.yuijs.options.nomunge" value="0" />
|
3 |
<input type="hidden" name="minify.yuijs.options.preserve-semi" value="0" />
|
4 |
<input type="hidden" name="minify.yuijs.options.disable-optimizations" value="0" />
|
inc/options/minify/{yuijs2.phtml → yuijs2.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<tr>
|
2 |
<th><label for="minify_yuijs_path_java">Path to JAVA executable:</label></th>
|
3 |
<td><input id="minify_yuijs_path_java" class="js_enabled" type="text" name="minify.yuijs.path.java" value="<?php echo htmlspecialchars($this->_config->get_string('minify.yuijs.path.java')); ?>" size="100" /></td>
|
@@ -9,7 +10,7 @@
|
|
9 |
<tr>
|
10 |
<th> </th>
|
11 |
<td>
|
12 |
-
<input class="minifier_test
|
13 |
<span class="minifier_test_status w3tc-status w3tc-process"></span>
|
14 |
</td>
|
15 |
</tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<tr>
|
3 |
<th><label for="minify_yuijs_path_java">Path to JAVA executable:</label></th>
|
4 |
<td><input id="minify_yuijs_path_java" class="js_enabled" type="text" name="minify.yuijs.path.java" value="<?php echo htmlspecialchars($this->_config->get_string('minify.yuijs.path.java')); ?>" size="100" /></td>
|
10 |
<tr>
|
11 |
<th> </th>
|
12 |
<td>
|
13 |
+
<input class="minifier_test button {type: 'yuijs', nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test YUI Compressor" />
|
14 |
<span class="minifier_test_status w3tc-status w3tc-process"></span>
|
15 |
</td>
|
16 |
</tr>
|
inc/options/{mobile.phtml → mobile.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
var mobile_themes = {};
|
@@ -78,10 +79,11 @@ mobile_themes['<?php echo addslashes($theme_key); ?>'] = '<?php echo addslashes(
|
|
78 |
<div id="mobile_groups_empty" style="display: none;">No groups added. All user agents recieve the same page and minify cache results.</div>
|
79 |
|
80 |
<p class="submit">
|
81 |
-
|
|
|
82 |
</p>
|
83 |
<?php echo $this->postbox_footer(); ?>
|
84 |
</div>
|
85 |
</form>
|
86 |
|
87 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
var mobile_themes = {};
|
79 |
<div id="mobile_groups_empty" style="display: none;">No groups added. All user agents recieve the same page and minify cache results.</div>
|
80 |
|
81 |
<p class="submit">
|
82 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
83 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
84 |
</p>
|
85 |
<?php echo $this->postbox_footer(); ?>
|
86 |
</div>
|
87 |
</form>
|
88 |
|
89 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{objectcache.phtml → objectcache.php}
RENAMED
@@ -1,37 +1,22 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
-
<form action="admin.php">
|
4 |
<p>
|
5 |
Object caching via
|
6 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('objectcache.engine')); ?></strong>
|
7 |
is currently <span class="w3tc-<?php if ($objectcache_enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>.
|
8 |
</p>
|
9 |
<p>
|
10 |
-
To rebuild the object cache use the
|
11 |
-
|
|
|
12 |
operation.
|
13 |
-
<input type="hidden" name="page" value="<?php echo $this->_page; ?>" />
|
14 |
</p>
|
15 |
</form>
|
16 |
|
17 |
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
18 |
<div class="metabox-holder">
|
19 |
-
<?php echo $this->postbox_header('General'); ?>
|
20 |
-
<table class="form-table">
|
21 |
-
<tr>
|
22 |
-
<th>
|
23 |
-
<input type="hidden" name="objectcache.reject.admin" value="0" />
|
24 |
-
<label><input type="checkbox" name="objectcache.reject.admin" value="1"<?php checked($this->_config->get_boolean('objectcache.reject.admin'), true); ?> /> Don't cache WordPress Admin</label>
|
25 |
-
<br /><span class="description">Leave this option checked to maintain default WordPress Admin behavior.</span>
|
26 |
-
</th>
|
27 |
-
</tr>
|
28 |
-
</table>
|
29 |
-
|
30 |
-
<p class="submit">
|
31 |
-
<input type="submit" name="options_save" class="w3tc-button-save button-primary" value="Save all settings" />
|
32 |
-
</p>
|
33 |
-
<?php echo $this->postbox_footer(); ?>
|
34 |
-
|
35 |
<?php echo $this->postbox_header('Advanced'); ?>
|
36 |
<table class="form-table">
|
37 |
<?php if ($this->_config->get_string('objectcache.engine') == 'memcached'): ?>
|
@@ -39,7 +24,7 @@
|
|
39 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
40 |
<td>
|
41 |
<input id="memcached_servers" type="text" name="objectcache.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('objectcache.memcached.servers'))); ?>" size="100" />
|
42 |
-
<input id="memcached_test" class="button" type="button" value="Test" />
|
43 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
44 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
45 |
</td>
|
@@ -59,13 +44,6 @@
|
|
59 |
<br /><span class="description">If caching to disk, specify how frequently expired cache data is removed. For busy sites, a lower value is best.</span>
|
60 |
</td>
|
61 |
</tr>
|
62 |
-
<tr>
|
63 |
-
<th><label for="objectcache_reject_uri">Never cache the following pages:</label></th>
|
64 |
-
<td>
|
65 |
-
<textarea id="objectcache_reject_uri" name="objectcache.reject.uri" cols="40" rows="5"><?php echo htmlspecialchars(implode("\r\n", $this->_config->get_array('objectcache.reject.uri'))); ?></textarea>
|
66 |
-
<br /><span class="description">Always ignore the specified pages / directories.</span>
|
67 |
-
</td>
|
68 |
-
</tr>
|
69 |
<tr>
|
70 |
<th><label for="objectcache_groups_global">Global groups:</label></th>
|
71 |
<td>
|
@@ -83,10 +61,11 @@
|
|
83 |
</table>
|
84 |
|
85 |
<p class="submit">
|
86 |
-
|
|
|
87 |
</p>
|
88 |
<?php echo $this->postbox_footer(); ?>
|
89 |
-
</div>
|
90 |
</form>
|
91 |
|
92 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
+
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
5 |
<p>
|
6 |
Object caching via
|
7 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('objectcache.engine')); ?></strong>
|
8 |
is currently <span class="w3tc-<?php if ($objectcache_enabled): ?>enabled">enabled<?php else: ?>disabled">disabled<?php endif; ?></span>.
|
9 |
</p>
|
10 |
<p>
|
11 |
+
To rebuild the object cache use the
|
12 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
13 |
+
<input type="submit" name="w3tc_flush_objectcache" value="empty cache"<?php if (! $objectcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
14 |
operation.
|
|
|
15 |
</p>
|
16 |
</form>
|
17 |
|
18 |
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
19 |
<div class="metabox-holder">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
<?php echo $this->postbox_header('Advanced'); ?>
|
21 |
<table class="form-table">
|
22 |
<?php if ($this->_config->get_string('objectcache.engine') == 'memcached'): ?>
|
24 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
25 |
<td>
|
26 |
<input id="memcached_servers" type="text" name="objectcache.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('objectcache.memcached.servers'))); ?>" size="100" />
|
27 |
+
<input id="memcached_test" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test" />
|
28 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
29 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
30 |
</td>
|
44 |
<br /><span class="description">If caching to disk, specify how frequently expired cache data is removed. For busy sites, a lower value is best.</span>
|
45 |
</td>
|
46 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
<tr>
|
48 |
<th><label for="objectcache_groups_global">Global groups:</label></th>
|
49 |
<td>
|
61 |
</table>
|
62 |
|
63 |
<p class="submit">
|
64 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
65 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
66 |
</p>
|
67 |
<?php echo $this->postbox_footer(); ?>
|
68 |
+
</div>
|
69 |
</form>
|
70 |
|
71 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{pgcache.phtml → pgcache.php}
RENAMED
@@ -1,6 +1,7 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
-
<form action="admin.php">
|
4 |
<p>
|
5 |
Page caching via
|
6 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('pgcache.engine')); ?></strong>
|
@@ -8,9 +9,9 @@
|
|
8 |
</p>
|
9 |
<p>
|
10 |
To rebuild the page cache use the
|
|
|
11 |
<input type="submit" name="flush_pgcache" value="empty cache"<?php if (! $pgcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
12 |
operation.
|
13 |
-
<input type="hidden" name="page" value="<?php echo $this->_page; ?>" />
|
14 |
</p>
|
15 |
</form>
|
16 |
|
@@ -18,13 +19,6 @@
|
|
18 |
<div class="metabox-holder">
|
19 |
<?php echo $this->postbox_header('General'); ?>
|
20 |
<table class="form-table">
|
21 |
-
<tr>
|
22 |
-
<th>
|
23 |
-
<input type="hidden" name="pgcache.reject.logged" value="0" />
|
24 |
-
<label><input type="checkbox" name="pgcache.reject.logged" value="1"<?php checked($this->_config->get_boolean('pgcache.reject.logged'), true); ?> /> Don't cache pages for logged in users</label><br />
|
25 |
-
<span class="description">Users that have signed in to WordPress (e.g. administrators) will never view cached pages if enabled.</span>
|
26 |
-
</th>
|
27 |
-
</tr>
|
28 |
<tr>
|
29 |
<th>
|
30 |
<input type="hidden" name="pgcache.cache.home" value="0" />
|
@@ -39,6 +33,13 @@
|
|
39 |
<span class="description">Even if using a feed proxy service (like <a href="http://en.wikipedia.org/wiki/FeedBurner" target="_blank">FeedBurner</a>), enabling this option is still recommended.</span>
|
40 |
</th>
|
41 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
<tr>
|
43 |
<th>
|
44 |
<input type="hidden" name="pgcache.cache.query" value="0"<?php if ($this->_config->get_string('pgcache.engine') == 'file_generic'): ?> disabled="disabled"<?php endif; ?> />
|
@@ -50,13 +51,28 @@
|
|
50 |
<th>
|
51 |
<input type="hidden" name="pgcache.cache.404" value="0" />
|
52 |
<label><input type="checkbox" name="pgcache.cache.404" value="1"<?php checked($this->_config->get_boolean('pgcache.cache.404'), true); ?> /> Cache 404 (not found) pages</label><br />
|
53 |
-
<span class="description">Reduce server load by caching 404 pages.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
</th>
|
55 |
</tr>
|
56 |
</table>
|
57 |
|
58 |
<p class="submit">
|
59 |
-
|
|
|
60 |
</p>
|
61 |
<?php echo $this->postbox_footer(); ?>
|
62 |
|
@@ -67,7 +83,7 @@
|
|
67 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
68 |
<td>
|
69 |
<input id="memcached_servers" type="text" name="pgcache.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('pgcache.memcached.servers'))); ?>" size="100" />
|
70 |
-
<input id="memcached_test" class="button" type="button" value="Test" />
|
71 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
72 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
73 |
</td>
|
@@ -127,7 +143,8 @@
|
|
127 |
</table>
|
128 |
|
129 |
<p class="submit">
|
130 |
-
|
|
|
131 |
</p>
|
132 |
<?php echo $this->postbox_footer(); ?>
|
133 |
|
@@ -163,7 +180,8 @@
|
|
163 |
</table>
|
164 |
|
165 |
<p class="submit">
|
166 |
-
|
|
|
167 |
</p>
|
168 |
<?php echo $this->postbox_footer(); ?>
|
169 |
|
@@ -225,7 +243,8 @@
|
|
225 |
</table>
|
226 |
|
227 |
<p class="submit">
|
228 |
-
|
|
|
229 |
</p>
|
230 |
<?php echo $this->postbox_footer(); ?>
|
231 |
|
@@ -244,4 +263,4 @@
|
|
244 |
</div>
|
245 |
</form>
|
246 |
|
247 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
+
<form action="admin.php?page=<?php echo $this->_page; ?>" method="post">
|
5 |
<p>
|
6 |
Page caching via
|
7 |
<strong><?php echo w3_get_engine_name($this->_config->get_string('pgcache.engine')); ?></strong>
|
9 |
</p>
|
10 |
<p>
|
11 |
To rebuild the page cache use the
|
12 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
13 |
<input type="submit" name="flush_pgcache" value="empty cache"<?php if (! $pgcache_enabled): ?> disabled="disabled"<?php endif; ?> class="button" />
|
14 |
operation.
|
|
|
15 |
</p>
|
16 |
</form>
|
17 |
|
19 |
<div class="metabox-holder">
|
20 |
<?php echo $this->postbox_header('General'); ?>
|
21 |
<table class="form-table">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
<tr>
|
23 |
<th>
|
24 |
<input type="hidden" name="pgcache.cache.home" value="0" />
|
33 |
<span class="description">Even if using a feed proxy service (like <a href="http://en.wikipedia.org/wiki/FeedBurner" target="_blank">FeedBurner</a>), enabling this option is still recommended.</span>
|
34 |
</th>
|
35 |
</tr>
|
36 |
+
<tr>
|
37 |
+
<th>
|
38 |
+
<input type="hidden" name="pgcache.cache.ssl" value="0" />
|
39 |
+
<label><input type="checkbox" name="pgcache.cache.ssl" value="1"<?php checked($this->_config->get_boolean('pgcache.cache.ssl'), true); ?> /> Cache <acronym titlte="Secure Socket Layer">SSL</acronym> (<acronym title="HyperText Transfer Protocol over SSL">https</acronym>) requests</label><br />
|
40 |
+
<span class="description">Cache <acronym titlte="Secure Socket Layer">SSL</acronym> requests (uniquely) for improved performance.</span>
|
41 |
+
</th>
|
42 |
+
</tr>
|
43 |
<tr>
|
44 |
<th>
|
45 |
<input type="hidden" name="pgcache.cache.query" value="0"<?php if ($this->_config->get_string('pgcache.engine') == 'file_generic'): ?> disabled="disabled"<?php endif; ?> />
|
51 |
<th>
|
52 |
<input type="hidden" name="pgcache.cache.404" value="0" />
|
53 |
<label><input type="checkbox" name="pgcache.cache.404" value="1"<?php checked($this->_config->get_boolean('pgcache.cache.404'), true); ?> /> Cache 404 (not found) pages</label><br />
|
54 |
+
<span class="description">Reduce server load by caching 404 pages. If the disk enhanced method of disk caching is used, 404 pages will be returned with a 200 response code. Use at your own risk.</span>
|
55 |
+
</th>
|
56 |
+
</tr>
|
57 |
+
<tr>
|
58 |
+
<th>
|
59 |
+
<input type="hidden" name="pgcache.check.domain" value="0" />
|
60 |
+
<label><input type="checkbox" name="pgcache.check.domain" value="1"<?php checked($this->_config->get_boolean('pgcache.check.domain'), true); ?> /> Cache requests only for <?php echo w3_get_home_domain(); ?> hostname</label><br />
|
61 |
+
<span class="description">Cache only requests with the same <acronym title="Uniform Resource Indicator">URL</acronym> as the site's <a href="options-general.php">site address</a>.</span>
|
62 |
+
</th>
|
63 |
+
</tr>
|
64 |
+
<tr>
|
65 |
+
<th>
|
66 |
+
<input type="hidden" name="pgcache.reject.logged" value="0" />
|
67 |
+
<label><input type="checkbox" name="pgcache.reject.logged" value="1"<?php checked($this->_config->get_boolean('pgcache.reject.logged'), true); ?> /> Don't cache pages for logged in users</label><br />
|
68 |
+
<span class="description">Users that have signed in to WordPress (e.g. administrators) will never view cached pages if enabled.</span>
|
69 |
</th>
|
70 |
</tr>
|
71 |
</table>
|
72 |
|
73 |
<p class="submit">
|
74 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
75 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
76 |
</p>
|
77 |
<?php echo $this->postbox_footer(); ?>
|
78 |
|
83 |
<th><label for="memcached_servers">Memcached hostname:port / <acronym title="Internet Protocol">IP</acronym>:port:</label></th>
|
84 |
<td>
|
85 |
<input id="memcached_servers" type="text" name="pgcache.memcached.servers" value="<?php echo htmlspecialchars(implode(',', $this->_config->get_array('pgcache.memcached.servers'))); ?>" size="100" />
|
86 |
+
<input id="memcached_test" class="button {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Test" />
|
87 |
<span id="memcached_test_status" class="w3tc-status w3tc-process"></span>
|
88 |
<br /><span class="description">Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122</span>
|
89 |
</td>
|
143 |
</table>
|
144 |
|
145 |
<p class="submit">
|
146 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
147 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
148 |
</p>
|
149 |
<?php echo $this->postbox_footer(); ?>
|
150 |
|
180 |
</table>
|
181 |
|
182 |
<p class="submit">
|
183 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
184 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
185 |
</p>
|
186 |
<?php echo $this->postbox_footer(); ?>
|
187 |
|
243 |
</table>
|
244 |
|
245 |
<p class="submit">
|
246 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
247 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
248 |
</p>
|
249 |
<?php echo $this->postbox_footer(); ?>
|
250 |
|
263 |
</div>
|
264 |
</form>
|
265 |
|
266 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/{referrer.phtml → referrer.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
var referrer_themes = {};
|
@@ -78,10 +79,11 @@ referrer_themes['<?php echo addslashes($theme_key); ?>'] = '<?php echo addslashe
|
|
78 |
<div id="referrer_groups_empty" style="display: none;">No groups added. All referrers recieve the same page and minify cache results.</div>
|
79 |
|
80 |
<p class="submit">
|
81 |
-
|
|
|
82 |
</p>
|
83 |
<?php echo $this->postbox_footer(); ?>
|
84 |
</div>
|
85 |
</form>
|
86 |
|
87 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
var referrer_themes = {};
|
79 |
<div id="referrer_groups_empty" style="display: none;">No groups added. All referrers recieve the same page and minify cache results.</div>
|
80 |
|
81 |
<p class="submit">
|
82 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
83 |
+
<input type="submit" name="w3tc_save_options" class="w3tc-button-save button-primary" value="Save all settings" />
|
84 |
</p>
|
85 |
<?php echo $this->postbox_footer(); ?>
|
86 |
</div>
|
87 |
</form>
|
88 |
|
89 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/support.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/options/common/header.php'; ?>
|
3 |
+
<p>
|
4 |
+
Request professional services, suggest a feature or submit a bug using the form below:
|
5 |
+
</p>
|
6 |
+
|
7 |
+
<div id="support_container">
|
8 |
+
<?php
|
9 |
+
if (!$request_type || !isset($this->_request_types[$request_type])) {
|
10 |
+
$this->action_support_select();
|
11 |
+
} else {
|
12 |
+
if (isset($this->_request_prices[$request_type]) && !$payment) {
|
13 |
+
$this->action_support_payment();
|
14 |
+
} else {
|
15 |
+
$this->action_support_form();
|
16 |
+
}
|
17 |
+
}
|
18 |
+
?>
|
19 |
+
</div>
|
20 |
+
|
21 |
+
<?php include W3TC_INC_DIR . '/options/common/footer.php'; ?>
|
inc/options/support.phtml
DELETED
@@ -1,38 +0,0 @@
|
|
1 |
-
<?php if (! $ajax): include W3TC_DIR . '/inc/options/common/header.phtml'; ?>
|
2 |
-
<p>
|
3 |
-
Request professional services, suggest a feature or submit a bug using the form below:
|
4 |
-
</p>
|
5 |
-
|
6 |
-
<div id="support_container">
|
7 |
-
<?php endif; ?>
|
8 |
-
<form id="support_form" class="w3tc-ignore-change" action="admin.php?page=<?php echo $this->_page; ?>" method="post" enctype="multipart/form-data">
|
9 |
-
<div class="metabox-holder">
|
10 |
-
<?php include W3TC_DIR . '/inc/options/support/' . $request_type . '.phtml'; ?>
|
11 |
-
|
12 |
-
<?php echo $this->postbox_header('Note(s):'); ?>
|
13 |
-
<table class="form-table">
|
14 |
-
<tr>
|
15 |
-
<th colspan="2">
|
16 |
-
<ul>
|
17 |
-
<li>All submitted data will not be saved and is used solely for the purposes your support request. You will not be added to a mailing list, solicited without your permission, nor will your site be administered after this support case is closed.</li>
|
18 |
-
<li>Instead of providing your primary administrative or <acronym title="Secure Shell">SSH</acronym> / <acronym title="File Transfer Protocol">FTP</acronym> accounts, create a new administrator account that can be disabled when the support case is closed.</li>
|
19 |
-
<li>Please add the domain w3-edge.com to your <a href="http://en.wikipedia.org/wiki/Whitelist" target="_blank">email whitelist</a> as soon as possible.</li>
|
20 |
-
</ul>
|
21 |
-
</th>
|
22 |
-
</tr>
|
23 |
-
</table>
|
24 |
-
<?php echo $this->postbox_footer(); ?>
|
25 |
-
|
26 |
-
<p>
|
27 |
-
<input type="hidden" name="request_type" value="<?php echo $request_type; ?>" />
|
28 |
-
<input type="hidden" name="request_id" value="<?php echo $request_id; ?>" />
|
29 |
-
<input type="hidden" name="payment" value="<?php echo $payment; ?>" />
|
30 |
-
<input type="submit" name="support_request" class="button-primary" value="Submit request" />
|
31 |
-
<input id="support_cancel" type="button" value="Cancel" class="button-primary" />
|
32 |
-
</p>
|
33 |
-
</div>
|
34 |
-
</form>
|
35 |
-
<?php if (! $ajax): ?>
|
36 |
-
</div>
|
37 |
-
|
38 |
-
<?php include W3TC_DIR . '/inc/options/common/footer.phtml'; endif; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/options/support/form.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<form id="support_form" class="w3tc-ignore-change" action="admin.php?page=<?php echo $this->_page; ?>" method="post" enctype="multipart/form-data">
|
3 |
+
<div class="metabox-holder">
|
4 |
+
<?php include W3TC_INC_DIR . '/options/support/form/' . $request_type . '.php'; ?>
|
5 |
+
|
6 |
+
<?php echo $this->postbox_header('Note(s):'); ?>
|
7 |
+
<table class="form-table">
|
8 |
+
<tr>
|
9 |
+
<th colspan="2">
|
10 |
+
<ul>
|
11 |
+
<li>All submitted data will not be saved and is used solely for the purposes your support request. You will not be added to a mailing list, solicited without your permission, nor will your site be administered after this support case is closed.</li>
|
12 |
+
<li>Instead of providing your primary administrative or <acronym title="Secure Shell">SSH</acronym> / <acronym title="File Transfer Protocol">FTP</acronym> accounts, create a new administrator account that can be disabled when the support case is closed.</li>
|
13 |
+
<li>Please add the domain w3-edge.com to your <a href="http://en.wikipedia.org/wiki/Whitelist" target="_blank">email whitelist</a> as soon as possible.</li>
|
14 |
+
</ul>
|
15 |
+
</th>
|
16 |
+
</tr>
|
17 |
+
</table>
|
18 |
+
<?php echo $this->postbox_footer(); ?>
|
19 |
+
|
20 |
+
<p>
|
21 |
+
<input type="hidden" name="request_type" value="<?php echo $request_type; ?>" />
|
22 |
+
<input type="hidden" name="request_id" value="<?php echo $request_id; ?>" />
|
23 |
+
<input type="hidden" name="payment" value="<?php echo $payment; ?>" />
|
24 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
25 |
+
<input type="submit" name="w3tc_support_request" class="button-primary" value="Submit request" />
|
26 |
+
<input id="support_cancel" class="{nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Cancel" class="button-primary" />
|
27 |
+
</p>
|
28 |
+
</div>
|
29 |
+
</form>
|
inc/options/support/{bug_report.phtml → form/bug_report.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
inc/options/support/{phone_support.phtml → form/email_support.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
@@ -20,10 +21,6 @@
|
|
20 |
<th><label for="support_twitter">Twitter ID:</label></th>
|
21 |
<td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
|
22 |
</tr>
|
23 |
-
<tr>
|
24 |
-
<th><label for="support_phone">Phone:</label></th>
|
25 |
-
<td><input id="support_phone" type="text" name="phone" value="<?php echo htmlspecialchars($phone); ?>" size="80" /></td>
|
26 |
-
</tr>
|
27 |
<tr>
|
28 |
<th><label for="support_subject">Subject:</label></th>
|
29 |
<td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
|
@@ -52,6 +49,10 @@
|
|
52 |
|
53 |
<?php echo $this->postbox_header('Additional information'); ?>
|
54 |
<table class="form-table">
|
|
|
|
|
|
|
|
|
55 |
<tr>
|
56 |
<th><label for="support_forum_url">Forum Topic URL:</label></th>
|
57 |
<td><input id="support_forum_url" type="text" name="forum_url" value="<?php echo htmlspecialchars($forum_url); ?>" size="80" /></td>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
21 |
<th><label for="support_twitter">Twitter ID:</label></th>
|
22 |
<td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
|
23 |
</tr>
|
|
|
|
|
|
|
|
|
24 |
<tr>
|
25 |
<th><label for="support_subject">Subject:</label></th>
|
26 |
<td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
|
49 |
|
50 |
<?php echo $this->postbox_header('Additional information'); ?>
|
51 |
<table class="form-table">
|
52 |
+
<tr>
|
53 |
+
<th><label for="support_phone">Phone:</label></th>
|
54 |
+
<td><input id="support_phone" type="text" name="phone" value="<?php echo htmlspecialchars($phone); ?>" size="80" /></td>
|
55 |
+
</tr>
|
56 |
<tr>
|
57 |
<th><label for="support_forum_url">Forum Topic URL:</label></th>
|
58 |
<td><input id="support_forum_url" type="text" name="forum_url" value="<?php echo htmlspecialchars($forum_url); ?>" size="80" /></td>
|
inc/options/support/form/index.html
ADDED
File without changes
|
inc/options/support/{linux_config.phtml → form/linux_config.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
inc/options/support/{new_feature.phtml → form/new_feature.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
inc/options/support/{email_support.phtml → form/phone_support.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
@@ -20,6 +21,10 @@
|
|
20 |
<th><label for="support_twitter">Twitter ID:</label></th>
|
21 |
<td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
|
22 |
</tr>
|
|
|
|
|
|
|
|
|
23 |
<tr>
|
24 |
<th><label for="support_subject">Subject:</label></th>
|
25 |
<td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
|
@@ -48,10 +53,6 @@
|
|
48 |
|
49 |
<?php echo $this->postbox_header('Additional information'); ?>
|
50 |
<table class="form-table">
|
51 |
-
<tr>
|
52 |
-
<th><label for="support_phone">Phone:</label></th>
|
53 |
-
<td><input id="support_phone" type="text" name="phone" value="<?php echo htmlspecialchars($phone); ?>" size="80" /></td>
|
54 |
-
</tr>
|
55 |
<tr>
|
56 |
<th><label for="support_forum_url">Forum Topic URL:</label></th>
|
57 |
<td><input id="support_forum_url" type="text" name="forum_url" value="<?php echo htmlspecialchars($forum_url); ?>" size="80" /></td>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
21 |
<th><label for="support_twitter">Twitter ID:</label></th>
|
22 |
<td><input id="support_twitter" type="text" name="twitter" value="<?php echo htmlspecialchars($twitter); ?>" size="80" /></td>
|
23 |
</tr>
|
24 |
+
<tr>
|
25 |
+
<th><label for="support_phone">Phone:</label></th>
|
26 |
+
<td><input id="support_phone" type="text" name="phone" value="<?php echo htmlspecialchars($phone); ?>" size="80" /></td>
|
27 |
+
</tr>
|
28 |
<tr>
|
29 |
<th><label for="support_subject">Subject:</label></th>
|
30 |
<td><input id="support_subject" type="text" name="subject" value="<?php echo htmlspecialchars($subject); ?>" size="80" /></td>
|
53 |
|
54 |
<?php echo $this->postbox_header('Additional information'); ?>
|
55 |
<table class="form-table">
|
|
|
|
|
|
|
|
|
56 |
<tr>
|
57 |
<th><label for="support_forum_url">Forum Topic URL:</label></th>
|
58 |
<td><input id="support_forum_url" type="text" name="forum_url" value="<?php echo htmlspecialchars($forum_url); ?>" size="80" /></td>
|
inc/options/support/{plugin_config.phtml → form/plugin_config.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information', 'required'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
inc/options/support/{theme_config.phtml → form/theme_config.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php echo $this->postbox_header('Required information'); ?>
|
2 |
<table class="form-table">
|
3 |
<tr>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php echo $this->postbox_header('Required information'); ?>
|
3 |
<table class="form-table">
|
4 |
<tr>
|
inc/options/support/index.html
ADDED
File without changes
|
inc/options/support/payment.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<form action="<?php echo W3TC_PAYPAL_URL; ?>" method="get">
|
3 |
+
<div class="metabox-holder">
|
4 |
+
<?php echo $this->postbox_header('Request payment'); ?>
|
5 |
+
|
6 |
+
<p><?php echo htmlspecialchars($this->_request_types[$request_type]); ?></p>
|
7 |
+
|
8 |
+
<p><strong>Price: <?php echo sprintf('%.2f', $this->_request_prices[$request_type]); ?> USD</strong></p>
|
9 |
+
|
10 |
+
<p>
|
11 |
+
<input type="hidden" name="cmd" value="_xclick" />
|
12 |
+
<input type="hidden" name="business" value="<?php echo W3TC_PAYPAL_BUSINESS; ?>" />
|
13 |
+
<input type="hidden" name="item_name" value="<?php echo htmlspecialchars(sprintf('%s: %s (#%s)', ucfirst(w3_get_host()), $this->_request_types[$request_type], $request_id)); ?>" />
|
14 |
+
<input type="hidden" name="amount" value="<?php echo sprintf('%.2f', $this->_request_prices[$request_type]); ?>" />
|
15 |
+
<input type="hidden" name="currency_code" value="USD" />
|
16 |
+
<input type="hidden" name="no_shipping" value="1" />
|
17 |
+
<input type="hidden" name="rm" value="2" />
|
18 |
+
<input type="hidden" name="return" value="<?php echo htmlspecialchars($return_url); ?>" />
|
19 |
+
<input type="hidden" name="cancel_return" value="<?php echo htmlspecialchars($cancel_url); ?>" />
|
20 |
+
<input type="submit" class="button-primary" value="Buy now" />
|
21 |
+
<input id="support_cancel" class="{nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="Cancel" class="button-primary" />
|
22 |
+
</p>
|
23 |
+
<?php echo $this->postbox_footer(); ?>
|
24 |
+
</div>
|
25 |
+
</form>
|
inc/options/support/select.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<div class="metabox-holder">
|
3 |
+
<?php echo $this->postbox_header('Choose request type'); ?>
|
4 |
+
<table class="form-table">
|
5 |
+
<tr>
|
6 |
+
<th><label for="support_request_type">Request type:</label></th>
|
7 |
+
<td>
|
8 |
+
<select id="support_request_type" class="w3tc-ignore-change {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" name="request_type">
|
9 |
+
<option value="">-- Choose Type --</option>
|
10 |
+
<?php foreach ($this->_request_groups as $_request_group => $_request_types): ?>
|
11 |
+
<optgroup label="<?php echo htmlspecialchars($_request_group); ?>:">
|
12 |
+
<?php foreach ($_request_types as $_request_type): ?>
|
13 |
+
<option value="<?php echo $_request_type; ?>"><?php echo htmlspecialchars($this->_request_types[$_request_type]); ?></option>
|
14 |
+
<?php endforeach; ?>
|
15 |
+
</optgroup>
|
16 |
+
<?php endforeach; ?>
|
17 |
+
</select>
|
18 |
+
</td>
|
19 |
+
</tr>
|
20 |
+
</table>
|
21 |
+
<?php echo $this->postbox_footer(); ?>
|
22 |
+
</div>
|
inc/options/support_payment.phtml
DELETED
@@ -1,35 +0,0 @@
|
|
1 |
-
<?php if (!$ajax): include W3TC_DIR . '/inc/options/common/header.phtml'; ?>
|
2 |
-
<p>
|
3 |
-
Request professional services, suggest a feature or submit a bug using the form below:
|
4 |
-
</p>
|
5 |
-
|
6 |
-
<div id="support_container">
|
7 |
-
<?php endif; ?>
|
8 |
-
<form action="<?php echo W3TC_PAYPAL_URL; ?>" method="get">
|
9 |
-
<div class="metabox-holder">
|
10 |
-
<?php echo $this->postbox_header('Request payment'); ?>
|
11 |
-
|
12 |
-
<p><?php echo htmlspecialchars($this->_request_types[$request_type]); ?></p>
|
13 |
-
|
14 |
-
<p><strong>Price: <?php echo sprintf('%.2f', $this->_request_prices[$request_type]); ?> USD</strong></p>
|
15 |
-
|
16 |
-
<p>
|
17 |
-
<input type="hidden" name="cmd" value="_xclick" />
|
18 |
-
<input type="hidden" name="business" value="<?php echo W3TC_PAYPAL_BUSINESS; ?>" />
|
19 |
-
<input type="hidden" name="item_name" value="<?php echo htmlspecialchars(sprintf('%s: %s (#%s)', ucfirst(w3_get_host()), $this->_request_types[$request_type], $request_id)); ?>" />
|
20 |
-
<input type="hidden" name="amount" value="<?php echo sprintf('%.2f', $this->_request_prices[$request_type]); ?>" />
|
21 |
-
<input type="hidden" name="currency_code" value="USD" />
|
22 |
-
<input type="hidden" name="no_shipping" value="1" />
|
23 |
-
<input type="hidden" name="rm" value="2" />
|
24 |
-
<input type="hidden" name="return" value="<?php echo htmlspecialchars($return_url); ?>" />
|
25 |
-
<input type="hidden" name="cancel_return" value="<?php echo htmlspecialchars($cancel_url); ?>" />
|
26 |
-
<input type="submit" class="button-primary" value="Buy now" />
|
27 |
-
<input id="support_cancel" type="button" value="Cancel" class="button-primary" />
|
28 |
-
</p>
|
29 |
-
<?php echo $this->postbox_footer(); ?>
|
30 |
-
</div>
|
31 |
-
</form>
|
32 |
-
<?php if (! $ajax): ?>
|
33 |
-
</div>
|
34 |
-
|
35 |
-
<?php include W3TC_DIR . '/inc/options/common/footer.phtml'; endif; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/options/support_select.phtml
DELETED
@@ -1,34 +0,0 @@
|
|
1 |
-
<?php if (! $ajax): include W3TC_DIR . '/inc/options/common/header.phtml'; ?>
|
2 |
-
<p>
|
3 |
-
Request professional services, suggest a feature or submit a bug using the form below:
|
4 |
-
</p>
|
5 |
-
<?php endif; ?>
|
6 |
-
|
7 |
-
<div id="support_container">
|
8 |
-
<form id="support_select_form" class="w3tc-ignore-change" action="admin.php" method="get">
|
9 |
-
<div class="metabox-holder">
|
10 |
-
<?php echo $this->postbox_header('Choose request type'); ?>
|
11 |
-
<table class="form-table">
|
12 |
-
<tr>
|
13 |
-
<th><label for="support_request_type">Request type:</label></th>
|
14 |
-
<td>
|
15 |
-
<input type="hidden" name="page" value="<?php echo $this->_page; ?>" />
|
16 |
-
<select id="support_request_type" name="request_type">
|
17 |
-
<option value="">-- Choose Type --</option>
|
18 |
-
<?php foreach ($this->_request_groups as $_request_group => $_request_types): ?>
|
19 |
-
<optgroup label="<?php echo htmlspecialchars($_request_group); ?>:">
|
20 |
-
<?php foreach ($_request_types as $_request_type): ?>
|
21 |
-
<option value="<?php echo $_request_type; ?>"><?php echo htmlspecialchars($this->_request_types[$_request_type]); ?></option>
|
22 |
-
<?php endforeach; ?>
|
23 |
-
</optgroup>
|
24 |
-
<?php endforeach; ?>
|
25 |
-
</select>
|
26 |
-
</td>
|
27 |
-
</tr>
|
28 |
-
</table>
|
29 |
-
<?php echo $this->postbox_footer(); ?>
|
30 |
-
</div>
|
31 |
-
</form>
|
32 |
-
</div>
|
33 |
-
|
34 |
-
<?php if (! $ajax) include W3TC_DIR . '/inc/options/common/footer.phtml'; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/popup/{cdn_export_file.phtml → cdn_export_file.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
var files = [
|
@@ -8,7 +9,9 @@ var files = [
|
|
8 |
];
|
9 |
|
10 |
jQuery(function() {
|
11 |
-
|
|
|
|
|
12 |
});
|
13 |
/*]]>*/</script>
|
14 |
|
@@ -48,4 +51,4 @@ jQuery(function() {
|
|
48 |
|
49 |
<div id="cdn_export_file_log" class="log"></div>
|
50 |
|
51 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
var files = [
|
9 |
];
|
10 |
|
11 |
jQuery(function() {
|
12 |
+
W3tc_Popup_Cdn_Export_File.nonce = '<?php echo wp_create_nonce('w3tc'); ?>';
|
13 |
+
W3tc_Popup_Cdn_Export_File.files = files;
|
14 |
+
W3tc_Popup_Cdn_Export_File.init();
|
15 |
});
|
16 |
/*]]>*/</script>
|
17 |
|
51 |
|
52 |
<div id="cdn_export_file_log" class="log"></div>
|
53 |
|
54 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/popup/{cdn_export_library.phtml → cdn_export_library.php}
RENAMED
@@ -1,7 +1,9 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
jQuery(function() {
|
|
|
5 |
W3tc_Popup_Cdn_Export_Library.init();
|
6 |
});
|
7 |
/*]]>*/</script>
|
@@ -42,4 +44,4 @@ jQuery(function() {
|
|
42 |
|
43 |
<div id="cdn_export_library_log" class="log"></div>
|
44 |
|
45 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
jQuery(function() {
|
6 |
+
W3tc_Popup_Cdn_Export_Library.nonce = '<?php echo wp_create_nonce('w3tc'); ?>';
|
7 |
W3tc_Popup_Cdn_Export_Library.init();
|
8 |
});
|
9 |
/*]]>*/</script>
|
44 |
|
45 |
<div id="cdn_export_library_log" class="log"></div>
|
46 |
|
47 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/popup/{cdn_import_library.phtml → cdn_import_library.php}
RENAMED
@@ -1,10 +1,11 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
-
var cdn_host = '<?php echo $cdn_host; ?>';
|
5 |
-
|
6 |
jQuery(function() {
|
7 |
-
|
|
|
|
|
8 |
});
|
9 |
/*]]>*/</script>
|
10 |
|
@@ -29,7 +30,7 @@ jQuery(function() {
|
|
29 |
<tr>
|
30 |
<td>Last response:</td>
|
31 |
<td id="cdn_import_library_last_response">-</td>
|
32 |
-
</tr>
|
33 |
<tr>
|
34 |
<td colspan="2">
|
35 |
<label><input id="cdn_import_library_redirect_permanent" type="checkbox" checked="checked" /> Create a list of permanent (301) redirects for use in your site's .htaccess file</label>
|
@@ -62,4 +63,4 @@ jQuery(function() {
|
|
62 |
<textarea rows="10" cols="90" id="cdn_import_library_rules" class="rules"></textarea>
|
63 |
</p>
|
64 |
|
65 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
|
|
|
|
5 |
jQuery(function() {
|
6 |
+
W3tc_Popup_Cdn_Import_Library.nonce = '<?php echo wp_create_nonce('w3tc'); ?>';
|
7 |
+
W3tc_Popup_Cdn_Import_Library.cdn_host = '<?php echo $cdn_host; ?>';
|
8 |
+
W3tc_Popup_Cdn_Import_Library.init();
|
9 |
});
|
10 |
/*]]>*/</script>
|
11 |
|
30 |
<tr>
|
31 |
<td>Last response:</td>
|
32 |
<td id="cdn_import_library_last_response">-</td>
|
33 |
+
</tr>
|
34 |
<tr>
|
35 |
<td colspan="2">
|
36 |
<label><input id="cdn_import_library_redirect_permanent" type="checkbox" checked="checked" /> Create a list of permanent (301) redirects for use in your site's .htaccess file</label>
|
63 |
<textarea rows="10" cols="90" id="cdn_import_library_rules" class="rules"></textarea>
|
64 |
</p>
|
65 |
|
66 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/popup/{cdn_purge.phtml → cdn_purge.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<p>
|
4 |
Remove objects from the CDN by specifying the relative path on individual lines below and clicking the "Purge" button when done. For example:
|
@@ -30,8 +31,8 @@
|
|
30 |
<textarea name="files" rows="10" cols="90"></textarea>
|
31 |
</p>
|
32 |
<p>
|
33 |
-
|
34 |
-
<input class="button-primary" type="submit" value="Purge" />
|
35 |
</p>
|
36 |
</form>
|
37 |
|
@@ -44,4 +45,4 @@
|
|
44 |
<?php endforeach; ?>
|
45 |
</div>
|
46 |
|
47 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<p>
|
5 |
Remove objects from the CDN by specifying the relative path on individual lines below and clicking the "Purge" button when done. For example:
|
31 |
<textarea name="files" rows="10" cols="90"></textarea>
|
32 |
</p>
|
33 |
<p>
|
34 |
+
<?php echo $this->nonce_field('w3tc'); ?>
|
35 |
+
<input class="button-primary" type="submit" name="w3tc_cdn_purge_post" value="Purge" />
|
36 |
</p>
|
37 |
</form>
|
38 |
|
45 |
<?php endforeach; ?>
|
46 |
</div>
|
47 |
|
48 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/popup/{cdn_queue.phtml → cdn_queue.php}
RENAMED
@@ -1,4 +1,5 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<p>This tool lists the pending file uploads and deletions.</p>
|
4 |
<p id="w3tc-options-menu">
|
@@ -24,13 +25,13 @@
|
|
24 |
<td><?php echo htmlspecialchars($result->last_error); ?></td>
|
25 |
<td align="center"><?php echo htmlspecialchars($result->date); ?></td>
|
26 |
<td align="center">
|
27 |
-
<a href="admin.php?page=w3tc_cdn&
|
28 |
</td>
|
29 |
</tr>
|
30 |
<?php endforeach; ?>
|
31 |
</table>
|
32 |
<p>
|
33 |
-
<a href="admin.php?page=w3tc_cdn&
|
34 |
</p>
|
35 |
<?php else: ?>
|
36 |
<p class="empty">Upload queue is empty</p>
|
@@ -54,13 +55,13 @@
|
|
54 |
<td><?php echo htmlspecialchars($result->last_error); ?></td>
|
55 |
<td align="center"><?php echo htmlspecialchars($result->date); ?></td>
|
56 |
<td align="center">
|
57 |
-
<a href="admin.php?page=w3tc_cdn&
|
58 |
</td>
|
59 |
</tr>
|
60 |
<?php endforeach; ?>
|
61 |
</table>
|
62 |
<p>
|
63 |
-
<a href="admin.php?page=w3tc_cdn&
|
64 |
</p>
|
65 |
<?php else: ?>
|
66 |
<p class="empty">Delete queue is empty</p>
|
@@ -84,17 +85,17 @@
|
|
84 |
<td><?php echo htmlspecialchars($result->last_error); ?></td>
|
85 |
<td align="center"><?php echo htmlspecialchars($result->date); ?></td>
|
86 |
<td align="center">
|
87 |
-
<a href="admin.php?page=w3tc_cdn&
|
88 |
</td>
|
89 |
</tr>
|
90 |
<?php endforeach; ?>
|
91 |
</table>
|
92 |
<p>
|
93 |
-
<a href="admin.php?page=w3tc_cdn&
|
94 |
</p>
|
95 |
<?php else: ?>
|
96 |
<p class="empty">Purge queue is empty</p>
|
97 |
<?php endif; ?>
|
98 |
</div>
|
99 |
|
100 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<p>This tool lists the pending file uploads and deletions.</p>
|
5 |
<p id="w3tc-options-menu">
|
25 |
<td><?php echo htmlspecialchars($result->last_error); ?></td>
|
26 |
<td align="center"><?php echo htmlspecialchars($result->date); ?></td>
|
27 |
<td align="center">
|
28 |
+
<a href="admin.php?page=w3tc_cdn&w3tc_cdn_queue&cdn_queue_tab=upload&cdn_queue_action=delete&cdn_queue_id=<?php echo $result->id; ?>&_wpnonce=<?php echo $nonce; ?>" class="cdn_queue_delete">Delete</a>
|
29 |
</td>
|
30 |
</tr>
|
31 |
<?php endforeach; ?>
|
32 |
</table>
|
33 |
<p>
|
34 |
+
<a href="admin.php?page=w3tc_cdn&w3tc_cdn_queue&cdn_queue_tab=upload&cdn_queue_action=empty&cdn_queue_type=<?php echo W3TC_CDN_COMMAND_UPLOAD; ?>&_wpnonce=<?php echo $nonce; ?>" class="cdn_queue_empty">Empty upload queue</a>
|
35 |
</p>
|
36 |
<?php else: ?>
|
37 |
<p class="empty">Upload queue is empty</p>
|
55 |
<td><?php echo htmlspecialchars($result->last_error); ?></td>
|
56 |
<td align="center"><?php echo htmlspecialchars($result->date); ?></td>
|
57 |
<td align="center">
|
58 |
+
<a href="admin.php?page=w3tc_cdn&w3tc_cdn_queue&cdn_queue_tab=delete&cdn_queue_action=delete&cdn_queue_id=<?php echo $result->id; ?>&_wpnonce=<?php echo $nonce; ?>" class="cdn_queue_delete">Delete</a>
|
59 |
</td>
|
60 |
</tr>
|
61 |
<?php endforeach; ?>
|
62 |
</table>
|
63 |
<p>
|
64 |
+
<a href="admin.php?page=w3tc_cdn&w3tc_cdn_queue&cdn_queue_tab=delete&cdn_queue_action=empty&cdn_queue_type=<?php echo W3TC_CDN_COMMAND_DELETE; ?>&_wpnonce=<?php echo $nonce; ?>" class="cdn_queue_empty">Empty delete queue</a>
|
65 |
</p>
|
66 |
<?php else: ?>
|
67 |
<p class="empty">Delete queue is empty</p>
|
85 |
<td><?php echo htmlspecialchars($result->last_error); ?></td>
|
86 |
<td align="center"><?php echo htmlspecialchars($result->date); ?></td>
|
87 |
<td align="center">
|
88 |
+
<a href="admin.php?page=w3tc_cdn&w3tc_cdn_queue&cdn_queue_tab=purge&cdn_queue_action=delete&cdn_queue_id=<?php echo $result->id; ?>&_wpnonce=<?php echo $nonce; ?>" class="cdn_queue_delete">Delete</a>
|
89 |
</td>
|
90 |
</tr>
|
91 |
<?php endforeach; ?>
|
92 |
</table>
|
93 |
<p>
|
94 |
+
<a href="admin.php?page=w3tc_cdn&w3tc_cdn_queue&cdn_queue_tab=purge&cdn_queue_action=empty&cdn_queue_type=<?php echo W3TC_CDN_COMMAND_PURGE; ?>&_wpnonce=<?php echo $nonce; ?>" class="cdn_queue_empty">Empty purge queue</a>
|
95 |
</p>
|
96 |
<?php else: ?>
|
97 |
<p class="empty">Purge queue is empty</p>
|
98 |
<?php endif; ?>
|
99 |
</div>
|
100 |
|
101 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/popup/{cdn_rename_domain.phtml → cdn_rename_domain.php}
RENAMED
@@ -1,7 +1,9 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<script type="text/javascript">/*<![CDATA[*/
|
4 |
jQuery(function() {
|
|
|
5 |
W3tc_Popup_Cdn_Rename_Domain.init();
|
6 |
});
|
7 |
/*]]>*/</script>
|
@@ -27,14 +29,14 @@ jQuery(function() {
|
|
27 |
<tr>
|
28 |
<td>Last response:</td>
|
29 |
<td id="cdn_rename_domain_last_response">-</td>
|
30 |
-
</tr>
|
31 |
<tr>
|
32 |
<td>Domains to rename:</td>
|
33 |
<td>
|
34 |
<textarea cols="40" rows="3" id="cdn_rename_domain_names"></textarea><br />
|
35 |
e.g.: domain.com
|
36 |
</td>
|
37 |
-
</tr>
|
38 |
</table>
|
39 |
|
40 |
<p>
|
@@ -49,4 +51,4 @@ jQuery(function() {
|
|
49 |
|
50 |
<div id="cdn_rename_domain_log" class="log"></div>
|
51 |
|
52 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<script type="text/javascript">/*<![CDATA[*/
|
5 |
jQuery(function() {
|
6 |
+
W3tc_Popup_Cdn_Rename_Domain.nonce = '<?php echo wp_create_nonce('w3tc'); ?>';
|
7 |
W3tc_Popup_Cdn_Rename_Domain.init();
|
8 |
});
|
9 |
/*]]>*/</script>
|
29 |
<tr>
|
30 |
<td>Last response:</td>
|
31 |
<td id="cdn_rename_domain_last_response">-</td>
|
32 |
+
</tr>
|
33 |
<tr>
|
34 |
<td>Domains to rename:</td>
|
35 |
<td>
|
36 |
<textarea cols="40" rows="3" id="cdn_rename_domain_names"></textarea><br />
|
37 |
e.g.: domain.com
|
38 |
</td>
|
39 |
+
</tr>
|
40 |
</table>
|
41 |
|
42 |
<p>
|
51 |
|
52 |
<div id="cdn_rename_domain_log" class="log"></div>
|
53 |
|
54 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/popup/common/{footer.phtml → footer.php}
RENAMED
File without changes
|
inc/popup/common/{header.phtml → header.php}
RENAMED
@@ -1,12 +1,13 @@
|
|
|
|
1 |
<?php
|
2 |
if (! isset($title)) {
|
3 |
$title = 'Untitled';
|
4 |
}
|
5 |
-
|
6 |
if (! isset($errors)) {
|
7 |
$errors = array();
|
8 |
}
|
9 |
-
|
10 |
if (! isset($notes)) {
|
11 |
$notes =array();
|
12 |
}
|
@@ -14,16 +15,17 @@
|
|
14 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
15 |
<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
|
16 |
<head>
|
17 |
-
<link rel="stylesheet" type="text/css" href="<?php echo plugins_url('
|
18 |
<script type="text/javascript" src="<?php echo site_url('wp-includes/js/jquery/jquery.js?ver=' . W3TC_VERSION); ?>"></script>
|
19 |
-
<script type="text/javascript" src="<?php echo plugins_url('
|
|
|
20 |
<title><?php echo htmlspecialchars($title); ?> - W3 Total Cache</title>
|
21 |
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
|
22 |
</head>
|
23 |
<body>
|
24 |
<div id="content">
|
25 |
<h1><?php echo htmlspecialchars($title); ?></h1>
|
26 |
-
|
27 |
<?php if (count($errors)): ?>
|
28 |
<div class="error">
|
29 |
<?php foreach ($errors as $error): ?>
|
@@ -31,7 +33,7 @@
|
|
31 |
<?php endforeach; ?>
|
32 |
</div>
|
33 |
<?php endif; ?>
|
34 |
-
|
35 |
<?php if (count($notes)): ?>
|
36 |
<div class="updated fade">
|
37 |
<?php foreach ($notes as $note): ?>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php
|
3 |
if (! isset($title)) {
|
4 |
$title = 'Untitled';
|
5 |
}
|
6 |
+
|
7 |
if (! isset($errors)) {
|
8 |
$errors = array();
|
9 |
}
|
10 |
+
|
11 |
if (! isset($notes)) {
|
12 |
$notes =array();
|
13 |
}
|
15 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
16 |
<html xmlns="http://www.w3.org/1999/xhtml" <?php do_action('admin_xml_ns'); ?> <?php language_attributes(); ?>>
|
17 |
<head>
|
18 |
+
<link rel="stylesheet" type="text/css" href="<?php echo plugins_url('pub/css/popup.css?ver=' . W3TC_VERSION, W3TC_FILE); ?>" />
|
19 |
<script type="text/javascript" src="<?php echo site_url('wp-includes/js/jquery/jquery.js?ver=' . W3TC_VERSION); ?>"></script>
|
20 |
+
<script type="text/javascript" src="<?php echo plugins_url('pub/js/metadata.js?ver=' . W3TC_VERSION, W3TC_FILE); ?>"></script>
|
21 |
+
<script type="text/javascript" src="<?php echo plugins_url('pub/js/popup.js?ver=' . W3TC_VERSION, W3TC_FILE); ?>"></script>
|
22 |
<title><?php echo htmlspecialchars($title); ?> - W3 Total Cache</title>
|
23 |
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php echo get_option('blog_charset'); ?>" />
|
24 |
</head>
|
25 |
<body>
|
26 |
<div id="content">
|
27 |
<h1><?php echo htmlspecialchars($title); ?></h1>
|
28 |
+
|
29 |
<?php if (count($errors)): ?>
|
30 |
<div class="error">
|
31 |
<?php foreach ($errors as $error): ?>
|
33 |
<?php endforeach; ?>
|
34 |
</div>
|
35 |
<?php endif; ?>
|
36 |
+
|
37 |
<?php if (count($notes)): ?>
|
38 |
<div class="updated fade">
|
39 |
<?php foreach ($notes as $note): ?>
|
inc/popup/common/index.html
ADDED
File without changes
|
inc/popup/index.html
ADDED
File without changes
|
inc/popup/{pagespeed_results.phtml → pagespeed_results.php}
RENAMED
@@ -1,9 +1,11 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
3 |
<?php if ($results): ?>
|
4 |
<h4>Page Speed Score: <?php echo $results['score']; ?>/100</h4>
|
5 |
|
6 |
<p>
|
|
|
7 |
<input class="button ps-expand-all" type="button" value="Expand all" />
|
8 |
<input class="button ps-collapse-all" type="button" value="Collapse all" />
|
9 |
<input class="button ps-refresh" type="button" value="Refresh analysis" />
|
@@ -51,4 +53,4 @@
|
|
51 |
</p>
|
52 |
<?php endif; ?>
|
53 |
|
54 |
-
<?php include
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<?php include W3TC_INC_DIR . '/popup/common/header.php'; ?>
|
3 |
|
4 |
<?php if ($results): ?>
|
5 |
<h4>Page Speed Score: <?php echo $results['score']; ?>/100</h4>
|
6 |
|
7 |
<p>
|
8 |
+
<input class="w3tc-widget-ps-nonce" type="hidden" value="<?php echo wp_create_nonce('w3tc'); ?>" />
|
9 |
<input class="button ps-expand-all" type="button" value="Expand all" />
|
10 |
<input class="button ps-collapse-all" type="button" value="Collapse all" />
|
11 |
<input class="button ps-refresh" type="button" value="Refresh analysis" />
|
53 |
</p>
|
54 |
<?php endif; ?>
|
55 |
|
56 |
+
<?php include W3TC_INC_DIR . '/popup/common/footer.php'; ?>
|
inc/widget/index.html
ADDED
File without changes
|
inc/widget/latest.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
+
<p class="widget-loading hide-if-no-js {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}">
|
3 |
+
<?php echo __( 'Loading…' ) ?>
|
4 |
+
</p>
|
5 |
+
<p class="hide-if-js">
|
6 |
+
<?php echo __( 'This widget requires JavaScript.' ) ?>
|
7 |
+
</p>
|
inc/widget/{latest.phtml → latest_ajax.php}
RENAMED
@@ -1,9 +1,10 @@
|
|
|
|
1 |
<?php foreach ($items as $item): ?>
|
2 |
<h4>
|
3 |
<a href="<?php echo $item['link']; ?>"><?php echo $item['title']; ?></a>
|
4 |
</h4>
|
5 |
<p>
|
6 |
-
<?php echo $item['description']; ?>
|
7 |
</p>
|
8 |
<?php endforeach; ?>
|
9 |
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php foreach ($items as $item): ?>
|
3 |
<h4>
|
4 |
<a href="<?php echo $item['link']; ?>"><?php echo $item['title']; ?></a>
|
5 |
</h4>
|
6 |
<p>
|
7 |
+
<?php echo $item['description']; ?>
|
8 |
</p>
|
9 |
<?php endforeach; ?>
|
10 |
|
inc/widget/{latest_control.phtml → latest_control.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<p>
|
2 |
<label>
|
3 |
How many items would you like to display?
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<p>
|
3 |
<label>
|
4 |
How many items would you like to display?
|
inc/widget/{pagespeed.phtml → pagespeed.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<?php if ($results): ?>
|
2 |
<h4>Page Speed Score: <?php echo $results['score']; ?>/100</h4>
|
3 |
|
@@ -12,12 +13,14 @@
|
|
12 |
|
13 |
<p>
|
14 |
<input class="button w3tc-widget-ps-refresh" type="button" value="Refresh analysis" />
|
15 |
-
<input class="button w3tc-widget-ps-view-all" type="button" value="View all results" />
|
16 |
</p>
|
17 |
<?php else: ?>
|
18 |
<?php if ($key): ?>
|
19 |
<p>Unable to fetch Page Speed results.</p>
|
20 |
-
<p
|
|
|
|
|
21 |
<?php else: ?>
|
22 |
<p>Google Page Speed score is not available. Please follow the directions found in the Miscellanous settings box on the <a href="admin.php?page=w3tc_general">General Settings</a> tab.</p>
|
23 |
<?php endif; ?>
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<?php if ($results): ?>
|
3 |
<h4>Page Speed Score: <?php echo $results['score']; ?>/100</h4>
|
4 |
|
13 |
|
14 |
<p>
|
15 |
<input class="button w3tc-widget-ps-refresh" type="button" value="Refresh analysis" />
|
16 |
+
<input class="button w3tc-widget-ps-view-all {nonce: '<?php echo wp_create_nonce('w3tc'); ?>'}" type="button" value="View all results" />
|
17 |
</p>
|
18 |
<?php else: ?>
|
19 |
<?php if ($key): ?>
|
20 |
<p>Unable to fetch Page Speed results.</p>
|
21 |
+
<p>
|
22 |
+
<input class="button w3tc-widget-ps-refresh" type="button" value="Refresh Analysis" />
|
23 |
+
</p>
|
24 |
<?php else: ?>
|
25 |
<p>Google Page Speed score is not available. Please follow the directions found in the Miscellanous settings box on the <a href="admin.php?page=w3tc_general">General Settings</a> tab.</p>
|
26 |
<?php endif; ?>
|
inc/widget/{pagespeed_control.phtml → pagespeed_control.php}
RENAMED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
<p>
|
2 |
<label>
|
3 |
Page Speed API Key:
|
1 |
+
<?php if (!defined('W3TC')) die(); ?>
|
2 |
<p>
|
3 |
<label>
|
4 |
Page Speed API Key:
|
index.html
ADDED
File without changes
|
ini/.htaccess
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
Options -Indexes
|
2 |
+
Order deny,allow
|
3 |
+
#Deny from all
|
ini/index.html
ADDED
File without changes
|
lib/.htaccess
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
Options -Indexes
|
2 |
+
Order deny,allow
|
3 |
+
#Deny from all
|
lib/CF/cacert.pem
CHANGED
@@ -1,3113 +1,3113 @@
|
|
1 |
-
##
|
2 |
-
## cacert.pem-foo -- Bundle of CA Root Certificates
|
3 |
-
##
|
4 |
-
## Converted at: Sat Aug 23 21:39:56 2008 UTC
|
5 |
-
##
|
6 |
-
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
-
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
-
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
-
## '/mozilla/security/nss/lib/ckfw/builtins/certdata.txt'
|
10 |
-
##
|
11 |
-
## It contains the certificates in PEM format and therefore
|
12 |
-
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
-
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
-
## Just configure this file as the SSLCACertificateFile.
|
15 |
-
##
|
16 |
-
|
17 |
-
# ***** BEGIN LICENSE BLOCK *****
|
18 |
-
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
19 |
-
#
|
20 |
-
# The contents of this file are subject to the Mozilla Public License Version
|
21 |
-
# 1.1 (the "License"); you may not use this file except in compliance with
|
22 |
-
# the License. You may obtain a copy of the License at
|
23 |
-
# http://www.mozilla.org/MPL/
|
24 |
-
#
|
25 |
-
# Software distributed under the License is distributed on an "AS IS" basis,
|
26 |
-
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
27 |
-
# for the specific language governing rights and limitations under the
|
28 |
-
# License.
|
29 |
-
#
|
30 |
-
# The Original Code is the Netscape security libraries.
|
31 |
-
#
|
32 |
-
# The Initial Developer of the Original Code is
|
33 |
-
# Netscape Communications Corporation.
|
34 |
-
# Portions created by the Initial Developer are Copyright (C) 1994-2000
|
35 |
-
# the Initial Developer. All Rights Reserved.
|
36 |
-
#
|
37 |
-
# Contributor(s):
|
38 |
-
#
|
39 |
-
# Alternatively, the contents of this file may be used under the terms of
|
40 |
-
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
41 |
-
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
42 |
-
# in which case the provisions of the GPL or the LGPL are applicable instead
|
43 |
-
# of those above. If you wish to allow use of your version of this file only
|
44 |
-
# under the terms of either the GPL or the LGPL, and not to allow others to
|
45 |
-
# use your version of this file under the terms of the MPL, indicate your
|
46 |
-
# decision by deleting the provisions above and replace them with the notice
|
47 |
-
# and other provisions required by the GPL or the LGPL. If you do not delete
|
48 |
-
# the provisions above, a recipient may use your version of this file under
|
49 |
-
# the terms of any one of the MPL, the GPL or the LGPL.
|
50 |
-
#
|
51 |
-
# ***** END LICENSE BLOCK *****
|
52 |
-
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.49 $ $Date: 2008/08/14 18:15:56 $
|
53 |
-
|
54 |
-
Verisign/RSA Secure Server CA
|
55 |
-
=============================
|
56 |
-
-----BEGIN CERTIFICATE-----
|
57 |
-
MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
58 |
-
IDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy
|
59 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVow
|
60 |
-
XzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQL
|
61 |
-
EyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUA
|
62 |
-
A4GJADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII0haGN1Xp
|
63 |
-
sSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphIuR2nKRoTLkoRWZweFdVJ
|
64 |
-
VCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZIhvcNAQECBQADfgBl3X7hsuyw4jrg7HFG
|
65 |
-
mhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2
|
66 |
-
qUtN8iD3zV9/ZHuO3ABc1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
|
67 |
-
-----END CERTIFICATE-----
|
68 |
-
|
69 |
-
GTE CyberTrust Root CA
|
70 |
-
======================
|
71 |
-
-----BEGIN CERTIFICATE-----
|
72 |
-
MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
73 |
-
Q29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJvb3QwHhcNOTYwMjIzMjMwMTAw
|
74 |
-
WhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9u
|
75 |
-
MRwwGgYDVQQDExNHVEUgQ3liZXJUcnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
|
76 |
-
gQC45k+625h8cXyvRLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH
|
77 |
-
6X4MypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/51KiOQswk
|
78 |
-
wB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKzdcZfHeFhVYAA1IFLezEP
|
79 |
-
I2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWlIjeaY8JIILTbcuPI9tl8vrGvU9oUtCG4
|
80 |
-
1tWW4/5ODFlitppK+ULdjG+BqXH/9ApybW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
|
81 |
-
-----END CERTIFICATE-----
|
82 |
-
|
83 |
-
GTE CyberTrust Global Root
|
84 |
-
==========================
|
85 |
-
-----BEGIN CERTIFICATE-----
|
86 |
-
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
87 |
-
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
88 |
-
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
89 |
-
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
90 |
-
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
91 |
-
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
92 |
-
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
93 |
-
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
94 |
-
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
95 |
-
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
96 |
-
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
97 |
-
-----END CERTIFICATE-----
|
98 |
-
|
99 |
-
Thawte Personal Basic CA
|
100 |
-
========================
|
101 |
-
-----BEGIN CERTIFICATE-----
|
102 |
-
MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
103 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
|
104 |
-
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMY
|
105 |
-
VGhhd3RlIFBlcnNvbmFsIEJhc2ljIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0
|
106 |
-
aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpB
|
107 |
-
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhh
|
108 |
-
d3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
|
109 |
-
ITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBDQTEoMCYGCSqGSIb3DQEJARYZcGVyc29u
|
110 |
-
YWwtYmFzaWNAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+C
|
111 |
-
FeZIlDWmWr5vQvoPR+53dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJ
|
112 |
-
l+A1OFdKwPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7G1sY
|
113 |
-
0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAt4plrsD16
|
114 |
-
iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7c8a914phXAPjLSeoF+CEhULcXpvG
|
115 |
-
t7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN
|
116 |
-
92NWod8isQ==
|
117 |
-
-----END CERTIFICATE-----
|
118 |
-
|
119 |
-
Thawte Personal Premium CA
|
120 |
-
==========================
|
121 |
-
-----BEGIN CERTIFICATE-----
|
122 |
-
MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
123 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
|
124 |
-
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMa
|
125 |
-
VGhhd3RlIFBlcnNvbmFsIFByZW1pdW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1p
|
126 |
-
dW1AdGhhd3RlLmNvbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQG
|
127 |
-
EwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoT
|
128 |
-
EVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlz
|
129 |
-
aW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJlbWl1bSBDQTEqMCgGCSqGSIb3DQEJARYb
|
130 |
-
cGVyc29uYWwtcHJlbWl1bUB0aGF3dGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ
|
131 |
-
Ztn4B0TPuYwu8KHvE0VsBd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ
|
132 |
-
8/JE2dWIEt12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYDZicR
|
133 |
-
FTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GB
|
134 |
-
AGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIHb4Vnjt4rueIXsDqg8A6iAJrf8xQV
|
135 |
-
brvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBhKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+W
|
136 |
-
jS9Q2wfD6h+rM+D1KzGJ
|
137 |
-
-----END CERTIFICATE-----
|
138 |
-
|
139 |
-
Thawte Personal Freemail CA
|
140 |
-
===========================
|
141 |
-
-----BEGIN CERTIFICATE-----
|
142 |
-
MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
143 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
|
144 |
-
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMb
|
145 |
-
VGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVl
|
146 |
-
bWFpbEB0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNV
|
147 |
-
BAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE
|
148 |
-
ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
149 |
-
aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJ
|
150 |
-
ARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
|
151 |
-
gYEA1GnX1LCUZFtx6UfYDFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6W
|
152 |
-
ZBrCFG5ErHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVquzgk
|
153 |
-
CGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF
|
154 |
-
AAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjPMPuoSpaKH2JCI4wXD/S6ZJwXrEcp
|
155 |
-
352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK
|
156 |
-
/qarigd1iwzdUYRr5PjRzneigQ==
|
157 |
-
-----END CERTIFICATE-----
|
158 |
-
|
159 |
-
Thawte Server CA
|
160 |
-
================
|
161 |
-
-----BEGIN CERTIFICATE-----
|
162 |
-
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
163 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
164 |
-
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
165 |
-
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
166 |
-
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
167 |
-
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
168 |
-
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
169 |
-
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
170 |
-
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
171 |
-
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
172 |
-
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
173 |
-
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
174 |
-
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
175 |
-
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
176 |
-
-----END CERTIFICATE-----
|
177 |
-
|
178 |
-
Thawte Premium Server CA
|
179 |
-
========================
|
180 |
-
-----BEGIN CERTIFICATE-----
|
181 |
-
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
182 |
-
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
183 |
-
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
184 |
-
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
185 |
-
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
186 |
-
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
187 |
-
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
188 |
-
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
189 |
-
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
190 |
-
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
191 |
-
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
192 |
-
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
193 |
-
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
194 |
-
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
195 |
-
UCemDaYj+bvLpgcUQg==
|
196 |
-
-----END CERTIFICATE-----
|
197 |
-
|
198 |
-
Equifax Secure CA
|
199 |
-
=================
|
200 |
-
-----BEGIN CERTIFICATE-----
|
201 |
-
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
202 |
-
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
203 |
-
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
204 |
-
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
205 |
-
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
206 |
-
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
207 |
-
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
208 |
-
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
209 |
-
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
210 |
-
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
211 |
-
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
212 |
-
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
213 |
-
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
214 |
-
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
215 |
-
70+sB3c4
|
216 |
-
-----END CERTIFICATE-----
|
217 |
-
|
218 |
-
ABAecom (sub., Am. Bankers Assn.) Root CA
|
219 |
-
=========================================
|
220 |
-
-----BEGIN CERTIFICATE-----
|
221 |
-
MIIDtTCCAp2gAwIBAgIRANAeQJAAAEZSAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAwgYkxCzAJBgNV
|
222 |
-
BAYTAlVTMQswCQYDVQQIEwJEQzETMBEGA1UEBxMKV2FzaGluZ3RvbjEXMBUGA1UEChMOQUJBLkVD
|
223 |
-
T00sIElOQy4xGTAXBgNVBAMTEEFCQS5FQ09NIFJvb3QgQ0ExJDAiBgkqhkiG9w0BCQEWFWFkbWlu
|
224 |
-
QGRpZ3NpZ3RydXN0LmNvbTAeFw05OTA3MTIxNzMzNTNaFw0wOTA3MDkxNzMzNTNaMIGJMQswCQYD
|
225 |
-
VQQGEwJVUzELMAkGA1UECBMCREMxEzARBgNVBAcTCldhc2hpbmd0b24xFzAVBgNVBAoTDkFCQS5F
|
226 |
-
Q09NLCBJTkMuMRkwFwYDVQQDExBBQkEuRUNPTSBSb290IENBMSQwIgYJKoZIhvcNAQkBFhVhZG1p
|
227 |
-
bkBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx0xHgeVVD
|
228 |
-
BwhMywVCAOINg0Y95JO6tgbTDVm9PsHOQ2cBiiGo77zM0KLMsFWWU4RmBQDaREmA2FQKpSWGlO1j
|
229 |
-
Vv9wbKOhGdJ4vmgqRF4vz8wYXke8OrFGPR7wuSw0X4x8TAgpnUBV6zx9g9618PeKgw6hTLQ6pbNf
|
230 |
-
WiKX7BmbwQVo/ea3qZGULOR4SCQaJRk665WcOQqKz0Ky8BzVX/tr7WhWezkscjiw7pOp03t3POtx
|
231 |
-
A6k4ShZsiSrK2jMTecJVjO2cu/LLWxD4LmE1xilMKtAqY9FlWbT4zfn0AIS2V0KFnTKo+SpU+/94
|
232 |
-
Qby9cSj0u5C8/5Y0BONFnqFGKECBAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQgwDQYJKoZI
|
233 |
-
hvcNAQEFBQADggEBAARvJYbk5pYntNlCwNDJALF/VD6Hsm0kqS8Kfv2kRLD4VAe9G52dyntQJHsR
|
234 |
-
W0mjpr8SdNWJt7cvmGQlFLdh6X9ggGvTZOirvRrWUfrAtF13Gn9kCF55xgVM8XrdTX3O5kh7VNJh
|
235 |
-
koHWG9YA8A6eKHegTYjHInYZw8eeG6Z3ePhfm1bR8PIXrI6dWeYf/le22V7hXZ9F7GFoGUHhsiAm
|
236 |
-
/lowdiT/QHI8eZ98IkirRs3bs4Ysj78FQdPB4xTjQRcm0HyncUwZ6EoPclgxfexgeqMiKL0ZJGA/
|
237 |
-
O4dzwGvky663qyVDslUte6sGDnVdNOVdc22esnVApVnJTzFxiNmIf1Q=
|
238 |
-
-----END CERTIFICATE-----
|
239 |
-
|
240 |
-
Digital Signature Trust Co. Global CA 1
|
241 |
-
=======================================
|
242 |
-
-----BEGIN CERTIFICATE-----
|
243 |
-
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
244 |
-
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
245 |
-
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
246 |
-
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
247 |
-
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
248 |
-
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
249 |
-
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
250 |
-
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
251 |
-
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
252 |
-
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
253 |
-
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
254 |
-
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
255 |
-
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
256 |
-
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
257 |
-
RbyhkwS7hp86W0N6w4pl
|
258 |
-
-----END CERTIFICATE-----
|
259 |
-
|
260 |
-
Digital Signature Trust Co. Global CA 3
|
261 |
-
=======================================
|
262 |
-
-----BEGIN CERTIFICATE-----
|
263 |
-
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
264 |
-
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
265 |
-
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
266 |
-
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
267 |
-
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
268 |
-
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
269 |
-
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
270 |
-
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
271 |
-
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
272 |
-
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
273 |
-
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
274 |
-
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
275 |
-
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
276 |
-
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
277 |
-
mPnHfxsb1gYgAlihw6ID
|
278 |
-
-----END CERTIFICATE-----
|
279 |
-
|
280 |
-
Digital Signature Trust Co. Global CA 2
|
281 |
-
=======================================
|
282 |
-
-----BEGIN CERTIFICATE-----
|
283 |
-
MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQswCQYDVQQGEwJ1
|
284 |
-
czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0
|
285 |
-
YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBS
|
286 |
-
b290Q0EgWDExITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4
|
287 |
-
NTVaFw0wODExMjgxODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UE
|
288 |
-
BxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjER
|
289 |
-
MA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0BCQEW
|
290 |
-
EmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANLGJrbn
|
291 |
-
pT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdfWvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZ
|
292 |
-
PdJEjdd0IG03Ao9pk1uKxBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGA
|
293 |
-
vqPYUrBEzUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F5X5y
|
294 |
-
P4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMvOnNn7pTKBBMFYgZw
|
295 |
-
I7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAojeyP2n714Z5
|
296 |
-
VEkxlTMr89EJFEliYIalsBHiUMIdBlc+LegzZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2
|
297 |
-
vAd5ZWRzfdd5ynvVWlHG4VMElo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX
|
298 |
-
8ngvYzZAOONGDx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q
|
299 |
-
gUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2kYtdo+o56T9II
|
300 |
-
2pPc8JIRetDccpMMc5NihWjQ9A==
|
301 |
-
-----END CERTIFICATE-----
|
302 |
-
|
303 |
-
Digital Signature Trust Co. Global CA 4
|
304 |
-
=======================================
|
305 |
-
-----BEGIN CERTIFICATE-----
|
306 |
-
MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQswCQYDVQQGEwJ1
|
307 |
-
czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0
|
308 |
-
YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBS
|
309 |
-
b290Q0EgWDIxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2
|
310 |
-
MTZaFw0wODExMjcyMjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UE
|
311 |
-
BxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjER
|
312 |
-
MA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0BCQEW
|
313 |
-
EmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANx18IzA
|
314 |
-
dZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbVp9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva
|
315 |
-
3G3WqZlVUmfpKAOS3OWwBZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9
|
316 |
-
kVySVGkl5WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi3sOP
|
317 |
-
17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+QVCvbK4iNC7Va26D
|
318 |
-
unm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAtTYOXeFhKFoR
|
319 |
-
ZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT
|
320 |
-
4EOvkTvRyyzYdFQ6HE3K1GjNI3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV
|
321 |
-
6YyDfFk/xPEL553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q
|
322 |
-
10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbINuBVd8d+6ybVK
|
323 |
-
1GSYsyapMMj9puyrliGtf8J4tg==
|
324 |
-
-----END CERTIFICATE-----
|
325 |
-
|
326 |
-
Verisign Class 1 Public Primary Certification Authority
|
327 |
-
=======================================================
|
328 |
-
-----BEGIN CERTIFICATE-----
|
329 |
-
MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVT
|
330 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
331 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTla
|
332 |
-
MF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3Mg
|
333 |
-
MSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEF
|
334 |
-
AAOBjQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0NH8xlbgyw
|
335 |
-
0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR4k5FVmkfeAKA2txHkSm7
|
336 |
-
NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATANBgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf
|
337 |
-
7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZoEWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnx
|
338 |
-
giJduLHdgSOjeyUVRjB5FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0A
|
339 |
-
NACY89FxlA==
|
340 |
-
-----END CERTIFICATE-----
|
341 |
-
|
342 |
-
Verisign Class 2 Public Primary Certification Authority
|
343 |
-
=======================================================
|
344 |
-
-----BEGIN CERTIFICATE-----
|
345 |
-
MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
346 |
-
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmltYXJ5
|
347 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
348 |
-
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAy
|
349 |
-
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
350 |
-
A4GNADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyhYGt+eSz6
|
351 |
-
Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7FYCTXOvnzAhsPz6zSvz/
|
352 |
-
S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBAIobK/o5wXTX
|
353 |
-
XtgZZKJYSi034DNHD6zt96rbHuSLBlxgJ8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUY
|
354 |
-
YAS/QoD90KioHgE796Ncr6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2
|
355 |
-
lw0Xd8rY
|
356 |
-
-----END CERTIFICATE-----
|
357 |
-
|
358 |
-
Verisign Class 3 Public Primary Certification Authority
|
359 |
-
=======================================================
|
360 |
-
-----BEGIN CERTIFICATE-----
|
361 |
-
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
362 |
-
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
363 |
-
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
364 |
-
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
365 |
-
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
366 |
-
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
367 |
-
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
368 |
-
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
369 |
-
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
370 |
-
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
371 |
-
Tqj/ZA1k
|
372 |
-
-----END CERTIFICATE-----
|
373 |
-
|
374 |
-
Verisign Class 1 Public Primary Certification Authority - G2
|
375 |
-
============================================================
|
376 |
-
-----BEGIN CERTIFICATE-----
|
377 |
-
MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
378 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
379 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
380 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
381 |
-
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
382 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
383 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
384 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
385 |
-
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
|
386 |
-
k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
|
387 |
-
WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
|
388 |
-
MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
|
389 |
-
XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
|
390 |
-
lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
|
391 |
-
-----END CERTIFICATE-----
|
392 |
-
|
393 |
-
Verisign Class 2 Public Primary Certification Authority - G2
|
394 |
-
============================================================
|
395 |
-
-----BEGIN CERTIFICATE-----
|
396 |
-
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
|
397 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
398 |
-
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
399 |
-
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
400 |
-
c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
|
401 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
402 |
-
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
403 |
-
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
404 |
-
c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
|
405 |
-
nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
|
406 |
-
wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
|
407 |
-
ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
|
408 |
-
1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
|
409 |
-
LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
|
410 |
-
-----END CERTIFICATE-----
|
411 |
-
|
412 |
-
Verisign Class 3 Public Primary Certification Authority - G2
|
413 |
-
============================================================
|
414 |
-
-----BEGIN CERTIFICATE-----
|
415 |
-
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
416 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
417 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
418 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
419 |
-
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
420 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
421 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
422 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
423 |
-
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
424 |
-
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
425 |
-
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
426 |
-
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
427 |
-
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
428 |
-
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
429 |
-
-----END CERTIFICATE-----
|
430 |
-
|
431 |
-
Verisign Class 4 Public Primary Certification Authority - G2
|
432 |
-
============================================================
|
433 |
-
-----BEGIN CERTIFICATE-----
|
434 |
-
MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
435 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
|
436 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
437 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
438 |
-
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
439 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
|
440 |
-
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
441 |
-
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
442 |
-
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4
|
443 |
-
xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDH
|
444 |
-
qGKB3FtKqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQAB
|
445 |
-
MA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGIL4LcY/oCRaxF
|
446 |
-
WdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0ycyfYaT5DdPauxYma51N86Xv2S/PB
|
447 |
-
ZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRPT8qAkbYp
|
448 |
-
-----END CERTIFICATE-----
|
449 |
-
|
450 |
-
GlobalSign Root CA
|
451 |
-
==================
|
452 |
-
-----BEGIN CERTIFICATE-----
|
453 |
-
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
454 |
-
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
455 |
-
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
456 |
-
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
457 |
-
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
458 |
-
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
459 |
-
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
460 |
-
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
461 |
-
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
462 |
-
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
463 |
-
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
464 |
-
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
465 |
-
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
466 |
-
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
467 |
-
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
468 |
-
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
469 |
-
-----END CERTIFICATE-----
|
470 |
-
|
471 |
-
GlobalSign Root CA - R2
|
472 |
-
=======================
|
473 |
-
-----BEGIN CERTIFICATE-----
|
474 |
-
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
475 |
-
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
476 |
-
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
477 |
-
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
478 |
-
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
479 |
-
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
480 |
-
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
481 |
-
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
482 |
-
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
483 |
-
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
484 |
-
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
485 |
-
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
486 |
-
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
487 |
-
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
488 |
-
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
489 |
-
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
490 |
-
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
491 |
-
-----END CERTIFICATE-----
|
492 |
-
|
493 |
-
ValiCert Class 1 VA
|
494 |
-
===================
|
495 |
-
-----BEGIN CERTIFICATE-----
|
496 |
-
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
497 |
-
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
498 |
-
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
499 |
-
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
500 |
-
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
501 |
-
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
502 |
-
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
503 |
-
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
504 |
-
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
505 |
-
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
506 |
-
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
507 |
-
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
508 |
-
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
509 |
-
Orf1LXLI
|
510 |
-
-----END CERTIFICATE-----
|
511 |
-
|
512 |
-
ValiCert Class 2 VA
|
513 |
-
===================
|
514 |
-
-----BEGIN CERTIFICATE-----
|
515 |
-
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
516 |
-
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
517 |
-
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
518 |
-
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
519 |
-
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
520 |
-
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
521 |
-
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
522 |
-
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
523 |
-
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
524 |
-
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
525 |
-
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
526 |
-
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
527 |
-
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
528 |
-
W9ViH0Pd
|
529 |
-
-----END CERTIFICATE-----
|
530 |
-
|
531 |
-
RSA Root Certificate 1
|
532 |
-
======================
|
533 |
-
-----BEGIN CERTIFICATE-----
|
534 |
-
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
535 |
-
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
536 |
-
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
537 |
-
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
538 |
-
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
539 |
-
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
540 |
-
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
541 |
-
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
542 |
-
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
543 |
-
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
544 |
-
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
545 |
-
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
546 |
-
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
547 |
-
on+jjBXu
|
548 |
-
-----END CERTIFICATE-----
|
549 |
-
|
550 |
-
Verisign Class 1 Public Primary Certification Authority - G3
|
551 |
-
============================================================
|
552 |
-
-----BEGIN CERTIFICATE-----
|
553 |
-
MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
554 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
555 |
-
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
556 |
-
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
557 |
-
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
558 |
-
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
559 |
-
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
560 |
-
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
|
561 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
562 |
-
ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
|
563 |
-
bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
|
564 |
-
rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
|
565 |
-
Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
|
566 |
-
FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
567 |
-
q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
|
568 |
-
y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
|
569 |
-
ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
|
570 |
-
a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
|
571 |
-
D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
|
572 |
-
-----END CERTIFICATE-----
|
573 |
-
|
574 |
-
Verisign Class 2 Public Primary Certification Authority - G3
|
575 |
-
============================================================
|
576 |
-
-----BEGIN CERTIFICATE-----
|
577 |
-
MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
|
578 |
-
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
|
579 |
-
azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
|
580 |
-
b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
|
581 |
-
aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
|
582 |
-
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
583 |
-
c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
584 |
-
aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
|
585 |
-
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
586 |
-
AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
|
587 |
-
tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
|
588 |
-
C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
|
589 |
-
0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
|
590 |
-
Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
|
591 |
-
JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
|
592 |
-
0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
|
593 |
-
sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
|
594 |
-
JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
|
595 |
-
GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
|
596 |
-
-----END CERTIFICATE-----
|
597 |
-
|
598 |
-
Verisign Class 3 Public Primary Certification Authority - G3
|
599 |
-
============================================================
|
600 |
-
-----BEGIN CERTIFICATE-----
|
601 |
-
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
602 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
603 |
-
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
604 |
-
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
605 |
-
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
606 |
-
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
607 |
-
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
608 |
-
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
609 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
610 |
-
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
611 |
-
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
612 |
-
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
613 |
-
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
614 |
-
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
615 |
-
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
616 |
-
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
617 |
-
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
618 |
-
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
619 |
-
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
620 |
-
-----END CERTIFICATE-----
|
621 |
-
|
622 |
-
Verisign Class 4 Public Primary Certification Authority - G3
|
623 |
-
============================================================
|
624 |
-
-----BEGIN CERTIFICATE-----
|
625 |
-
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
626 |
-
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
627 |
-
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
628 |
-
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
629 |
-
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
630 |
-
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
631 |
-
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
632 |
-
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
633 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
634 |
-
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
635 |
-
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
636 |
-
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
637 |
-
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
638 |
-
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
639 |
-
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
640 |
-
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
641 |
-
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
642 |
-
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
643 |
-
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
644 |
-
-----END CERTIFICATE-----
|
645 |
-
|
646 |
-
Entrust.net Secure Server CA
|
647 |
-
============================
|
648 |
-
-----BEGIN CERTIFICATE-----
|
649 |
-
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
650 |
-
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
651 |
-
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
652 |
-
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
653 |
-
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
654 |
-
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
655 |
-
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
656 |
-
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
657 |
-
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
658 |
-
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
659 |
-
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
660 |
-
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
661 |
-
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
662 |
-
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
663 |
-
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
664 |
-
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
665 |
-
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
666 |
-
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
667 |
-
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
668 |
-
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
669 |
-
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
670 |
-
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
671 |
-
-----END CERTIFICATE-----
|
672 |
-
|
673 |
-
Entrust.net Secure Personal CA
|
674 |
-
==============================
|
675 |
-
-----BEGIN CERTIFICATE-----
|
676 |
-
MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMCVVMxFDASBgNV
|
677 |
-
BAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5uZXQvQ2xpZW50X0NBX0luZm8v
|
678 |
-
Q1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlhYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1
|
679 |
-
c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9u
|
680 |
-
IEF1dGhvcml0eTAeFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJV
|
681 |
-
UzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRf
|
682 |
-
Q0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMpIDE5
|
683 |
-
OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRp
|
684 |
-
ZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdv
|
685 |
-
kHvkGf9FozTC28GoT/Bo6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGp
|
686 |
-
OZ5V+Pux5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zmAqTm
|
687 |
-
T173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSCARkwggEVMIHkoIHh
|
688 |
-
oIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3
|
689 |
-
dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBs
|
690 |
-
aWFiLjElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50
|
691 |
-
cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg
|
692 |
-
KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNVHRAEJDAigA8x
|
693 |
-
OTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU
|
694 |
-
xPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYEFMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1Ud
|
695 |
-
EwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K
|
696 |
-
8ddmAwWePvrqHEa7pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6h
|
697 |
-
URzzwy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/aEkP/TOYG
|
698 |
-
JqibGapEPHayXOw=
|
699 |
-
-----END CERTIFICATE-----
|
700 |
-
|
701 |
-
Entrust.net Premium 2048 Secure Server CA
|
702 |
-
=========================================
|
703 |
-
-----BEGIN CERTIFICATE-----
|
704 |
-
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
705 |
-
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
706 |
-
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
707 |
-
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
708 |
-
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
709 |
-
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
710 |
-
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
711 |
-
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
712 |
-
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
713 |
-
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
714 |
-
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
715 |
-
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
716 |
-
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
717 |
-
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
718 |
-
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
719 |
-
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
720 |
-
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
721 |
-
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
722 |
-
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
723 |
-
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
724 |
-
-----END CERTIFICATE-----
|
725 |
-
|
726 |
-
Baltimore CyberTrust Root
|
727 |
-
=========================
|
728 |
-
-----BEGIN CERTIFICATE-----
|
729 |
-
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
730 |
-
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
731 |
-
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
732 |
-
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
733 |
-
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
734 |
-
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
735 |
-
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
736 |
-
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
737 |
-
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
738 |
-
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
739 |
-
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
740 |
-
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
741 |
-
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
742 |
-
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
743 |
-
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
744 |
-
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
745 |
-
-----END CERTIFICATE-----
|
746 |
-
|
747 |
-
Equifax Secure Global eBusiness CA
|
748 |
-
==================================
|
749 |
-
-----BEGIN CERTIFICATE-----
|
750 |
-
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
751 |
-
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
752 |
-
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
753 |
-
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
754 |
-
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
755 |
-
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
756 |
-
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
757 |
-
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
758 |
-
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
759 |
-
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
760 |
-
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
761 |
-
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
762 |
-
-----END CERTIFICATE-----
|
763 |
-
|
764 |
-
Equifax Secure eBusiness CA 1
|
765 |
-
=============================
|
766 |
-
-----BEGIN CERTIFICATE-----
|
767 |
-
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
768 |
-
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
769 |
-
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
770 |
-
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
771 |
-
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
772 |
-
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
773 |
-
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
774 |
-
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
775 |
-
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
776 |
-
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
777 |
-
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
778 |
-
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
779 |
-
-----END CERTIFICATE-----
|
780 |
-
|
781 |
-
Equifax Secure eBusiness CA 2
|
782 |
-
=============================
|
783 |
-
-----BEGIN CERTIFICATE-----
|
784 |
-
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
785 |
-
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
786 |
-
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
787 |
-
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
788 |
-
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
789 |
-
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
790 |
-
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
791 |
-
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
792 |
-
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
793 |
-
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
794 |
-
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
795 |
-
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
796 |
-
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
797 |
-
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
798 |
-
V+GRMOrN
|
799 |
-
-----END CERTIFICATE-----
|
800 |
-
|
801 |
-
Visa International Global Root 2
|
802 |
-
================================
|
803 |
-
-----BEGIN CERTIFICATE-----
|
804 |
-
MIIDgDCCAmigAwIBAgICAx4wDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCVVMxDTALBgNVBAoT
|
805 |
-
BFZJU0ExLzAtBgNVBAsTJlZpc2EgSW50ZXJuYXRpb25hbCBTZXJ2aWNlIEFzc29jaWF0aW9uMRIw
|
806 |
-
EAYDVQQDEwlHUCBSb290IDIwHhcNMDAwODE2MjI1MTAwWhcNMjAwODE1MjM1OTAwWjBhMQswCQYD
|
807 |
-
VQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZp
|
808 |
-
Y2UgQXNzb2NpYXRpb24xEjAQBgNVBAMTCUdQIFJvb3QgMjCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
809 |
-
ADCCAQoCggEBAKkBcLWqxEDwq2omYXkZAPy/mzdZDK9vZBv42pWUJGkzEXDK41Z0ohdXZFwgBuHW
|
810 |
-
73G3O/erwWnQSaSxBNf0V2KJXLB1LRckaeNCYOTudNargFbYiCjh+20i/SN8RnNPflRzHqgsVVh1
|
811 |
-
t0zzWkWlAhr62p3DRcMiXvOL8WAp0sdftAw6UYPvMPjU58fy+pmjIlC++QU3o63tmsPm7Igbthkn
|
812 |
-
GziLgE3sucfFicv8GjLtI/C1AVj59o/ghalMCXI5Etuz9c9OYmTaxhkVOmMd6RdVoUwiPDQyRvhl
|
813 |
-
V7or7zaMavrZ2UT0qt2E1w0cslSsMoW0ZA3eQbuxNMYBhjJk1Z8CAwEAAaNCMEAwHQYDVR0OBBYE
|
814 |
-
FJ59SzS/ca3CBfYDdYDOqU8axCRMMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0G
|
815 |
-
CSqGSIb3DQEBBQUAA4IBAQAhpXYUVfmtJ3CPPPTVbMjMCqujmAuKBiPFyWHbmQdpNSYx/scuhMKZ
|
816 |
-
YdQN6X0uEyt8joW2hcdLzzW2LEc9zikv2G+fiRxkk78IvXbQkIqUs38oW26sTTMs7WXcFsziza6k
|
817 |
-
PWKSBpUmv9+55CCmc2rBvveURNZNbyoLaxhNdBA2aGpawWqn3TYpjLgwi08hPwAuVDAHOrqK5MOe
|
818 |
-
yti12HvOdUVmB/RtLdh6yumJivIj2C/LbgA2T/vwLwHMD8AiZfSr4k5hLQOCfZEWtTDVFN5ex5D8
|
819 |
-
ofyrEK9ca3CnB+8phuiyJccg/ybdd+95RBTEvd07xQObdyPsoOy7Wjm1zK0G
|
820 |
-
-----END CERTIFICATE-----
|
821 |
-
|
822 |
-
beTRUSTed Root CA
|
823 |
-
=================
|
824 |
-
-----BEGIN CERTIFICATE-----
|
825 |
-
MIIFLDCCBBSgAwIBAgIEOU99hzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJXVzESMBAGA1UE
|
826 |
-
ChMJYmVUUlVTVGVkMRswGQYDVQQDExJiZVRSVVNUZWQgUm9vdCBDQXMxGjAYBgNVBAMTEWJlVFJV
|
827 |
-
U1RlZCBSb290IENBMB4XDTAwMDYyMDE0MjEwNFoXDTEwMDYyMDEzMjEwNFowWjELMAkGA1UEBhMC
|
828 |
-
V1cxEjAQBgNVBAoTCWJlVFJVU1RlZDEbMBkGA1UEAxMSYmVUUlVTVGVkIFJvb3QgQ0FzMRowGAYD
|
829 |
-
VQQDExFiZVRSVVNUZWQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS0
|
830 |
-
c3oTCjhVAb6JVuGUntS+WutKNHUbYSnE4a0IYCF4SP+00PpeQY1hRIfo7clY+vyTmt9P6j41ffgz
|
831 |
-
eubx181vSUs9Ty1uDoM6GHh3o8/n9E1z2Jo7Gh2+lVPPIJfCzz4kUmwMjmVZxXH/YgmPqsWPzGCg
|
832 |
-
c0rXOD8Vcr+il7dw6K/ifhYGTPWqZCZyByWtNfwYsSbX2P8ZDoMbjNx4RWc0PfSvHI3kbWvtILNn
|
833 |
-
mrRhyxdviTX/507AMhLn7uzf/5cwdO2NR47rtMNE5qdMf1ZD6Li8tr76g5fmu/vEtpO+GRg+jIG5
|
834 |
-
c4gW9JZDnGdzF5DYCW5jrEq2I8QBoa2k5MUCAwEAAaOCAfgwggH0MA8GA1UdEwEB/wQFMAMBAf8w
|
835 |
-
ggFZBgNVHSAEggFQMIIBTDCCAUgGCisGAQQBsT4BAAAwggE4MIIBAQYIKwYBBQUHAgIwgfQagfFS
|
836 |
-
ZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFu
|
837 |
-
Y2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv
|
838 |
-
ZiB1c2UsIGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudCwgd2hpY2ggY2FuIGJl
|
839 |
-
IGZvdW5kIGF0IGJlVFJVU1RlZCdzIHdlYiBzaXRlLCBodHRwczovL3d3dy5iZVRSVVNUZWQuY29t
|
840 |
-
L3ZhdWx0L3Rlcm1zMDEGCCsGAQUFBwIBFiVodHRwczovL3d3dy5iZVRSVVNUZWQuY29tL3ZhdWx0
|
841 |
-
L3Rlcm1zMDQGA1UdHwQtMCswKaAnoCWkIzAhMRIwEAYDVQQKEwliZVRSVVNUZWQxCzAJBgNVBAYT
|
842 |
-
AldXMB0GA1UdDgQWBBQquZtpLjub2M3eKjEENGvKBxirZzAfBgNVHSMEGDAWgBQquZtpLjub2M3e
|
843 |
-
KjEENGvKBxirZzAOBgNVHQ8BAf8EBAMCAf4wDQYJKoZIhvcNAQEFBQADggEBAHlh26Nebhax6nZR
|
844 |
-
+csVm8tpvuaBa58oH2U+3RGFktToQb9+M70j5/Egv6S0phkBxoyNNXxlpE8JpNbYIxUFE6dDea/b
|
845 |
-
ow6be3ga8wSGWsb2jCBHOElQBp1yZzrwmAOtlmdE/D8QDYZN5AA7KXvOOzuZhmElQITcE2K3+spZ
|
846 |
-
1gMe1lMBzW1MaFVA4e5rxyoAAEiCswoBw2AqDPeCNe5IhpbkdNQ96gFxugR1QKepfzk5mlWXKWWu
|
847 |
-
GVUlBXJH0+gY3Ljpr0NzARJ0o+FcXxVdJPP55PS2Z2cS52QiivalQaYctmBjRYoQtLpGEK5BV2Vs
|
848 |
-
PyMQPyEQWbfkQN0mDCP2qq4=
|
849 |
-
-----END CERTIFICATE-----
|
850 |
-
|
851 |
-
AddTrust Low-Value Services Root
|
852 |
-
================================
|
853 |
-
-----BEGIN CERTIFICATE-----
|
854 |
-
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
855 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
856 |
-
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
857 |
-
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
858 |
-
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
859 |
-
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
860 |
-
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
861 |
-
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
862 |
-
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
863 |
-
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
864 |
-
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
865 |
-
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
866 |
-
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
867 |
-
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
868 |
-
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
869 |
-
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
870 |
-
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
871 |
-
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
872 |
-
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
873 |
-
-----END CERTIFICATE-----
|
874 |
-
|
875 |
-
AddTrust External Root
|
876 |
-
======================
|
877 |
-
-----BEGIN CERTIFICATE-----
|
878 |
-
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
879 |
-
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
880 |
-
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
881 |
-
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
882 |
-
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
883 |
-
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
884 |
-
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
885 |
-
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
886 |
-
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
887 |
-
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
888 |
-
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
889 |
-
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
890 |
-
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
891 |
-
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
892 |
-
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
893 |
-
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
894 |
-
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
895 |
-
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
896 |
-
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
897 |
-
-----END CERTIFICATE-----
|
898 |
-
|
899 |
-
AddTrust Public Services Root
|
900 |
-
=============================
|
901 |
-
-----BEGIN CERTIFICATE-----
|
902 |
-
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
903 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
904 |
-
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
905 |
-
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
906 |
-
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
907 |
-
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
908 |
-
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
909 |
-
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
910 |
-
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
911 |
-
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
912 |
-
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
913 |
-
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
914 |
-
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
915 |
-
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
916 |
-
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
917 |
-
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
918 |
-
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
919 |
-
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
920 |
-
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
921 |
-
-----END CERTIFICATE-----
|
922 |
-
|
923 |
-
AddTrust Qualified Certificates Root
|
924 |
-
====================================
|
925 |
-
-----BEGIN CERTIFICATE-----
|
926 |
-
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
927 |
-
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
928 |
-
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
929 |
-
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
930 |
-
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
931 |
-
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
932 |
-
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
933 |
-
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
934 |
-
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
935 |
-
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
936 |
-
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
937 |
-
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
938 |
-
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
939 |
-
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
940 |
-
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
941 |
-
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
942 |
-
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
943 |
-
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
944 |
-
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
945 |
-
-----END CERTIFICATE-----
|
946 |
-
|
947 |
-
Verisign Time Stamping Authority CA
|
948 |
-
===================================
|
949 |
-
-----BEGIN CERTIFICATE-----
|
950 |
-
MIIDzTCCAzagAwIBAgIQU2GyYK7bcY6nlLMTM/QHCTANBgkqhkiG9w0BAQUFADCBwTELMAkGA1UE
|
951 |
-
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAzIFB1YmxpYyBQ
|
952 |
-
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZl
|
953 |
-
cmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWdu
|
954 |
-
IFRydXN0IE5ldHdvcmswHhcNMDAwOTI2MDAwMDAwWhcNMTAwOTI1MjM1OTU5WjCBpTEXMBUGA1UE
|
955 |
-
ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNV
|
956 |
-
BAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAwMSww
|
957 |
-
KgYDVQQDEyNWZXJpU2lnbiBUaW1lIFN0YW1waW5nIEF1dGhvcml0eSBDQTCBnzANBgkqhkiG9w0B
|
958 |
-
AQEFAAOBjQAwgYkCgYEA0hmdZ8IAIVlizrQJIkRpivglWtvtDbc2fk7gu5Q+kCWHwmFHKdm9VLhj
|
959 |
-
zCx9abQzNvQ3B5rB3UBU/OB4naCTuQk9I1F/RMIUdNsKvsvJMDRAmD7Q1yUQgZS9B0+c1lQn3y6o
|
960 |
-
v8uQjI11S7zi6ESHzeZBCiVu6PQkAsVSD27smHUCAwEAAaOB3zCB3DAPBgNVHRMECDAGAQH/AgEA
|
961 |
-
MEUGA1UdIAQ+MDwwOgYMYIZIAYb4RQEHFwEDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl
|
962 |
-
cmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL2NybC52ZXJpc2lnbi5jb20v
|
963 |
-
cGNhMy5jcmwwCwYDVR0PBAQDAgEGMEIGCCsGAQUFBwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRw
|
964 |
-
Oi8vb2NzcC52ZXJpc2lnbi5jb20vb2NzcC9zdGF0dXMwDQYJKoZIhvcNAQEFBQADgYEAgnBold+2
|
965 |
-
DcIBcBlK0lRWHqzyRUyHuPU163hLBanInTsZIS5wNEqi9YngFXVF5yg3ADQnKeg3S/LvRJdrF1Ea
|
966 |
-
w1adPBqK9kpGRjeM+sv1ZFo4aC4cw+9wzrhGBha/937ntag+RaypJXUie28/sJyU58dzq6wf7iWb
|
967 |
-
wBbtt8pb8BQ=
|
968 |
-
-----END CERTIFICATE-----
|
969 |
-
|
970 |
-
Thawte Time Stamping CA
|
971 |
-
=======================
|
972 |
-
-----BEGIN CERTIFICATE-----
|
973 |
-
MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
974 |
-
DFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG
|
975 |
-
A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg
|
976 |
-
Q0EwHhcNOTcwMTAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNV
|
977 |
-
BAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEd
|
978 |
-
MBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBp
|
979 |
-
bmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+o
|
980 |
-
J9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9
|
981 |
-
nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR
|
982 |
-
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCo
|
983 |
-
uqoEiYbC9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQpgCe
|
984 |
-
d/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZCayJSdM=
|
985 |
-
-----END CERTIFICATE-----
|
986 |
-
|
987 |
-
Entrust.net Global Secure Server CA
|
988 |
-
===================================
|
989 |
-
-----BEGIN CERTIFICATE-----
|
990 |
-
MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChMLRW50cnVzdC5u
|
991 |
-
ZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGluY29ycC4gYnkgcmVmLiAobGlt
|
992 |
-
aXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UE
|
993 |
-
AxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0w
|
994 |
-
MDAyMDQxNzIwMDBaFw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0G
|
995 |
-
A1UECxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlh
|
996 |
-
Yi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRy
|
997 |
-
dXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3
|
998 |
-
DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55l
|
999 |
-
xyKbc+bT3QgON1WqJUaBbL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439P
|
1000 |
-
mrkDQYC2dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4QgEB
|
1001 |
-
BAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoTC0VudHJ1c3QubmV0
|
1002 |
-
MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0
|
1003 |
-
cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMT
|
1004 |
-
MUVudHJ1c3QubmV0IFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNV
|
1005 |
-
BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD
|
1006 |
-
VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1UdDgQWBBTLbMBr
|
1007 |
-
47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w
|
1008 |
-
AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsiad0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbv
|
1009 |
-
H9X07t9WLebKahlzqlO+krNQAraFJnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3
|
1010 |
-
a9kC9n8O6mUE8c1UyrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw==
|
1011 |
-
-----END CERTIFICATE-----
|
1012 |
-
|
1013 |
-
Entrust.net Global Secure Personal CA
|
1014 |
-
=====================================
|
1015 |
-
-----BEGIN CERTIFICATE-----
|
1016 |
-
MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
1017 |
-
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
1018 |
-
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
1019 |
-
BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcx
|
1020 |
-
NjE2NDBaFw0yMDAyMDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
1021 |
-
d3d3LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
1022 |
-
MCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
1023 |
-
ZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1024 |
-
iQKBgQCTdLS25MVL1qFof2LV7PdRV7NySpj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQl
|
1025 |
-
hK8pK5/jgOLZy93GRUk0iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKkl
|
1026 |
-
Wb1m9fkn5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHdBgNV
|
1027 |
-
HR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQLFDd3
|
1028 |
-
d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUw
|
1029 |
-
IwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5l
|
1030 |
-
dCBDbGllbnQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
1031 |
-
IoAPMjAwMDAyMDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
1032 |
-
MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdFfP4tzrrTfTAM
|
1033 |
-
BgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQF
|
1034 |
-
AAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMShAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xK
|
1035 |
-
p9U1PL6oXOpLu5OOgGarDyn9TS2/GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQ
|
1036 |
-
Gof4T4HHdguEOnKdzmVml64mXg==
|
1037 |
-
-----END CERTIFICATE-----
|
1038 |
-
|
1039 |
-
Entrust Root Certification Authority
|
1040 |
-
====================================
|
1041 |
-
-----BEGIN CERTIFICATE-----
|
1042 |
-
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
1043 |
-
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
1044 |
-
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
1045 |
-
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
1046 |
-
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
1047 |
-
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
1048 |
-
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
1049 |
-
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
1050 |
-
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
1051 |
-
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
1052 |
-
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
1053 |
-
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
1054 |
-
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
1055 |
-
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
1056 |
-
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
1057 |
-
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
1058 |
-
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
1059 |
-
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
1060 |
-
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
1061 |
-
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
1062 |
-
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
1063 |
-
-----END CERTIFICATE-----
|
1064 |
-
|
1065 |
-
AOL Time Warner Root Certification Authority 1
|
1066 |
-
==============================================
|
1067 |
-
-----BEGIN CERTIFICATE-----
|
1068 |
-
MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMxHTAbBgNVBAoT
|
1069 |
-
FEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNhIE9ubGluZSBJbmMuMTcwNQYD
|
1070 |
-
VQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAy
|
1071 |
-
MDUyOTA2MDAwMFoXDTM3MTEyMDE1MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wg
|
1072 |
-
VGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMu
|
1073 |
-
QU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZI
|
1074 |
-
hvcNAQEBBQADggEPADCCAQoCggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U0pPlLYnKhHw/EEMbjIt8
|
1075 |
-
hFj4JHxIzyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItITuLCxFlpMGK2MKKMCxGZYTVtfu/FsRkG
|
1076 |
-
IBKOQuHfD5YQUqjPnF+VFNivO3ULMSAfRC+iYkGzuxgh28pxPIzstrkNn+9R7017EvILDOGsQI93
|
1077 |
-
f7DKeHEMXRZxcKLXwjqFzQ6axOAAsNUl6twr5JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQI
|
1078 |
-
fHNlIAqhBC4aMqiaILGcLCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEAAaNj
|
1079 |
-
MGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jYPXy+XxIwHwYDVR0j
|
1080 |
-
BBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
|
1081 |
-
A4IBAQCKIBilvrMvtKaEAEAwKfq0FHNMeUWn9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u
|
1082 |
-
0FIy2VkyvNp5ctZ7CegCgTXTCt8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77Bf
|
1083 |
-
WgDrvq2g+EQFZ7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oTLW4jYYehY0KswsuX
|
1084 |
-
n2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCzvhGbRWeDhhmH05i9CBoWH1iCC+GWaQVL
|
1085 |
-
juyDUTEH1dSf/1l7qG6Fz9NLqUmwX7A5KGgOc90lmt4S
|
1086 |
-
-----END CERTIFICATE-----
|
1087 |
-
|
1088 |
-
AOL Time Warner Root Certification Authority 2
|
1089 |
-
==============================================
|
1090 |
-
-----BEGIN CERTIFICATE-----
|
1091 |
-
MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMxHTAbBgNVBAoT
|
1092 |
-
FEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNhIE9ubGluZSBJbmMuMTcwNQYD
|
1093 |
-
VQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAy
|
1094 |
-
MDUyOTA2MDAwMFoXDTM3MDkyODIzNDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wg
|
1095 |
-
VGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMu
|
1096 |
-
QU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZI
|
1097 |
-
hvcNAQEBBQADggIPADCCAgoCggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ7ouZzU9AhqS2TcnZsdw8
|
1098 |
-
TQ2FTBVsRotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilbm2BPJoPRYxJWSXakFsKlnUWsi4SVqBax
|
1099 |
-
7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOYxFSMFkpBd4aVdQxHAWZg/BXxD+r1FHjHDtdugRxev17n
|
1100 |
-
OirYlxcwfACtCJ0zr7iZYYCLqJV+FNwSbKTQ2O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2w
|
1101 |
-
TPDaRrbqJS5Gr42whTg0ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fxI2rS
|
1102 |
-
AG2X+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETzkxmlJ85per5n0/xQ
|
1103 |
-
pCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFhEVsVS6kkUfykXPcXnbDS+gfpj1bk
|
1104 |
-
GoxoigTTfFrjnqKhynFbotSg5ymFXQNoKk/SBtc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuW
|
1105 |
-
CpTehTacyH+BCQJJKg71ZDIMgtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1Ex
|
1106 |
-
MVCgyhwn2RAurda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
1107 |
-
FE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaAFE9pbQN+nZ8HGEO8txBO1b+pxCAoMA4G
|
1108 |
-
A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAO/Ouyuguh4X7ZVnnrREUpVe8WJ8kEle7
|
1109 |
-
+z802u6teio0cnAxa8cZmIDJgt43d15Ui47y6mdPyXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRFASbI
|
1110 |
-
5Rq8NEQh3q0l/HYWdyGQgJhXnU7q7C+qPBR7V8F+GBRn7iTGvboVsNIYvbdVgaxTwOjdaRITQrcC
|
1111 |
-
tQVBynlQboIOcXKTRuidDV29rs4prWPVVRaAMCf/drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ
|
1112 |
-
68W/ClTluUI8JPu3B5wwn3la5uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyBM5kYJRF3
|
1113 |
-
p+v9WAksmWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQmy8YJPamTQr5O8t1wswv
|
1114 |
-
ziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xOAU++CrYD062KRffaJ00psUjf5BHklka9
|
1115 |
-
bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT9Y41xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4o
|
1116 |
-
GKQWDzH9OmwjkyB24f0HhdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2
|
1117 |
-
uBOLZ8/5fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg=
|
1118 |
-
-----END CERTIFICATE-----
|
1119 |
-
|
1120 |
-
beTRUSTed Root CA-Baltimore Implementation
|
1121 |
-
==========================================
|
1122 |
-
-----BEGIN CERTIFICATE-----
|
1123 |
-
MIIFajCCBFKgAwIBAgIEPLU9RjANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwliZVRSVVNUZWQx
|
1124 |
-
GzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0Et
|
1125 |
-
QmFsdGltb3JlIEltcGxlbWVudGF0aW9uMB4XDTAyMDQxMTA3Mzg1MVoXDTIyMDQxMTA3Mzg1MVow
|
1126 |
-
ZjESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNV
|
1127 |
-
BAMTKmJlVFJVU1RlZCBSb290IENBLUJhbHRpbW9yZSBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZI
|
1128 |
-
hvcNAQEBBQADggEPADCCAQoCggEBALx+xDmcjOPWHIb/ymKt4H8wRXqOGrO4x/nRNv8i805qX4QQ
|
1129 |
-
+2aBw5R5MdKR4XeOGCrDFN5R9U+jK7wYFuK13XneIviCfsuBH/0nLI/6l2Qijvj/YaOcGx6Sj8Co
|
1130 |
-
Cd8JEey3fTGaGuqDIQY8n7pc/5TqarjDa1U0Tz0yH92BFODEPM2dMPgwqZfT7syj0B9fHBOB1Bir
|
1131 |
-
lNFjw55/NZKeX0Tq7PQiXLfoPX2k+YmpkbIq2eszh+6l/ePazIjmiSZuxyuC0F6dWdsU7JGDBcNe
|
1132 |
-
DsYq0ATdcT0gTlgn/FP7eHgZFLL8kFKJOGJgB7Sg7KxrUNb9uShr71ItOrL/8QFArDcCAwEAAaOC
|
1133 |
-
Ah4wggIaMA8GA1UdEwEB/wQFMAMBAf8wggG1BgNVHSAEggGsMIIBqDCCAaQGDysGAQQBsT4AAAEJ
|
1134 |
-
KIORMTCCAY8wggFIBggrBgEFBQcCAjCCAToaggE2UmVsaWFuY2Ugb24gb3IgdXNlIG9mIHRoaXMg
|
1135 |
-
Q2VydGlmaWNhdGUgY3JlYXRlcyBhbiBhY2tub3dsZWRnbWVudCBhbmQgYWNjZXB0YW5jZSBvZiB0
|
1136 |
-
aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwg
|
1137 |
-
dGhlIENlcnRpZmljYXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IGFuZCB0aGUgUmVseWluZyBQYXJ0
|
1138 |
-
eSBBZ3JlZW1lbnQsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCB0aGUgYmVUUlVTVGVkIHdlYiBzaXRl
|
1139 |
-
LCBodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNfc2VydmljZXMvaW5kZXguaHRtbDBB
|
1140 |
-
BggrBgEFBQcCARY1aHR0cDovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2lu
|
1141 |
-
ZGV4Lmh0bWwwHQYDVR0OBBYEFEU9w6nR3D8kVpgccxiIav+DR+22MB8GA1UdIwQYMBaAFEU9w6nR
|
1142 |
-
3D8kVpgccxiIav+DR+22MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEASZK8o+6s
|
1143 |
-
vfoNyYt5hhwjdrCAWXf82n+0S9/DZEtqTg6t8n1ZdwWtColzsPq8y9yNAIiPpqCy6qxSJ7+hSHyX
|
1144 |
-
EHu67RMdmgduyzFiEuhjA6p9beP4G3YheBufS0OM00mG9htc9i5gFdPp43t1P9ACg9AYgkHNZTfq
|
1145 |
-
jjJ+vWuZXTARyNtIVBw74acT02pIk/c9jH8F6M7ziCpjBLjqflh8AXtb4cV97yHgjQ5dUX2xZ/2j
|
1146 |
-
vTg2xvI4hocalmhgRvsoFEdV4aeADGvi6t9NfJBIoDa9CReJf8Py05yc493EG931t3GzUwWJBtDL
|
1147 |
-
SoDByFOQtTwxiBdQn8nEDovYqAJjDQ==
|
1148 |
-
-----END CERTIFICATE-----
|
1149 |
-
|
1150 |
-
beTRUSTed Root CA - Entrust Implementation
|
1151 |
-
==========================================
|
1152 |
-
-----BEGIN CERTIFICATE-----
|
1153 |
-
MIIGUTCCBTmgAwIBAgIEPLVPQDANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwliZVRSVVNUZWQx
|
1154 |
-
GzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0Eg
|
1155 |
-
LSBFbnRydXN0IEltcGxlbWVudGF0aW9uMB4XDTAyMDQxMTA4MjQyN1oXDTIyMDQxMTA4NTQyN1ow
|
1156 |
-
ZjESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNV
|
1157 |
-
BAMTKmJlVFJVU1RlZCBSb290IENBIC0gRW50cnVzdCBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZI
|
1158 |
-
hvcNAQEBBQADggEPADCCAQoCggEBALr0RAOqEmq1Q+xVkrYwfTVXDNvzDSduTPdQqJtOK2/b9a0c
|
1159 |
-
S12zqcH+e0TrW6MFDR/FNCswACnxeECypP869AGIF37m1CbTukzqMvtDd5eHI8XbQ6P1KqNRXuE7
|
1160 |
-
0mVpflUVm3rnafdE4Fe1FehmYA8NA/uCjqPoEXtsvsdjDheT389Lrm5zdeDzqrmkwAkbhepxKYhB
|
1161 |
-
MvnwKg5sCfJ0a2ZsUhMfGLzUPvfYbiCeyv78IZTuEyhL11xeDGbu6bsPwTSxfwh28z0mcMmLJR1i
|
1162 |
-
JAzqHHVOwBLkuhMdMCktVjMFu5dZfsZJT4nXLySotohAtWSSU1Yk5KKghbNekLQSM80CAwEAAaOC
|
1163 |
-
AwUwggMBMIIBtwYDVR0gBIIBrjCCAaowggGmBg8rBgEEAbE+AAACCSiDkTEwggGRMIIBSQYIKwYB
|
1164 |
-
BQUHAgIwggE7GoIBN1JlbGlhbmNlIG9uIG9yIHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNyZWF0
|
1165 |
-
ZXMgYW4gYWNrbm93bGVkZ21lbnQgYW5kIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
1166 |
-
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIHRoZSBDZXJ0aWZpY2F0aW9u
|
1167 |
-
IFByYWN0aWNlIFN0YXRlbWVudCBhbmQgdGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50LCB3aGlj
|
1168 |
-
aCBjYW4gYmUgZm91bmQgYXQgdGhlIGJlVFJVU1RlZCB3ZWIgc2l0ZSwgaHR0cHM6Ly93d3cuYmV0
|
1169 |
-
cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1sMEIGCCsGAQUFBwIBFjZodHRw
|
1170 |
-
czovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWwwEQYJYIZI
|
1171 |
-
AYb4QgEBBAQDAgAHMIGJBgNVHR8EgYEwfzB9oHugeaR3MHUxEjAQBgNVBAoTCWJlVFJVU1RlZDEb
|
1172 |
-
MBkGA1UECxMSYmVUUlVTVGVkIFJvb3QgQ0FzMTMwMQYDVQQDEypiZVRSVVNUZWQgUm9vdCBDQSAt
|
1173 |
-
IEVudHJ1c3QgSW1wbGVtZW50YXRpb24xDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMjA0
|
1174 |
-
MTEwODI0MjdagQ8yMDIyMDQxMTA4NTQyN1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFH1w5a44
|
1175 |
-
iwY/qhwaj/nPJDCqhIQWMB0GA1UdDgQWBBR9cOWuOIsGP6ocGo/5zyQwqoSEFjAMBgNVHRMEBTAD
|
1176 |
-
AQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEAKrgX
|
1177 |
-
zh8QlOu4mre5X+za95IkrNySO8cgjfKZ5V04ocI07cUTWVwFtStPYZuR+0H8/NU8TZh2BvWBfevd
|
1178 |
-
kObRVlTa4y0MnxEylCIBevZsLHRnBMylj44ss0O1lKLQfelifwa+JwGDnjr9iu6YQ0pr17WXOzq/
|
1179 |
-
T220Y/ozADQuLW2WyXvKmWO6vvT2MKAtmJbpVkQFqUSjYRDrgqFnXbxdJ3Wqiig2KjiS2d2kXgCl
|
1180 |
-
zMx8KSreKJCrt+G2/30lC0DYqjSjLd4H61/OCt3Kfjp9JsFiaDrmLzfzgYYhxKlkqu9FNtEaZnz4
|
1181 |
-
6TfW1mG+oq1I59/mdP7TbX3SJdysYlep9w==
|
1182 |
-
-----END CERTIFICATE-----
|
1183 |
-
|
1184 |
-
beTRUSTed Root CA - RSA Implementation
|
1185 |
-
======================================
|
1186 |
-
-----BEGIN CERTIFICATE-----
|
1187 |
-
MIIFaDCCBFCgAwIBAgIQO1nHe81bV569N1KsdrSqGjANBgkqhkiG9w0BAQUFADBiMRIwEAYDVQQK
|
1188 |
-
EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEvMC0GA1UEAxMmYmVUUlVT
|
1189 |
-
VGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wHhcNMDIwNDExMTExODEzWhcNMjIwNDEy
|
1190 |
-
MTEwNzI1WjBiMRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENB
|
1191 |
-
czEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wggEiMA0G
|
1192 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkujQwCY5X0LkGLG9uJIAiv11DpvpPrILnHGhwhRuj
|
1193 |
-
brWqeNluB0s/6d/16uhUoWGKDi9pdRi3DOUUjXFumLhV/AyV0Jtu4S2I1DpAa5LxmZZk3tv/ePTu
|
1194 |
-
lh1HiXzUvrmIdyM6CeYEnm2qXtLIvZpOGd+J6lsOfsPktPDgaTuID0GQ+NRxQyTBjyZLO1bp/4xs
|
1195 |
-
N+lFrYWMU8NghpBKlsmzVLC7F/AcRdnUGxlkVgoZ98zh/4avflherHqQH8koOUV7orbHnB/ahdQh
|
1196 |
-
hlkwk75TMzf270HPM8ercmsl9fNTGwxMLvF1S++gh/f+ihXQbNXL+WhTuXAVE8L1LvtDNXUtAgMB
|
1197 |
-
AAGjggIYMIICFDAMBgNVHRMEBTADAQH/MIIBtQYDVR0gBIIBrDCCAagwggGkBg8rBgEEAbE+AAAD
|
1198 |
-
CSiDkTEwggGPMEEGCCsGAQUFBwIBFjVodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNf
|
1199 |
-
c2VydmljZXMvaW5kZXguaHRtbDCCAUgGCCsGAQUFBwICMIIBOhqCATZSZWxpYW5jZSBvbiBvciB1
|
1200 |
-
c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBjcmVhdGVzIGFuIGFja25vd2xlZGdtZW50IGFuZCBhY2Nl
|
1201 |
-
cHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlv
|
1202 |
-
bnMgb2YgdXNlLCB0aGUgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1lbnQgYW5kIHRoZSBS
|
1203 |
-
ZWx5aW5nIFBhcnR5IEFncmVlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IHRoZSBiZVRSVVNU
|
1204 |
-
ZWQgd2ViIHNpdGUsIGh0dHA6Ly93d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9p
|
1205 |
-
bmRleC5odG1sMAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAWgBSp7BR++dlDzFMrFK3P9/BZiUHNGTAd
|
1206 |
-
BgNVHQ4EFgQUqewUfvnZQ8xTKxStz/fwWYlBzRkwDQYJKoZIhvcNAQEFBQADggEBANuXsHXqDMTB
|
1207 |
-
mMpWBcCorSZIry0g6IHHtt9DwSwddUvUQo3neqh03GZCWYez9Wlt2ames30cMcH1VOJZJEnl7r05
|
1208 |
-
pmuKmET7m9cqg5c0Lcd9NUwtNLg+DcTsiCevnpL9UGGCqGAHFFPMZRPB9kdEadIxyKbdLrML3kqN
|
1209 |
-
Wz2rDcI1UqJWN8wyiyiFQpyRQHpwKzg21eFzGh/l+n5f3NacOzDq28BbJ1zTcwfBwvNMm2+fG8oe
|
1210 |
-
qqg4MwlYsq78B+g23FW6L09A/nq9BqaBwZMifIYRCgZ3SK41ty8ymmFei74pnykkiFY5LKjSq5YD
|
1211 |
-
WtRIn7lAhAuYaPsBQ9Yb4gmxlxw=
|
1212 |
-
-----END CERTIFICATE-----
|
1213 |
-
|
1214 |
-
RSA Security 2048 v3
|
1215 |
-
====================
|
1216 |
-
-----BEGIN CERTIFICATE-----
|
1217 |
-
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
1218 |
-
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
1219 |
-
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
1220 |
-
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
1221 |
-
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
1222 |
-
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
1223 |
-
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
1224 |
-
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
1225 |
-
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
1226 |
-
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
1227 |
-
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
1228 |
-
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
1229 |
-
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
1230 |
-
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
1231 |
-
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
1232 |
-
pKnXwiJPZ9d37CAFYd4=
|
1233 |
-
-----END CERTIFICATE-----
|
1234 |
-
|
1235 |
-
RSA Security 1024 v3
|
1236 |
-
====================
|
1237 |
-
-----BEGIN CERTIFICATE-----
|
1238 |
-
MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
1239 |
-
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMTAyNCBWMzAeFw0wMTAy
|
1240 |
-
MjIyMTAxNDlaFw0yNjAyMjIyMDAxNDlaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
1241 |
-
BgNVBAsTFFJTQSBTZWN1cml0eSAxMDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDV
|
1242 |
-
3f5mCc8kPD6ugU5OisRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dYrIMKo1W1exeQFYRMiu4m
|
1243 |
-
mdxY78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYtbzZUaMjShFbuklNhCbM/OZuoyZu9zp9+1Blq
|
1244 |
-
FikYvtc6adwlWzMaUQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAf
|
1245 |
-
BgNVHSMEGDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAdBgNVHQ4EFgQUxMAcpAeU/c1NAdRU2qUM
|
1246 |
-
X96uBVowDQYJKoZIhvcNAQEFBQADgYEAPy1q4yZDlX2Jl2X7deRyHUZXxGFraZ8SmyzVWujAovBD
|
1247 |
-
leMf6XbN3Ou8k6BlCsdNT1+nr6JGFLkM88y9am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNu
|
1248 |
-
mU4/iXgDmMrzVcydro7BqkWY+o8aoI2II/EVQQ2lRj6RP4vr93E=
|
1249 |
-
-----END CERTIFICATE-----
|
1250 |
-
|
1251 |
-
GeoTrust Global CA
|
1252 |
-
==================
|
1253 |
-
-----BEGIN CERTIFICATE-----
|
1254 |
-
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
1255 |
-
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
1256 |
-
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
1257 |
-
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1258 |
-
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
1259 |
-
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
1260 |
-
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
1261 |
-
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
1262 |
-
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
1263 |
-
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
1264 |
-
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
1265 |
-
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
1266 |
-
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
1267 |
-
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
1268 |
-
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
1269 |
-
Mw==
|
1270 |
-
-----END CERTIFICATE-----
|
1271 |
-
|
1272 |
-
GeoTrust Global CA 2
|
1273 |
-
====================
|
1274 |
-
-----BEGIN CERTIFICATE-----
|
1275 |
-
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
1276 |
-
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
1277 |
-
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
1278 |
-
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
1279 |
-
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
1280 |
-
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
1281 |
-
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
1282 |
-
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
1283 |
-
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
1284 |
-
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
1285 |
-
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
1286 |
-
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
1287 |
-
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
1288 |
-
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
1289 |
-
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
1290 |
-
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
1291 |
-
-----END CERTIFICATE-----
|
1292 |
-
|
1293 |
-
GeoTrust Universal CA
|
1294 |
-
=====================
|
1295 |
-
-----BEGIN CERTIFICATE-----
|
1296 |
-
MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
1297 |
-
R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
|
1298 |
-
MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
|
1299 |
-
Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
1300 |
-
ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
|
1301 |
-
JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
|
1302 |
-
RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
|
1303 |
-
7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
|
1304 |
-
8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
|
1305 |
-
qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
|
1306 |
-
Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
|
1307 |
-
Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
|
1308 |
-
KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
|
1309 |
-
ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
|
1310 |
-
XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
|
1311 |
-
hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
|
1312 |
-
aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
|
1313 |
-
qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
|
1314 |
-
oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
|
1315 |
-
xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
|
1316 |
-
KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
|
1317 |
-
DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
|
1318 |
-
xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
|
1319 |
-
p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
|
1320 |
-
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
1321 |
-
-----END CERTIFICATE-----
|
1322 |
-
|
1323 |
-
GeoTrust Universal CA 2
|
1324 |
-
=======================
|
1325 |
-
-----BEGIN CERTIFICATE-----
|
1326 |
-
MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
1327 |
-
R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
|
1328 |
-
MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
|
1329 |
-
SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
|
1330 |
-
A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
|
1331 |
-
DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
|
1332 |
-
j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
|
1333 |
-
JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
|
1334 |
-
QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
|
1335 |
-
WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
|
1336 |
-
20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
|
1337 |
-
ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
|
1338 |
-
SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
|
1339 |
-
8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
|
1340 |
-
+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
|
1341 |
-
BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
|
1342 |
-
dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
|
1343 |
-
4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
|
1344 |
-
mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
|
1345 |
-
A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
|
1346 |
-
Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
|
1347 |
-
pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
|
1348 |
-
FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
|
1349 |
-
gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
|
1350 |
-
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
1351 |
-
-----END CERTIFICATE-----
|
1352 |
-
|
1353 |
-
UTN-USER First-Network Applications
|
1354 |
-
===================================
|
1355 |
-
-----BEGIN CERTIFICATE-----
|
1356 |
-
MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
|
1357 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1358 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
|
1359 |
-
BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
|
1360 |
-
WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
|
1361 |
-
YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
1362 |
-
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
|
1363 |
-
cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
|
1364 |
-
mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
|
1365 |
-
DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
|
1366 |
-
Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
|
1367 |
-
P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
|
1368 |
-
j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
|
1369 |
-
HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
|
1370 |
-
cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
|
1371 |
-
CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
|
1372 |
-
IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
|
1373 |
-
RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
|
1374 |
-
xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
|
1375 |
-
DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
|
1376 |
-
-----END CERTIFICATE-----
|
1377 |
-
|
1378 |
-
America Online Root Certification Authority 1
|
1379 |
-
=============================================
|
1380 |
-
-----BEGIN CERTIFICATE-----
|
1381 |
-
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
1382 |
-
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
1383 |
-
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
1384 |
-
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
1385 |
-
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
1386 |
-
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
1387 |
-
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
1388 |
-
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
1389 |
-
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
1390 |
-
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
1391 |
-
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
1392 |
-
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
1393 |
-
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
1394 |
-
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
1395 |
-
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
1396 |
-
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
1397 |
-
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
1398 |
-
-----END CERTIFICATE-----
|
1399 |
-
|
1400 |
-
America Online Root Certification Authority 2
|
1401 |
-
=============================================
|
1402 |
-
-----BEGIN CERTIFICATE-----
|
1403 |
-
MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
1404 |
-
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
1405 |
-
Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
|
1406 |
-
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
1407 |
-
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
|
1408 |
-
ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
|
1409 |
-
fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
|
1410 |
-
f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
|
1411 |
-
qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
|
1412 |
-
RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
|
1413 |
-
gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
|
1414 |
-
6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
|
1415 |
-
FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
|
1416 |
-
Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
|
1417 |
-
B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
|
1418 |
-
aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
|
1419 |
-
AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
|
1420 |
-
T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
|
1421 |
-
+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
|
1422 |
-
JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
|
1423 |
-
zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
|
1424 |
-
ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
|
1425 |
-
1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
|
1426 |
-
GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
|
1427 |
-
Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
|
1428 |
-
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
1429 |
-
-----END CERTIFICATE-----
|
1430 |
-
|
1431 |
-
Visa eCommerce Root
|
1432 |
-
===================
|
1433 |
-
-----BEGIN CERTIFICATE-----
|
1434 |
-
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
1435 |
-
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
1436 |
-
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
1437 |
-
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
1438 |
-
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
1439 |
-
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
1440 |
-
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
1441 |
-
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
1442 |
-
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
1443 |
-
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
1444 |
-
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
1445 |
-
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
1446 |
-
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
1447 |
-
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
1448 |
-
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
1449 |
-
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
1450 |
-
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
1451 |
-
-----END CERTIFICATE-----
|
1452 |
-
|
1453 |
-
TC TrustCenter, Germany, Class 2 CA
|
1454 |
-
===================================
|
1455 |
-
-----BEGIN CERTIFICATE-----
|
1456 |
-
MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
|
1457 |
-
EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
|
1458 |
-
U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
|
1459 |
-
bGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
|
1460 |
-
ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
|
1461 |
-
YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
|
1462 |
-
aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
|
1463 |
-
MiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
|
1464 |
-
hvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLs
|
1465 |
-
qh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5N
|
1466 |
-
u6hLVxa8/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
|
1467 |
-
Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
|
1468 |
-
LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBAIRS+yjf
|
1469 |
-
/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ2
|
1470 |
-
9ELw+HkuCkhcq8xRT3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
|
1471 |
-
ASZ4smZHcFFk
|
1472 |
-
-----END CERTIFICATE-----
|
1473 |
-
|
1474 |
-
TC TrustCenter, Germany, Class 3 CA
|
1475 |
-
===================================
|
1476 |
-
-----BEGIN CERTIFICATE-----
|
1477 |
-
MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
|
1478 |
-
EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
|
1479 |
-
U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
|
1480 |
-
bGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
|
1481 |
-
ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
|
1482 |
-
YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
|
1483 |
-
aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
|
1484 |
-
MyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
|
1485 |
-
hvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN
|
1486 |
-
2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+7
|
1487 |
-
7uMMfTDWw1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
|
1488 |
-
Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
|
1489 |
-
LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBABY9xs3B
|
1490 |
-
u4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm
|
1491 |
-
5gZOngylerpuw3yCGdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
|
1492 |
-
CdS7kjXvD9s0
|
1493 |
-
-----END CERTIFICATE-----
|
1494 |
-
|
1495 |
-
Certum Root CA
|
1496 |
-
==============
|
1497 |
-
-----BEGIN CERTIFICATE-----
|
1498 |
-
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
1499 |
-
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
1500 |
-
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
1501 |
-
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
1502 |
-
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
1503 |
-
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
1504 |
-
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
1505 |
-
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
1506 |
-
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
1507 |
-
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
1508 |
-
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
1509 |
-
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
1510 |
-
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
1511 |
-
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
1512 |
-
-----END CERTIFICATE-----
|
1513 |
-
|
1514 |
-
Comodo AAA Services root
|
1515 |
-
========================
|
1516 |
-
-----BEGIN CERTIFICATE-----
|
1517 |
-
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
1518 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
1519 |
-
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
1520 |
-
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
1521 |
-
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
1522 |
-
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
1523 |
-
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
1524 |
-
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
1525 |
-
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
1526 |
-
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
1527 |
-
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
1528 |
-
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
1529 |
-
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
1530 |
-
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
1531 |
-
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
1532 |
-
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
1533 |
-
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
1534 |
-
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
1535 |
-
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
1536 |
-
-----END CERTIFICATE-----
|
1537 |
-
|
1538 |
-
Comodo Secure Services root
|
1539 |
-
===========================
|
1540 |
-
-----BEGIN CERTIFICATE-----
|
1541 |
-
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
1542 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
1543 |
-
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
1544 |
-
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
1545 |
-
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
1546 |
-
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1547 |
-
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
1548 |
-
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
1549 |
-
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
1550 |
-
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
1551 |
-
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
1552 |
-
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
1553 |
-
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
1554 |
-
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
1555 |
-
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
1556 |
-
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
1557 |
-
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
1558 |
-
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
1559 |
-
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
1560 |
-
RR3B7Hzs/Sk=
|
1561 |
-
-----END CERTIFICATE-----
|
1562 |
-
|
1563 |
-
Comodo Trusted Services root
|
1564 |
-
============================
|
1565 |
-
-----BEGIN CERTIFICATE-----
|
1566 |
-
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
1567 |
-
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
1568 |
-
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
1569 |
-
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
1570 |
-
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
1571 |
-
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1572 |
-
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
1573 |
-
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
1574 |
-
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
1575 |
-
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
1576 |
-
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
1577 |
-
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
1578 |
-
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
1579 |
-
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
1580 |
-
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
1581 |
-
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
1582 |
-
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
1583 |
-
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
1584 |
-
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
1585 |
-
9y5Xt5hwXsjEeLBi
|
1586 |
-
-----END CERTIFICATE-----
|
1587 |
-
|
1588 |
-
IPS Chained CAs root
|
1589 |
-
====================
|
1590 |
-
-----BEGIN CERTIFICATE-----
|
1591 |
-
MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARwxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1592 |
-
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1593 |
-
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1594 |
-
Qi02MDkyOTQ1MjEzMDEGA1UECxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0
|
1595 |
-
aG9yaXR5MTMwMQYDVQQDEypJUFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1596 |
-
dHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczAeFw0wMTEyMjkwMDUzNThaFw0yNTEy
|
1597 |
-
MjcwMDUzNThaMIIBHDELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJ
|
1598 |
-
QmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwu
|
1599 |
-
MSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMTMwMQYDVQQLEypJ
|
1600 |
-
UFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMzAxBgNVBAMTKklQUyBD
|
1601 |
-
QSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBz
|
1602 |
-
QG1haWwuaXBzLmVzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcVpJJspQgvJhPUOtopKdJ
|
1603 |
-
C7/SMejHT8KGC/po/UNaivNgkjWZOLtNA1IhW/A3mTXhQSCBhYEFcYGdtJUZqV92NC5jNzVXjrQf
|
1604 |
-
Qj8VXOF6wV8TGDIxya2+o8eDZh65nAQTy2nBBt4wBrszo7Uf8I9vzv+W6FS+ZoCua9tBhDaiPQID
|
1605 |
-
AQABo4IEQzCCBD8wHQYDVR0OBBYEFKGtMbH5PuEXpsirNPxShwkeYlJBMIIBTgYDVR0jBIIBRTCC
|
1606 |
-
AUGAFKGtMbH5PuEXpsirNPxShwkeYlJBoYIBJKSCASAwggEcMQswCQYDVQQGEwJFUzESMBAGA1UE
|
1607 |
-
CBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBw
|
1608 |
-
dWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4g
|
1609 |
-
IEItNjA5Mjk0NTIxMzAxBgNVBAsTKklQUyBDQSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1
|
1610 |
-
dGhvcml0eTEzMDEGA1UEAxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0aG9y
|
1611 |
-
aXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNV
|
1612 |
-
HQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUF
|
1613 |
-
BwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGC
|
1614 |
-
NwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1Ud
|
1615 |
-
EgQTMBGBD2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ2hhaW5lZCBDQSBDZXJ0aWZp
|
1616 |
-
Y2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8v
|
1617 |
-
d3d3Lmlwcy5lcy9pcHMyMDAyLzA3BglghkgBhvhCAQQEKhYoaHR0cDovL3d3dy5pcHMuZXMvaXBz
|
1618 |
-
MjAwMi9pcHMyMDAyQ0FDLmNybDA8BglghkgBhvhCAQMELxYtaHR0cDovL3d3dy5pcHMuZXMvaXBz
|
1619 |
-
MjAwMi9yZXZvY2F0aW9uQ0FDLmh0bWw/MDkGCWCGSAGG+EIBBwQsFipodHRwOi8vd3d3Lmlwcy5l
|
1620 |
-
cy9pcHMyMDAyL3JlbmV3YWxDQUMuaHRtbD8wNwYJYIZIAYb4QgEIBCoWKGh0dHA6Ly93d3cuaXBz
|
1621 |
-
LmVzL2lwczIwMDIvcG9saWN5Q0FDLmh0bWwwbQYDVR0fBGYwZDAuoCygKoYoaHR0cDovL3d3dy5p
|
1622 |
-
cHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0FDLmNybDAyoDCgLoYsaHR0cDovL3d3d2JhY2suaXBzLmVz
|
1623 |
-
L2lwczIwMDIvaXBzMjAwMkNBQy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
|
1624 |
-
Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAERyMJ1WWKJBGyi3leGmGpVfp3hAK+/b
|
1625 |
-
lkr8THFj2XOVvQLiogbHvpcqk4A0hgP63Ng9HgfNHnNDJGD1HWHc3JagvPsd4+cSACczAsDAK1M9
|
1626 |
-
2GsDgaPb1pOVIO/Tln4mkImcJpvNb2ar7QMiRDjMWb2f2/YHogF/JsRj9SVCXmK9
|
1627 |
-
-----END CERTIFICATE-----
|
1628 |
-
|
1629 |
-
IPS CLASE1 root
|
1630 |
-
===============
|
1631 |
-
-----BEGIN CERTIFICATE-----
|
1632 |
-
MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1633 |
-
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1634 |
-
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1635 |
-
Qi02MDkyOTQ1MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1636 |
-
eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqG
|
1637 |
-
SIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAwNTkzOFoXDTI1MTIyNzAwNTkzOFow
|
1638 |
-
ggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
|
1639 |
-
LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoU
|
1640 |
-
Imlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFT
|
1641 |
-
RTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTEgQ2VydGlm
|
1642 |
-
aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkq
|
1643 |
-
hkiG9w0BAQEFAAOBjQAwgYkCgYEA4FEnpwvdr9G5Q1uCN0VWcu+atsIS7ywSzHb5BlmvXSHU0lq4
|
1644 |
-
oNTzav3KaY1mSPd05u42veiWkXWmcSjK5yISMmmwPh5r9FBSYmL9Yzt9fuzuOOpi9GyocY3h6YvJ
|
1645 |
-
P8a1zZRCb92CRTzo3wno7wpVqVZHYUxJZHMQKD/Kvwn/xi8CAwEAAaOCBEowggRGMB0GA1UdDgQW
|
1646 |
-
BBTrsxl588GlHKzcuh9morKbadB4CDCCAUQGA1UdIwSCATswggE3gBTrsxl588GlHKzcuh9morKb
|
1647 |
-
adB4CKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
|
1648 |
-
BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBz
|
1649 |
-
LmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQL
|
1650 |
-
EyVJUFMgQ0EgQ0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0Eg
|
1651 |
-
Q0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
|
1652 |
-
cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMB
|
1653 |
-
BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
|
1654 |
-
BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0R
|
1655 |
-
BBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBBBglghkgB
|
1656 |
-
hvhCAQ0ENBYyQ0xBU0UxIENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5l
|
1657 |
-
cy8wKQYJYIZIAYb4QgECBBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIB
|
1658 |
-
BAQtFitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTEuY3JsMD8GCWCGSAGG
|
1659 |
-
+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25DTEFTRTEuaHRtbD8w
|
1660 |
-
PAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMS5o
|
1661 |
-
dG1sPzA6BglghkgBhvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
|
1662 |
-
RTEuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIw
|
1663 |
-
MDJDTEFTRTEuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy
|
1664 |
-
Q0xBU0UxLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5l
|
1665 |
-
cy8wDQYJKoZIhvcNAQEFBQADgYEAK9Dr/drIyllq2tPMMi7JVBuKYn4VLenZMdMu9Ccj/1urxUq2
|
1666 |
-
ckCuU3T0vAW0xtnIyXf7t/k0f3gA+Nak5FI/LEpjV4F1Wo7ojPsCwJTGKbqz3Bzosq/SLmJbGqmO
|
1667 |
-
DszFV0VRFOlOHIilkfSj945RyKm+hjM+5i9Ibq9UkE6tsSU=
|
1668 |
-
-----END CERTIFICATE-----
|
1669 |
-
|
1670 |
-
IPS CLASE3 root
|
1671 |
-
===============
|
1672 |
-
-----BEGIN CERTIFICATE-----
|
1673 |
-
MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1674 |
-
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1675 |
-
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1676 |
-
Qi02MDkyOTQ1MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1677 |
-
eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqG
|
1678 |
-
SIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMDE0NFoXDTI1MTIyNzAxMDE0NFow
|
1679 |
-
ggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
|
1680 |
-
LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoU
|
1681 |
-
Imlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFT
|
1682 |
-
RTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTMgQ2VydGlm
|
1683 |
-
aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkq
|
1684 |
-
hkiG9w0BAQEFAAOBjQAwgYkCgYEAqxf+DrDGaBtT8FK+n/ra+osTBLsBjzLZH49NzjaY2uQARIwo
|
1685 |
-
2BNEKqRrThckQpzTiKRBgtYj+4vJhuW5qYIF3PHeH+AMmVWY8jjsbJ0gA8DvqqPGZARRLXgNo9Ko
|
1686 |
-
OtYkTOmWehisEyMiG3zoMRGzXwmqMHBxRiVrSXGAK5UBsh8CAwEAAaOCBEowggRGMB0GA1UdDgQW
|
1687 |
-
BBS4k/8uy9wsjqLnev42USGjmFsMNDCCAUQGA1UdIwSCATswggE3gBS4k/8uy9wsjqLnev42USGj
|
1688 |
-
mFsMNKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
|
1689 |
-
BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBz
|
1690 |
-
LmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQL
|
1691 |
-
EyVJUFMgQ0EgQ0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0Eg
|
1692 |
-
Q0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
|
1693 |
-
cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMB
|
1694 |
-
BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
|
1695 |
-
BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0R
|
1696 |
-
BBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBBBglghkgB
|
1697 |
-
hvhCAQ0ENBYyQ0xBU0UzIENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5l
|
1698 |
-
cy8wKQYJYIZIAYb4QgECBBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIB
|
1699 |
-
BAQtFitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTMuY3JsMD8GCWCGSAGG
|
1700 |
-
+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25DTEFTRTMuaHRtbD8w
|
1701 |
-
PAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMy5o
|
1702 |
-
dG1sPzA6BglghkgBhvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
|
1703 |
-
RTMuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIw
|
1704 |
-
MDJDTEFTRTMuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy
|
1705 |
-
Q0xBU0UzLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5l
|
1706 |
-
cy8wDQYJKoZIhvcNAQEFBQADgYEAF2VcmZVDAyevJuXr0LMXI/dDqsfwfewPxqmurpYPdikc4gYt
|
1707 |
-
fibFPPqhwYHOU7BC0ZdXGhd+pFFhxu7pXu8Fuuu9D6eSb9ijBmgpjnn1/7/5p6/ksc7C0YBCJwUE
|
1708 |
-
NPjDfxZ4IwwHJPJGR607VNCv1TGyr33I6unUVtkOE7LFRVA=
|
1709 |
-
-----END CERTIFICATE-----
|
1710 |
-
|
1711 |
-
IPS CLASEA1 root
|
1712 |
-
================
|
1713 |
-
-----BEGIN CERTIFICATE-----
|
1714 |
-
MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1715 |
-
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1716 |
-
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1717 |
-
Qi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1718 |
-
dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
|
1719 |
-
KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNTMyWhcNMjUxMjI3MDEwNTMy
|
1720 |
-
WjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
|
1721 |
-
YTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE
|
1722 |
-
ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENM
|
1723 |
-
QVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENl
|
1724 |
-
cnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8w
|
1725 |
-
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALsw19zQVL01Tp/FTILq0VA8R5j8m2mdd81u4D/u6zJf
|
1726 |
-
X5/S0HnllXNEITLgCtud186Nq1KLK3jgm1t99P1tCeWu4WwdByOgF9H5fahGRpEiqLJpxq339fWU
|
1727 |
-
oTCUvQDMRH/uxJ7JweaPCjbB/SQ9AaD1e+J8eGZDi09Z8pvZ+kmzAgMBAAGjggRTMIIETzAdBgNV
|
1728 |
-
HQ4EFgQUZyaW56G/2LUDnf473P7yiuYV3TAwggFGBgNVHSMEggE9MIIBOYAUZyaW56G/2LUDnf47
|
1729 |
-
3P7yiuYV3TChggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
|
1730 |
-
BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2Vydmlj
|
1731 |
-
ZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0G
|
1732 |
-
A1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQ
|
1733 |
-
UyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
|
1734 |
-
bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsG
|
1735 |
-
AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB
|
1736 |
-
FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
|
1737 |
-
GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC
|
1738 |
-
BglghkgBhvhCAQ0ENRYzQ0xBU0VBMSBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3
|
1739 |
-
dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7Bglg
|
1740 |
-
hkgBhvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmww
|
1741 |
-
QAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2b2NhdGlvbkNMQVNF
|
1742 |
-
QTEuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdh
|
1743 |
-
bENMQVNFQTEuaHRtbD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
|
1744 |
-
cG9saWN5Q0xBU0VBMS5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lw
|
1745 |
-
czIwMDIvaXBzMjAwMkNMQVNFQTEuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz
|
1746 |
-
MjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
|
1747 |
-
Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAH66iqyAAIQVCtWYUQxkxZwCWINmyq0e
|
1748 |
-
B81+atqAB98DNEock8RLWCA1NnHtogo1EqWmZaeFaQoO42Hu6r4okzPV7Oi+xNtff6j5YzHIa5bi
|
1749 |
-
KcJboOeXNp13XjFr/tOn2yrb25aLH2betgPAK7N41lUH5Y85UN4HI3LmvSAUS7SG
|
1750 |
-
-----END CERTIFICATE-----
|
1751 |
-
|
1752 |
-
IPS CLASEA3 root
|
1753 |
-
================
|
1754 |
-
-----BEGIN CERTIFICATE-----
|
1755 |
-
MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1756 |
-
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1757 |
-
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1758 |
-
Qi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1759 |
-
dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
|
1760 |
-
KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNzUwWhcNMjUxMjI3MDEwNzUw
|
1761 |
-
WjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
|
1762 |
-
YTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE
|
1763 |
-
ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENM
|
1764 |
-
QVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENl
|
1765 |
-
cnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8w
|
1766 |
-
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO6AAPYaZC6tasiDsYun7o/ZttvNG7uGBiJ2MwwSbUhW
|
1767 |
-
YdLcgiViL5/SaTBlA0IjWLxH3GvWdV0XPOH/8lhneaDBgbHUVqLyjRGZ/fZ98cfEXgIqmuJKtROK
|
1768 |
-
AP2Md4bm15T1IHUuDky/dMQ/gT6DtKM4Ninn6Cr1jIhBqoCm42zvAgMBAAGjggRTMIIETzAdBgNV
|
1769 |
-
HQ4EFgQUHp9XUEe2YZM50yz82l09BXW3mQIwggFGBgNVHSMEggE9MIIBOYAUHp9XUEe2YZM50yz8
|
1770 |
-
2l09BXW3mQKhggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
|
1771 |
-
BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2Vydmlj
|
1772 |
-
ZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0G
|
1773 |
-
A1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQ
|
1774 |
-
UyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
|
1775 |
-
bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsG
|
1776 |
-
AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB
|
1777 |
-
FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
|
1778 |
-
GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC
|
1779 |
-
BglghkgBhvhCAQ0ENRYzQ0xBU0VBMyBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3
|
1780 |
-
dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7Bglg
|
1781 |
-
hkgBhvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmww
|
1782 |
-
QAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2b2NhdGlvbkNMQVNF
|
1783 |
-
QTMuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdh
|
1784 |
-
bENMQVNFQTMuaHRtbD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
|
1785 |
-
cG9saWN5Q0xBU0VBMy5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lw
|
1786 |
-
czIwMDIvaXBzMjAwMkNMQVNFQTMuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz
|
1787 |
-
MjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
|
1788 |
-
Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAEo9IEca2on0eisxeewBwMwB9dbB/MjD
|
1789 |
-
81ACUZBYKp/nNQlbMAqBACVHr9QPDp5gJqiVp4MI3y2s6Q73nMify5NF8bpqxmdRSmlPa/59Cy9S
|
1790 |
-
KcJQrSRE7SOzSMtEQMEDlQwKeAYSAfWRMS1Jjbs/RU4s4OjNtckUFQzjB4ObJnXv
|
1791 |
-
-----END CERTIFICATE-----
|
1792 |
-
|
1793 |
-
IPS Servidores root
|
1794 |
-
===================
|
1795 |
-
-----BEGIN CERTIFICATE-----
|
1796 |
-
MIICtzCCAiACAQAwDQYJKoZIhvcNAQEEBQAwgaMxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJD
|
1797 |
-
RUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcGA1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYG
|
1798 |
-
A1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQDEw5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3
|
1799 |
-
DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTk4MDEwMTIzMjEwN1oXDTA5MTIyOTIzMjEwN1owgaMx
|
1800 |
-
CzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJDRUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcG
|
1801 |
-
A1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYGA1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQD
|
1802 |
-
Ew5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMIGfMA0GCSqG
|
1803 |
-
SIb3DQEBAQUAA4GNADCBiQKBgQCsT1J0nznqjtwlxLyYXZhkJAk8IbPMGbWOlI6H0fg3PqHILVik
|
1804 |
-
gDVboXVsHUUMH2Fjal5vmwpMwci4YSM1gf/+rHhwLWjhOgeYlQJU3c0jt4BT18g3RXIGJBK6E2Eh
|
1805 |
-
im51KODFDzT9NthFf+G4Nu+z4cYgjui0OLzhPvYR3oydAQIDAQABMA0GCSqGSIb3DQEBBAUAA4GB
|
1806 |
-
ACzzw3lYJN7GO9HgQmm47mSzPWIBubOE3yN93ZjPEKn+ANgilgUTB1RXxafey9m4iEL2mdsUdx+2
|
1807 |
-
/iU94aI+A6mB0i1sR/WWRowiq8jMDQ6XXotBtDvECgZAHd1G9AHduoIuPD14cJ58GNCr+Lh3B0Zx
|
1808 |
-
8coLY1xq+XKU1QFPoNtC
|
1809 |
-
-----END CERTIFICATE-----
|
1810 |
-
|
1811 |
-
IPS Timestamping root
|
1812 |
-
=====================
|
1813 |
-
-----BEGIN CERTIFICATE-----
|
1814 |
-
MIIIODCCB6GgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCAR4xCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1815 |
-
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1816 |
-
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1817 |
-
Qi02MDkyOTQ1MjE0MDIGA1UECxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1
|
1818 |
-
dGhvcml0eTE0MDIGA1UEAxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1819 |
-
cml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMTAxOFoXDTI1
|
1820 |
-
MTIyNzAxMTAxOFowggEeMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQH
|
1821 |
-
EwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMu
|
1822 |
-
bC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxNDAyBgNVBAsT
|
1823 |
-
K0lQUyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxNDAyBgNVBAMTK0lQ
|
1824 |
-
UyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEW
|
1825 |
-
D2lwc0BtYWlsLmlwcy5lczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLjuVqWajOY2ycJi
|
1826 |
-
oGaBjRrVetJznw6EZLqVtJCneK/K/lRhW86yIFcBrkSSQxA4Efdo/BdApWgnMjvEp+ZCccWZ73b/
|
1827 |
-
K5Uk9UmSGGjKALWkWi9uy9YbLA1UZ2t6KaFYq6JaANZbuxjC3/YeE1Z2m6Vo4pjOxgOKNNtMg0Gm
|
1828 |
-
qaMCAwEAAaOCBIAwggR8MB0GA1UdDgQWBBSL0BBQCYHynQnVDmB4AyKiP8jKZjCCAVAGA1UdIwSC
|
1829 |
-
AUcwggFDgBSL0BBQCYHynQnVDmB4AyKiP8jKZqGCASakggEiMIIBHjELMAkGA1UEBhMCRVMxEjAQ
|
1830 |
-
BgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJu
|
1831 |
-
ZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5J
|
1832 |
-
LkYuICBCLTYwOTI5NDUyMTQwMgYDVQQLEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRp
|
1833 |
-
b24gQXV0aG9yaXR5MTQwMgYDVQQDEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRpb24g
|
1834 |
-
QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB
|
1835 |
-
/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMG
|
1836 |
-
CCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYK
|
1837 |
-
KwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVz
|
1838 |
-
MBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBHBglghkgBhvhCAQ0EOhY4VGltZXN0YW1waW5n
|
1839 |
-
IENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC
|
1840 |
-
BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMEAGCWCGSAGG+EIBBAQzFjFodHRwOi8vd3d3
|
1841 |
-
Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMEUGCWCGSAGG+EIBAwQ4FjZo
|
1842 |
-
dHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25UaW1lc3RhbXBpbmcuaHRtbD8wQgYJ
|
1843 |
-
YIZIAYb4QgEHBDUWM2h0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbFRpbWVzdGFtcGlu
|
1844 |
-
Zy5odG1sPzBABglghkgBhvhCAQgEMxYxaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lU
|
1845 |
-
aW1lc3RhbXBpbmcuaHRtbDB/BgNVHR8EeDB2MDegNaAzhjFodHRwOi8vd3d3Lmlwcy5lcy9pcHMy
|
1846 |
-
MDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMDugOaA3hjVodHRwOi8vd3d3YmFjay5pcHMuZXMv
|
1847 |
-
aXBzMjAwMi9pcHMyMDAyVGltZXN0YW1waW5nLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUH
|
1848 |
-
MAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZIhvcNAQEFBQADgYEAZbrBzAAalZHK6Ww6vzoe
|
1849 |
-
FAh8+4Pua2JR0zORtWB5fgTYXXk36MNbsMRnLWhasl8OCvrNPzpFoeo2zyYepxEoxZSPhExTCMWT
|
1850 |
-
s/zif/WN87GphV+I3pGW7hdbrqXqcGV4LCFkAZXOzkw+UPS2Wctjjba9GNSHSl/c7+lW8AoM6HU=
|
1851 |
-
-----END CERTIFICATE-----
|
1852 |
-
|
1853 |
-
QuoVadis Root CA
|
1854 |
-
================
|
1855 |
-
-----BEGIN CERTIFICATE-----
|
1856 |
-
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
1857 |
-
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1858 |
-
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
1859 |
-
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
1860 |
-
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
1861 |
-
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
1862 |
-
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
1863 |
-
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
1864 |
-
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
1865 |
-
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
1866 |
-
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
1867 |
-
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
1868 |
-
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
1869 |
-
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
1870 |
-
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
1871 |
-
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
1872 |
-
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
1873 |
-
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
1874 |
-
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
1875 |
-
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
1876 |
-
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
1877 |
-
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
1878 |
-
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
1879 |
-
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
1880 |
-
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
1881 |
-
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
1882 |
-
5nrQNiOKSnQ2+Q==
|
1883 |
-
-----END CERTIFICATE-----
|
1884 |
-
|
1885 |
-
QuoVadis Root CA 2
|
1886 |
-
==================
|
1887 |
-
-----BEGIN CERTIFICATE-----
|
1888 |
-
MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1889 |
-
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
|
1890 |
-
ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1891 |
-
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1892 |
-
DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
|
1893 |
-
XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
|
1894 |
-
lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
|
1895 |
-
lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
|
1896 |
-
lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
|
1897 |
-
66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
|
1898 |
-
wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
|
1899 |
-
D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
|
1900 |
-
BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
|
1901 |
-
J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
|
1902 |
-
DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
|
1903 |
-
a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
|
1904 |
-
ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
|
1905 |
-
Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
|
1906 |
-
UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
|
1907 |
-
VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
|
1908 |
-
+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
|
1909 |
-
IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
|
1910 |
-
WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
|
1911 |
-
f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
|
1912 |
-
4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
|
1913 |
-
VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
|
1914 |
-
-----END CERTIFICATE-----
|
1915 |
-
|
1916 |
-
QuoVadis Root CA 3
|
1917 |
-
==================
|
1918 |
-
-----BEGIN CERTIFICATE-----
|
1919 |
-
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1920 |
-
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1921 |
-
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1922 |
-
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1923 |
-
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1924 |
-
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1925 |
-
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1926 |
-
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1927 |
-
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1928 |
-
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1929 |
-
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1930 |
-
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1931 |
-
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1932 |
-
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1933 |
-
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1934 |
-
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1935 |
-
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1936 |
-
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1937 |
-
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1938 |
-
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1939 |
-
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1940 |
-
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1941 |
-
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1942 |
-
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1943 |
-
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1944 |
-
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1945 |
-
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1946 |
-
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1947 |
-
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1948 |
-
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1949 |
-
-----END CERTIFICATE-----
|
1950 |
-
|
1951 |
-
Security Communication Root CA
|
1952 |
-
==============================
|
1953 |
-
-----BEGIN CERTIFICATE-----
|
1954 |
-
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1955 |
-
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1956 |
-
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1957 |
-
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1958 |
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1959 |
-
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1960 |
-
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1961 |
-
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1962 |
-
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1963 |
-
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1964 |
-
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1965 |
-
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1966 |
-
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1967 |
-
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1968 |
-
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1969 |
-
FL39vmwLAw==
|
1970 |
-
-----END CERTIFICATE-----
|
1971 |
-
|
1972 |
-
Sonera Class 1 Root CA
|
1973 |
-
======================
|
1974 |
-
-----BEGIN CERTIFICATE-----
|
1975 |
-
MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1976 |
-
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
|
1977 |
-
NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1978 |
-
IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
|
1979 |
-
7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
|
1980 |
-
EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
|
1981 |
-
0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
|
1982 |
-
2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
|
1983 |
-
HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
|
1984 |
-
iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
|
1985 |
-
28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
|
1986 |
-
yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
|
1987 |
-
vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
|
1988 |
-
qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
|
1989 |
-
IRlXvVWa
|
1990 |
-
-----END CERTIFICATE-----
|
1991 |
-
|
1992 |
-
Sonera Class 2 Root CA
|
1993 |
-
======================
|
1994 |
-
-----BEGIN CERTIFICATE-----
|
1995 |
-
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1996 |
-
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1997 |
-
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1998 |
-
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1999 |
-
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
2000 |
-
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
2001 |
-
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
2002 |
-
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
2003 |
-
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
2004 |
-
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
2005 |
-
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
2006 |
-
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
2007 |
-
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
2008 |
-
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
2009 |
-
llpwrN9M
|
2010 |
-
-----END CERTIFICATE-----
|
2011 |
-
|
2012 |
-
Staat der Nederlanden Root CA
|
2013 |
-
=============================
|
2014 |
-
-----BEGIN CERTIFICATE-----
|
2015 |
-
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
2016 |
-
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
2017 |
-
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
2018 |
-
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
2019 |
-
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
2020 |
-
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
2021 |
-
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
2022 |
-
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
2023 |
-
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
2024 |
-
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
2025 |
-
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
2026 |
-
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
2027 |
-
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
2028 |
-
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
2029 |
-
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
2030 |
-
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
2031 |
-
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
2032 |
-
-----END CERTIFICATE-----
|
2033 |
-
|
2034 |
-
TDC Internet Root CA
|
2035 |
-
====================
|
2036 |
-
-----BEGIN CERTIFICATE-----
|
2037 |
-
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
2038 |
-
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
2039 |
-
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
2040 |
-
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2041 |
-
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
2042 |
-
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
2043 |
-
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
2044 |
-
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
2045 |
-
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
2046 |
-
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
2047 |
-
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
2048 |
-
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
2049 |
-
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
2050 |
-
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
2051 |
-
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
2052 |
-
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
2053 |
-
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
2054 |
-
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
2055 |
-
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
2056 |
-
-----END CERTIFICATE-----
|
2057 |
-
|
2058 |
-
TDC OCES Root CA
|
2059 |
-
================
|
2060 |
-
-----BEGIN CERTIFICATE-----
|
2061 |
-
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
2062 |
-
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
2063 |
-
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
2064 |
-
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
2065 |
-
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
2066 |
-
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
2067 |
-
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
2068 |
-
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
2069 |
-
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
2070 |
-
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
2071 |
-
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
2072 |
-
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
2073 |
-
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
2074 |
-
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
2075 |
-
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
2076 |
-
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
2077 |
-
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
2078 |
-
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
2079 |
-
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
2080 |
-
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
2081 |
-
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
2082 |
-
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
2083 |
-
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
2084 |
-
-----END CERTIFICATE-----
|
2085 |
-
|
2086 |
-
UTN DATACorp SGC Root CA
|
2087 |
-
========================
|
2088 |
-
-----BEGIN CERTIFICATE-----
|
2089 |
-
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
2090 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2091 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
2092 |
-
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
2093 |
-
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
2094 |
-
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
2095 |
-
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2096 |
-
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
2097 |
-
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
2098 |
-
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
2099 |
-
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
2100 |
-
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
2101 |
-
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
2102 |
-
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
2103 |
-
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
2104 |
-
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
2105 |
-
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
2106 |
-
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
2107 |
-
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
2108 |
-
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
2109 |
-
-----END CERTIFICATE-----
|
2110 |
-
|
2111 |
-
UTN USERFirst Email Root CA
|
2112 |
-
===========================
|
2113 |
-
-----BEGIN CERTIFICATE-----
|
2114 |
-
MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
2115 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2116 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
|
2117 |
-
BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
|
2118 |
-
OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
|
2119 |
-
FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
|
2120 |
-
ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
|
2121 |
-
dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2122 |
-
MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
|
2123 |
-
B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
|
2124 |
-
om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
|
2125 |
-
TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
|
2126 |
-
yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
|
2127 |
-
AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
|
2128 |
-
HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
|
2129 |
-
bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
|
2130 |
-
AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
|
2131 |
-
xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
|
2132 |
-
5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
|
2133 |
-
NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
|
2134 |
-
w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
|
2135 |
-
-----END CERTIFICATE-----
|
2136 |
-
|
2137 |
-
UTN USERFirst Hardware Root CA
|
2138 |
-
==============================
|
2139 |
-
-----BEGIN CERTIFICATE-----
|
2140 |
-
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
2141 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2142 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
2143 |
-
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
2144 |
-
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
2145 |
-
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
2146 |
-
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
2147 |
-
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
2148 |
-
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
2149 |
-
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
2150 |
-
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
2151 |
-
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
2152 |
-
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
2153 |
-
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
2154 |
-
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
2155 |
-
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
2156 |
-
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
2157 |
-
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
2158 |
-
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
2159 |
-
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
2160 |
-
nfhmqA==
|
2161 |
-
-----END CERTIFICATE-----
|
2162 |
-
|
2163 |
-
UTN USERFirst Object Root CA
|
2164 |
-
============================
|
2165 |
-
-----BEGIN CERTIFICATE-----
|
2166 |
-
MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
|
2167 |
-
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2168 |
-
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
|
2169 |
-
BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
|
2170 |
-
NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
|
2171 |
-
HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
|
2172 |
-
dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
|
2173 |
-
BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
|
2174 |
-
loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
|
2175 |
-
w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
|
2176 |
-
lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
|
2177 |
-
RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
|
2178 |
-
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
|
2179 |
-
ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
|
2180 |
-
c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
|
2181 |
-
DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
|
2182 |
-
NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
|
2183 |
-
PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
|
2184 |
-
qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
|
2185 |
-
hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
|
2186 |
-
-----END CERTIFICATE-----
|
2187 |
-
|
2188 |
-
Camerfirma Chambers of Commerce Root
|
2189 |
-
====================================
|
2190 |
-
-----BEGIN CERTIFICATE-----
|
2191 |
-
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
2192 |
-
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
2193 |
-
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
2194 |
-
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
2195 |
-
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
2196 |
-
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
2197 |
-
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
2198 |
-
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
2199 |
-
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
2200 |
-
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
2201 |
-
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
2202 |
-
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
2203 |
-
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
2204 |
-
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
2205 |
-
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
2206 |
-
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
2207 |
-
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
2208 |
-
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
2209 |
-
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
2210 |
-
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
2211 |
-
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
2212 |
-
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
2213 |
-
-----END CERTIFICATE-----
|
2214 |
-
|
2215 |
-
Camerfirma Global Chambersign Root
|
2216 |
-
==================================
|
2217 |
-
-----BEGIN CERTIFICATE-----
|
2218 |
-
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
2219 |
-
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
2220 |
-
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
2221 |
-
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
2222 |
-
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
2223 |
-
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
2224 |
-
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
2225 |
-
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
2226 |
-
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
2227 |
-
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
2228 |
-
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
2229 |
-
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
2230 |
-
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
2231 |
-
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
2232 |
-
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
2233 |
-
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
2234 |
-
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
2235 |
-
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
2236 |
-
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
2237 |
-
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
2238 |
-
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
2239 |
-
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
2240 |
-
-----END CERTIFICATE-----
|
2241 |
-
|
2242 |
-
NetLock Qualified (Class QA) Root
|
2243 |
-
=================================
|
2244 |
-
-----BEGIN CERTIFICATE-----
|
2245 |
-
MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
2246 |
-
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
2247 |
-
BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
|
2248 |
-
eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
|
2249 |
-
bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
|
2250 |
-
MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
|
2251 |
-
LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
|
2252 |
-
dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
|
2253 |
-
aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
|
2254 |
-
CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
|
2255 |
-
8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
|
2256 |
-
m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
|
2257 |
-
0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
|
2258 |
-
0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
2259 |
-
HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
|
2260 |
-
YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
|
2261 |
-
biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
|
2262 |
-
a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
|
2263 |
-
YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
|
2264 |
-
YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
|
2265 |
-
ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
|
2266 |
-
L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
|
2267 |
-
Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
|
2268 |
-
aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
|
2269 |
-
YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
|
2270 |
-
IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
|
2271 |
-
DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
|
2272 |
-
wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
|
2273 |
-
W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
|
2274 |
-
R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
|
2275 |
-
5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
|
2276 |
-
-----END CERTIFICATE-----
|
2277 |
-
|
2278 |
-
NetLock Notary (Class A) Root
|
2279 |
-
=============================
|
2280 |
-
-----BEGIN CERTIFICATE-----
|
2281 |
-
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
2282 |
-
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
2283 |
-
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
2284 |
-
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
2285 |
-
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
2286 |
-
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
2287 |
-
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
2288 |
-
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
2289 |
-
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
2290 |
-
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
2291 |
-
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
2292 |
-
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
2293 |
-
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
2294 |
-
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
2295 |
-
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
2296 |
-
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
2297 |
-
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
2298 |
-
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
2299 |
-
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
2300 |
-
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
2301 |
-
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
2302 |
-
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
2303 |
-
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
2304 |
-
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
2305 |
-
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
2306 |
-
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
2307 |
-
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
2308 |
-
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
2309 |
-
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
2310 |
-
8CgHrTwXZoi1/baI
|
2311 |
-
-----END CERTIFICATE-----
|
2312 |
-
|
2313 |
-
NetLock Business (Class B) Root
|
2314 |
-
===============================
|
2315 |
-
-----BEGIN CERTIFICATE-----
|
2316 |
-
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
2317 |
-
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
2318 |
-
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
2319 |
-
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
2320 |
-
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
2321 |
-
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
2322 |
-
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
2323 |
-
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
2324 |
-
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
2325 |
-
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
2326 |
-
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
2327 |
-
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
2328 |
-
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
2329 |
-
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
2330 |
-
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
2331 |
-
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
2332 |
-
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
2333 |
-
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
2334 |
-
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
2335 |
-
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
2336 |
-
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
2337 |
-
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
2338 |
-
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
2339 |
-
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
2340 |
-
-----END CERTIFICATE-----
|
2341 |
-
|
2342 |
-
NetLock Express (Class C) Root
|
2343 |
-
==============================
|
2344 |
-
-----BEGIN CERTIFICATE-----
|
2345 |
-
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
2346 |
-
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
2347 |
-
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
2348 |
-
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
2349 |
-
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
2350 |
-
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
2351 |
-
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
2352 |
-
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
2353 |
-
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
2354 |
-
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
2355 |
-
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
2356 |
-
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
2357 |
-
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
2358 |
-
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
2359 |
-
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
2360 |
-
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
2361 |
-
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
2362 |
-
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
2363 |
-
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
2364 |
-
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
2365 |
-
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
2366 |
-
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
2367 |
-
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
2368 |
-
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
2369 |
-
-----END CERTIFICATE-----
|
2370 |
-
|
2371 |
-
XRamp Global CA Root
|
2372 |
-
====================
|
2373 |
-
-----BEGIN CERTIFICATE-----
|
2374 |
-
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
2375 |
-
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
2376 |
-
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
2377 |
-
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
2378 |
-
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
2379 |
-
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
2380 |
-
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
2381 |
-
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
2382 |
-
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
2383 |
-
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
2384 |
-
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
2385 |
-
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
2386 |
-
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
2387 |
-
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
2388 |
-
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
2389 |
-
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
2390 |
-
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
2391 |
-
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
2392 |
-
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
2393 |
-
-----END CERTIFICATE-----
|
2394 |
-
|
2395 |
-
Go Daddy Class 2 CA
|
2396 |
-
===================
|
2397 |
-
-----BEGIN CERTIFICATE-----
|
2398 |
-
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
2399 |
-
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
2400 |
-
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
2401 |
-
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
2402 |
-
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
2403 |
-
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
2404 |
-
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
2405 |
-
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
2406 |
-
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
2407 |
-
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
2408 |
-
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
2409 |
-
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
2410 |
-
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
2411 |
-
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
2412 |
-
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
2413 |
-
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
2414 |
-
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
2415 |
-
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
2416 |
-
vZ8=
|
2417 |
-
-----END CERTIFICATE-----
|
2418 |
-
|
2419 |
-
Starfield Class 2 CA
|
2420 |
-
====================
|
2421 |
-
-----BEGIN CERTIFICATE-----
|
2422 |
-
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
2423 |
-
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
2424 |
-
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
2425 |
-
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
2426 |
-
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
2427 |
-
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
2428 |
-
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
2429 |
-
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
2430 |
-
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
2431 |
-
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
2432 |
-
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
2433 |
-
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
2434 |
-
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
2435 |
-
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
2436 |
-
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
2437 |
-
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
2438 |
-
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
2439 |
-
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
2440 |
-
QBFGmh95DmK/D5fs4C8fF5Q=
|
2441 |
-
-----END CERTIFICATE-----
|
2442 |
-
|
2443 |
-
StartCom Ltd.
|
2444 |
-
=============
|
2445 |
-
-----BEGIN CERTIFICATE-----
|
2446 |
-
MIIFFjCCBH+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgT
|
2447 |
-
BklzcmFlbDEOMAwGA1UEBxMFRWlsYXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xGjAYBgNVBAsT
|
2448 |
-
EUNBIEF1dGhvcml0eSBEZXAuMSkwJwYDVQQDEyBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
2449 |
-
cml0eTEhMB8GCSqGSIb3DQEJARYSYWRtaW5Ac3RhcnRjb20ub3JnMB4XDTA1MDMxNzE3Mzc0OFoX
|
2450 |
-
DTM1MDMxMDE3Mzc0OFowgbAxCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxDjAMBgNVBAcT
|
2451 |
-
BUVpbGF0MRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMRowGAYDVQQLExFDQSBBdXRob3JpdHkgRGVw
|
2452 |
-
LjEpMCcGA1UEAxMgRnJlZSBTU0wgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxITAfBgkqhkiG9w0B
|
2453 |
-
CQEWEmFkbWluQHN0YXJ0Y29tLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7YRgACOe
|
2454 |
-
yEpRKSfeOqE5tWmrCbIvNP1h3D3TsM+x18LEwrHkllbEvqoUDufMOlDIOmKdw6OsWXuO7lUaHEe+
|
2455 |
-
o5c5s7XvIywI6Nivcy+5yYPo7QAPyHWlLzRMGOh2iCNJitu27Wjaw7ViKUylS7eYtAkUEKD4/mJ2
|
2456 |
-
IhULpNYILzUCAwEAAaOCAjwwggI4MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgHmMB0GA1Ud
|
2457 |
-
DgQWBBQcicOWzL3+MtUNjIExtpidjShkjTCB3QYDVR0jBIHVMIHSgBQcicOWzL3+MtUNjIExtpid
|
2458 |
-
jShkjaGBtqSBszCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgTBklzcmFlbDEOMAwGA1UEBxMFRWls
|
2459 |
-
YXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xGjAYBgNVBAsTEUNBIEF1dGhvcml0eSBEZXAuMSkw
|
2460 |
-
JwYDVQQDEyBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS
|
2461 |
-
YWRtaW5Ac3RhcnRjb20ub3JnggEAMB0GA1UdEQQWMBSBEmFkbWluQHN0YXJ0Y29tLm9yZzAdBgNV
|
2462 |
-
HRIEFjAUgRJhZG1pbkBzdGFydGNvbS5vcmcwEQYJYIZIAYb4QgEBBAQDAgAHMC8GCWCGSAGG+EIB
|
2463 |
-
DQQiFiBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAyBglghkgBhvhCAQQEJRYjaHR0
|
2464 |
-
cDovL2NlcnQuc3RhcnRjb20ub3JnL2NhLWNybC5jcmwwKAYJYIZIAYb4QgECBBsWGWh0dHA6Ly9j
|
2465 |
-
ZXJ0LnN0YXJ0Y29tLm9yZy8wOQYJYIZIAYb4QgEIBCwWKmh0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9y
|
2466 |
-
Zy9pbmRleC5waHA/YXBwPTExMTANBgkqhkiG9w0BAQQFAAOBgQBscSXhnjSRIe/bbL0BCFaPiNhB
|
2467 |
-
OlP1ct8nV0t2hPdopP7rPwl+KLhX6h/BquL/lp9JmeaylXOWxkjHXo0Hclb4g4+fd68p00UOpO6w
|
2468 |
-
NnQt8M2YI3s3S9r+UZjEHjQ8iP2ZO1CnwYszx8JSFhKVU2Ui77qLzmLbcCOxgN8aIDjnfg==
|
2469 |
-
-----END CERTIFICATE-----
|
2470 |
-
|
2471 |
-
StartCom Certification Authority
|
2472 |
-
================================
|
2473 |
-
-----BEGIN CERTIFICATE-----
|
2474 |
-
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
2475 |
-
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
2476 |
-
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
2477 |
-
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
2478 |
-
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
2479 |
-
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
2480 |
-
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
2481 |
-
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
2482 |
-
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
2483 |
-
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
2484 |
-
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
2485 |
-
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
2486 |
-
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
2487 |
-
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
2488 |
-
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
2489 |
-
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
2490 |
-
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
2491 |
-
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
2492 |
-
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
2493 |
-
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
2494 |
-
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
2495 |
-
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
2496 |
-
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
2497 |
-
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
2498 |
-
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
2499 |
-
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
2500 |
-
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
2501 |
-
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
2502 |
-
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
2503 |
-
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
2504 |
-
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
2505 |
-
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
2506 |
-
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
2507 |
-
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
2508 |
-
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
2509 |
-
g14=
|
2510 |
-
-----END CERTIFICATE-----
|
2511 |
-
|
2512 |
-
Taiwan GRCA
|
2513 |
-
===========
|
2514 |
-
-----BEGIN CERTIFICATE-----
|
2515 |
-
MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
|
2516 |
-
EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
|
2517 |
-
DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
|
2518 |
-
dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
|
2519 |
-
ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
|
2520 |
-
w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
|
2521 |
-
BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
|
2522 |
-
1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
|
2523 |
-
htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
|
2524 |
-
J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
|
2525 |
-
Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
|
2526 |
-
B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
|
2527 |
-
O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
|
2528 |
-
lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
|
2529 |
-
HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
|
2530 |
-
09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
|
2531 |
-
TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
|
2532 |
-
Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
|
2533 |
-
Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
|
2534 |
-
D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
|
2535 |
-
DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
|
2536 |
-
Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
|
2537 |
-
7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
|
2538 |
-
CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
|
2539 |
-
+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
|
2540 |
-
-----END CERTIFICATE-----
|
2541 |
-
|
2542 |
-
Firmaprofesional Root CA
|
2543 |
-
========================
|
2544 |
-
-----BEGIN CERTIFICATE-----
|
2545 |
-
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
2546 |
-
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
2547 |
-
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
2548 |
-
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
2549 |
-
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
2550 |
-
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
2551 |
-
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
2552 |
-
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
2553 |
-
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
2554 |
-
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
2555 |
-
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
2556 |
-
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
2557 |
-
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
2558 |
-
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
2559 |
-
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
2560 |
-
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
2561 |
-
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
2562 |
-
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
2563 |
-
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
2564 |
-
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
2565 |
-
-----END CERTIFICATE-----
|
2566 |
-
|
2567 |
-
Wells Fargo Root CA
|
2568 |
-
===================
|
2569 |
-
-----BEGIN CERTIFICATE-----
|
2570 |
-
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
2571 |
-
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
2572 |
-
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
2573 |
-
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
2574 |
-
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
2575 |
-
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
2576 |
-
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
2577 |
-
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
2578 |
-
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
2579 |
-
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
2580 |
-
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
2581 |
-
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
2582 |
-
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
2583 |
-
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
2584 |
-
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
2585 |
-
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
2586 |
-
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
2587 |
-
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
2588 |
-
-----END CERTIFICATE-----
|
2589 |
-
|
2590 |
-
Swisscom Root CA 1
|
2591 |
-
==================
|
2592 |
-
-----BEGIN CERTIFICATE-----
|
2593 |
-
MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
|
2594 |
-
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
|
2595 |
-
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
|
2596 |
-
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
2597 |
-
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
|
2598 |
-
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
|
2599 |
-
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
|
2600 |
-
NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
|
2601 |
-
AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
|
2602 |
-
b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
|
2603 |
-
7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
|
2604 |
-
cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
|
2605 |
-
WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
|
2606 |
-
haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
|
2607 |
-
MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
|
2608 |
-
HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
|
2609 |
-
BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
|
2610 |
-
MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
|
2611 |
-
jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
|
2612 |
-
MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
|
2613 |
-
VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
|
2614 |
-
vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
|
2615 |
-
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
|
2616 |
-
1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
|
2617 |
-
nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
|
2618 |
-
x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
|
2619 |
-
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
2620 |
-
-----END CERTIFICATE-----
|
2621 |
-
|
2622 |
-
DigiCert Assured ID Root CA
|
2623 |
-
===========================
|
2624 |
-
-----BEGIN CERTIFICATE-----
|
2625 |
-
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
2626 |
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
2627 |
-
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
2628 |
-
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
2629 |
-
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
2630 |
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
2631 |
-
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
2632 |
-
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
2633 |
-
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
2634 |
-
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
2635 |
-
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
2636 |
-
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
2637 |
-
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
2638 |
-
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
2639 |
-
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
2640 |
-
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
2641 |
-
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
2642 |
-
-----END CERTIFICATE-----
|
2643 |
-
|
2644 |
-
DigiCert Global Root CA
|
2645 |
-
=======================
|
2646 |
-
-----BEGIN CERTIFICATE-----
|
2647 |
-
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
2648 |
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
2649 |
-
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
2650 |
-
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
2651 |
-
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
2652 |
-
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
2653 |
-
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
2654 |
-
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
2655 |
-
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
2656 |
-
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
2657 |
-
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
2658 |
-
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
2659 |
-
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
2660 |
-
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
2661 |
-
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
2662 |
-
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
2663 |
-
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
2664 |
-
-----END CERTIFICATE-----
|
2665 |
-
|
2666 |
-
DigiCert High Assurance EV Root CA
|
2667 |
-
==================================
|
2668 |
-
-----BEGIN CERTIFICATE-----
|
2669 |
-
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
2670 |
-
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
2671 |
-
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
2672 |
-
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
2673 |
-
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
2674 |
-
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
2675 |
-
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
2676 |
-
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
2677 |
-
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
2678 |
-
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
2679 |
-
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
2680 |
-
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
2681 |
-
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
2682 |
-
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
2683 |
-
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
2684 |
-
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
2685 |
-
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
2686 |
-
-----END CERTIFICATE-----
|
2687 |
-
|
2688 |
-
Certplus Class 2 Primary CA
|
2689 |
-
===========================
|
2690 |
-
-----BEGIN CERTIFICATE-----
|
2691 |
-
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
2692 |
-
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
2693 |
-
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
2694 |
-
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
2695 |
-
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
2696 |
-
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
2697 |
-
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
2698 |
-
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
2699 |
-
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
2700 |
-
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
2701 |
-
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
2702 |
-
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
2703 |
-
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
2704 |
-
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
2705 |
-
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
2706 |
-
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
2707 |
-
l7+ijrRU
|
2708 |
-
-----END CERTIFICATE-----
|
2709 |
-
|
2710 |
-
DST Root CA X3
|
2711 |
-
==============
|
2712 |
-
-----BEGIN CERTIFICATE-----
|
2713 |
-
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
2714 |
-
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
2715 |
-
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
2716 |
-
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
2717 |
-
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
2718 |
-
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
2719 |
-
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
2720 |
-
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
2721 |
-
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
2722 |
-
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
2723 |
-
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
2724 |
-
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
2725 |
-
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
2726 |
-
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
2727 |
-
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
2728 |
-
-----END CERTIFICATE-----
|
2729 |
-
|
2730 |
-
DST ACES CA X6
|
2731 |
-
==============
|
2732 |
-
-----BEGIN CERTIFICATE-----
|
2733 |
-
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
2734 |
-
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
2735 |
-
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
2736 |
-
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
2737 |
-
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2738 |
-
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
2739 |
-
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
2740 |
-
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
2741 |
-
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
2742 |
-
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
2743 |
-
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
2744 |
-
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
2745 |
-
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
2746 |
-
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
2747 |
-
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
2748 |
-
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
2749 |
-
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
2750 |
-
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
2751 |
-
oKfN5XozNmr6mis=
|
2752 |
-
-----END CERTIFICATE-----
|
2753 |
-
|
2754 |
-
TURKTRUST Certificate Services Provider Root 1
|
2755 |
-
==============================================
|
2756 |
-
-----BEGIN CERTIFICATE-----
|
2757 |
-
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
2758 |
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
2759 |
-
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
2760 |
-
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
2761 |
-
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
2762 |
-
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
2763 |
-
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
2764 |
-
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2765 |
-
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
2766 |
-
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
2767 |
-
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
2768 |
-
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
2769 |
-
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
2770 |
-
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
2771 |
-
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
2772 |
-
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
2773 |
-
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
2774 |
-
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
2775 |
-
-----END CERTIFICATE-----
|
2776 |
-
|
2777 |
-
TURKTRUST Certificate Services Provider Root 2
|
2778 |
-
==============================================
|
2779 |
-
-----BEGIN CERTIFICATE-----
|
2780 |
-
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
2781 |
-
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
2782 |
-
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
2783 |
-
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
2784 |
-
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
2785 |
-
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
2786 |
-
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
2787 |
-
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
2788 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
2789 |
-
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
2790 |
-
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
2791 |
-
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
2792 |
-
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
2793 |
-
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
2794 |
-
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
2795 |
-
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
2796 |
-
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
2797 |
-
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
2798 |
-
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
2799 |
-
UrbnBEI=
|
2800 |
-
-----END CERTIFICATE-----
|
2801 |
-
|
2802 |
-
SwissSign Platinum CA - G2
|
2803 |
-
==========================
|
2804 |
-
-----BEGIN CERTIFICATE-----
|
2805 |
-
MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT
|
2806 |
-
BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw
|
2807 |
-
HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM
|
2808 |
-
U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ
|
2809 |
-
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu
|
2810 |
-
669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF
|
2811 |
-
eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne
|
2812 |
-
WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo
|
2813 |
-
j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6
|
2814 |
-
8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T
|
2815 |
-
aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy
|
2816 |
-
domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D
|
2817 |
-
+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV
|
2818 |
-
CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
|
2819 |
-
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv
|
2820 |
-
zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW
|
2821 |
-
IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1
|
2822 |
-
Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3
|
2823 |
-
NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4
|
2824 |
-
U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8
|
2825 |
-
KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl
|
2826 |
-
9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B
|
2827 |
-
aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs
|
2828 |
-
OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY
|
2829 |
-
Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci
|
2830 |
-
IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g==
|
2831 |
-
-----END CERTIFICATE-----
|
2832 |
-
|
2833 |
-
SwissSign Gold CA - G2
|
2834 |
-
======================
|
2835 |
-
-----BEGIN CERTIFICATE-----
|
2836 |
-
MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
|
2837 |
-
EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
|
2838 |
-
MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
|
2839 |
-
c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
|
2840 |
-
AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
|
2841 |
-
t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
|
2842 |
-
jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
|
2843 |
-
vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
|
2844 |
-
ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
|
2845 |
-
AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
|
2846 |
-
jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
|
2847 |
-
peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
|
2848 |
-
7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
|
2849 |
-
GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
|
2850 |
-
AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
|
2851 |
-
OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
|
2852 |
-
L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
|
2853 |
-
5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
|
2854 |
-
44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
|
2855 |
-
Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
|
2856 |
-
Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
|
2857 |
-
mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
|
2858 |
-
vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
|
2859 |
-
KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
|
2860 |
-
NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
|
2861 |
-
viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
|
2862 |
-
-----END CERTIFICATE-----
|
2863 |
-
|
2864 |
-
SwissSign Silver CA - G2
|
2865 |
-
========================
|
2866 |
-
-----BEGIN CERTIFICATE-----
|
2867 |
-
MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
|
2868 |
-
BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
|
2869 |
-
DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
|
2870 |
-
aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
|
2871 |
-
9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
|
2872 |
-
N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
|
2873 |
-
+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
|
2874 |
-
6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
|
2875 |
-
MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
|
2876 |
-
qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
|
2877 |
-
FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
|
2878 |
-
ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
|
2879 |
-
celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
|
2880 |
-
CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
|
2881 |
-
BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
|
2882 |
-
tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
|
2883 |
-
cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
|
2884 |
-
4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
|
2885 |
-
kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
|
2886 |
-
3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
|
2887 |
-
/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
|
2888 |
-
DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
|
2889 |
-
e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
|
2890 |
-
WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
|
2891 |
-
DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
|
2892 |
-
DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
|
2893 |
-
-----END CERTIFICATE-----
|
2894 |
-
|
2895 |
-
GeoTrust Primary Certification Authority
|
2896 |
-
========================================
|
2897 |
-
-----BEGIN CERTIFICATE-----
|
2898 |
-
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
2899 |
-
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
2900 |
-
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
2901 |
-
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
2902 |
-
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2903 |
-
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
2904 |
-
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
2905 |
-
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
2906 |
-
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
2907 |
-
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
2908 |
-
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
2909 |
-
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
2910 |
-
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
2911 |
-
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
2912 |
-
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
2913 |
-
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
2914 |
-
-----END CERTIFICATE-----
|
2915 |
-
|
2916 |
-
thawte Primary Root CA
|
2917 |
-
======================
|
2918 |
-
-----BEGIN CERTIFICATE-----
|
2919 |
-
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
2920 |
-
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2921 |
-
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2922 |
-
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
2923 |
-
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
2924 |
-
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
2925 |
-
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
2926 |
-
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
2927 |
-
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
2928 |
-
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
2929 |
-
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
2930 |
-
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
2931 |
-
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
2932 |
-
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
2933 |
-
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
2934 |
-
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
2935 |
-
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
2936 |
-
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
2937 |
-
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
2938 |
-
-----END CERTIFICATE-----
|
2939 |
-
|
2940 |
-
VeriSign Class 3 Public Primary Certification Authority - G5
|
2941 |
-
============================================================
|
2942 |
-
-----BEGIN CERTIFICATE-----
|
2943 |
-
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
2944 |
-
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2945 |
-
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2946 |
-
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
2947 |
-
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
2948 |
-
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
2949 |
-
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
2950 |
-
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
2951 |
-
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2952 |
-
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
2953 |
-
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
2954 |
-
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
2955 |
-
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
2956 |
-
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
2957 |
-
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
2958 |
-
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
2959 |
-
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
2960 |
-
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
2961 |
-
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
2962 |
-
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
2963 |
-
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
2964 |
-
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
2965 |
-
-----END CERTIFICATE-----
|
2966 |
-
|
2967 |
-
SecureTrust CA
|
2968 |
-
==============
|
2969 |
-
-----BEGIN CERTIFICATE-----
|
2970 |
-
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
2971 |
-
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
2972 |
-
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
2973 |
-
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
2974 |
-
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
2975 |
-
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
2976 |
-
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
2977 |
-
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
2978 |
-
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
2979 |
-
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
2980 |
-
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
2981 |
-
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2982 |
-
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
2983 |
-
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
2984 |
-
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
2985 |
-
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
2986 |
-
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
2987 |
-
-----END CERTIFICATE-----
|
2988 |
-
|
2989 |
-
Secure Global CA
|
2990 |
-
================
|
2991 |
-
-----BEGIN CERTIFICATE-----
|
2992 |
-
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
2993 |
-
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
2994 |
-
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
2995 |
-
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
2996 |
-
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
2997 |
-
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
2998 |
-
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
2999 |
-
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
3000 |
-
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
3001 |
-
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
3002 |
-
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
3003 |
-
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
3004 |
-
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
3005 |
-
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
3006 |
-
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
3007 |
-
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
3008 |
-
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
3009 |
-
-----END CERTIFICATE-----
|
3010 |
-
|
3011 |
-
COMODO Certification Authority
|
3012 |
-
==============================
|
3013 |
-
-----BEGIN CERTIFICATE-----
|
3014 |
-
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
3015 |
-
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
3016 |
-
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
3017 |
-
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
3018 |
-
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
3019 |
-
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3020 |
-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
3021 |
-
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
3022 |
-
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
3023 |
-
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
3024 |
-
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
3025 |
-
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
3026 |
-
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
3027 |
-
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
3028 |
-
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
3029 |
-
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
3030 |
-
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
3031 |
-
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
3032 |
-
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
3033 |
-
-----END CERTIFICATE-----
|
3034 |
-
|
3035 |
-
DigiNotar Root CA
|
3036 |
-
=================
|
3037 |
-
-----BEGIN CERTIFICATE-----
|
3038 |
-
MIIFijCCA3KgAwIBAgIQDHbanJEMTiye/hXQWJM8TDANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQG
|
3039 |
-
EwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90YXIgUm9vdCBDQTEgMB4G
|
3040 |
-
CSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwHhcNMDcwNTE2MTcxOTM2WhcNMjUwMzMxMTgx
|
3041 |
-
OTIxWjBfMQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90
|
3042 |
-
YXIgUm9vdCBDQTEgMB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwggIiMA0GCSqGSIb3
|
3043 |
-
DQEBAQUAA4ICDwAwggIKAoICAQCssFjBAL3YIQgLK5r+blYwBZ8bd5AQQVzDDYcRd46B8cp86Yxq
|
3044 |
-
7Th0Nbva3/m7wAk3tJZzgX0zGpg595NvlX89ubF1h7pRSOiLcD6VBMXYtsMW2YiwsYcdcNqGtA8U
|
3045 |
-
i3rPENF0NqISe3eGSnnme98CEWilToauNFibJBN4ViIlHgGLS1Fx+4LMWZZpiFpoU8W5DQI3y0u8
|
3046 |
-
ZkqQfioLBQftFl9VkHXYRskbg+IIvvEjzJkd1ioPgyAVWCeCLvriIsJJsbkBgWqdbZ1Ad2h2TiEq
|
3047 |
-
bYRAhU52mXyC8/O3AlnUJgEbjt+tUwbRrhjd4rI6y9eIOI6sWym5GdOY+RgDz0iChmYLG2kPyes4
|
3048 |
-
iHomGgVMktck1JbyrFIto0fVUvY//s6EBnCmqj6i8rZWNBhXouSBbefK8GrTx5FrAoNBfBXva5pk
|
3049 |
-
XuPQPOWx63tdhvvL5ndJzaNl3Pe5nLjkC1+Tz8wwGjIczhxjlaX56uF0i57pK6kwe6AYHw4YC+Vb
|
3050 |
-
qdPRbB4HZ4+RS6mKvNJmqpMBiLKR+jFc1abBUggJzQpjotMipuih2TkGl/VujQKQjBR7P4DNG5y6
|
3051 |
-
xFhyI6+2Vp/GekIzKQc/gsnmHwUNzUwoNovTyD4cxojvXu6JZOkd69qJfjKmadHdzIif0dDJZiHc
|
3052 |
-
BmfFlHqabWJMfczgZICynkeOowIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
3053 |
-
AwIBBjAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wDQYJKoZIhvcNAQEFBQADggIBADsC
|
3054 |
-
jcs8MOhuoK3yc7NfniUTBAXT9uOLuwt5zlPe5JbF0a9zvNXD0EBVfEB/zRtfCdXyfJ9oHbtdzno5
|
3055 |
-
wozWmHvFg1Wo1X1AyuAe94leY12hE8JdiraKfADzI8PthV9xdvBoY6pFITlIYXg23PFDk9Qlx/KA
|
3056 |
-
ZeFTAnVR/Ho67zerhChXDNjU1JlWbOOi/lmEtDHoM/hklJRRl6s5xUvt2t2AC298KQ3EjopyDedT
|
3057 |
-
FLJgQT2EkTFoPSdE2+Xe9PpjRchMPpj1P0G6Tss3DbpmmPHdy59c91Q2gmssvBNhl0L4eLvMyKKf
|
3058 |
-
yvBovWsdst+Nbwed2o5nx0ceyrm/KkKRt2NTZvFCo+H0Wk1Ya7XkpDOtXHAd3ODy63MUkZoDweoA
|
3059 |
-
ZbwH/M8SESIsrqC9OuCiKthZ6SnTGDWkrBFfGbW1G/8iSlzGeuQX7yCpp/Q/rYqnmgQlnQ7KN+ZQ
|
3060 |
-
/YxCKQSa7LnPS3K94gg2ryMvYuXKAdNw23yCIywWMQzGNgeQerEfZ1jEO1hZibCMjFCz2IbLaKPE
|
3061 |
-
CudpSyDOwR5WS5WpI2jYMNjD67BVUc3l/Su49bsRn1NU9jQZjHkJNsphFyUXC4KYcwx3dMPVDceo
|
3062 |
-
EkzHp1RxRy4sGn3J4ys7SN4nhKdjNrN9j6BkOSQNPXuHr2ZcdBtLc7LljPCGmbjlxd+Ewbfr
|
3063 |
-
-----END CERTIFICATE-----
|
3064 |
-
|
3065 |
-
Network Solutions Certificate Authority
|
3066 |
-
=======================================
|
3067 |
-
-----BEGIN CERTIFICATE-----
|
3068 |
-
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
3069 |
-
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
3070 |
-
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
3071 |
-
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
3072 |
-
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
3073 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
3074 |
-
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
3075 |
-
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
3076 |
-
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
3077 |
-
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
3078 |
-
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
3079 |
-
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
3080 |
-
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
3081 |
-
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
3082 |
-
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
3083 |
-
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
3084 |
-
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
3085 |
-
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
3086 |
-
-----END CERTIFICATE-----
|
3087 |
-
|
3088 |
-
WellsSecure Public Root Certificate Authority
|
3089 |
-
=============================================
|
3090 |
-
-----BEGIN CERTIFICATE-----
|
3091 |
-
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
3092 |
-
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
3093 |
-
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
3094 |
-
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
3095 |
-
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
3096 |
-
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
3097 |
-
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
3098 |
-
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
3099 |
-
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
3100 |
-
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
3101 |
-
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
3102 |
-
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
3103 |
-
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
3104 |
-
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
3105 |
-
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
3106 |
-
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
3107 |
-
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
3108 |
-
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
3109 |
-
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
3110 |
-
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
3111 |
-
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
3112 |
-
tylv2G0xffX8oRAHh84vWdw+WNs=
|
3113 |
-
-----END CERTIFICATE-----
|
1 |
+
##
|
2 |
+
## cacert.pem-foo -- Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Converted at: Sat Aug 23 21:39:56 2008 UTC
|
5 |
+
##
|
6 |
+
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
+
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
+
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
+
## '/mozilla/security/nss/lib/ckfw/builtins/certdata.txt'
|
10 |
+
##
|
11 |
+
## It contains the certificates in PEM format and therefore
|
12 |
+
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
+
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
+
## Just configure this file as the SSLCACertificateFile.
|
15 |
+
##
|
16 |
+
|
17 |
+
# ***** BEGIN LICENSE BLOCK *****
|
18 |
+
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
19 |
+
#
|
20 |
+
# The contents of this file are subject to the Mozilla Public License Version
|
21 |
+
# 1.1 (the "License"); you may not use this file except in compliance with
|
22 |
+
# the License. You may obtain a copy of the License at
|
23 |
+
# http://www.mozilla.org/MPL/
|
24 |
+
#
|
25 |
+
# Software distributed under the License is distributed on an "AS IS" basis,
|
26 |
+
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
27 |
+
# for the specific language governing rights and limitations under the
|
28 |
+
# License.
|
29 |
+
#
|
30 |
+
# The Original Code is the Netscape security libraries.
|
31 |
+
#
|
32 |
+
# The Initial Developer of the Original Code is
|
33 |
+
# Netscape Communications Corporation.
|
34 |
+
# Portions created by the Initial Developer are Copyright (C) 1994-2000
|
35 |
+
# the Initial Developer. All Rights Reserved.
|
36 |
+
#
|
37 |
+
# Contributor(s):
|
38 |
+
#
|
39 |
+
# Alternatively, the contents of this file may be used under the terms of
|
40 |
+
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
41 |
+
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
42 |
+
# in which case the provisions of the GPL or the LGPL are applicable instead
|
43 |
+
# of those above. If you wish to allow use of your version of this file only
|
44 |
+
# under the terms of either the GPL or the LGPL, and not to allow others to
|
45 |
+
# use your version of this file under the terms of the MPL, indicate your
|
46 |
+
# decision by deleting the provisions above and replace them with the notice
|
47 |
+
# and other provisions required by the GPL or the LGPL. If you do not delete
|
48 |
+
# the provisions above, a recipient may use your version of this file under
|
49 |
+
# the terms of any one of the MPL, the GPL or the LGPL.
|
50 |
+
#
|
51 |
+
# ***** END LICENSE BLOCK *****
|
52 |
+
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.49 $ $Date: 2008/08/14 18:15:56 $
|
53 |
+
|
54 |
+
Verisign/RSA Secure Server CA
|
55 |
+
=============================
|
56 |
+
-----BEGIN CERTIFICATE-----
|
57 |
+
MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
58 |
+
IDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy
|
59 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVow
|
60 |
+
XzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQL
|
61 |
+
EyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUA
|
62 |
+
A4GJADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII0haGN1Xp
|
63 |
+
sSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphIuR2nKRoTLkoRWZweFdVJ
|
64 |
+
VCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZIhvcNAQECBQADfgBl3X7hsuyw4jrg7HFG
|
65 |
+
mhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2
|
66 |
+
qUtN8iD3zV9/ZHuO3ABc1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
|
67 |
+
-----END CERTIFICATE-----
|
68 |
+
|
69 |
+
GTE CyberTrust Root CA
|
70 |
+
======================
|
71 |
+
-----BEGIN CERTIFICATE-----
|
72 |
+
MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
73 |
+
Q29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRydXN0IFJvb3QwHhcNOTYwMjIzMjMwMTAw
|
74 |
+
WhcNMDYwMjIzMjM1OTAwWjBFMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9u
|
75 |
+
MRwwGgYDVQQDExNHVEUgQ3liZXJUcnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
|
76 |
+
gQC45k+625h8cXyvRLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8KDPufpz+iCWaEVh43KRuH
|
77 |
+
6X4MypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPwKfWVWgkWYXcKIiXUT0Wqx73llt/51KiOQswk
|
78 |
+
wB6RJ0q1bQaAYznEol44AwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBABKzdcZfHeFhVYAA1IFLezEP
|
79 |
+
I2PnPfMD+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWlIjeaY8JIILTbcuPI9tl8vrGvU9oUtCG4
|
80 |
+
1tWW4/5ODFlitppK+ULdjG+BqXH/9ApybW1EDp3zdHSo1TRJ6V6e6bR64eVaH4QwnNOfpSXY
|
81 |
+
-----END CERTIFICATE-----
|
82 |
+
|
83 |
+
GTE CyberTrust Global Root
|
84 |
+
==========================
|
85 |
+
-----BEGIN CERTIFICATE-----
|
86 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
87 |
+
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
88 |
+
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
89 |
+
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
90 |
+
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
91 |
+
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
92 |
+
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
93 |
+
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
94 |
+
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
95 |
+
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
96 |
+
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
97 |
+
-----END CERTIFICATE-----
|
98 |
+
|
99 |
+
Thawte Personal Basic CA
|
100 |
+
========================
|
101 |
+
-----BEGIN CERTIFICATE-----
|
102 |
+
MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
103 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
|
104 |
+
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMY
|
105 |
+
VGhhd3RlIFBlcnNvbmFsIEJhc2ljIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0
|
106 |
+
aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpB
|
107 |
+
MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhh
|
108 |
+
d3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
|
109 |
+
ITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBDQTEoMCYGCSqGSIb3DQEJARYZcGVyc29u
|
110 |
+
YWwtYmFzaWNAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+C
|
111 |
+
FeZIlDWmWr5vQvoPR+53dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJ
|
112 |
+
l+A1OFdKwPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7G1sY
|
113 |
+
0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAt4plrsD16
|
114 |
+
iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7c8a914phXAPjLSeoF+CEhULcXpvG
|
115 |
+
t7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN
|
116 |
+
92NWod8isQ==
|
117 |
+
-----END CERTIFICATE-----
|
118 |
+
|
119 |
+
Thawte Personal Premium CA
|
120 |
+
==========================
|
121 |
+
-----BEGIN CERTIFICATE-----
|
122 |
+
MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
123 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
|
124 |
+
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMa
|
125 |
+
VGhhd3RlIFBlcnNvbmFsIFByZW1pdW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1p
|
126 |
+
dW1AdGhhd3RlLmNvbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQG
|
127 |
+
EwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoT
|
128 |
+
EVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlz
|
129 |
+
aW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJlbWl1bSBDQTEqMCgGCSqGSIb3DQEJARYb
|
130 |
+
cGVyc29uYWwtcHJlbWl1bUB0aGF3dGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ
|
131 |
+
Ztn4B0TPuYwu8KHvE0VsBd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ
|
132 |
+
8/JE2dWIEt12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYDZicR
|
133 |
+
FTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GB
|
134 |
+
AGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIHb4Vnjt4rueIXsDqg8A6iAJrf8xQV
|
135 |
+
brvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBhKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+W
|
136 |
+
jS9Q2wfD6h+rM+D1KzGJ
|
137 |
+
-----END CERTIFICATE-----
|
138 |
+
|
139 |
+
Thawte Personal Freemail CA
|
140 |
+
===========================
|
141 |
+
-----BEGIN CERTIFICATE-----
|
142 |
+
MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
143 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3Vs
|
144 |
+
dGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMb
|
145 |
+
VGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVl
|
146 |
+
bWFpbEB0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNV
|
147 |
+
BAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE
|
148 |
+
ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
149 |
+
aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJ
|
150 |
+
ARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
|
151 |
+
gYEA1GnX1LCUZFtx6UfYDFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6W
|
152 |
+
ZBrCFG5ErHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVquzgk
|
153 |
+
CGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF
|
154 |
+
AAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjPMPuoSpaKH2JCI4wXD/S6ZJwXrEcp
|
155 |
+
352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK
|
156 |
+
/qarigd1iwzdUYRr5PjRzneigQ==
|
157 |
+
-----END CERTIFICATE-----
|
158 |
+
|
159 |
+
Thawte Server CA
|
160 |
+
================
|
161 |
+
-----BEGIN CERTIFICATE-----
|
162 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
163 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
164 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
165 |
+
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
166 |
+
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
167 |
+
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
168 |
+
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
169 |
+
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
170 |
+
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
171 |
+
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
172 |
+
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
173 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
174 |
+
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
175 |
+
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
176 |
+
-----END CERTIFICATE-----
|
177 |
+
|
178 |
+
Thawte Premium Server CA
|
179 |
+
========================
|
180 |
+
-----BEGIN CERTIFICATE-----
|
181 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
182 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
183 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
184 |
+
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
185 |
+
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
186 |
+
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
187 |
+
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
188 |
+
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
189 |
+
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
190 |
+
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
191 |
+
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
192 |
+
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
193 |
+
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
194 |
+
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
195 |
+
UCemDaYj+bvLpgcUQg==
|
196 |
+
-----END CERTIFICATE-----
|
197 |
+
|
198 |
+
Equifax Secure CA
|
199 |
+
=================
|
200 |
+
-----BEGIN CERTIFICATE-----
|
201 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
202 |
+
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
203 |
+
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
204 |
+
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
205 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
206 |
+
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
207 |
+
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
208 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
209 |
+
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
210 |
+
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
211 |
+
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
212 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
213 |
+
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
214 |
+
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
215 |
+
70+sB3c4
|
216 |
+
-----END CERTIFICATE-----
|
217 |
+
|
218 |
+
ABAecom (sub., Am. Bankers Assn.) Root CA
|
219 |
+
=========================================
|
220 |
+
-----BEGIN CERTIFICATE-----
|
221 |
+
MIIDtTCCAp2gAwIBAgIRANAeQJAAAEZSAAAAAQAAAAQwDQYJKoZIhvcNAQEFBQAwgYkxCzAJBgNV
|
222 |
+
BAYTAlVTMQswCQYDVQQIEwJEQzETMBEGA1UEBxMKV2FzaGluZ3RvbjEXMBUGA1UEChMOQUJBLkVD
|
223 |
+
T00sIElOQy4xGTAXBgNVBAMTEEFCQS5FQ09NIFJvb3QgQ0ExJDAiBgkqhkiG9w0BCQEWFWFkbWlu
|
224 |
+
QGRpZ3NpZ3RydXN0LmNvbTAeFw05OTA3MTIxNzMzNTNaFw0wOTA3MDkxNzMzNTNaMIGJMQswCQYD
|
225 |
+
VQQGEwJVUzELMAkGA1UECBMCREMxEzARBgNVBAcTCldhc2hpbmd0b24xFzAVBgNVBAoTDkFCQS5F
|
226 |
+
Q09NLCBJTkMuMRkwFwYDVQQDExBBQkEuRUNPTSBSb290IENBMSQwIgYJKoZIhvcNAQkBFhVhZG1p
|
227 |
+
bkBkaWdzaWd0cnVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx0xHgeVVD
|
228 |
+
BwhMywVCAOINg0Y95JO6tgbTDVm9PsHOQ2cBiiGo77zM0KLMsFWWU4RmBQDaREmA2FQKpSWGlO1j
|
229 |
+
Vv9wbKOhGdJ4vmgqRF4vz8wYXke8OrFGPR7wuSw0X4x8TAgpnUBV6zx9g9618PeKgw6hTLQ6pbNf
|
230 |
+
WiKX7BmbwQVo/ea3qZGULOR4SCQaJRk665WcOQqKz0Ky8BzVX/tr7WhWezkscjiw7pOp03t3POtx
|
231 |
+
A6k4ShZsiSrK2jMTecJVjO2cu/LLWxD4LmE1xilMKtAqY9FlWbT4zfn0AIS2V0KFnTKo+SpU+/94
|
232 |
+
Qby9cSj0u5C8/5Y0BONFnqFGKECBAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8CAQgwDQYJKoZI
|
233 |
+
hvcNAQEFBQADggEBAARvJYbk5pYntNlCwNDJALF/VD6Hsm0kqS8Kfv2kRLD4VAe9G52dyntQJHsR
|
234 |
+
W0mjpr8SdNWJt7cvmGQlFLdh6X9ggGvTZOirvRrWUfrAtF13Gn9kCF55xgVM8XrdTX3O5kh7VNJh
|
235 |
+
koHWG9YA8A6eKHegTYjHInYZw8eeG6Z3ePhfm1bR8PIXrI6dWeYf/le22V7hXZ9F7GFoGUHhsiAm
|
236 |
+
/lowdiT/QHI8eZ98IkirRs3bs4Ysj78FQdPB4xTjQRcm0HyncUwZ6EoPclgxfexgeqMiKL0ZJGA/
|
237 |
+
O4dzwGvky663qyVDslUte6sGDnVdNOVdc22esnVApVnJTzFxiNmIf1Q=
|
238 |
+
-----END CERTIFICATE-----
|
239 |
+
|
240 |
+
Digital Signature Trust Co. Global CA 1
|
241 |
+
=======================================
|
242 |
+
-----BEGIN CERTIFICATE-----
|
243 |
+
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
244 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
245 |
+
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
246 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
247 |
+
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
248 |
+
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
249 |
+
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
250 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
251 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
252 |
+
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
253 |
+
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
254 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
255 |
+
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
256 |
+
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
257 |
+
RbyhkwS7hp86W0N6w4pl
|
258 |
+
-----END CERTIFICATE-----
|
259 |
+
|
260 |
+
Digital Signature Trust Co. Global CA 3
|
261 |
+
=======================================
|
262 |
+
-----BEGIN CERTIFICATE-----
|
263 |
+
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
264 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
265 |
+
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
266 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
267 |
+
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
268 |
+
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
269 |
+
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
270 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
271 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
272 |
+
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
273 |
+
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
274 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
275 |
+
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
276 |
+
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
277 |
+
mPnHfxsb1gYgAlihw6ID
|
278 |
+
-----END CERTIFICATE-----
|
279 |
+
|
280 |
+
Digital Signature Trust Co. Global CA 2
|
281 |
+
=======================================
|
282 |
+
-----BEGIN CERTIFICATE-----
|
283 |
+
MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGpMQswCQYDVQQGEwJ1
|
284 |
+
czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0
|
285 |
+
YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBS
|
286 |
+
b290Q0EgWDExITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDExODE4
|
287 |
+
NTVaFw0wODExMjgxODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UE
|
288 |
+
BxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjER
|
289 |
+
MA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0BCQEW
|
290 |
+
EmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANLGJrbn
|
291 |
+
pT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdfWvnTLnUv2Chi0ZMv/E3Uq4flCMeZ55I/db3rJbQVwZsZ
|
292 |
+
PdJEjdd0IG03Ao9pk1uKxBmd9LIO/BZsubEFkoPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGA
|
293 |
+
vqPYUrBEzUNKcI5YhZXhTizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F5X5y
|
294 |
+
P4WdlGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMvOnNn7pTKBBMFYgZw
|
295 |
+
I7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAojeyP2n714Z5
|
296 |
+
VEkxlTMr89EJFEliYIalsBHiUMIdBlc+LegzZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2
|
297 |
+
vAd5ZWRzfdd5ynvVWlHG4VMElo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX
|
298 |
+
8ngvYzZAOONGDx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn86Oawde3uPclwx12q
|
299 |
+
gUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsTF7ANUkz+/m9c4pFuHf2kYtdo+o56T9II
|
300 |
+
2pPc8JIRetDccpMMc5NihWjQ9A==
|
301 |
+
-----END CERTIFICATE-----
|
302 |
+
|
303 |
+
Digital Signature Trust Co. Global CA 4
|
304 |
+
=======================================
|
305 |
+
-----BEGIN CERTIFICATE-----
|
306 |
+
MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGpMQswCQYDVQQGEwJ1
|
307 |
+
czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0
|
308 |
+
YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBS
|
309 |
+
b290Q0EgWDIxITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAyMjQ2
|
310 |
+
MTZaFw0wODExMjcyMjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UE
|
311 |
+
BxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjER
|
312 |
+
MA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0BCQEW
|
313 |
+
EmNhQGRpZ3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANx18IzA
|
314 |
+
dZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbVp9oaBBg5kkp4o4HC9Xd6ULRw/5qrxsfKboNPQpj7Jgva
|
315 |
+
3G3WqZlVUmfpKAOS3OWwBZoPFflrWXJW8vo5/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9
|
316 |
+
kVySVGkl5WJp3OXuAFK9MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi3sOP
|
317 |
+
17ihYqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+QVCvbK4iNC7Va26D
|
318 |
+
unm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAtTYOXeFhKFoR
|
319 |
+
ZcA/gwN5Tb4opgsHAlKFzfiR0BBstWogWxyQ2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT
|
320 |
+
4EOvkTvRyyzYdFQ6HE3K1GjNI3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV
|
321 |
+
6YyDfFk/xPEL553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8PzGn0EdzMzkbzE5q
|
322 |
+
10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30sPDst2yC7S8xmUJMqbINuBVd8d+6ybVK
|
323 |
+
1GSYsyapMMj9puyrliGtf8J4tg==
|
324 |
+
-----END CERTIFICATE-----
|
325 |
+
|
326 |
+
Verisign Class 1 Public Primary Certification Authority
|
327 |
+
=======================================================
|
328 |
+
-----BEGIN CERTIFICATE-----
|
329 |
+
MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVT
|
330 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
331 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTla
|
332 |
+
MF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3Mg
|
333 |
+
MSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEF
|
334 |
+
AAOBjQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0NH8xlbgyw
|
335 |
+
0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR4k5FVmkfeAKA2txHkSm7
|
336 |
+
NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATANBgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf
|
337 |
+
7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZoEWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnx
|
338 |
+
giJduLHdgSOjeyUVRjB5FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0A
|
339 |
+
NACY89FxlA==
|
340 |
+
-----END CERTIFICATE-----
|
341 |
+
|
342 |
+
Verisign Class 2 Public Primary Certification Authority
|
343 |
+
=======================================================
|
344 |
+
-----BEGIN CERTIFICATE-----
|
345 |
+
MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
346 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmltYXJ5
|
347 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
348 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAy
|
349 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
350 |
+
A4GNADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyhYGt+eSz6
|
351 |
+
Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7FYCTXOvnzAhsPz6zSvz/
|
352 |
+
S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBAIobK/o5wXTX
|
353 |
+
XtgZZKJYSi034DNHD6zt96rbHuSLBlxgJ8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUY
|
354 |
+
YAS/QoD90KioHgE796Ncr6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2
|
355 |
+
lw0Xd8rY
|
356 |
+
-----END CERTIFICATE-----
|
357 |
+
|
358 |
+
Verisign Class 3 Public Primary Certification Authority
|
359 |
+
=======================================================
|
360 |
+
-----BEGIN CERTIFICATE-----
|
361 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
362 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
363 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
364 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
365 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
366 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
367 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
368 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
369 |
+
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
370 |
+
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
371 |
+
Tqj/ZA1k
|
372 |
+
-----END CERTIFICATE-----
|
373 |
+
|
374 |
+
Verisign Class 1 Public Primary Certification Authority - G2
|
375 |
+
============================================================
|
376 |
+
-----BEGIN CERTIFICATE-----
|
377 |
+
MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
378 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
379 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
380 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
381 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
382 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
383 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
384 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
385 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
|
386 |
+
k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
|
387 |
+
WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
|
388 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
|
389 |
+
XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
|
390 |
+
lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
|
391 |
+
-----END CERTIFICATE-----
|
392 |
+
|
393 |
+
Verisign Class 2 Public Primary Certification Authority - G2
|
394 |
+
============================================================
|
395 |
+
-----BEGIN CERTIFICATE-----
|
396 |
+
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
|
397 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
398 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
399 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
400 |
+
c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
|
401 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
402 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
403 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
404 |
+
c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
|
405 |
+
nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
|
406 |
+
wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
|
407 |
+
ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
|
408 |
+
1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
|
409 |
+
LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
|
410 |
+
-----END CERTIFICATE-----
|
411 |
+
|
412 |
+
Verisign Class 3 Public Primary Certification Authority - G2
|
413 |
+
============================================================
|
414 |
+
-----BEGIN CERTIFICATE-----
|
415 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
416 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
417 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
418 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
419 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
420 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
421 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
422 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
423 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
424 |
+
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
425 |
+
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
426 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
427 |
+
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
428 |
+
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
429 |
+
-----END CERTIFICATE-----
|
430 |
+
|
431 |
+
Verisign Class 4 Public Primary Certification Authority - G2
|
432 |
+
============================================================
|
433 |
+
-----BEGIN CERTIFICATE-----
|
434 |
+
MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
435 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
|
436 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
437 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
438 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
439 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
|
440 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
441 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
442 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4
|
443 |
+
xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDH
|
444 |
+
qGKB3FtKqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQAB
|
445 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGIL4LcY/oCRaxF
|
446 |
+
WdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0ycyfYaT5DdPauxYma51N86Xv2S/PB
|
447 |
+
ZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRPT8qAkbYp
|
448 |
+
-----END CERTIFICATE-----
|
449 |
+
|
450 |
+
GlobalSign Root CA
|
451 |
+
==================
|
452 |
+
-----BEGIN CERTIFICATE-----
|
453 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
454 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
455 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
456 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
457 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
458 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
459 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
460 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
461 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
462 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
463 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
464 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
465 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
466 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
467 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
468 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
469 |
+
-----END CERTIFICATE-----
|
470 |
+
|
471 |
+
GlobalSign Root CA - R2
|
472 |
+
=======================
|
473 |
+
-----BEGIN CERTIFICATE-----
|
474 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
475 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
476 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
477 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
478 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
479 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
480 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
481 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
482 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
483 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
484 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
485 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
486 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
487 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
488 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
489 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
490 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
491 |
+
-----END CERTIFICATE-----
|
492 |
+
|
493 |
+
ValiCert Class 1 VA
|
494 |
+
===================
|
495 |
+
-----BEGIN CERTIFICATE-----
|
496 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
497 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
498 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
499 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
500 |
+
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
501 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
502 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
503 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
504 |
+
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
505 |
+
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
506 |
+
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
507 |
+
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
508 |
+
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
509 |
+
Orf1LXLI
|
510 |
+
-----END CERTIFICATE-----
|
511 |
+
|
512 |
+
ValiCert Class 2 VA
|
513 |
+
===================
|
514 |
+
-----BEGIN CERTIFICATE-----
|
515 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
516 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
517 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
518 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
519 |
+
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
520 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
521 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
522 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
523 |
+
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
524 |
+
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
525 |
+
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
526 |
+
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
527 |
+
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
528 |
+
W9ViH0Pd
|
529 |
+
-----END CERTIFICATE-----
|
530 |
+
|
531 |
+
RSA Root Certificate 1
|
532 |
+
======================
|
533 |
+
-----BEGIN CERTIFICATE-----
|
534 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
535 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
536 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
537 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
538 |
+
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
539 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
540 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
541 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
542 |
+
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
543 |
+
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
544 |
+
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
545 |
+
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
546 |
+
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
547 |
+
on+jjBXu
|
548 |
+
-----END CERTIFICATE-----
|
549 |
+
|
550 |
+
Verisign Class 1 Public Primary Certification Authority - G3
|
551 |
+
============================================================
|
552 |
+
-----BEGIN CERTIFICATE-----
|
553 |
+
MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
554 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
555 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
556 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
557 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
558 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
559 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
560 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
|
561 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
562 |
+
ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
|
563 |
+
bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
|
564 |
+
rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
|
565 |
+
Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
|
566 |
+
FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
567 |
+
q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
|
568 |
+
y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
|
569 |
+
ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
|
570 |
+
a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
|
571 |
+
D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
|
572 |
+
-----END CERTIFICATE-----
|
573 |
+
|
574 |
+
Verisign Class 2 Public Primary Certification Authority - G3
|
575 |
+
============================================================
|
576 |
+
-----BEGIN CERTIFICATE-----
|
577 |
+
MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
|
578 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
|
579 |
+
azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
|
580 |
+
b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
|
581 |
+
aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
|
582 |
+
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
583 |
+
c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
584 |
+
aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
|
585 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
586 |
+
AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
|
587 |
+
tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
|
588 |
+
C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
|
589 |
+
0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
|
590 |
+
Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
|
591 |
+
JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
|
592 |
+
0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
|
593 |
+
sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
|
594 |
+
JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
|
595 |
+
GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
|
596 |
+
-----END CERTIFICATE-----
|
597 |
+
|
598 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
599 |
+
============================================================
|
600 |
+
-----BEGIN CERTIFICATE-----
|
601 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
602 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
603 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
604 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
605 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
606 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
607 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
608 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
609 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
610 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
611 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
612 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
613 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
614 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
615 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
616 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
617 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
618 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
619 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
620 |
+
-----END CERTIFICATE-----
|
621 |
+
|
622 |
+
Verisign Class 4 Public Primary Certification Authority - G3
|
623 |
+
============================================================
|
624 |
+
-----BEGIN CERTIFICATE-----
|
625 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
626 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
627 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
628 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
629 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
630 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
631 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
632 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
633 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
634 |
+
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
635 |
+
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
636 |
+
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
637 |
+
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
638 |
+
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
639 |
+
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
640 |
+
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
641 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
642 |
+
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
643 |
+
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
644 |
+
-----END CERTIFICATE-----
|
645 |
+
|
646 |
+
Entrust.net Secure Server CA
|
647 |
+
============================
|
648 |
+
-----BEGIN CERTIFICATE-----
|
649 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
650 |
+
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
651 |
+
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
652 |
+
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
653 |
+
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
654 |
+
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
655 |
+
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
656 |
+
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
657 |
+
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
658 |
+
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
659 |
+
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
660 |
+
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
661 |
+
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
662 |
+
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
663 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
664 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
665 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
666 |
+
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
667 |
+
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
668 |
+
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
669 |
+
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
670 |
+
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
671 |
+
-----END CERTIFICATE-----
|
672 |
+
|
673 |
+
Entrust.net Secure Personal CA
|
674 |
+
==============================
|
675 |
+
-----BEGIN CERTIFICATE-----
|
676 |
+
MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMCVVMxFDASBgNV
|
677 |
+
BAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5uZXQvQ2xpZW50X0NBX0luZm8v
|
678 |
+
Q1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlhYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1
|
679 |
+
c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9u
|
680 |
+
IEF1dGhvcml0eTAeFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJV
|
681 |
+
UzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRf
|
682 |
+
Q0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMpIDE5
|
683 |
+
OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRp
|
684 |
+
ZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdv
|
685 |
+
kHvkGf9FozTC28GoT/Bo6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGp
|
686 |
+
OZ5V+Pux5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zmAqTm
|
687 |
+
T173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSCARkwggEVMIHkoIHh
|
688 |
+
oIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3
|
689 |
+
dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBs
|
690 |
+
aWFiLjElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50
|
691 |
+
cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg
|
692 |
+
KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNVHRAEJDAigA8x
|
693 |
+
OTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU
|
694 |
+
xPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYEFMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1Ud
|
695 |
+
EwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K
|
696 |
+
8ddmAwWePvrqHEa7pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6h
|
697 |
+
URzzwy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/aEkP/TOYG
|
698 |
+
JqibGapEPHayXOw=
|
699 |
+
-----END CERTIFICATE-----
|
700 |
+
|
701 |
+
Entrust.net Premium 2048 Secure Server CA
|
702 |
+
=========================================
|
703 |
+
-----BEGIN CERTIFICATE-----
|
704 |
+
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
705 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
706 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
707 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
708 |
+
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
709 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
710 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
711 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
712 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
713 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
714 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
715 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
716 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
717 |
+
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
718 |
+
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
719 |
+
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
720 |
+
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
721 |
+
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
722 |
+
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
723 |
+
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
724 |
+
-----END CERTIFICATE-----
|
725 |
+
|
726 |
+
Baltimore CyberTrust Root
|
727 |
+
=========================
|
728 |
+
-----BEGIN CERTIFICATE-----
|
729 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
730 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
731 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
732 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
733 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
734 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
735 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
736 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
737 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
738 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
739 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
740 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
741 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
742 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
743 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
744 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
745 |
+
-----END CERTIFICATE-----
|
746 |
+
|
747 |
+
Equifax Secure Global eBusiness CA
|
748 |
+
==================================
|
749 |
+
-----BEGIN CERTIFICATE-----
|
750 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
751 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
752 |
+
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
753 |
+
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
754 |
+
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
755 |
+
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
756 |
+
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
757 |
+
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
758 |
+
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
759 |
+
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
760 |
+
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
761 |
+
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
762 |
+
-----END CERTIFICATE-----
|
763 |
+
|
764 |
+
Equifax Secure eBusiness CA 1
|
765 |
+
=============================
|
766 |
+
-----BEGIN CERTIFICATE-----
|
767 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
768 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
769 |
+
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
770 |
+
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
771 |
+
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
772 |
+
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
773 |
+
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
774 |
+
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
775 |
+
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
776 |
+
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
777 |
+
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
778 |
+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
779 |
+
-----END CERTIFICATE-----
|
780 |
+
|
781 |
+
Equifax Secure eBusiness CA 2
|
782 |
+
=============================
|
783 |
+
-----BEGIN CERTIFICATE-----
|
784 |
+
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
785 |
+
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
786 |
+
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
787 |
+
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
788 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
789 |
+
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
790 |
+
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
791 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
792 |
+
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
793 |
+
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
794 |
+
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
795 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
796 |
+
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
797 |
+
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
798 |
+
V+GRMOrN
|
799 |
+
-----END CERTIFICATE-----
|
800 |
+
|
801 |
+
Visa International Global Root 2
|
802 |
+
================================
|
803 |
+
-----BEGIN CERTIFICATE-----
|
804 |
+
MIIDgDCCAmigAwIBAgICAx4wDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMCVVMxDTALBgNVBAoT
|
805 |
+
BFZJU0ExLzAtBgNVBAsTJlZpc2EgSW50ZXJuYXRpb25hbCBTZXJ2aWNlIEFzc29jaWF0aW9uMRIw
|
806 |
+
EAYDVQQDEwlHUCBSb290IDIwHhcNMDAwODE2MjI1MTAwWhcNMjAwODE1MjM1OTAwWjBhMQswCQYD
|
807 |
+
VQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZp
|
808 |
+
Y2UgQXNzb2NpYXRpb24xEjAQBgNVBAMTCUdQIFJvb3QgMjCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
809 |
+
ADCCAQoCggEBAKkBcLWqxEDwq2omYXkZAPy/mzdZDK9vZBv42pWUJGkzEXDK41Z0ohdXZFwgBuHW
|
810 |
+
73G3O/erwWnQSaSxBNf0V2KJXLB1LRckaeNCYOTudNargFbYiCjh+20i/SN8RnNPflRzHqgsVVh1
|
811 |
+
t0zzWkWlAhr62p3DRcMiXvOL8WAp0sdftAw6UYPvMPjU58fy+pmjIlC++QU3o63tmsPm7Igbthkn
|
812 |
+
GziLgE3sucfFicv8GjLtI/C1AVj59o/ghalMCXI5Etuz9c9OYmTaxhkVOmMd6RdVoUwiPDQyRvhl
|
813 |
+
V7or7zaMavrZ2UT0qt2E1w0cslSsMoW0ZA3eQbuxNMYBhjJk1Z8CAwEAAaNCMEAwHQYDVR0OBBYE
|
814 |
+
FJ59SzS/ca3CBfYDdYDOqU8axCRMMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0G
|
815 |
+
CSqGSIb3DQEBBQUAA4IBAQAhpXYUVfmtJ3CPPPTVbMjMCqujmAuKBiPFyWHbmQdpNSYx/scuhMKZ
|
816 |
+
YdQN6X0uEyt8joW2hcdLzzW2LEc9zikv2G+fiRxkk78IvXbQkIqUs38oW26sTTMs7WXcFsziza6k
|
817 |
+
PWKSBpUmv9+55CCmc2rBvveURNZNbyoLaxhNdBA2aGpawWqn3TYpjLgwi08hPwAuVDAHOrqK5MOe
|
818 |
+
yti12HvOdUVmB/RtLdh6yumJivIj2C/LbgA2T/vwLwHMD8AiZfSr4k5hLQOCfZEWtTDVFN5ex5D8
|
819 |
+
ofyrEK9ca3CnB+8phuiyJccg/ybdd+95RBTEvd07xQObdyPsoOy7Wjm1zK0G
|
820 |
+
-----END CERTIFICATE-----
|
821 |
+
|
822 |
+
beTRUSTed Root CA
|
823 |
+
=================
|
824 |
+
-----BEGIN CERTIFICATE-----
|
825 |
+
MIIFLDCCBBSgAwIBAgIEOU99hzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJXVzESMBAGA1UE
|
826 |
+
ChMJYmVUUlVTVGVkMRswGQYDVQQDExJiZVRSVVNUZWQgUm9vdCBDQXMxGjAYBgNVBAMTEWJlVFJV
|
827 |
+
U1RlZCBSb290IENBMB4XDTAwMDYyMDE0MjEwNFoXDTEwMDYyMDEzMjEwNFowWjELMAkGA1UEBhMC
|
828 |
+
V1cxEjAQBgNVBAoTCWJlVFJVU1RlZDEbMBkGA1UEAxMSYmVUUlVTVGVkIFJvb3QgQ0FzMRowGAYD
|
829 |
+
VQQDExFiZVRSVVNUZWQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANS0
|
830 |
+
c3oTCjhVAb6JVuGUntS+WutKNHUbYSnE4a0IYCF4SP+00PpeQY1hRIfo7clY+vyTmt9P6j41ffgz
|
831 |
+
eubx181vSUs9Ty1uDoM6GHh3o8/n9E1z2Jo7Gh2+lVPPIJfCzz4kUmwMjmVZxXH/YgmPqsWPzGCg
|
832 |
+
c0rXOD8Vcr+il7dw6K/ifhYGTPWqZCZyByWtNfwYsSbX2P8ZDoMbjNx4RWc0PfSvHI3kbWvtILNn
|
833 |
+
mrRhyxdviTX/507AMhLn7uzf/5cwdO2NR47rtMNE5qdMf1ZD6Li8tr76g5fmu/vEtpO+GRg+jIG5
|
834 |
+
c4gW9JZDnGdzF5DYCW5jrEq2I8QBoa2k5MUCAwEAAaOCAfgwggH0MA8GA1UdEwEB/wQFMAMBAf8w
|
835 |
+
ggFZBgNVHSAEggFQMIIBTDCCAUgGCisGAQQBsT4BAAAwggE4MIIBAQYIKwYBBQUHAgIwgfQagfFS
|
836 |
+
ZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFu
|
837 |
+
Y2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv
|
838 |
+
ZiB1c2UsIGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudCwgd2hpY2ggY2FuIGJl
|
839 |
+
IGZvdW5kIGF0IGJlVFJVU1RlZCdzIHdlYiBzaXRlLCBodHRwczovL3d3dy5iZVRSVVNUZWQuY29t
|
840 |
+
L3ZhdWx0L3Rlcm1zMDEGCCsGAQUFBwIBFiVodHRwczovL3d3dy5iZVRSVVNUZWQuY29tL3ZhdWx0
|
841 |
+
L3Rlcm1zMDQGA1UdHwQtMCswKaAnoCWkIzAhMRIwEAYDVQQKEwliZVRSVVNUZWQxCzAJBgNVBAYT
|
842 |
+
AldXMB0GA1UdDgQWBBQquZtpLjub2M3eKjEENGvKBxirZzAfBgNVHSMEGDAWgBQquZtpLjub2M3e
|
843 |
+
KjEENGvKBxirZzAOBgNVHQ8BAf8EBAMCAf4wDQYJKoZIhvcNAQEFBQADggEBAHlh26Nebhax6nZR
|
844 |
+
+csVm8tpvuaBa58oH2U+3RGFktToQb9+M70j5/Egv6S0phkBxoyNNXxlpE8JpNbYIxUFE6dDea/b
|
845 |
+
ow6be3ga8wSGWsb2jCBHOElQBp1yZzrwmAOtlmdE/D8QDYZN5AA7KXvOOzuZhmElQITcE2K3+spZ
|
846 |
+
1gMe1lMBzW1MaFVA4e5rxyoAAEiCswoBw2AqDPeCNe5IhpbkdNQ96gFxugR1QKepfzk5mlWXKWWu
|
847 |
+
GVUlBXJH0+gY3Ljpr0NzARJ0o+FcXxVdJPP55PS2Z2cS52QiivalQaYctmBjRYoQtLpGEK5BV2Vs
|
848 |
+
PyMQPyEQWbfkQN0mDCP2qq4=
|
849 |
+
-----END CERTIFICATE-----
|
850 |
+
|
851 |
+
AddTrust Low-Value Services Root
|
852 |
+
================================
|
853 |
+
-----BEGIN CERTIFICATE-----
|
854 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
855 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
856 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
857 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
858 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
859 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
860 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
861 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
862 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
863 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
864 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
865 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
866 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
867 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
868 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
869 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
870 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
871 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
872 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
873 |
+
-----END CERTIFICATE-----
|
874 |
+
|
875 |
+
AddTrust External Root
|
876 |
+
======================
|
877 |
+
-----BEGIN CERTIFICATE-----
|
878 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
879 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
880 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
881 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
882 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
883 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
884 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
885 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
886 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
887 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
888 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
889 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
890 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
891 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
892 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
893 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
894 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
895 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
896 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
897 |
+
-----END CERTIFICATE-----
|
898 |
+
|
899 |
+
AddTrust Public Services Root
|
900 |
+
=============================
|
901 |
+
-----BEGIN CERTIFICATE-----
|
902 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
903 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
904 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
905 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
906 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
907 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
908 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
909 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
910 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
911 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
912 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
913 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
914 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
915 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
916 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
917 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
918 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
919 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
920 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
921 |
+
-----END CERTIFICATE-----
|
922 |
+
|
923 |
+
AddTrust Qualified Certificates Root
|
924 |
+
====================================
|
925 |
+
-----BEGIN CERTIFICATE-----
|
926 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
927 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
928 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
929 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
930 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
931 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
932 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
933 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
934 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
935 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
936 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
937 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
938 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
939 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
940 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
941 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
942 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
943 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
944 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
945 |
+
-----END CERTIFICATE-----
|
946 |
+
|
947 |
+
Verisign Time Stamping Authority CA
|
948 |
+
===================================
|
949 |
+
-----BEGIN CERTIFICATE-----
|
950 |
+
MIIDzTCCAzagAwIBAgIQU2GyYK7bcY6nlLMTM/QHCTANBgkqhkiG9w0BAQUFADCBwTELMAkGA1UE
|
951 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTwwOgYDVQQLEzNDbGFzcyAzIFB1YmxpYyBQ
|
952 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZl
|
953 |
+
cmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlTaWdu
|
954 |
+
IFRydXN0IE5ldHdvcmswHhcNMDAwOTI2MDAwMDAwWhcNMTAwOTI1MjM1OTU5WjCBpTEXMBUGA1UE
|
955 |
+
ChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNV
|
956 |
+
BAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAwMSww
|
957 |
+
KgYDVQQDEyNWZXJpU2lnbiBUaW1lIFN0YW1waW5nIEF1dGhvcml0eSBDQTCBnzANBgkqhkiG9w0B
|
958 |
+
AQEFAAOBjQAwgYkCgYEA0hmdZ8IAIVlizrQJIkRpivglWtvtDbc2fk7gu5Q+kCWHwmFHKdm9VLhj
|
959 |
+
zCx9abQzNvQ3B5rB3UBU/OB4naCTuQk9I1F/RMIUdNsKvsvJMDRAmD7Q1yUQgZS9B0+c1lQn3y6o
|
960 |
+
v8uQjI11S7zi6ESHzeZBCiVu6PQkAsVSD27smHUCAwEAAaOB3zCB3DAPBgNVHRMECDAGAQH/AgEA
|
961 |
+
MEUGA1UdIAQ+MDwwOgYMYIZIAYb4RQEHFwEDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl
|
962 |
+
cmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL2NybC52ZXJpc2lnbi5jb20v
|
963 |
+
cGNhMy5jcmwwCwYDVR0PBAQDAgEGMEIGCCsGAQUFBwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRw
|
964 |
+
Oi8vb2NzcC52ZXJpc2lnbi5jb20vb2NzcC9zdGF0dXMwDQYJKoZIhvcNAQEFBQADgYEAgnBold+2
|
965 |
+
DcIBcBlK0lRWHqzyRUyHuPU163hLBanInTsZIS5wNEqi9YngFXVF5yg3ADQnKeg3S/LvRJdrF1Ea
|
966 |
+
w1adPBqK9kpGRjeM+sv1ZFo4aC4cw+9wzrhGBha/937ntag+RaypJXUie28/sJyU58dzq6wf7iWb
|
967 |
+
wBbtt8pb8BQ=
|
968 |
+
-----END CERTIFICATE-----
|
969 |
+
|
970 |
+
Thawte Time Stamping CA
|
971 |
+
=======================
|
972 |
+
-----BEGIN CERTIFICATE-----
|
973 |
+
MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
974 |
+
DFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG
|
975 |
+
A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg
|
976 |
+
Q0EwHhcNOTcwMTAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNV
|
977 |
+
BAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEd
|
978 |
+
MBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBp
|
979 |
+
bmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+o
|
980 |
+
J9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR5zDWQQD9
|
981 |
+
nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzAR
|
982 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCo
|
983 |
+
uqoEiYbC9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQpgCe
|
984 |
+
d/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZCayJSdM=
|
985 |
+
-----END CERTIFICATE-----
|
986 |
+
|
987 |
+
Entrust.net Global Secure Server CA
|
988 |
+
===================================
|
989 |
+
-----BEGIN CERTIFICATE-----
|
990 |
+
MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChMLRW50cnVzdC5u
|
991 |
+
ZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGluY29ycC4gYnkgcmVmLiAobGlt
|
992 |
+
aXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UE
|
993 |
+
AxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0w
|
994 |
+
MDAyMDQxNzIwMDBaFw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0G
|
995 |
+
A1UECxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlh
|
996 |
+
Yi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRy
|
997 |
+
dXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3
|
998 |
+
DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55l
|
999 |
+
xyKbc+bT3QgON1WqJUaBbL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439P
|
1000 |
+
mrkDQYC2dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4QgEB
|
1001 |
+
BAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoTC0VudHJ1c3QubmV0
|
1002 |
+
MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0
|
1003 |
+
cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMT
|
1004 |
+
MUVudHJ1c3QubmV0IFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNV
|
1005 |
+
BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD
|
1006 |
+
VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1UdDgQWBBTLbMBr
|
1007 |
+
47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w
|
1008 |
+
AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsiad0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbv
|
1009 |
+
H9X07t9WLebKahlzqlO+krNQAraFJnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3
|
1010 |
+
a9kC9n8O6mUE8c1UyrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw==
|
1011 |
+
-----END CERTIFICATE-----
|
1012 |
+
|
1013 |
+
Entrust.net Global Secure Personal CA
|
1014 |
+
=====================================
|
1015 |
+
-----BEGIN CERTIFICATE-----
|
1016 |
+
MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
1017 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
1018 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
1019 |
+
BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcx
|
1020 |
+
NjE2NDBaFw0yMDAyMDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
1021 |
+
d3d3LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
1022 |
+
MCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
1023 |
+
ZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1024 |
+
iQKBgQCTdLS25MVL1qFof2LV7PdRV7NySpj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQl
|
1025 |
+
hK8pK5/jgOLZy93GRUk0iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKkl
|
1026 |
+
Wb1m9fkn5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHdBgNV
|
1027 |
+
HR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUAwPgYDVQQLFDd3
|
1028 |
+
d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUw
|
1029 |
+
IwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5l
|
1030 |
+
dCBDbGllbnQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
1031 |
+
IoAPMjAwMDAyMDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
1032 |
+
MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdFfP4tzrrTfTAM
|
1033 |
+
BgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQF
|
1034 |
+
AAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMShAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xK
|
1035 |
+
p9U1PL6oXOpLu5OOgGarDyn9TS2/GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQ
|
1036 |
+
Gof4T4HHdguEOnKdzmVml64mXg==
|
1037 |
+
-----END CERTIFICATE-----
|
1038 |
+
|
1039 |
+
Entrust Root Certification Authority
|
1040 |
+
====================================
|
1041 |
+
-----BEGIN CERTIFICATE-----
|
1042 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
1043 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
1044 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
1045 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
1046 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
1047 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
1048 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
1049 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
1050 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
1051 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
1052 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
1053 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
1054 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
1055 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
1056 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
1057 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
1058 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
1059 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
1060 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
1061 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
1062 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
1063 |
+
-----END CERTIFICATE-----
|
1064 |
+
|
1065 |
+
AOL Time Warner Root Certification Authority 1
|
1066 |
+
==============================================
|
1067 |
+
-----BEGIN CERTIFICATE-----
|
1068 |
+
MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMxHTAbBgNVBAoT
|
1069 |
+
FEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNhIE9ubGluZSBJbmMuMTcwNQYD
|
1070 |
+
VQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAy
|
1071 |
+
MDUyOTA2MDAwMFoXDTM3MTEyMDE1MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wg
|
1072 |
+
VGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMu
|
1073 |
+
QU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZI
|
1074 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U0pPlLYnKhHw/EEMbjIt8
|
1075 |
+
hFj4JHxIzyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItITuLCxFlpMGK2MKKMCxGZYTVtfu/FsRkG
|
1076 |
+
IBKOQuHfD5YQUqjPnF+VFNivO3ULMSAfRC+iYkGzuxgh28pxPIzstrkNn+9R7017EvILDOGsQI93
|
1077 |
+
f7DKeHEMXRZxcKLXwjqFzQ6axOAAsNUl6twr5JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQI
|
1078 |
+
fHNlIAqhBC4aMqiaILGcLCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEAAaNj
|
1079 |
+
MGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jYPXy+XxIwHwYDVR0j
|
1080 |
+
BBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
|
1081 |
+
A4IBAQCKIBilvrMvtKaEAEAwKfq0FHNMeUWn9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u
|
1082 |
+
0FIy2VkyvNp5ctZ7CegCgTXTCt8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77Bf
|
1083 |
+
WgDrvq2g+EQFZ7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oTLW4jYYehY0KswsuX
|
1084 |
+
n2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCzvhGbRWeDhhmH05i9CBoWH1iCC+GWaQVL
|
1085 |
+
juyDUTEH1dSf/1l7qG6Fz9NLqUmwX7A5KGgOc90lmt4S
|
1086 |
+
-----END CERTIFICATE-----
|
1087 |
+
|
1088 |
+
AOL Time Warner Root Certification Authority 2
|
1089 |
+
==============================================
|
1090 |
+
-----BEGIN CERTIFICATE-----
|
1091 |
+
MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMCVVMxHTAbBgNVBAoT
|
1092 |
+
FEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNBbWVyaWNhIE9ubGluZSBJbmMuMTcwNQYD
|
1093 |
+
VQQDEy5BT0wgVGltZSBXYXJuZXIgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAy
|
1094 |
+
MDUyOTA2MDAwMFoXDTM3MDkyODIzNDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRBT0wg
|
1095 |
+
VGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUgSW5jLjE3MDUGA1UEAxMu
|
1096 |
+
QU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZI
|
1097 |
+
hvcNAQEBBQADggIPADCCAgoCggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ7ouZzU9AhqS2TcnZsdw8
|
1098 |
+
TQ2FTBVsRotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilbm2BPJoPRYxJWSXakFsKlnUWsi4SVqBax
|
1099 |
+
7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOYxFSMFkpBd4aVdQxHAWZg/BXxD+r1FHjHDtdugRxev17n
|
1100 |
+
OirYlxcwfACtCJ0zr7iZYYCLqJV+FNwSbKTQ2O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2w
|
1101 |
+
TPDaRrbqJS5Gr42whTg0ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fxI2rS
|
1102 |
+
AG2X+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETzkxmlJ85per5n0/xQ
|
1103 |
+
pCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFhEVsVS6kkUfykXPcXnbDS+gfpj1bk
|
1104 |
+
GoxoigTTfFrjnqKhynFbotSg5ymFXQNoKk/SBtc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuW
|
1105 |
+
CpTehTacyH+BCQJJKg71ZDIMgtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1Ex
|
1106 |
+
MVCgyhwn2RAurda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
1107 |
+
FE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaAFE9pbQN+nZ8HGEO8txBO1b+pxCAoMA4G
|
1108 |
+
A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAO/Ouyuguh4X7ZVnnrREUpVe8WJ8kEle7
|
1109 |
+
+z802u6teio0cnAxa8cZmIDJgt43d15Ui47y6mdPyXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRFASbI
|
1110 |
+
5Rq8NEQh3q0l/HYWdyGQgJhXnU7q7C+qPBR7V8F+GBRn7iTGvboVsNIYvbdVgaxTwOjdaRITQrcC
|
1111 |
+
tQVBynlQboIOcXKTRuidDV29rs4prWPVVRaAMCf/drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ
|
1112 |
+
68W/ClTluUI8JPu3B5wwn3la5uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyBM5kYJRF3
|
1113 |
+
p+v9WAksmWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQmy8YJPamTQr5O8t1wswv
|
1114 |
+
ziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xOAU++CrYD062KRffaJ00psUjf5BHklka9
|
1115 |
+
bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT9Y41xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4o
|
1116 |
+
GKQWDzH9OmwjkyB24f0HhdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2
|
1117 |
+
uBOLZ8/5fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg=
|
1118 |
+
-----END CERTIFICATE-----
|
1119 |
+
|
1120 |
+
beTRUSTed Root CA-Baltimore Implementation
|
1121 |
+
==========================================
|
1122 |
+
-----BEGIN CERTIFICATE-----
|
1123 |
+
MIIFajCCBFKgAwIBAgIEPLU9RjANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwliZVRSVVNUZWQx
|
1124 |
+
GzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0Et
|
1125 |
+
QmFsdGltb3JlIEltcGxlbWVudGF0aW9uMB4XDTAyMDQxMTA3Mzg1MVoXDTIyMDQxMTA3Mzg1MVow
|
1126 |
+
ZjESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNV
|
1127 |
+
BAMTKmJlVFJVU1RlZCBSb290IENBLUJhbHRpbW9yZSBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZI
|
1128 |
+
hvcNAQEBBQADggEPADCCAQoCggEBALx+xDmcjOPWHIb/ymKt4H8wRXqOGrO4x/nRNv8i805qX4QQ
|
1129 |
+
+2aBw5R5MdKR4XeOGCrDFN5R9U+jK7wYFuK13XneIviCfsuBH/0nLI/6l2Qijvj/YaOcGx6Sj8Co
|
1130 |
+
Cd8JEey3fTGaGuqDIQY8n7pc/5TqarjDa1U0Tz0yH92BFODEPM2dMPgwqZfT7syj0B9fHBOB1Bir
|
1131 |
+
lNFjw55/NZKeX0Tq7PQiXLfoPX2k+YmpkbIq2eszh+6l/ePazIjmiSZuxyuC0F6dWdsU7JGDBcNe
|
1132 |
+
DsYq0ATdcT0gTlgn/FP7eHgZFLL8kFKJOGJgB7Sg7KxrUNb9uShr71ItOrL/8QFArDcCAwEAAaOC
|
1133 |
+
Ah4wggIaMA8GA1UdEwEB/wQFMAMBAf8wggG1BgNVHSAEggGsMIIBqDCCAaQGDysGAQQBsT4AAAEJ
|
1134 |
+
KIORMTCCAY8wggFIBggrBgEFBQcCAjCCAToaggE2UmVsaWFuY2Ugb24gb3IgdXNlIG9mIHRoaXMg
|
1135 |
+
Q2VydGlmaWNhdGUgY3JlYXRlcyBhbiBhY2tub3dsZWRnbWVudCBhbmQgYWNjZXB0YW5jZSBvZiB0
|
1136 |
+
aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwg
|
1137 |
+
dGhlIENlcnRpZmljYXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IGFuZCB0aGUgUmVseWluZyBQYXJ0
|
1138 |
+
eSBBZ3JlZW1lbnQsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCB0aGUgYmVUUlVTVGVkIHdlYiBzaXRl
|
1139 |
+
LCBodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNfc2VydmljZXMvaW5kZXguaHRtbDBB
|
1140 |
+
BggrBgEFBQcCARY1aHR0cDovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2lu
|
1141 |
+
ZGV4Lmh0bWwwHQYDVR0OBBYEFEU9w6nR3D8kVpgccxiIav+DR+22MB8GA1UdIwQYMBaAFEU9w6nR
|
1142 |
+
3D8kVpgccxiIav+DR+22MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEASZK8o+6s
|
1143 |
+
vfoNyYt5hhwjdrCAWXf82n+0S9/DZEtqTg6t8n1ZdwWtColzsPq8y9yNAIiPpqCy6qxSJ7+hSHyX
|
1144 |
+
EHu67RMdmgduyzFiEuhjA6p9beP4G3YheBufS0OM00mG9htc9i5gFdPp43t1P9ACg9AYgkHNZTfq
|
1145 |
+
jjJ+vWuZXTARyNtIVBw74acT02pIk/c9jH8F6M7ziCpjBLjqflh8AXtb4cV97yHgjQ5dUX2xZ/2j
|
1146 |
+
vTg2xvI4hocalmhgRvsoFEdV4aeADGvi6t9NfJBIoDa9CReJf8Py05yc493EG931t3GzUwWJBtDL
|
1147 |
+
SoDByFOQtTwxiBdQn8nEDovYqAJjDQ==
|
1148 |
+
-----END CERTIFICATE-----
|
1149 |
+
|
1150 |
+
beTRUSTed Root CA - Entrust Implementation
|
1151 |
+
==========================================
|
1152 |
+
-----BEGIN CERTIFICATE-----
|
1153 |
+
MIIGUTCCBTmgAwIBAgIEPLVPQDANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQKEwliZVRSVVNUZWQx
|
1154 |
+
GzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEGA1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0Eg
|
1155 |
+
LSBFbnRydXN0IEltcGxlbWVudGF0aW9uMB4XDTAyMDQxMTA4MjQyN1oXDTIyMDQxMTA4NTQyN1ow
|
1156 |
+
ZjESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAxBgNV
|
1157 |
+
BAMTKmJlVFJVU1RlZCBSb290IENBIC0gRW50cnVzdCBJbXBsZW1lbnRhdGlvbjCCASIwDQYJKoZI
|
1158 |
+
hvcNAQEBBQADggEPADCCAQoCggEBALr0RAOqEmq1Q+xVkrYwfTVXDNvzDSduTPdQqJtOK2/b9a0c
|
1159 |
+
S12zqcH+e0TrW6MFDR/FNCswACnxeECypP869AGIF37m1CbTukzqMvtDd5eHI8XbQ6P1KqNRXuE7
|
1160 |
+
0mVpflUVm3rnafdE4Fe1FehmYA8NA/uCjqPoEXtsvsdjDheT389Lrm5zdeDzqrmkwAkbhepxKYhB
|
1161 |
+
MvnwKg5sCfJ0a2ZsUhMfGLzUPvfYbiCeyv78IZTuEyhL11xeDGbu6bsPwTSxfwh28z0mcMmLJR1i
|
1162 |
+
JAzqHHVOwBLkuhMdMCktVjMFu5dZfsZJT4nXLySotohAtWSSU1Yk5KKghbNekLQSM80CAwEAAaOC
|
1163 |
+
AwUwggMBMIIBtwYDVR0gBIIBrjCCAaowggGmBg8rBgEEAbE+AAACCSiDkTEwggGRMIIBSQYIKwYB
|
1164 |
+
BQUHAgIwggE7GoIBN1JlbGlhbmNlIG9uIG9yIHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNyZWF0
|
1165 |
+
ZXMgYW4gYWNrbm93bGVkZ21lbnQgYW5kIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
1166 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIHRoZSBDZXJ0aWZpY2F0aW9u
|
1167 |
+
IFByYWN0aWNlIFN0YXRlbWVudCBhbmQgdGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50LCB3aGlj
|
1168 |
+
aCBjYW4gYmUgZm91bmQgYXQgdGhlIGJlVFJVU1RlZCB3ZWIgc2l0ZSwgaHR0cHM6Ly93d3cuYmV0
|
1169 |
+
cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1sMEIGCCsGAQUFBwIBFjZodHRw
|
1170 |
+
czovL3d3dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWwwEQYJYIZI
|
1171 |
+
AYb4QgEBBAQDAgAHMIGJBgNVHR8EgYEwfzB9oHugeaR3MHUxEjAQBgNVBAoTCWJlVFJVU1RlZDEb
|
1172 |
+
MBkGA1UECxMSYmVUUlVTVGVkIFJvb3QgQ0FzMTMwMQYDVQQDEypiZVRSVVNUZWQgUm9vdCBDQSAt
|
1173 |
+
IEVudHJ1c3QgSW1wbGVtZW50YXRpb24xDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMjA0
|
1174 |
+
MTEwODI0MjdagQ8yMDIyMDQxMTA4NTQyN1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFH1w5a44
|
1175 |
+
iwY/qhwaj/nPJDCqhIQWMB0GA1UdDgQWBBR9cOWuOIsGP6ocGo/5zyQwqoSEFjAMBgNVHRMEBTAD
|
1176 |
+
AQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEAKrgX
|
1177 |
+
zh8QlOu4mre5X+za95IkrNySO8cgjfKZ5V04ocI07cUTWVwFtStPYZuR+0H8/NU8TZh2BvWBfevd
|
1178 |
+
kObRVlTa4y0MnxEylCIBevZsLHRnBMylj44ss0O1lKLQfelifwa+JwGDnjr9iu6YQ0pr17WXOzq/
|
1179 |
+
T220Y/ozADQuLW2WyXvKmWO6vvT2MKAtmJbpVkQFqUSjYRDrgqFnXbxdJ3Wqiig2KjiS2d2kXgCl
|
1180 |
+
zMx8KSreKJCrt+G2/30lC0DYqjSjLd4H61/OCt3Kfjp9JsFiaDrmLzfzgYYhxKlkqu9FNtEaZnz4
|
1181 |
+
6TfW1mG+oq1I59/mdP7TbX3SJdysYlep9w==
|
1182 |
+
-----END CERTIFICATE-----
|
1183 |
+
|
1184 |
+
beTRUSTed Root CA - RSA Implementation
|
1185 |
+
======================================
|
1186 |
+
-----BEGIN CERTIFICATE-----
|
1187 |
+
MIIFaDCCBFCgAwIBAgIQO1nHe81bV569N1KsdrSqGjANBgkqhkiG9w0BAQUFADBiMRIwEAYDVQQK
|
1188 |
+
EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEvMC0GA1UEAxMmYmVUUlVT
|
1189 |
+
VGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wHhcNMDIwNDExMTExODEzWhcNMjIwNDEy
|
1190 |
+
MTEwNzI1WjBiMRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENB
|
1191 |
+
czEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVtZW50YXRpb24wggEiMA0G
|
1192 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkujQwCY5X0LkGLG9uJIAiv11DpvpPrILnHGhwhRuj
|
1193 |
+
brWqeNluB0s/6d/16uhUoWGKDi9pdRi3DOUUjXFumLhV/AyV0Jtu4S2I1DpAa5LxmZZk3tv/ePTu
|
1194 |
+
lh1HiXzUvrmIdyM6CeYEnm2qXtLIvZpOGd+J6lsOfsPktPDgaTuID0GQ+NRxQyTBjyZLO1bp/4xs
|
1195 |
+
N+lFrYWMU8NghpBKlsmzVLC7F/AcRdnUGxlkVgoZ98zh/4avflherHqQH8koOUV7orbHnB/ahdQh
|
1196 |
+
hlkwk75TMzf270HPM8ercmsl9fNTGwxMLvF1S++gh/f+ihXQbNXL+WhTuXAVE8L1LvtDNXUtAgMB
|
1197 |
+
AAGjggIYMIICFDAMBgNVHRMEBTADAQH/MIIBtQYDVR0gBIIBrDCCAagwggGkBg8rBgEEAbE+AAAD
|
1198 |
+
CSiDkTEwggGPMEEGCCsGAQUFBwIBFjVodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVjdHNf
|
1199 |
+
c2VydmljZXMvaW5kZXguaHRtbDCCAUgGCCsGAQUFBwICMIIBOhqCATZSZWxpYW5jZSBvbiBvciB1
|
1200 |
+
c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBjcmVhdGVzIGFuIGFja25vd2xlZGdtZW50IGFuZCBhY2Nl
|
1201 |
+
cHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlv
|
1202 |
+
bnMgb2YgdXNlLCB0aGUgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1lbnQgYW5kIHRoZSBS
|
1203 |
+
ZWx5aW5nIFBhcnR5IEFncmVlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IHRoZSBiZVRSVVNU
|
1204 |
+
ZWQgd2ViIHNpdGUsIGh0dHA6Ly93d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9p
|
1205 |
+
bmRleC5odG1sMAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAWgBSp7BR++dlDzFMrFK3P9/BZiUHNGTAd
|
1206 |
+
BgNVHQ4EFgQUqewUfvnZQ8xTKxStz/fwWYlBzRkwDQYJKoZIhvcNAQEFBQADggEBANuXsHXqDMTB
|
1207 |
+
mMpWBcCorSZIry0g6IHHtt9DwSwddUvUQo3neqh03GZCWYez9Wlt2ames30cMcH1VOJZJEnl7r05
|
1208 |
+
pmuKmET7m9cqg5c0Lcd9NUwtNLg+DcTsiCevnpL9UGGCqGAHFFPMZRPB9kdEadIxyKbdLrML3kqN
|
1209 |
+
Wz2rDcI1UqJWN8wyiyiFQpyRQHpwKzg21eFzGh/l+n5f3NacOzDq28BbJ1zTcwfBwvNMm2+fG8oe
|
1210 |
+
qqg4MwlYsq78B+g23FW6L09A/nq9BqaBwZMifIYRCgZ3SK41ty8ymmFei74pnykkiFY5LKjSq5YD
|
1211 |
+
WtRIn7lAhAuYaPsBQ9Yb4gmxlxw=
|
1212 |
+
-----END CERTIFICATE-----
|
1213 |
+
|
1214 |
+
RSA Security 2048 v3
|
1215 |
+
====================
|
1216 |
+
-----BEGIN CERTIFICATE-----
|
1217 |
+
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
1218 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
1219 |
+
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
1220 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
1221 |
+
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
1222 |
+
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
1223 |
+
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
1224 |
+
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
1225 |
+
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
1226 |
+
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
1227 |
+
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
1228 |
+
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
1229 |
+
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
1230 |
+
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
1231 |
+
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
1232 |
+
pKnXwiJPZ9d37CAFYd4=
|
1233 |
+
-----END CERTIFICATE-----
|
1234 |
+
|
1235 |
+
RSA Security 1024 v3
|
1236 |
+
====================
|
1237 |
+
-----BEGIN CERTIFICATE-----
|
1238 |
+
MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
1239 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMTAyNCBWMzAeFw0wMTAy
|
1240 |
+
MjIyMTAxNDlaFw0yNjAyMjIyMDAxNDlaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
1241 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAxMDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDV
|
1242 |
+
3f5mCc8kPD6ugU5OisRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dYrIMKo1W1exeQFYRMiu4m
|
1243 |
+
mdxY78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYtbzZUaMjShFbuklNhCbM/OZuoyZu9zp9+1Blq
|
1244 |
+
FikYvtc6adwlWzMaUQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAf
|
1245 |
+
BgNVHSMEGDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAdBgNVHQ4EFgQUxMAcpAeU/c1NAdRU2qUM
|
1246 |
+
X96uBVowDQYJKoZIhvcNAQEFBQADgYEAPy1q4yZDlX2Jl2X7deRyHUZXxGFraZ8SmyzVWujAovBD
|
1247 |
+
leMf6XbN3Ou8k6BlCsdNT1+nr6JGFLkM88y9am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNu
|
1248 |
+
mU4/iXgDmMrzVcydro7BqkWY+o8aoI2II/EVQQ2lRj6RP4vr93E=
|
1249 |
+
-----END CERTIFICATE-----
|
1250 |
+
|
1251 |
+
GeoTrust Global CA
|
1252 |
+
==================
|
1253 |
+
-----BEGIN CERTIFICATE-----
|
1254 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
1255 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
1256 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
1257 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1258 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
1259 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
1260 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
1261 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
1262 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
1263 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
1264 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
1265 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
1266 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
1267 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
1268 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
1269 |
+
Mw==
|
1270 |
+
-----END CERTIFICATE-----
|
1271 |
+
|
1272 |
+
GeoTrust Global CA 2
|
1273 |
+
====================
|
1274 |
+
-----BEGIN CERTIFICATE-----
|
1275 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
1276 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
1277 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
1278 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
1279 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
1280 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
1281 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
1282 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
1283 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
1284 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
1285 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
1286 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
1287 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
1288 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
1289 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
1290 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
1291 |
+
-----END CERTIFICATE-----
|
1292 |
+
|
1293 |
+
GeoTrust Universal CA
|
1294 |
+
=====================
|
1295 |
+
-----BEGIN CERTIFICATE-----
|
1296 |
+
MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
1297 |
+
R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
|
1298 |
+
MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
|
1299 |
+
Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
|
1300 |
+
ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
|
1301 |
+
JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
|
1302 |
+
RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
|
1303 |
+
7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
|
1304 |
+
8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
|
1305 |
+
qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
|
1306 |
+
Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
|
1307 |
+
Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
|
1308 |
+
KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
|
1309 |
+
ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
|
1310 |
+
XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
|
1311 |
+
hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
|
1312 |
+
aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
|
1313 |
+
qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
|
1314 |
+
oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
|
1315 |
+
xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
|
1316 |
+
KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
|
1317 |
+
DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
|
1318 |
+
xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
|
1319 |
+
p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
|
1320 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
1321 |
+
-----END CERTIFICATE-----
|
1322 |
+
|
1323 |
+
GeoTrust Universal CA 2
|
1324 |
+
=======================
|
1325 |
+
-----BEGIN CERTIFICATE-----
|
1326 |
+
MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
1327 |
+
R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
|
1328 |
+
MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
|
1329 |
+
SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
|
1330 |
+
A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
|
1331 |
+
DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
|
1332 |
+
j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
|
1333 |
+
JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
|
1334 |
+
QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
|
1335 |
+
WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
|
1336 |
+
20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
|
1337 |
+
ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
|
1338 |
+
SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
|
1339 |
+
8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
|
1340 |
+
+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
|
1341 |
+
BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
|
1342 |
+
dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
|
1343 |
+
4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
|
1344 |
+
mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
|
1345 |
+
A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
|
1346 |
+
Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
|
1347 |
+
pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
|
1348 |
+
FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
|
1349 |
+
gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
|
1350 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
1351 |
+
-----END CERTIFICATE-----
|
1352 |
+
|
1353 |
+
UTN-USER First-Network Applications
|
1354 |
+
===================================
|
1355 |
+
-----BEGIN CERTIFICATE-----
|
1356 |
+
MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
|
1357 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1358 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
|
1359 |
+
BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
|
1360 |
+
WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
|
1361 |
+
YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
1362 |
+
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
|
1363 |
+
cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
|
1364 |
+
mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
|
1365 |
+
DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
|
1366 |
+
Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
|
1367 |
+
P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
|
1368 |
+
j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
|
1369 |
+
HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
|
1370 |
+
cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
|
1371 |
+
CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
|
1372 |
+
IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
|
1373 |
+
RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
|
1374 |
+
xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
|
1375 |
+
DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
|
1376 |
+
-----END CERTIFICATE-----
|
1377 |
+
|
1378 |
+
America Online Root Certification Authority 1
|
1379 |
+
=============================================
|
1380 |
+
-----BEGIN CERTIFICATE-----
|
1381 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
1382 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
1383 |
+
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
1384 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
1385 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
1386 |
+
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
1387 |
+
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
1388 |
+
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
1389 |
+
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
1390 |
+
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
1391 |
+
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
1392 |
+
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
1393 |
+
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
1394 |
+
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
1395 |
+
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
1396 |
+
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
1397 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
1398 |
+
-----END CERTIFICATE-----
|
1399 |
+
|
1400 |
+
America Online Root Certification Authority 2
|
1401 |
+
=============================================
|
1402 |
+
-----BEGIN CERTIFICATE-----
|
1403 |
+
MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
1404 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
1405 |
+
Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
|
1406 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
1407 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
|
1408 |
+
ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
|
1409 |
+
fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
|
1410 |
+
f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
|
1411 |
+
qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
|
1412 |
+
RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
|
1413 |
+
gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
|
1414 |
+
6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
|
1415 |
+
FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
|
1416 |
+
Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
|
1417 |
+
B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
|
1418 |
+
aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
|
1419 |
+
AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
|
1420 |
+
T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
|
1421 |
+
+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
|
1422 |
+
JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
|
1423 |
+
zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
|
1424 |
+
ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
|
1425 |
+
1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
|
1426 |
+
GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
|
1427 |
+
Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
|
1428 |
+
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
1429 |
+
-----END CERTIFICATE-----
|
1430 |
+
|
1431 |
+
Visa eCommerce Root
|
1432 |
+
===================
|
1433 |
+
-----BEGIN CERTIFICATE-----
|
1434 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
1435 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
1436 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
1437 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
1438 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
1439 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
1440 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
1441 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
1442 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
1443 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
1444 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
1445 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
1446 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
1447 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
1448 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
1449 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
1450 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
1451 |
+
-----END CERTIFICATE-----
|
1452 |
+
|
1453 |
+
TC TrustCenter, Germany, Class 2 CA
|
1454 |
+
===================================
|
1455 |
+
-----BEGIN CERTIFICATE-----
|
1456 |
+
MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
|
1457 |
+
EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
|
1458 |
+
U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
|
1459 |
+
bGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
|
1460 |
+
ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
|
1461 |
+
YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
|
1462 |
+
aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
|
1463 |
+
MiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
|
1464 |
+
hvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLs
|
1465 |
+
qh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5N
|
1466 |
+
u6hLVxa8/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
|
1467 |
+
Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
|
1468 |
+
LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBAIRS+yjf
|
1469 |
+
/x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ2
|
1470 |
+
9ELw+HkuCkhcq8xRT3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
|
1471 |
+
ASZ4smZHcFFk
|
1472 |
+
-----END CERTIFICATE-----
|
1473 |
+
|
1474 |
+
TC TrustCenter, Germany, Class 3 CA
|
1475 |
+
===================================
|
1476 |
+
-----BEGIN CERTIFICATE-----
|
1477 |
+
MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
|
1478 |
+
EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
|
1479 |
+
U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
|
1480 |
+
bGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
|
1481 |
+
ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
|
1482 |
+
YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
|
1483 |
+
aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
|
1484 |
+
MyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
|
1485 |
+
hvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN
|
1486 |
+
2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+7
|
1487 |
+
7uMMfTDWw1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
|
1488 |
+
Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
|
1489 |
+
LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBABY9xs3B
|
1490 |
+
u4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm
|
1491 |
+
5gZOngylerpuw3yCGdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
|
1492 |
+
CdS7kjXvD9s0
|
1493 |
+
-----END CERTIFICATE-----
|
1494 |
+
|
1495 |
+
Certum Root CA
|
1496 |
+
==============
|
1497 |
+
-----BEGIN CERTIFICATE-----
|
1498 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
1499 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
1500 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
1501 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
1502 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
1503 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
1504 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
1505 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
1506 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
1507 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
1508 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
1509 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
1510 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
1511 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
1512 |
+
-----END CERTIFICATE-----
|
1513 |
+
|
1514 |
+
Comodo AAA Services root
|
1515 |
+
========================
|
1516 |
+
-----BEGIN CERTIFICATE-----
|
1517 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
1518 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
1519 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
1520 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
1521 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
1522 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
1523 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
1524 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
1525 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
1526 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
1527 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
1528 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
1529 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
1530 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
1531 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
1532 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
1533 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
1534 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
1535 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
1536 |
+
-----END CERTIFICATE-----
|
1537 |
+
|
1538 |
+
Comodo Secure Services root
|
1539 |
+
===========================
|
1540 |
+
-----BEGIN CERTIFICATE-----
|
1541 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
1542 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
1543 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
1544 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
1545 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
1546 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1547 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
1548 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
1549 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
1550 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
1551 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
1552 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
1553 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
1554 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
1555 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
1556 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
1557 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
1558 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
1559 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
1560 |
+
RR3B7Hzs/Sk=
|
1561 |
+
-----END CERTIFICATE-----
|
1562 |
+
|
1563 |
+
Comodo Trusted Services root
|
1564 |
+
============================
|
1565 |
+
-----BEGIN CERTIFICATE-----
|
1566 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
1567 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
1568 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
1569 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
1570 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
1571 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1572 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
1573 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
1574 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
1575 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
1576 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
1577 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
1578 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
1579 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
1580 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
1581 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
1582 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
1583 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
1584 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
1585 |
+
9y5Xt5hwXsjEeLBi
|
1586 |
+
-----END CERTIFICATE-----
|
1587 |
+
|
1588 |
+
IPS Chained CAs root
|
1589 |
+
====================
|
1590 |
+
-----BEGIN CERTIFICATE-----
|
1591 |
+
MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARwxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1592 |
+
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1593 |
+
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1594 |
+
Qi02MDkyOTQ1MjEzMDEGA1UECxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0
|
1595 |
+
aG9yaXR5MTMwMQYDVQQDEypJUFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1596 |
+
dHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczAeFw0wMTEyMjkwMDUzNThaFw0yNTEy
|
1597 |
+
MjcwMDUzNThaMIIBHDELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJ
|
1598 |
+
QmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwu
|
1599 |
+
MSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMTMwMQYDVQQLEypJ
|
1600 |
+
UFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMzAxBgNVBAMTKklQUyBD
|
1601 |
+
QSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBz
|
1602 |
+
QG1haWwuaXBzLmVzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcVpJJspQgvJhPUOtopKdJ
|
1603 |
+
C7/SMejHT8KGC/po/UNaivNgkjWZOLtNA1IhW/A3mTXhQSCBhYEFcYGdtJUZqV92NC5jNzVXjrQf
|
1604 |
+
Qj8VXOF6wV8TGDIxya2+o8eDZh65nAQTy2nBBt4wBrszo7Uf8I9vzv+W6FS+ZoCua9tBhDaiPQID
|
1605 |
+
AQABo4IEQzCCBD8wHQYDVR0OBBYEFKGtMbH5PuEXpsirNPxShwkeYlJBMIIBTgYDVR0jBIIBRTCC
|
1606 |
+
AUGAFKGtMbH5PuEXpsirNPxShwkeYlJBoYIBJKSCASAwggEcMQswCQYDVQQGEwJFUzESMBAGA1UE
|
1607 |
+
CBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBw
|
1608 |
+
dWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4g
|
1609 |
+
IEItNjA5Mjk0NTIxMzAxBgNVBAsTKklQUyBDQSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9uIEF1
|
1610 |
+
dGhvcml0eTEzMDEGA1UEAxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24gQXV0aG9y
|
1611 |
+
aXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNV
|
1612 |
+
HQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUF
|
1613 |
+
BwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGC
|
1614 |
+
NwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1Ud
|
1615 |
+
EgQTMBGBD2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ2hhaW5lZCBDQSBDZXJ0aWZp
|
1616 |
+
Y2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8v
|
1617 |
+
d3d3Lmlwcy5lcy9pcHMyMDAyLzA3BglghkgBhvhCAQQEKhYoaHR0cDovL3d3dy5pcHMuZXMvaXBz
|
1618 |
+
MjAwMi9pcHMyMDAyQ0FDLmNybDA8BglghkgBhvhCAQMELxYtaHR0cDovL3d3dy5pcHMuZXMvaXBz
|
1619 |
+
MjAwMi9yZXZvY2F0aW9uQ0FDLmh0bWw/MDkGCWCGSAGG+EIBBwQsFipodHRwOi8vd3d3Lmlwcy5l
|
1620 |
+
cy9pcHMyMDAyL3JlbmV3YWxDQUMuaHRtbD8wNwYJYIZIAYb4QgEIBCoWKGh0dHA6Ly93d3cuaXBz
|
1621 |
+
LmVzL2lwczIwMDIvcG9saWN5Q0FDLmh0bWwwbQYDVR0fBGYwZDAuoCygKoYoaHR0cDovL3d3dy5p
|
1622 |
+
cHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0FDLmNybDAyoDCgLoYsaHR0cDovL3d3d2JhY2suaXBzLmVz
|
1623 |
+
L2lwczIwMDIvaXBzMjAwMkNBQy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
|
1624 |
+
Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAERyMJ1WWKJBGyi3leGmGpVfp3hAK+/b
|
1625 |
+
lkr8THFj2XOVvQLiogbHvpcqk4A0hgP63Ng9HgfNHnNDJGD1HWHc3JagvPsd4+cSACczAsDAK1M9
|
1626 |
+
2GsDgaPb1pOVIO/Tln4mkImcJpvNb2ar7QMiRDjMWb2f2/YHogF/JsRj9SVCXmK9
|
1627 |
+
-----END CERTIFICATE-----
|
1628 |
+
|
1629 |
+
IPS CLASE1 root
|
1630 |
+
===============
|
1631 |
+
-----BEGIN CERTIFICATE-----
|
1632 |
+
MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1633 |
+
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1634 |
+
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1635 |
+
Qi02MDkyOTQ1MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1636 |
+
eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqG
|
1637 |
+
SIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAwNTkzOFoXDTI1MTIyNzAwNTkzOFow
|
1638 |
+
ggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
|
1639 |
+
LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoU
|
1640 |
+
Imlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFT
|
1641 |
+
RTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTEgQ2VydGlm
|
1642 |
+
aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkq
|
1643 |
+
hkiG9w0BAQEFAAOBjQAwgYkCgYEA4FEnpwvdr9G5Q1uCN0VWcu+atsIS7ywSzHb5BlmvXSHU0lq4
|
1644 |
+
oNTzav3KaY1mSPd05u42veiWkXWmcSjK5yISMmmwPh5r9FBSYmL9Yzt9fuzuOOpi9GyocY3h6YvJ
|
1645 |
+
P8a1zZRCb92CRTzo3wno7wpVqVZHYUxJZHMQKD/Kvwn/xi8CAwEAAaOCBEowggRGMB0GA1UdDgQW
|
1646 |
+
BBTrsxl588GlHKzcuh9morKbadB4CDCCAUQGA1UdIwSCATswggE3gBTrsxl588GlHKzcuh9morKb
|
1647 |
+
adB4CKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
|
1648 |
+
BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBz
|
1649 |
+
LmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQL
|
1650 |
+
EyVJUFMgQ0EgQ0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0Eg
|
1651 |
+
Q0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
|
1652 |
+
cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMB
|
1653 |
+
BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
|
1654 |
+
BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0R
|
1655 |
+
BBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBBBglghkgB
|
1656 |
+
hvhCAQ0ENBYyQ0xBU0UxIENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5l
|
1657 |
+
cy8wKQYJYIZIAYb4QgECBBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIB
|
1658 |
+
BAQtFitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTEuY3JsMD8GCWCGSAGG
|
1659 |
+
+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25DTEFTRTEuaHRtbD8w
|
1660 |
+
PAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMS5o
|
1661 |
+
dG1sPzA6BglghkgBhvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
|
1662 |
+
RTEuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIw
|
1663 |
+
MDJDTEFTRTEuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy
|
1664 |
+
Q0xBU0UxLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5l
|
1665 |
+
cy8wDQYJKoZIhvcNAQEFBQADgYEAK9Dr/drIyllq2tPMMi7JVBuKYn4VLenZMdMu9Ccj/1urxUq2
|
1666 |
+
ckCuU3T0vAW0xtnIyXf7t/k0f3gA+Nak5FI/LEpjV4F1Wo7ojPsCwJTGKbqz3Bzosq/SLmJbGqmO
|
1667 |
+
DszFV0VRFOlOHIilkfSj945RyKm+hjM+5i9Ibq9UkE6tsSU=
|
1668 |
+
-----END CERTIFICATE-----
|
1669 |
+
|
1670 |
+
IPS CLASE3 root
|
1671 |
+
===============
|
1672 |
+
-----BEGIN CERTIFICATE-----
|
1673 |
+
MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1674 |
+
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1675 |
+
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1676 |
+
Qi02MDkyOTQ1MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1677 |
+
eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqG
|
1678 |
+
SIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMDE0NFoXDTI1MTIyNzAxMDE0NFow
|
1679 |
+
ggESMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
|
1680 |
+
LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzApBgNVBAoU
|
1681 |
+
Imlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAsBgNVBAsTJUlQUyBDQSBDTEFT
|
1682 |
+
RTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLjAsBgNVBAMTJUlQUyBDQSBDTEFTRTMgQ2VydGlm
|
1683 |
+
aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkq
|
1684 |
+
hkiG9w0BAQEFAAOBjQAwgYkCgYEAqxf+DrDGaBtT8FK+n/ra+osTBLsBjzLZH49NzjaY2uQARIwo
|
1685 |
+
2BNEKqRrThckQpzTiKRBgtYj+4vJhuW5qYIF3PHeH+AMmVWY8jjsbJ0gA8DvqqPGZARRLXgNo9Ko
|
1686 |
+
OtYkTOmWehisEyMiG3zoMRGzXwmqMHBxRiVrSXGAK5UBsh8CAwEAAaOCBEowggRGMB0GA1UdDgQW
|
1687 |
+
BBS4k/8uy9wsjqLnev42USGjmFsMNDCCAUQGA1UdIwSCATswggE3gBS4k/8uy9wsjqLnev42USGj
|
1688 |
+
mFsMNKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UE
|
1689 |
+
BxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBz
|
1690 |
+
LmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQL
|
1691 |
+
EyVJUFMgQ0EgQ0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMgQ0Eg
|
1692 |
+
Q0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
|
1693 |
+
cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMB
|
1694 |
+
BggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
|
1695 |
+
BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0R
|
1696 |
+
BBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBBBglghkgB
|
1697 |
+
hvhCAQ0ENBYyQ0xBU0UzIENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5l
|
1698 |
+
cy8wKQYJYIZIAYb4QgECBBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIB
|
1699 |
+
BAQtFitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTMuY3JsMD8GCWCGSAGG
|
1700 |
+
+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25DTEFTRTMuaHRtbD8w
|
1701 |
+
PAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMy5o
|
1702 |
+
dG1sPzA6BglghkgBhvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
|
1703 |
+
RTMuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIw
|
1704 |
+
MDJDTEFTRTMuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAy
|
1705 |
+
Q0xBU0UzLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5l
|
1706 |
+
cy8wDQYJKoZIhvcNAQEFBQADgYEAF2VcmZVDAyevJuXr0LMXI/dDqsfwfewPxqmurpYPdikc4gYt
|
1707 |
+
fibFPPqhwYHOU7BC0ZdXGhd+pFFhxu7pXu8Fuuu9D6eSb9ijBmgpjnn1/7/5p6/ksc7C0YBCJwUE
|
1708 |
+
NPjDfxZ4IwwHJPJGR607VNCv1TGyr33I6unUVtkOE7LFRVA=
|
1709 |
+
-----END CERTIFICATE-----
|
1710 |
+
|
1711 |
+
IPS CLASEA1 root
|
1712 |
+
================
|
1713 |
+
-----BEGIN CERTIFICATE-----
|
1714 |
+
MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1715 |
+
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1716 |
+
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1717 |
+
Qi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1718 |
+
dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
|
1719 |
+
KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNTMyWhcNMjUxMjI3MDEwNTMy
|
1720 |
+
WjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
|
1721 |
+
YTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE
|
1722 |
+
ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENM
|
1723 |
+
QVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENl
|
1724 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8w
|
1725 |
+
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALsw19zQVL01Tp/FTILq0VA8R5j8m2mdd81u4D/u6zJf
|
1726 |
+
X5/S0HnllXNEITLgCtud186Nq1KLK3jgm1t99P1tCeWu4WwdByOgF9H5fahGRpEiqLJpxq339fWU
|
1727 |
+
oTCUvQDMRH/uxJ7JweaPCjbB/SQ9AaD1e+J8eGZDi09Z8pvZ+kmzAgMBAAGjggRTMIIETzAdBgNV
|
1728 |
+
HQ4EFgQUZyaW56G/2LUDnf473P7yiuYV3TAwggFGBgNVHSMEggE9MIIBOYAUZyaW56G/2LUDnf47
|
1729 |
+
3P7yiuYV3TChggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
|
1730 |
+
BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2Vydmlj
|
1731 |
+
ZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0G
|
1732 |
+
A1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQ
|
1733 |
+
UyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
|
1734 |
+
bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsG
|
1735 |
+
AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB
|
1736 |
+
FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
|
1737 |
+
GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC
|
1738 |
+
BglghkgBhvhCAQ0ENRYzQ0xBU0VBMSBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3
|
1739 |
+
dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7Bglg
|
1740 |
+
hkgBhvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmww
|
1741 |
+
QAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2b2NhdGlvbkNMQVNF
|
1742 |
+
QTEuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdh
|
1743 |
+
bENMQVNFQTEuaHRtbD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
|
1744 |
+
cG9saWN5Q0xBU0VBMS5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lw
|
1745 |
+
czIwMDIvaXBzMjAwMkNMQVNFQTEuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz
|
1746 |
+
MjAwMi9pcHMyMDAyQ0xBU0VBMS5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
|
1747 |
+
Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAH66iqyAAIQVCtWYUQxkxZwCWINmyq0e
|
1748 |
+
B81+atqAB98DNEock8RLWCA1NnHtogo1EqWmZaeFaQoO42Hu6r4okzPV7Oi+xNtff6j5YzHIa5bi
|
1749 |
+
KcJboOeXNp13XjFr/tOn2yrb25aLH2betgPAK7N41lUH5Y85UN4HI3LmvSAUS7SG
|
1750 |
+
-----END CERTIFICATE-----
|
1751 |
+
|
1752 |
+
IPS CLASEA3 root
|
1753 |
+
================
|
1754 |
+
-----BEGIN CERTIFICATE-----
|
1755 |
+
MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1756 |
+
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1757 |
+
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1758 |
+
Qi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1759 |
+
dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
|
1760 |
+
KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcNMDExMjI5MDEwNzUwWhcNMjUxMjI3MDEwNzUw
|
1761 |
+
WjCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9u
|
1762 |
+
YTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UE
|
1763 |
+
ChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBTIENBIENM
|
1764 |
+
QVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENl
|
1765 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8w
|
1766 |
+
DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO6AAPYaZC6tasiDsYun7o/ZttvNG7uGBiJ2MwwSbUhW
|
1767 |
+
YdLcgiViL5/SaTBlA0IjWLxH3GvWdV0XPOH/8lhneaDBgbHUVqLyjRGZ/fZ98cfEXgIqmuJKtROK
|
1768 |
+
AP2Md4bm15T1IHUuDky/dMQ/gT6DtKM4Ninn6Cr1jIhBqoCm42zvAgMBAAGjggRTMIIETzAdBgNV
|
1769 |
+
HQ4EFgQUHp9XUEe2YZM50yz82l09BXW3mQIwggFGBgNVHSMEggE9MIIBOYAUHp9XUEe2YZM50yz8
|
1770 |
+
2l09BXW3mQKhggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQ
|
1771 |
+
BgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2Vydmlj
|
1772 |
+
ZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0G
|
1773 |
+
A1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMTJklQ
|
1774 |
+
UyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
|
1775 |
+
bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsG
|
1776 |
+
AQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIB
|
1777 |
+
FQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
|
1778 |
+
GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBC
|
1779 |
+
BglghkgBhvhCAQ0ENRYzQ0xBU0VBMyBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3
|
1780 |
+
dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7Bglg
|
1781 |
+
hkgBhvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmww
|
1782 |
+
QAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmV2b2NhdGlvbkNMQVNF
|
1783 |
+
QTMuaHRtbD8wPQYJYIZIAYb4QgEHBDAWLmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdh
|
1784 |
+
bENMQVNFQTMuaHRtbD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
|
1785 |
+
cG9saWN5Q0xBU0VBMy5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93d3cuaXBzLmVzL2lw
|
1786 |
+
czIwMDIvaXBzMjAwMkNMQVNFQTMuY3JsMDagNKAyhjBodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBz
|
1787 |
+
MjAwMi9pcHMyMDAyQ0xBU0VBMy5jcmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRw
|
1788 |
+
Oi8vb2NzcC5pcHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAEo9IEca2on0eisxeewBwMwB9dbB/MjD
|
1789 |
+
81ACUZBYKp/nNQlbMAqBACVHr9QPDp5gJqiVp4MI3y2s6Q73nMify5NF8bpqxmdRSmlPa/59Cy9S
|
1790 |
+
KcJQrSRE7SOzSMtEQMEDlQwKeAYSAfWRMS1Jjbs/RU4s4OjNtckUFQzjB4ObJnXv
|
1791 |
+
-----END CERTIFICATE-----
|
1792 |
+
|
1793 |
+
IPS Servidores root
|
1794 |
+
===================
|
1795 |
+
-----BEGIN CERTIFICATE-----
|
1796 |
+
MIICtzCCAiACAQAwDQYJKoZIhvcNAQEEBQAwgaMxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJD
|
1797 |
+
RUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcGA1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYG
|
1798 |
+
A1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQDEw5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3
|
1799 |
+
DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTk4MDEwMTIzMjEwN1oXDTA5MTIyOTIzMjEwN1owgaMx
|
1800 |
+
CzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJDRUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcG
|
1801 |
+
A1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYGA1UECxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQD
|
1802 |
+
Ew5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMIGfMA0GCSqG
|
1803 |
+
SIb3DQEBAQUAA4GNADCBiQKBgQCsT1J0nznqjtwlxLyYXZhkJAk8IbPMGbWOlI6H0fg3PqHILVik
|
1804 |
+
gDVboXVsHUUMH2Fjal5vmwpMwci4YSM1gf/+rHhwLWjhOgeYlQJU3c0jt4BT18g3RXIGJBK6E2Eh
|
1805 |
+
im51KODFDzT9NthFf+G4Nu+z4cYgjui0OLzhPvYR3oydAQIDAQABMA0GCSqGSIb3DQEBBAUAA4GB
|
1806 |
+
ACzzw3lYJN7GO9HgQmm47mSzPWIBubOE3yN93ZjPEKn+ANgilgUTB1RXxafey9m4iEL2mdsUdx+2
|
1807 |
+
/iU94aI+A6mB0i1sR/WWRowiq8jMDQ6XXotBtDvECgZAHd1G9AHduoIuPD14cJ58GNCr+Lh3B0Zx
|
1808 |
+
8coLY1xq+XKU1QFPoNtC
|
1809 |
+
-----END CERTIFICATE-----
|
1810 |
+
|
1811 |
+
IPS Timestamping root
|
1812 |
+
=====================
|
1813 |
+
-----BEGIN CERTIFICATE-----
|
1814 |
+
MIIIODCCB6GgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCAR4xCzAJBgNVBAYTAkVTMRIwEAYDVQQI
|
1815 |
+
EwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIEludGVybmV0IHB1
|
1816 |
+
Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAg
|
1817 |
+
Qi02MDkyOTQ1MjE0MDIGA1UECxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1
|
1818 |
+
dGhvcml0eTE0MDIGA1UEAxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1819 |
+
cml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAxMTIyOTAxMTAxOFoXDTI1
|
1820 |
+
MTIyNzAxMTAxOFowggEeMQswCQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQH
|
1821 |
+
EwlCYXJjZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMu
|
1822 |
+
bC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxNDAyBgNVBAsT
|
1823 |
+
K0lQUyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxNDAyBgNVBAMTK0lQ
|
1824 |
+
UyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEW
|
1825 |
+
D2lwc0BtYWlsLmlwcy5lczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLjuVqWajOY2ycJi
|
1826 |
+
oGaBjRrVetJznw6EZLqVtJCneK/K/lRhW86yIFcBrkSSQxA4Efdo/BdApWgnMjvEp+ZCccWZ73b/
|
1827 |
+
K5Uk9UmSGGjKALWkWi9uy9YbLA1UZ2t6KaFYq6JaANZbuxjC3/YeE1Z2m6Vo4pjOxgOKNNtMg0Gm
|
1828 |
+
qaMCAwEAAaOCBIAwggR8MB0GA1UdDgQWBBSL0BBQCYHynQnVDmB4AyKiP8jKZjCCAVAGA1UdIwSC
|
1829 |
+
AUcwggFDgBSL0BBQCYHynQnVDmB4AyKiP8jKZqGCASakggEiMIIBHjELMAkGA1UEBhMCRVMxEjAQ
|
1830 |
+
BgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJu
|
1831 |
+
ZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5J
|
1832 |
+
LkYuICBCLTYwOTI5NDUyMTQwMgYDVQQLEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRp
|
1833 |
+
b24gQXV0aG9yaXR5MTQwMgYDVQQDEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmljYXRpb24g
|
1834 |
+
QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB
|
1835 |
+
/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMG
|
1836 |
+
CCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYK
|
1837 |
+
KwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVz
|
1838 |
+
MBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBHBglghkgBhvhCAQ0EOhY4VGltZXN0YW1waW5n
|
1839 |
+
IENBIENlcnRpZmljYXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC
|
1840 |
+
BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMEAGCWCGSAGG+EIBBAQzFjFodHRwOi8vd3d3
|
1841 |
+
Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMEUGCWCGSAGG+EIBAwQ4FjZo
|
1842 |
+
dHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jldm9jYXRpb25UaW1lc3RhbXBpbmcuaHRtbD8wQgYJ
|
1843 |
+
YIZIAYb4QgEHBDUWM2h0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbFRpbWVzdGFtcGlu
|
1844 |
+
Zy5odG1sPzBABglghkgBhvhCAQgEMxYxaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lU
|
1845 |
+
aW1lc3RhbXBpbmcuaHRtbDB/BgNVHR8EeDB2MDegNaAzhjFodHRwOi8vd3d3Lmlwcy5lcy9pcHMy
|
1846 |
+
MDAyL2lwczIwMDJUaW1lc3RhbXBpbmcuY3JsMDugOaA3hjVodHRwOi8vd3d3YmFjay5pcHMuZXMv
|
1847 |
+
aXBzMjAwMi9pcHMyMDAyVGltZXN0YW1waW5nLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYBBQUH
|
1848 |
+
MAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZIhvcNAQEFBQADgYEAZbrBzAAalZHK6Ww6vzoe
|
1849 |
+
FAh8+4Pua2JR0zORtWB5fgTYXXk36MNbsMRnLWhasl8OCvrNPzpFoeo2zyYepxEoxZSPhExTCMWT
|
1850 |
+
s/zif/WN87GphV+I3pGW7hdbrqXqcGV4LCFkAZXOzkw+UPS2Wctjjba9GNSHSl/c7+lW8AoM6HU=
|
1851 |
+
-----END CERTIFICATE-----
|
1852 |
+
|
1853 |
+
QuoVadis Root CA
|
1854 |
+
================
|
1855 |
+
-----BEGIN CERTIFICATE-----
|
1856 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
1857 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
1858 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
1859 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
1860 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
1861 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
1862 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
1863 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
1864 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
1865 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
1866 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
1867 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
1868 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
1869 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
1870 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
1871 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
1872 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
1873 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
1874 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
1875 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
1876 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
1877 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
1878 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
1879 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
1880 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
1881 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
1882 |
+
5nrQNiOKSnQ2+Q==
|
1883 |
+
-----END CERTIFICATE-----
|
1884 |
+
|
1885 |
+
QuoVadis Root CA 2
|
1886 |
+
==================
|
1887 |
+
-----BEGIN CERTIFICATE-----
|
1888 |
+
MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1889 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
|
1890 |
+
ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1891 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1892 |
+
DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
|
1893 |
+
XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
|
1894 |
+
lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
|
1895 |
+
lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
|
1896 |
+
lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
|
1897 |
+
66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
|
1898 |
+
wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
|
1899 |
+
D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
|
1900 |
+
BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
|
1901 |
+
J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
|
1902 |
+
DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
|
1903 |
+
a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
|
1904 |
+
ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
|
1905 |
+
Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
|
1906 |
+
UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
|
1907 |
+
VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
|
1908 |
+
+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
|
1909 |
+
IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
|
1910 |
+
WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
|
1911 |
+
f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
|
1912 |
+
4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
|
1913 |
+
VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
|
1914 |
+
-----END CERTIFICATE-----
|
1915 |
+
|
1916 |
+
QuoVadis Root CA 3
|
1917 |
+
==================
|
1918 |
+
-----BEGIN CERTIFICATE-----
|
1919 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1920 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1921 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1922 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1923 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1924 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1925 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1926 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1927 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1928 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1929 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1930 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1931 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1932 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1933 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1934 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1935 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1936 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1937 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1938 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1939 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1940 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1941 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1942 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1943 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1944 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1945 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1946 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1947 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1948 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1949 |
+
-----END CERTIFICATE-----
|
1950 |
+
|
1951 |
+
Security Communication Root CA
|
1952 |
+
==============================
|
1953 |
+
-----BEGIN CERTIFICATE-----
|
1954 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1955 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1956 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1957 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1958 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1959 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1960 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1961 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1962 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1963 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1964 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1965 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1966 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1967 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1968 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1969 |
+
FL39vmwLAw==
|
1970 |
+
-----END CERTIFICATE-----
|
1971 |
+
|
1972 |
+
Sonera Class 1 Root CA
|
1973 |
+
======================
|
1974 |
+
-----BEGIN CERTIFICATE-----
|
1975 |
+
MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1976 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
|
1977 |
+
NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1978 |
+
IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
|
1979 |
+
7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
|
1980 |
+
EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
|
1981 |
+
0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
|
1982 |
+
2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
|
1983 |
+
HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
|
1984 |
+
iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
|
1985 |
+
28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
|
1986 |
+
yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
|
1987 |
+
vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
|
1988 |
+
qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
|
1989 |
+
IRlXvVWa
|
1990 |
+
-----END CERTIFICATE-----
|
1991 |
+
|
1992 |
+
Sonera Class 2 Root CA
|
1993 |
+
======================
|
1994 |
+
-----BEGIN CERTIFICATE-----
|
1995 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1996 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1997 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1998 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1999 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
2000 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
2001 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
2002 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
2003 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
2004 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
2005 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
2006 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
2007 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
2008 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
2009 |
+
llpwrN9M
|
2010 |
+
-----END CERTIFICATE-----
|
2011 |
+
|
2012 |
+
Staat der Nederlanden Root CA
|
2013 |
+
=============================
|
2014 |
+
-----BEGIN CERTIFICATE-----
|
2015 |
+
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
2016 |
+
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
2017 |
+
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
2018 |
+
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
2019 |
+
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
2020 |
+
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
2021 |
+
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
2022 |
+
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
2023 |
+
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
2024 |
+
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
2025 |
+
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
2026 |
+
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
2027 |
+
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
2028 |
+
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
2029 |
+
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
2030 |
+
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
2031 |
+
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
2032 |
+
-----END CERTIFICATE-----
|
2033 |
+
|
2034 |
+
TDC Internet Root CA
|
2035 |
+
====================
|
2036 |
+
-----BEGIN CERTIFICATE-----
|
2037 |
+
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
2038 |
+
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
2039 |
+
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
2040 |
+
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2041 |
+
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
2042 |
+
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
2043 |
+
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
2044 |
+
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
2045 |
+
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
2046 |
+
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
2047 |
+
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
2048 |
+
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
2049 |
+
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
2050 |
+
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
2051 |
+
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
2052 |
+
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
2053 |
+
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
2054 |
+
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
2055 |
+
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
2056 |
+
-----END CERTIFICATE-----
|
2057 |
+
|
2058 |
+
TDC OCES Root CA
|
2059 |
+
================
|
2060 |
+
-----BEGIN CERTIFICATE-----
|
2061 |
+
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
2062 |
+
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
2063 |
+
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
2064 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
2065 |
+
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
2066 |
+
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
2067 |
+
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
2068 |
+
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
2069 |
+
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
2070 |
+
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
2071 |
+
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
2072 |
+
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
2073 |
+
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
2074 |
+
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
2075 |
+
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
2076 |
+
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
2077 |
+
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
2078 |
+
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
2079 |
+
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
2080 |
+
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
2081 |
+
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
2082 |
+
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
2083 |
+
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
2084 |
+
-----END CERTIFICATE-----
|
2085 |
+
|
2086 |
+
UTN DATACorp SGC Root CA
|
2087 |
+
========================
|
2088 |
+
-----BEGIN CERTIFICATE-----
|
2089 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
2090 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2091 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
2092 |
+
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
2093 |
+
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
2094 |
+
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
2095 |
+
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2096 |
+
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
2097 |
+
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
2098 |
+
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
2099 |
+
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
2100 |
+
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
2101 |
+
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
2102 |
+
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
2103 |
+
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
2104 |
+
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
2105 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
2106 |
+
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
2107 |
+
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
2108 |
+
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
2109 |
+
-----END CERTIFICATE-----
|
2110 |
+
|
2111 |
+
UTN USERFirst Email Root CA
|
2112 |
+
===========================
|
2113 |
+
-----BEGIN CERTIFICATE-----
|
2114 |
+
MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
2115 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2116 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
|
2117 |
+
BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
|
2118 |
+
OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
|
2119 |
+
FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
|
2120 |
+
ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
|
2121 |
+
dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2122 |
+
MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
|
2123 |
+
B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
|
2124 |
+
om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
|
2125 |
+
TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
|
2126 |
+
yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
|
2127 |
+
AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
|
2128 |
+
HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
|
2129 |
+
bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
|
2130 |
+
AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
|
2131 |
+
xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
|
2132 |
+
5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
|
2133 |
+
NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
|
2134 |
+
w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
|
2135 |
+
-----END CERTIFICATE-----
|
2136 |
+
|
2137 |
+
UTN USERFirst Hardware Root CA
|
2138 |
+
==============================
|
2139 |
+
-----BEGIN CERTIFICATE-----
|
2140 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
2141 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2142 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
2143 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
2144 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
2145 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
2146 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
2147 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
2148 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
2149 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
2150 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
2151 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
2152 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
2153 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
2154 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
2155 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
2156 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
2157 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
2158 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
2159 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
2160 |
+
nfhmqA==
|
2161 |
+
-----END CERTIFICATE-----
|
2162 |
+
|
2163 |
+
UTN USERFirst Object Root CA
|
2164 |
+
============================
|
2165 |
+
-----BEGIN CERTIFICATE-----
|
2166 |
+
MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
|
2167 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
2168 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
|
2169 |
+
BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
|
2170 |
+
NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
|
2171 |
+
HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
|
2172 |
+
dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
|
2173 |
+
BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
|
2174 |
+
loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
|
2175 |
+
w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
|
2176 |
+
lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
|
2177 |
+
RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
|
2178 |
+
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
|
2179 |
+
ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
|
2180 |
+
c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
|
2181 |
+
DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
|
2182 |
+
NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
|
2183 |
+
PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
|
2184 |
+
qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
|
2185 |
+
hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
|
2186 |
+
-----END CERTIFICATE-----
|
2187 |
+
|
2188 |
+
Camerfirma Chambers of Commerce Root
|
2189 |
+
====================================
|
2190 |
+
-----BEGIN CERTIFICATE-----
|
2191 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
2192 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
2193 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
2194 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
2195 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
2196 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
2197 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
2198 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
2199 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
2200 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
2201 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
2202 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
2203 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
2204 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
2205 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
2206 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
2207 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
2208 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
2209 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
2210 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
2211 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
2212 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
2213 |
+
-----END CERTIFICATE-----
|
2214 |
+
|
2215 |
+
Camerfirma Global Chambersign Root
|
2216 |
+
==================================
|
2217 |
+
-----BEGIN CERTIFICATE-----
|
2218 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
2219 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
2220 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
2221 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
2222 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
2223 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
2224 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
2225 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
2226 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
2227 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
2228 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
2229 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
2230 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
2231 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
2232 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
2233 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
2234 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
2235 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
2236 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
2237 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
2238 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
2239 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
2240 |
+
-----END CERTIFICATE-----
|
2241 |
+
|
2242 |
+
NetLock Qualified (Class QA) Root
|
2243 |
+
=================================
|
2244 |
+
-----BEGIN CERTIFICATE-----
|
2245 |
+
MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
2246 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
2247 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
|
2248 |
+
eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
|
2249 |
+
bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
|
2250 |
+
MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
|
2251 |
+
LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
|
2252 |
+
dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
|
2253 |
+
aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
|
2254 |
+
CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
|
2255 |
+
8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
|
2256 |
+
m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
|
2257 |
+
0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
|
2258 |
+
0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
2259 |
+
HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
|
2260 |
+
YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
|
2261 |
+
biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
|
2262 |
+
a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
|
2263 |
+
YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
|
2264 |
+
YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
|
2265 |
+
ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
|
2266 |
+
L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
|
2267 |
+
Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
|
2268 |
+
aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
|
2269 |
+
YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
|
2270 |
+
IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
|
2271 |
+
DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
|
2272 |
+
wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
|
2273 |
+
W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
|
2274 |
+
R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
|
2275 |
+
5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
|
2276 |
+
-----END CERTIFICATE-----
|
2277 |
+
|
2278 |
+
NetLock Notary (Class A) Root
|
2279 |
+
=============================
|
2280 |
+
-----BEGIN CERTIFICATE-----
|
2281 |
+
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
2282 |
+
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
2283 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
2284 |
+
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
2285 |
+
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
2286 |
+
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
2287 |
+
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
2288 |
+
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
2289 |
+
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
2290 |
+
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
2291 |
+
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
2292 |
+
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
2293 |
+
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
2294 |
+
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
2295 |
+
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
2296 |
+
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
2297 |
+
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
2298 |
+
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
2299 |
+
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
2300 |
+
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
2301 |
+
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
2302 |
+
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
2303 |
+
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
2304 |
+
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
2305 |
+
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
2306 |
+
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
2307 |
+
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
2308 |
+
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
2309 |
+
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
2310 |
+
8CgHrTwXZoi1/baI
|
2311 |
+
-----END CERTIFICATE-----
|
2312 |
+
|
2313 |
+
NetLock Business (Class B) Root
|
2314 |
+
===============================
|
2315 |
+
-----BEGIN CERTIFICATE-----
|
2316 |
+
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
2317 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
2318 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
2319 |
+
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
2320 |
+
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
2321 |
+
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
2322 |
+
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
2323 |
+
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
2324 |
+
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
2325 |
+
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
2326 |
+
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
2327 |
+
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
2328 |
+
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
2329 |
+
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
2330 |
+
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
2331 |
+
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
2332 |
+
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
2333 |
+
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
2334 |
+
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
2335 |
+
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
2336 |
+
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
2337 |
+
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
2338 |
+
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
2339 |
+
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
2340 |
+
-----END CERTIFICATE-----
|
2341 |
+
|
2342 |
+
NetLock Express (Class C) Root
|
2343 |
+
==============================
|
2344 |
+
-----BEGIN CERTIFICATE-----
|
2345 |
+
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
2346 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
2347 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
2348 |
+
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
2349 |
+
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
2350 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
2351 |
+
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
2352 |
+
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
2353 |
+
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
2354 |
+
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
2355 |
+
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
2356 |
+
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
2357 |
+
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
2358 |
+
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
2359 |
+
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
2360 |
+
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
2361 |
+
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
2362 |
+
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
2363 |
+
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
2364 |
+
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
2365 |
+
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
2366 |
+
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
2367 |
+
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
2368 |
+
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
2369 |
+
-----END CERTIFICATE-----
|
2370 |
+
|
2371 |
+
XRamp Global CA Root
|
2372 |
+
====================
|
2373 |
+
-----BEGIN CERTIFICATE-----
|
2374 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
2375 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
2376 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
2377 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
2378 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
2379 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
2380 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
2381 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
2382 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
2383 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
2384 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
2385 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
2386 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
2387 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
2388 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
2389 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
2390 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
2391 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
2392 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
2393 |
+
-----END CERTIFICATE-----
|
2394 |
+
|
2395 |
+
Go Daddy Class 2 CA
|
2396 |
+
===================
|
2397 |
+
-----BEGIN CERTIFICATE-----
|
2398 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
2399 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
2400 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
2401 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
2402 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
2403 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
2404 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
2405 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
2406 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
2407 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
2408 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
2409 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
2410 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
2411 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
2412 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
2413 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
2414 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
2415 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
2416 |
+
vZ8=
|
2417 |
+
-----END CERTIFICATE-----
|
2418 |
+
|
2419 |
+
Starfield Class 2 CA
|
2420 |
+
====================
|
2421 |
+
-----BEGIN CERTIFICATE-----
|
2422 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
2423 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
2424 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
2425 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
2426 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
2427 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
2428 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
2429 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
2430 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
2431 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
2432 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
2433 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
2434 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
2435 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
2436 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
2437 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
2438 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
2439 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
2440 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
2441 |
+
-----END CERTIFICATE-----
|
2442 |
+
|
2443 |
+
StartCom Ltd.
|
2444 |
+
=============
|
2445 |
+
-----BEGIN CERTIFICATE-----
|
2446 |
+
MIIFFjCCBH+gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgT
|
2447 |
+
BklzcmFlbDEOMAwGA1UEBxMFRWlsYXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xGjAYBgNVBAsT
|
2448 |
+
EUNBIEF1dGhvcml0eSBEZXAuMSkwJwYDVQQDEyBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
2449 |
+
cml0eTEhMB8GCSqGSIb3DQEJARYSYWRtaW5Ac3RhcnRjb20ub3JnMB4XDTA1MDMxNzE3Mzc0OFoX
|
2450 |
+
DTM1MDMxMDE3Mzc0OFowgbAxCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxDjAMBgNVBAcT
|
2451 |
+
BUVpbGF0MRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMRowGAYDVQQLExFDQSBBdXRob3JpdHkgRGVw
|
2452 |
+
LjEpMCcGA1UEAxMgRnJlZSBTU0wgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxITAfBgkqhkiG9w0B
|
2453 |
+
CQEWEmFkbWluQHN0YXJ0Y29tLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7YRgACOe
|
2454 |
+
yEpRKSfeOqE5tWmrCbIvNP1h3D3TsM+x18LEwrHkllbEvqoUDufMOlDIOmKdw6OsWXuO7lUaHEe+
|
2455 |
+
o5c5s7XvIywI6Nivcy+5yYPo7QAPyHWlLzRMGOh2iCNJitu27Wjaw7ViKUylS7eYtAkUEKD4/mJ2
|
2456 |
+
IhULpNYILzUCAwEAAaOCAjwwggI4MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgHmMB0GA1Ud
|
2457 |
+
DgQWBBQcicOWzL3+MtUNjIExtpidjShkjTCB3QYDVR0jBIHVMIHSgBQcicOWzL3+MtUNjIExtpid
|
2458 |
+
jShkjaGBtqSBszCBsDELMAkGA1UEBhMCSUwxDzANBgNVBAgTBklzcmFlbDEOMAwGA1UEBxMFRWls
|
2459 |
+
YXQxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xGjAYBgNVBAsTEUNBIEF1dGhvcml0eSBEZXAuMSkw
|
2460 |
+
JwYDVQQDEyBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJARYS
|
2461 |
+
YWRtaW5Ac3RhcnRjb20ub3JnggEAMB0GA1UdEQQWMBSBEmFkbWluQHN0YXJ0Y29tLm9yZzAdBgNV
|
2462 |
+
HRIEFjAUgRJhZG1pbkBzdGFydGNvbS5vcmcwEQYJYIZIAYb4QgEBBAQDAgAHMC8GCWCGSAGG+EIB
|
2463 |
+
DQQiFiBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAyBglghkgBhvhCAQQEJRYjaHR0
|
2464 |
+
cDovL2NlcnQuc3RhcnRjb20ub3JnL2NhLWNybC5jcmwwKAYJYIZIAYb4QgECBBsWGWh0dHA6Ly9j
|
2465 |
+
ZXJ0LnN0YXJ0Y29tLm9yZy8wOQYJYIZIAYb4QgEIBCwWKmh0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9y
|
2466 |
+
Zy9pbmRleC5waHA/YXBwPTExMTANBgkqhkiG9w0BAQQFAAOBgQBscSXhnjSRIe/bbL0BCFaPiNhB
|
2467 |
+
OlP1ct8nV0t2hPdopP7rPwl+KLhX6h/BquL/lp9JmeaylXOWxkjHXo0Hclb4g4+fd68p00UOpO6w
|
2468 |
+
NnQt8M2YI3s3S9r+UZjEHjQ8iP2ZO1CnwYszx8JSFhKVU2Ui77qLzmLbcCOxgN8aIDjnfg==
|
2469 |
+
-----END CERTIFICATE-----
|
2470 |
+
|
2471 |
+
StartCom Certification Authority
|
2472 |
+
================================
|
2473 |
+
-----BEGIN CERTIFICATE-----
|
2474 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
2475 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
2476 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
2477 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
2478 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
2479 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
2480 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
2481 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
2482 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
2483 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
2484 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
2485 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
2486 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
2487 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
2488 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
2489 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
2490 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
2491 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
2492 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
2493 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
2494 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
2495 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
2496 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
2497 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
2498 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
2499 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
2500 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
2501 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
2502 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
2503 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
2504 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
2505 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
2506 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
2507 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
2508 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
2509 |
+
g14=
|
2510 |
+
-----END CERTIFICATE-----
|
2511 |
+
|
2512 |
+
Taiwan GRCA
|
2513 |
+
===========
|
2514 |
+
-----BEGIN CERTIFICATE-----
|
2515 |
+
MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
|
2516 |
+
EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
|
2517 |
+
DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
|
2518 |
+
dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
|
2519 |
+
ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
|
2520 |
+
w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
|
2521 |
+
BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
|
2522 |
+
1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
|
2523 |
+
htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
|
2524 |
+
J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
|
2525 |
+
Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
|
2526 |
+
B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
|
2527 |
+
O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
|
2528 |
+
lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
|
2529 |
+
HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
|
2530 |
+
09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
|
2531 |
+
TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
|
2532 |
+
Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
|
2533 |
+
Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
|
2534 |
+
D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
|
2535 |
+
DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
|
2536 |
+
Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
|
2537 |
+
7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
|
2538 |
+
CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
|
2539 |
+
+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
|
2540 |
+
-----END CERTIFICATE-----
|
2541 |
+
|
2542 |
+
Firmaprofesional Root CA
|
2543 |
+
========================
|
2544 |
+
-----BEGIN CERTIFICATE-----
|
2545 |
+
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
2546 |
+
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
2547 |
+
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
2548 |
+
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
2549 |
+
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
2550 |
+
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
2551 |
+
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
2552 |
+
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
2553 |
+
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
2554 |
+
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
2555 |
+
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
2556 |
+
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
2557 |
+
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
2558 |
+
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
2559 |
+
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
2560 |
+
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
2561 |
+
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
2562 |
+
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
2563 |
+
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
2564 |
+
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
2565 |
+
-----END CERTIFICATE-----
|
2566 |
+
|
2567 |
+
Wells Fargo Root CA
|
2568 |
+
===================
|
2569 |
+
-----BEGIN CERTIFICATE-----
|
2570 |
+
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
2571 |
+
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
2572 |
+
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
2573 |
+
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
2574 |
+
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
2575 |
+
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
2576 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
2577 |
+
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
2578 |
+
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
2579 |
+
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
2580 |
+
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
2581 |
+
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
2582 |
+
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
2583 |
+
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
2584 |
+
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
2585 |
+
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
2586 |
+
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
2587 |
+
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
2588 |
+
-----END CERTIFICATE-----
|
2589 |
+
|
2590 |
+
Swisscom Root CA 1
|
2591 |
+
==================
|
2592 |
+
-----BEGIN CERTIFICATE-----
|
2593 |
+
MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
|
2594 |
+
EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
|
2595 |
+
dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
|
2596 |
+
MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
|
2597 |
+
aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
|
2598 |
+
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
|
2599 |
+
MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
|
2600 |
+
NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
|
2601 |
+
AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
|
2602 |
+
b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
|
2603 |
+
7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
|
2604 |
+
cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
|
2605 |
+
WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
|
2606 |
+
haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
|
2607 |
+
MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
|
2608 |
+
HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
|
2609 |
+
BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
|
2610 |
+
MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
|
2611 |
+
jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
|
2612 |
+
MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
|
2613 |
+
VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
|
2614 |
+
vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
|
2615 |
+
OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
|
2616 |
+
1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
|
2617 |
+
nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
|
2618 |
+
x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
|
2619 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
2620 |
+
-----END CERTIFICATE-----
|
2621 |
+
|
2622 |
+
DigiCert Assured ID Root CA
|
2623 |
+
===========================
|
2624 |
+
-----BEGIN CERTIFICATE-----
|
2625 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
2626 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
2627 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
2628 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
2629 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
2630 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
2631 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
2632 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
2633 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
2634 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
2635 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
2636 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
2637 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
2638 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
2639 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
2640 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
2641 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
2642 |
+
-----END CERTIFICATE-----
|
2643 |
+
|
2644 |
+
DigiCert Global Root CA
|
2645 |
+
=======================
|
2646 |
+
-----BEGIN CERTIFICATE-----
|
2647 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
2648 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
2649 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
2650 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
2651 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
2652 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
2653 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
2654 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
2655 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
2656 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
2657 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
2658 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
2659 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
2660 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
2661 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
2662 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
2663 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
2664 |
+
-----END CERTIFICATE-----
|
2665 |
+
|
2666 |
+
DigiCert High Assurance EV Root CA
|
2667 |
+
==================================
|
2668 |
+
-----BEGIN CERTIFICATE-----
|
2669 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
2670 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
2671 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
2672 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
2673 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
2674 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
2675 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
2676 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
2677 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
2678 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
2679 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
2680 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
2681 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
2682 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
2683 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
2684 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
2685 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
2686 |
+
-----END CERTIFICATE-----
|
2687 |
+
|
2688 |
+
Certplus Class 2 Primary CA
|
2689 |
+
===========================
|
2690 |
+
-----BEGIN CERTIFICATE-----
|
2691 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
2692 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
2693 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
2694 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
2695 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
2696 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
2697 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
2698 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
2699 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
2700 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
2701 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
2702 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
2703 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
2704 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
2705 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
2706 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
2707 |
+
l7+ijrRU
|
2708 |
+
-----END CERTIFICATE-----
|
2709 |
+
|
2710 |
+
DST Root CA X3
|
2711 |
+
==============
|
2712 |
+
-----BEGIN CERTIFICATE-----
|
2713 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
2714 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
2715 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
2716 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
2717 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
2718 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
2719 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
2720 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
2721 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
2722 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
2723 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
2724 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
2725 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
2726 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
2727 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
2728 |
+
-----END CERTIFICATE-----
|
2729 |
+
|
2730 |
+
DST ACES CA X6
|
2731 |
+
==============
|
2732 |
+
-----BEGIN CERTIFICATE-----
|
2733 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
2734 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
2735 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
2736 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
2737 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2738 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
2739 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
2740 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
2741 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
2742 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
2743 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
2744 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
2745 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
2746 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
2747 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
2748 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
2749 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
2750 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
2751 |
+
oKfN5XozNmr6mis=
|
2752 |
+
-----END CERTIFICATE-----
|
2753 |
+
|
2754 |
+
TURKTRUST Certificate Services Provider Root 1
|
2755 |
+
==============================================
|
2756 |
+
-----BEGIN CERTIFICATE-----
|
2757 |
+
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
2758 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
2759 |
+
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
2760 |
+
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
2761 |
+
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
2762 |
+
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
2763 |
+
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
2764 |
+
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
2765 |
+
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
2766 |
+
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
2767 |
+
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
2768 |
+
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
2769 |
+
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
2770 |
+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
2771 |
+
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
2772 |
+
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
2773 |
+
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
2774 |
+
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
2775 |
+
-----END CERTIFICATE-----
|
2776 |
+
|
2777 |
+
TURKTRUST Certificate Services Provider Root 2
|
2778 |
+
==============================================
|
2779 |
+
-----BEGIN CERTIFICATE-----
|
2780 |
+
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
2781 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
2782 |
+
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
2783 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
2784 |
+
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
2785 |
+
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
2786 |
+
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
2787 |
+
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
2788 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
2789 |
+
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
2790 |
+
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
2791 |
+
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
2792 |
+
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
2793 |
+
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
2794 |
+
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
2795 |
+
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
2796 |
+
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
2797 |
+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
2798 |
+
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
2799 |
+
UrbnBEI=
|
2800 |
+
-----END CERTIFICATE-----
|
2801 |
+
|
2802 |
+
SwissSign Platinum CA - G2
|
2803 |
+
==========================
|
2804 |
+
-----BEGIN CERTIFICATE-----
|
2805 |
+
MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT
|
2806 |
+
BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw
|
2807 |
+
HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM
|
2808 |
+
U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ
|
2809 |
+
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu
|
2810 |
+
669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF
|
2811 |
+
eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne
|
2812 |
+
WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo
|
2813 |
+
j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6
|
2814 |
+
8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T
|
2815 |
+
aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy
|
2816 |
+
domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D
|
2817 |
+
+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV
|
2818 |
+
CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
|
2819 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv
|
2820 |
+
zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW
|
2821 |
+
IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1
|
2822 |
+
Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3
|
2823 |
+
NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4
|
2824 |
+
U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8
|
2825 |
+
KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl
|
2826 |
+
9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B
|
2827 |
+
aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs
|
2828 |
+
OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY
|
2829 |
+
Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci
|
2830 |
+
IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g==
|
2831 |
+
-----END CERTIFICATE-----
|
2832 |
+
|
2833 |
+
SwissSign Gold CA - G2
|
2834 |
+
======================
|
2835 |
+
-----BEGIN CERTIFICATE-----
|
2836 |
+
MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
|
2837 |
+
EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
|
2838 |
+
MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
|
2839 |
+
c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
|
2840 |
+
AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
|
2841 |
+
t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
|
2842 |
+
jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
|
2843 |
+
vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
|
2844 |
+
ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
|
2845 |
+
AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
|
2846 |
+
jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
|
2847 |
+
peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
|
2848 |
+
7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
|
2849 |
+
GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
|
2850 |
+
AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
|
2851 |
+
OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
|
2852 |
+
L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
|
2853 |
+
5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
|
2854 |
+
44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
|
2855 |
+
Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
|
2856 |
+
Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
|
2857 |
+
mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
|
2858 |
+
vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
|
2859 |
+
KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
|
2860 |
+
NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
|
2861 |
+
viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
|
2862 |
+
-----END CERTIFICATE-----
|
2863 |
+
|
2864 |
+
SwissSign Silver CA - G2
|
2865 |
+
========================
|
2866 |
+
-----BEGIN CERTIFICATE-----
|
2867 |
+
MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
|
2868 |
+
BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
|
2869 |
+
DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
|
2870 |
+
aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
|
2871 |
+
9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
|
2872 |
+
N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
|
2873 |
+
+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
|
2874 |
+
6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
|
2875 |
+
MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
|
2876 |
+
qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
|
2877 |
+
FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
|
2878 |
+
ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
|
2879 |
+
celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
|
2880 |
+
CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
|
2881 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
|
2882 |
+
tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
|
2883 |
+
cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
|
2884 |
+
4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
|
2885 |
+
kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
|
2886 |
+
3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
|
2887 |
+
/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
|
2888 |
+
DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
|
2889 |
+
e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
|
2890 |
+
WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
|
2891 |
+
DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
|
2892 |
+
DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
|
2893 |
+
-----END CERTIFICATE-----
|
2894 |
+
|
2895 |
+
GeoTrust Primary Certification Authority
|
2896 |
+
========================================
|
2897 |
+
-----BEGIN CERTIFICATE-----
|
2898 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
2899 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
2900 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
2901 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
2902 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2903 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
2904 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
2905 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
2906 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
2907 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
2908 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
2909 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
2910 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
2911 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
2912 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
2913 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
2914 |
+
-----END CERTIFICATE-----
|
2915 |
+
|
2916 |
+
thawte Primary Root CA
|
2917 |
+
======================
|
2918 |
+
-----BEGIN CERTIFICATE-----
|
2919 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
2920 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2921 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2922 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
2923 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
2924 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
2925 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
2926 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
2927 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
2928 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
2929 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
2930 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
2931 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
2932 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
2933 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
2934 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
2935 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
2936 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
2937 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
2938 |
+
-----END CERTIFICATE-----
|
2939 |
+
|
2940 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
2941 |
+
============================================================
|
2942 |
+
-----BEGIN CERTIFICATE-----
|
2943 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
2944 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2945 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2946 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
2947 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
2948 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
2949 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
2950 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
2951 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2952 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
2953 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
2954 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
2955 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
2956 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
2957 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
2958 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
2959 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
2960 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
2961 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
2962 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
2963 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
2964 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
2965 |
+
-----END CERTIFICATE-----
|
2966 |
+
|
2967 |
+
SecureTrust CA
|
2968 |
+
==============
|
2969 |
+
-----BEGIN CERTIFICATE-----
|
2970 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
2971 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
2972 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
2973 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
2974 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
2975 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
2976 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
2977 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
2978 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
2979 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
2980 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
2981 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2982 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
2983 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
2984 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
2985 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
2986 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
2987 |
+
-----END CERTIFICATE-----
|
2988 |
+
|
2989 |
+
Secure Global CA
|
2990 |
+
================
|
2991 |
+
-----BEGIN CERTIFICATE-----
|
2992 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
2993 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
2994 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
2995 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
2996 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
2997 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
2998 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
2999 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
3000 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
3001 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
3002 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
3003 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
3004 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
3005 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
3006 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
3007 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
3008 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
3009 |
+
-----END CERTIFICATE-----
|
3010 |
+
|
3011 |
+
COMODO Certification Authority
|
3012 |
+
==============================
|
3013 |
+
-----BEGIN CERTIFICATE-----
|
3014 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
3015 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
3016 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
3017 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
3018 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
3019 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3020 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
3021 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
3022 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
3023 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
3024 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
3025 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
3026 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
3027 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
3028 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
3029 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
3030 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
3031 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
3032 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
3033 |
+
-----END CERTIFICATE-----
|
3034 |
+
|
3035 |
+
DigiNotar Root CA
|
3036 |
+
=================
|
3037 |
+
-----BEGIN CERTIFICATE-----
|
3038 |
+
MIIFijCCA3KgAwIBAgIQDHbanJEMTiye/hXQWJM8TDANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQG
|
3039 |
+
EwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90YXIgUm9vdCBDQTEgMB4G
|
3040 |
+
CSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwHhcNMDcwNTE2MTcxOTM2WhcNMjUwMzMxMTgx
|
3041 |
+
OTIxWjBfMQswCQYDVQQGEwJOTDESMBAGA1UEChMJRGlnaU5vdGFyMRowGAYDVQQDExFEaWdpTm90
|
3042 |
+
YXIgUm9vdCBDQTEgMB4GCSqGSIb3DQEJARYRaW5mb0BkaWdpbm90YXIubmwwggIiMA0GCSqGSIb3
|
3043 |
+
DQEBAQUAA4ICDwAwggIKAoICAQCssFjBAL3YIQgLK5r+blYwBZ8bd5AQQVzDDYcRd46B8cp86Yxq
|
3044 |
+
7Th0Nbva3/m7wAk3tJZzgX0zGpg595NvlX89ubF1h7pRSOiLcD6VBMXYtsMW2YiwsYcdcNqGtA8U
|
3045 |
+
i3rPENF0NqISe3eGSnnme98CEWilToauNFibJBN4ViIlHgGLS1Fx+4LMWZZpiFpoU8W5DQI3y0u8
|
3046 |
+
ZkqQfioLBQftFl9VkHXYRskbg+IIvvEjzJkd1ioPgyAVWCeCLvriIsJJsbkBgWqdbZ1Ad2h2TiEq
|
3047 |
+
bYRAhU52mXyC8/O3AlnUJgEbjt+tUwbRrhjd4rI6y9eIOI6sWym5GdOY+RgDz0iChmYLG2kPyes4
|
3048 |
+
iHomGgVMktck1JbyrFIto0fVUvY//s6EBnCmqj6i8rZWNBhXouSBbefK8GrTx5FrAoNBfBXva5pk
|
3049 |
+
XuPQPOWx63tdhvvL5ndJzaNl3Pe5nLjkC1+Tz8wwGjIczhxjlaX56uF0i57pK6kwe6AYHw4YC+Vb
|
3050 |
+
qdPRbB4HZ4+RS6mKvNJmqpMBiLKR+jFc1abBUggJzQpjotMipuih2TkGl/VujQKQjBR7P4DNG5y6
|
3051 |
+
xFhyI6+2Vp/GekIzKQc/gsnmHwUNzUwoNovTyD4cxojvXu6JZOkd69qJfjKmadHdzIif0dDJZiHc
|
3052 |
+
BmfFlHqabWJMfczgZICynkeOowIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
3053 |
+
AwIBBjAdBgNVHQ4EFgQUiGi/4I41xDs4a2L3KDuEgcgM100wDQYJKoZIhvcNAQEFBQADggIBADsC
|
3054 |
+
jcs8MOhuoK3yc7NfniUTBAXT9uOLuwt5zlPe5JbF0a9zvNXD0EBVfEB/zRtfCdXyfJ9oHbtdzno5
|
3055 |
+
wozWmHvFg1Wo1X1AyuAe94leY12hE8JdiraKfADzI8PthV9xdvBoY6pFITlIYXg23PFDk9Qlx/KA
|
3056 |
+
ZeFTAnVR/Ho67zerhChXDNjU1JlWbOOi/lmEtDHoM/hklJRRl6s5xUvt2t2AC298KQ3EjopyDedT
|
3057 |
+
FLJgQT2EkTFoPSdE2+Xe9PpjRchMPpj1P0G6Tss3DbpmmPHdy59c91Q2gmssvBNhl0L4eLvMyKKf
|
3058 |
+
yvBovWsdst+Nbwed2o5nx0ceyrm/KkKRt2NTZvFCo+H0Wk1Ya7XkpDOtXHAd3ODy63MUkZoDweoA
|
3059 |
+
ZbwH/M8SESIsrqC9OuCiKthZ6SnTGDWkrBFfGbW1G/8iSlzGeuQX7yCpp/Q/rYqnmgQlnQ7KN+ZQ
|
3060 |
+
/YxCKQSa7LnPS3K94gg2ryMvYuXKAdNw23yCIywWMQzGNgeQerEfZ1jEO1hZibCMjFCz2IbLaKPE
|
3061 |
+
CudpSyDOwR5WS5WpI2jYMNjD67BVUc3l/Su49bsRn1NU9jQZjHkJNsphFyUXC4KYcwx3dMPVDceo
|
3062 |
+
EkzHp1RxRy4sGn3J4ys7SN4nhKdjNrN9j6BkOSQNPXuHr2ZcdBtLc7LljPCGmbjlxd+Ewbfr
|
3063 |
+
-----END CERTIFICATE-----
|
3064 |
+
|
3065 |
+
Network Solutions Certificate Authority
|
3066 |
+
=======================================
|
3067 |
+
-----BEGIN CERTIFICATE-----
|
3068 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
3069 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
3070 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
3071 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
3072 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
3073 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
3074 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
3075 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
3076 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
3077 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
3078 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
3079 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
3080 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
3081 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
3082 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
3083 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
3084 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
3085 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
3086 |
+
-----END CERTIFICATE-----
|
3087 |
+
|
3088 |
+
WellsSecure Public Root Certificate Authority
|
3089 |
+
=============================================
|
3090 |
+
-----BEGIN CERTIFICATE-----
|
3091 |
+
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
3092 |
+
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
3093 |
+
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
3094 |
+
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
3095 |
+
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
3096 |
+
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
3097 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
3098 |
+
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
3099 |
+
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
3100 |
+
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
3101 |
+
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
3102 |
+
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
3103 |
+
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
3104 |
+
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
3105 |
+
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
3106 |
+
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
3107 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
3108 |
+
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
3109 |
+
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
3110 |
+
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
3111 |
+
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
3112 |
+
tylv2G0xffX8oRAHh84vWdw+WNs=
|
3113 |
+
-----END CERTIFICATE-----
|
lib/CF/cloudfiles.php
CHANGED
@@ -1,2147 +1,2149 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* This is the PHP Cloud Files API.
|
4 |
-
*
|
5 |
-
* <code>
|
6 |
-
* # Authenticate to Cloud Files. The default is to automatically try
|
7 |
-
* # to re-authenticate if an authentication token expires.
|
8 |
-
* #
|
9 |
-
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
10 |
-
* # file. This API ships with a newer version obtained directly from
|
11 |
-
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
12 |
-
* # call the CF_Authentication instance's 'ssl_use_cabundle()' method.
|
13 |
-
* #
|
14 |
-
* $auth = new CF_Authentication($username, $api_key);
|
15 |
-
* # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
16 |
-
* $auth->authenticate();
|
17 |
-
*
|
18 |
-
* # Establish a connection to the storage system
|
19 |
-
* #
|
20 |
-
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
21 |
-
* # file. This API ships with a newer version obtained directly from
|
22 |
-
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
23 |
-
* # call the CF_Connection instance's 'ssl_use_cabundle()' method.
|
24 |
-
* #
|
25 |
-
* $conn = new CF_Connection($auth);
|
26 |
-
* # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
27 |
-
*
|
28 |
-
* # Create a remote Container and storage Object
|
29 |
-
* #
|
30 |
-
* $images = $conn->create_container("photos");
|
31 |
-
* $bday = $images->create_object("first_birthday.jpg");
|
32 |
-
*
|
33 |
-
* # Upload content from a local file by streaming it. Note that we use
|
34 |
-
* # a "float" for the file size to overcome PHP's 32-bit integer limit for
|
35 |
-
* # very large files.
|
36 |
-
* #
|
37 |
-
* $fname = "/home/user/photos/birthdays/birthday1.jpg"; # filename to upload
|
38 |
-
* $size = (float) sprintf("%u", filesize($fname));
|
39 |
-
* $fp = open($fname, "r");
|
40 |
-
* $bday->write($fp, $size);
|
41 |
-
*
|
42 |
-
* # Or... use a convenience function instead
|
43 |
-
* #
|
44 |
-
* $bday->load_from_filename("/home/user/photos/birthdays/birthday1.jpg");
|
45 |
-
*
|
46 |
-
* # Now, publish the "photos" container to serve the images by CDN.
|
47 |
-
* # Use the "$uri" value to put in your web pages or send the link in an
|
48 |
-
* # email message, etc.
|
49 |
-
* #
|
50 |
-
* $uri = $images->make_public();
|
51 |
-
*
|
52 |
-
* # Or... print out the Object's public URI
|
53 |
-
* #
|
54 |
-
* print $bday->public_uri();
|
55 |
-
* </code>
|
56 |
-
*
|
57 |
-
* See the included tests directory for additional sample code.
|
58 |
-
*
|
59 |
-
* Requres PHP 5.x (for Exceptions and OO syntax) and PHP's cURL module.
|
60 |
-
*
|
61 |
-
* It uses the supporting "cloudfiles_http.php" module for HTTP(s) support and
|
62 |
-
* allows for connection re-use and streaming of content into/out of Cloud Files
|
63 |
-
* via PHP's cURL module.
|
64 |
-
*
|
65 |
-
* See COPYING for license information.
|
66 |
-
*
|
67 |
-
* @author Eric "EJ" Johnson <ej@racklabs.com>
|
68 |
-
* @copyright Copyright (c) 2008, Rackspace US, Inc.
|
69 |
-
* @package php-cloudfiles
|
70 |
-
*/
|
71 |
-
|
72 |
-
/**
|
73 |
-
*/
|
74 |
-
require_once("cloudfiles_exceptions.php");
|
75 |
-
require("cloudfiles_http.php");
|
76 |
-
define("DEFAULT_CF_API_VERSION", 1);
|
77 |
-
define("MAX_CONTAINER_NAME_LEN", 256);
|
78 |
-
define("MAX_OBJECT_NAME_LEN", 1024);
|
79 |
-
define("MAX_OBJECT_SIZE", 5*1024*1024*1024+1);
|
80 |
-
define("US_AUTHURL", "https://auth.api.rackspacecloud.com");
|
81 |
-
define("UK_AUTHURL", "https://lon.auth.api.rackspacecloud.com");
|
82 |
-
/**
|
83 |
-
* Class for handling Cloud Files Authentication, call it's {@link authenticate()}
|
84 |
-
* method to obtain authorized service urls and an authentication token.
|
85 |
-
*
|
86 |
-
* Example:
|
87 |
-
* <code>
|
88 |
-
* # Create the authentication instance
|
89 |
-
* #
|
90 |
-
* $auth = new CF_Authentication("username", "api_key");
|
91 |
-
*
|
92 |
-
* # NOTE: For UK Customers please specify your AuthURL Manually
|
93 |
-
* # There is a Predfined constant to use EX:
|
94 |
-
* #
|
95 |
-
* # $auth = new CF_Authentication("username, "api_key", NULL, UK_AUTHURL);
|
96 |
-
* # Using the UK_AUTHURL keyword will force the api to use the UK AuthUrl.
|
97 |
-
* # rather then the US one. The NULL Is passed for legacy purposes and must
|
98 |
-
* # be passed to function correctly.
|
99 |
-
*
|
100 |
-
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
101 |
-
* # file. This API ships with a newer version obtained directly from
|
102 |
-
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
103 |
-
* # call the CF_Authentication instance's 'ssl_use_cabundle()' method.
|
104 |
-
* #
|
105 |
-
* # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
106 |
-
*
|
107 |
-
* # Perform authentication request
|
108 |
-
* #
|
109 |
-
* $auth->authenticate();
|
110 |
-
* </code>
|
111 |
-
*
|
112 |
-
* @package php-cloudfiles
|
113 |
-
*/
|
114 |
-
class CF_Authentication
|
115 |
-
{
|
116 |
-
public $dbug;
|
117 |
-
public $username;
|
118 |
-
public $api_key;
|
119 |
-
public $auth_host;
|
120 |
-
public $account;
|
121 |
-
|
122 |
-
/**
|
123 |
-
* Instance variables that are set after successful authentication
|
124 |
-
*/
|
125 |
-
public $storage_url;
|
126 |
-
public $cdnm_url;
|
127 |
-
public $auth_token;
|
128 |
-
|
129 |
-
/**
|
130 |
-
* Class constructor (PHP 5 syntax)
|
131 |
-
*
|
132 |
-
* @param string $username Mosso username
|
133 |
-
* @param string $api_key Mosso API Access Key
|
134 |
-
* @param string $account <i>Account name</i>
|
135 |
-
* @param string $auth_host <i>Authentication service URI</i>
|
136 |
-
*/
|
137 |
-
function __construct($username=NULL, $api_key=NULL, $account=NULL, $auth_host=US_AUTHURL)
|
138 |
-
{
|
139 |
-
|
140 |
-
$this->dbug = False;
|
141 |
-
$this->username = $username;
|
142 |
-
$this->api_key = $api_key;
|
143 |
-
$this->account_name = $account;
|
144 |
-
$this->auth_host = $auth_host;
|
145 |
-
|
146 |
-
$this->storage_url = NULL;
|
147 |
-
$this->cdnm_url = NULL;
|
148 |
-
$this->auth_token = NULL;
|
149 |
-
|
150 |
-
$this->cfs_http = new CF_Http(DEFAULT_CF_API_VERSION);
|
151 |
-
}
|
152 |
-
|
153 |
-
/**
|
154 |
-
* Use the Certificate Authority bundle included with this API
|
155 |
-
*
|
156 |
-
* Most versions of PHP with cURL support include an outdated Certificate
|
157 |
-
* Authority (CA) bundle (the file that lists all valid certificate
|
158 |
-
* signing authorities). The SSL certificates used by the Cloud Files
|
159 |
-
* storage system are perfectly valid but have been created/signed by
|
160 |
-
* a CA not listed in these outdated cURL distributions.
|
161 |
-
*
|
162 |
-
* As a work-around, we've included an updated CA bundle obtained
|
163 |
-
* directly from cURL's web site (http://curl.haxx.se). You can direct
|
164 |
-
* the API to use this CA bundle by calling this method prior to making
|
165 |
-
* any remote calls. The best place to use this method is right after
|
166 |
-
* the CF_Authentication instance has been instantiated.
|
167 |
-
*
|
168 |
-
* You can specify your own CA bundle by passing in the full pathname
|
169 |
-
* to the bundle. You can use the included CA bundle by leaving the
|
170 |
-
* argument blank.
|
171 |
-
*
|
172 |
-
* @param string $path Specify path to CA bundle (default to included)
|
173 |
-
*/
|
174 |
-
function ssl_use_cabundle($path=NULL)
|
175 |
-
{
|
176 |
-
$this->cfs_http->ssl_use_cabundle($path);
|
177 |
-
}
|
178 |
-
|
179 |
-
/**
|
180 |
-
* Attempt to validate Username/API Access Key
|
181 |
-
*
|
182 |
-
* Attempts to validate credentials with the authentication service. It
|
183 |
-
* either returns <kbd>True</kbd> or throws an Exception. Accepts a single
|
184 |
-
* (optional) argument for the storage system API version.
|
185 |
-
*
|
186 |
-
* Example:
|
187 |
-
* <code>
|
188 |
-
* # Create the authentication instance
|
189 |
-
* #
|
190 |
-
* $auth = new CF_Authentication("username", "api_key");
|
191 |
-
*
|
192 |
-
* # Perform authentication request
|
193 |
-
* #
|
194 |
-
* $auth->authenticate();
|
195 |
-
* </code>
|
196 |
-
*
|
197 |
-
* @param string $version API version for Auth service (optional)
|
198 |
-
* @return boolean <kbd>True</kbd> if successfully authenticated
|
199 |
-
* @throws AuthenticationException invalid credentials
|
200 |
-
* @throws InvalidResponseException invalid response
|
201 |
-
*/
|
202 |
-
function authenticate($version=DEFAULT_CF_API_VERSION)
|
203 |
-
{
|
204 |
-
list($status,$reason,$surl,$curl,$atoken) =
|
205 |
-
$this->cfs_http->authenticate($this->username, $this->api_key,
|
206 |
-
$this->account_name, $this->auth_host);
|
207 |
-
|
208 |
-
if ($status == 401) {
|
209 |
-
throw new AuthenticationException("Invalid username or access key.");
|
210 |
-
}
|
211 |
-
if ($status != 204) {
|
212 |
-
throw new InvalidResponseException(
|
213 |
-
"Unexpected response (".$status."): ".$reason);
|
214 |
-
}
|
215 |
-
|
216 |
-
if (!($surl || $curl) || !$atoken) {
|
217 |
-
throw new InvalidResponseException(
|
218 |
-
"Expected headers missing from auth service.");
|
219 |
-
}
|
220 |
-
$this->storage_url = $surl;
|
221 |
-
$this->cdnm_url = $curl;
|
222 |
-
$this->auth_token = $atoken;
|
223 |
-
return True;
|
224 |
-
}
|
225 |
-
/**
|
226 |
-
* Use Cached Token and Storage URL's rather then grabbing from the Auth System
|
227 |
-
*
|
228 |
-
* Example:
|
229 |
-
* <code>
|
230 |
-
* #Create an Auth instance
|
231 |
-
* $auth = new CF_Authentication();
|
232 |
-
* #Pass Cached URL's and Token as Args
|
233 |
-
* $auth->load_cached_credentials("auth_token", "storage_url", "cdn_management_url");
|
234 |
-
* </code>
|
235 |
-
*
|
236 |
-
* @param string $auth_token A Cloud Files Auth Token (Required)
|
237 |
-
* @param string $storage_url The Cloud Files Storage URL (Required)
|
238 |
-
* @param string $cdnm_url CDN Management URL (Required)
|
239 |
-
* @return boolean <kbd>True</kbd> if successful
|
240 |
-
* @throws SyntaxException If any of the Required Arguments are missing
|
241 |
-
*/
|
242 |
-
function load_cached_credentials($auth_token, $storage_url, $cdnm_url)
|
243 |
-
{
|
244 |
-
if(!$storage_url || !$cdnm_url)
|
245 |
-
{
|
246 |
-
throw new SyntaxException("Missing Required Interface URL's!");
|
247 |
-
return False;
|
248 |
-
}
|
249 |
-
if(!$auth_token)
|
250 |
-
{
|
251 |
-
throw new SyntaxException("Missing Auth Token!");
|
252 |
-
return False;
|
253 |
-
}
|
254 |
-
|
255 |
-
$this->storage_url = $storage_url;
|
256 |
-
$this->cdnm_url = $cdnm_url;
|
257 |
-
$this->auth_token = $auth_token;
|
258 |
-
return True;
|
259 |
-
}
|
260 |
-
/**
|
261 |
-
* Grab Cloud Files info to be Cached for later use with the load_cached_credentials method.
|
262 |
-
*
|
263 |
-
* Example:
|
264 |
-
* <code>
|
265 |
-
* #Create an Auth instance
|
266 |
-
* $auth = new CF_Authentication("UserName","API_Key");
|
267 |
-
* $auth->authenticate();
|
268 |
-
* $array = $auth->export_credentials();
|
269 |
-
* </code>
|
270 |
-
*
|
271 |
-
* @return array of url's and an auth token.
|
272 |
-
*/
|
273 |
-
function export_credentials()
|
274 |
-
{
|
275 |
-
$arr = array();
|
276 |
-
$arr['storage_url'] = $this->storage_url;
|
277 |
-
$arr['cdnm_url'] = $this->cdnm_url;
|
278 |
-
$arr['auth_token'] = $this->auth_token;
|
279 |
-
|
280 |
-
return $arr;
|
281 |
-
}
|
282 |
-
|
283 |
-
|
284 |
-
/**
|
285 |
-
* Make sure the CF_Authentication instance has authenticated.
|
286 |
-
*
|
287 |
-
* Ensures that the instance variables necessary to communicate with
|
288 |
-
* Cloud Files have been set from a previous authenticate() call.
|
289 |
-
*
|
290 |
-
* @return boolean <kbd>True</kbd> if successfully authenticated
|
291 |
-
*/
|
292 |
-
function authenticated()
|
293 |
-
{
|
294 |
-
if (!($this->storage_url || $this->cdnm_url) || !$this->auth_token) {
|
295 |
-
return False;
|
296 |
-
}
|
297 |
-
return True;
|
298 |
-
}
|
299 |
-
|
300 |
-
/**
|
301 |
-
* Toggle debugging - set cURL verbose flag
|
302 |
-
*/
|
303 |
-
function setDebug($bool)
|
304 |
-
{
|
305 |
-
$this->dbug = $bool;
|
306 |
-
$this->cfs_http->setDebug($bool);
|
307 |
-
}
|
308 |
-
}
|
309 |
-
|
310 |
-
/**
|
311 |
-
* Class for establishing connections to the Cloud Files storage system.
|
312 |
-
* Connection instances are used to communicate with the storage system at
|
313 |
-
* the account level; listing and deleting Containers and returning Container
|
314 |
-
* instances.
|
315 |
-
*
|
316 |
-
* Example:
|
317 |
-
* <code>
|
318 |
-
* # Create the authentication instance
|
319 |
-
* #
|
320 |
-
* $auth = new CF_Authentication("username", "api_key");
|
321 |
-
*
|
322 |
-
* # Perform authentication request
|
323 |
-
* #
|
324 |
-
* $auth->authenticate();
|
325 |
-
*
|
326 |
-
* # Create a connection to the storage/cdn system(s) and pass in the
|
327 |
-
* # validated CF_Authentication instance.
|
328 |
-
* #
|
329 |
-
* $conn = new CF_Connection($auth);
|
330 |
-
*
|
331 |
-
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
332 |
-
* # file. This API ships with a newer version obtained directly from
|
333 |
-
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
334 |
-
* # call the CF_Authentication instance's 'ssl_use_cabundle()' method.
|
335 |
-
* #
|
336 |
-
* # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
337 |
-
* </code>
|
338 |
-
*
|
339 |
-
* @package php-cloudfiles
|
340 |
-
*/
|
341 |
-
class CF_Connection
|
342 |
-
{
|
343 |
-
public $dbug;
|
344 |
-
public $cfs_http;
|
345 |
-
public $cfs_auth;
|
346 |
-
|
347 |
-
/**
|
348 |
-
* Pass in a previously authenticated CF_Authentication instance.
|
349 |
-
*
|
350 |
-
* Example:
|
351 |
-
* <code>
|
352 |
-
* # Create the authentication instance
|
353 |
-
* #
|
354 |
-
* $auth = new CF_Authentication("username", "api_key");
|
355 |
-
*
|
356 |
-
* # Perform authentication request
|
357 |
-
* #
|
358 |
-
* $auth->authenticate();
|
359 |
-
*
|
360 |
-
* # Create a connection to the storage/cdn system(s) and pass in the
|
361 |
-
* # validated CF_Authentication instance.
|
362 |
-
* #
|
363 |
-
* $conn = new CF_Connection($auth);
|
364 |
-
*
|
365 |
-
* # If you are connecting via Rackspace servers and have access
|
366 |
-
* # to the servicenet network you can set the $servicenet to True
|
367 |
-
* # like this.
|
368 |
-
*
|
369 |
-
* $conn = new CF_Connection($auth, $servicenet=True);
|
370 |
-
*
|
371 |
-
* </code>
|
372 |
-
*
|
373 |
-
* If the environement variable RACKSPACE_SERVICENET is defined it will
|
374 |
-
* force to connect via the servicenet.
|
375 |
-
*
|
376 |
-
* @param obj $cfs_auth previously authenticated CF_Authentication instance
|
377 |
-
* @param boolean $servicenet enable/disable access via Rackspace servicenet.
|
378 |
-
* @throws AuthenticationException not authenticated
|
379 |
-
*/
|
380 |
-
function __construct($cfs_auth, $servicenet=False)
|
381 |
-
{
|
382 |
-
if (isset($_ENV['RACKSPACE_SERVICENET']))
|
383 |
-
$servicenet=True;
|
384 |
-
$this->cfs_http = new CF_Http(DEFAULT_CF_API_VERSION);
|
385 |
-
$this->cfs_auth = $cfs_auth;
|
386 |
-
if (!$this->cfs_auth->authenticated()) {
|
387 |
-
$e = "Need to pass in a previously authenticated ";
|
388 |
-
$e .= "CF_Authentication instance.";
|
389 |
-
throw new AuthenticationException($e);
|
390 |
-
}
|
391 |
-
$this->cfs_http->setCFAuth($this->cfs_auth, $servicenet=$servicenet);
|
392 |
-
$this->dbug = False;
|
393 |
-
}
|
394 |
-
|
395 |
-
/**
|
396 |
-
* Toggle debugging of instance and back-end HTTP module
|
397 |
-
*
|
398 |
-
* @param boolean $bool enable/disable cURL debugging
|
399 |
-
*/
|
400 |
-
function setDebug($bool)
|
401 |
-
{
|
402 |
-
$this->dbug = (boolean) $bool;
|
403 |
-
$this->cfs_http->setDebug($this->dbug);
|
404 |
-
}
|
405 |
-
|
406 |
-
/**
|
407 |
-
* Close a connection
|
408 |
-
*
|
409 |
-
* Example:
|
410 |
-
* <code>
|
411 |
-
*
|
412 |
-
* $conn->close();
|
413 |
-
*
|
414 |
-
* </code>
|
415 |
-
*
|
416 |
-
* Will close all current cUrl active connections.
|
417 |
-
*
|
418 |
-
*/
|
419 |
-
public function close()
|
420 |
-
{
|
421 |
-
$this->cfs_http->close();
|
422 |
-
}
|
423 |
-
|
424 |
-
/**
|
425 |
-
* Cloud Files account information
|
426 |
-
*
|
427 |
-
* Return an array of two floats (since PHP only supports 32-bit integers);
|
428 |
-
* number of containers on the account and total bytes used for the account.
|
429 |
-
*
|
430 |
-
* Example:
|
431 |
-
* <code>
|
432 |
-
* # ... authentication code excluded (see previous examples) ...
|
433 |
-
* #
|
434 |
-
* $conn = new CF_Authentication($auth);
|
435 |
-
*
|
436 |
-
* list($quantity, $bytes) = $conn->get_info();
|
437 |
-
* print "Number of containers: " . $quantity . "\n";
|
438 |
-
* print "Bytes stored in container: " . $bytes . "\n";
|
439 |
-
* </code>
|
440 |
-
*
|
441 |
-
* @return array (number of containers, total bytes stored)
|
442 |
-
* @throws InvalidResponseException unexpected response
|
443 |
-
*/
|
444 |
-
function get_info()
|
445 |
-
{
|
446 |
-
list($status, $reason, $container_count, $total_bytes) =
|
447 |
-
$this->cfs_http->head_account();
|
448 |
-
#if ($status == 401 && $this->_re_auth()) {
|
449 |
-
# return $this->get_info();
|
450 |
-
#}
|
451 |
-
if ($status < 200 || $status > 299) {
|
452 |
-
throw new InvalidResponseException(
|
453 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
454 |
-
}
|
455 |
-
return array($container_count, $total_bytes);
|
456 |
-
}
|
457 |
-
|
458 |
-
/**
|
459 |
-
* Create a Container
|
460 |
-
*
|
461 |
-
* Given a Container name, return a Container instance, creating a new
|
462 |
-
* remote Container if it does not exit.
|
463 |
-
*
|
464 |
-
* Example:
|
465 |
-
* <code>
|
466 |
-
* # ... authentication code excluded (see previous examples) ...
|
467 |
-
* #
|
468 |
-
* $conn = new CF_Authentication($auth);
|
469 |
-
*
|
470 |
-
* $images = $conn->create_container("my photos");
|
471 |
-
* </code>
|
472 |
-
*
|
473 |
-
* @param string $container_name container name
|
474 |
-
* @return CF_Container
|
475 |
-
* @throws SyntaxException invalid name
|
476 |
-
* @throws InvalidResponseException unexpected response
|
477 |
-
*/
|
478 |
-
function create_container($container_name=NULL)
|
479 |
-
{
|
480 |
-
if ($container_name != "0" and !isset($container_name))
|
481 |
-
throw new SyntaxException("Container name not set.");
|
482 |
-
|
483 |
-
if (!isset($container_name) or $container_name == "")
|
484 |
-
throw new SyntaxException("Container name not set.");
|
485 |
-
|
486 |
-
if (strpos($container_name, "/") !== False) {
|
487 |
-
$r = "Container name '".$container_name;
|
488 |
-
$r .= "' cannot contain a '/' character.";
|
489 |
-
throw new SyntaxException($r);
|
490 |
-
}
|
491 |
-
if (strlen($container_name) > MAX_CONTAINER_NAME_LEN) {
|
492 |
-
throw new SyntaxException(sprintf(
|
493 |
-
"Container name exeeds %d bytes.",
|
494 |
-
MAX_CONTAINER_NAME_LEN));
|
495 |
-
}
|
496 |
-
|
497 |
-
$return_code = $this->cfs_http->create_container($container_name);
|
498 |
-
if (!$return_code) {
|
499 |
-
throw new InvalidResponseException("Invalid response ("
|
500 |
-
. $return_code. "): " . $this->cfs_http->get_error());
|
501 |
-
}
|
502 |
-
#if ($status == 401 && $this->_re_auth()) {
|
503 |
-
# return $this->create_container($container_name);
|
504 |
-
#}
|
505 |
-
if ($return_code != 201 && $return_code != 202) {
|
506 |
-
throw new InvalidResponseException(
|
507 |
-
"Invalid response (".$return_code."): "
|
508 |
-
. $this->cfs_http->get_error());
|
509 |
-
}
|
510 |
-
return new CF_Container($this->cfs_auth, $this->cfs_http, $container_name);
|
511 |
-
}
|
512 |
-
|
513 |
-
/**
|
514 |
-
* Delete a Container
|
515 |
-
*
|
516 |
-
* Given either a Container instance or name, remove the remote Container.
|
517 |
-
* The Container must be empty prior to removing it.
|
518 |
-
*
|
519 |
-
* Example:
|
520 |
-
* <code>
|
521 |
-
* # ... authentication code excluded (see previous examples) ...
|
522 |
-
* #
|
523 |
-
* $conn = new CF_Authentication($auth);
|
524 |
-
*
|
525 |
-
* $conn->delete_container("my photos");
|
526 |
-
* </code>
|
527 |
-
*
|
528 |
-
* @param string|obj $container container name or instance
|
529 |
-
* @return boolean <kbd>True</kbd> if successfully deleted
|
530 |
-
* @throws SyntaxException missing proper argument
|
531 |
-
* @throws InvalidResponseException invalid response
|
532 |
-
* @throws NonEmptyContainerException container not empty
|
533 |
-
* @throws NoSuchContainerException remote container does not exist
|
534 |
-
*/
|
535 |
-
function delete_container($container=NULL)
|
536 |
-
{
|
537 |
-
$container_name = NULL;
|
538 |
-
|
539 |
-
if (is_object($container)) {
|
540 |
-
if (get_class($container) == "CF_Container") {
|
541 |
-
$container_name = $container->name;
|
542 |
-
}
|
543 |
-
}
|
544 |
-
if (is_string($container)) {
|
545 |
-
$container_name = $container;
|
546 |
-
}
|
547 |
-
|
548 |
-
if ($container_name != "0" and !isset($container_name))
|
549 |
-
throw new SyntaxException("Must specify container object or name.");
|
550 |
-
|
551 |
-
$return_code = $this->cfs_http->delete_container($container_name);
|
552 |
-
|
553 |
-
if (!$return_code) {
|
554 |
-
throw new InvalidResponseException("Failed to obtain http response");
|
555 |
-
}
|
556 |
-
#if ($status == 401 && $this->_re_auth()) {
|
557 |
-
# return $this->delete_container($container);
|
558 |
-
#}
|
559 |
-
if ($return_code == 409) {
|
560 |
-
throw new NonEmptyContainerException(
|
561 |
-
"Container must be empty prior to removing it.");
|
562 |
-
}
|
563 |
-
if ($return_code == 404) {
|
564 |
-
throw new NoSuchContainerException(
|
565 |
-
"Specified container did not exist to delete.");
|
566 |
-
}
|
567 |
-
if ($return_code != 204) {
|
568 |
-
throw new InvalidResponseException(
|
569 |
-
"Invalid response (".$return_code."): "
|
570 |
-
. $this->cfs_http->get_error());
|
571 |
-
}
|
572 |
-
return True;
|
573 |
-
}
|
574 |
-
|
575 |
-
/**
|
576 |
-
* Return a Container instance
|
577 |
-
*
|
578 |
-
* For the given name, return a Container instance if the remote Container
|
579 |
-
* exists, otherwise throw a Not Found exception.
|
580 |
-
*
|
581 |
-
* Example:
|
582 |
-
* <code>
|
583 |
-
* # ... authentication code excluded (see previous examples) ...
|
584 |
-
* #
|
585 |
-
* $conn = new CF_Authentication($auth);
|
586 |
-
*
|
587 |
-
* $images = $conn->get_container("my photos");
|
588 |
-
* print "Number of Objects: " . $images->count . "\n";
|
589 |
-
* print "Bytes stored in container: " . $images->bytes . "\n";
|
590 |
-
* </code>
|
591 |
-
*
|
592 |
-
* @param string $container_name name of the remote Container
|
593 |
-
* @return container CF_Container instance
|
594 |
-
* @throws NoSuchContainerException thrown if no remote Container
|
595 |
-
* @throws InvalidResponseException unexpected response
|
596 |
-
*/
|
597 |
-
function get_container($container_name=NULL)
|
598 |
-
{
|
599 |
-
list($status, $reason, $count, $bytes) =
|
600 |
-
$this->cfs_http->head_container($container_name);
|
601 |
-
#if ($status == 401 && $this->_re_auth()) {
|
602 |
-
# return $this->get_container($container_name);
|
603 |
-
#}
|
604 |
-
if ($status == 404) {
|
605 |
-
throw new NoSuchContainerException("Container not found.");
|
606 |
-
}
|
607 |
-
if ($status < 200 || $status > 299) {
|
608 |
-
throw new InvalidResponseException(
|
609 |
-
"Invalid response: ".$this->cfs_http->get_error());
|
610 |
-
}
|
611 |
-
return new CF_Container($this->cfs_auth, $this->cfs_http,
|
612 |
-
$container_name, $count, $bytes);
|
613 |
-
}
|
614 |
-
|
615 |
-
/**
|
616 |
-
* Return array of Container instances
|
617 |
-
*
|
618 |
-
* Return an array of CF_Container instances on the account. The instances
|
619 |
-
* will be fully populated with Container attributes (bytes stored and
|
620 |
-
* Object count)
|
621 |
-
*
|
622 |
-
* Example:
|
623 |
-
* <code>
|
624 |
-
* # ... authentication code excluded (see previous examples) ...
|
625 |
-
* #
|
626 |
-
* $conn = new CF_Authentication($auth);
|
627 |
-
*
|
628 |
-
* $clist = $conn->get_containers();
|
629 |
-
* foreach ($clist as $cont) {
|
630 |
-
* print "Container name: " . $cont->name . "\n";
|
631 |
-
* print "Number of Objects: " . $cont->count . "\n";
|
632 |
-
* print "Bytes stored in container: " . $cont->bytes . "\n";
|
633 |
-
* }
|
634 |
-
* </code>
|
635 |
-
*
|
636 |
-
* @return array An array of CF_Container instances
|
637 |
-
* @throws InvalidResponseException unexpected response
|
638 |
-
*/
|
639 |
-
function get_containers($limit=0, $marker=NULL)
|
640 |
-
{
|
641 |
-
list($status, $reason, $container_info) =
|
642 |
-
$this->cfs_http->list_containers_info($limit, $marker);
|
643 |
-
#if ($status == 401 && $this->_re_auth()) {
|
644 |
-
# return $this->get_containers();
|
645 |
-
#}
|
646 |
-
if ($status < 200 || $status > 299) {
|
647 |
-
throw new InvalidResponseException(
|
648 |
-
"Invalid response: ".$this->cfs_http->get_error());
|
649 |
-
}
|
650 |
-
$containers = array();
|
651 |
-
foreach ($container_info as $name => $info) {
|
652 |
-
$containers[] = new CF_Container($this->cfs_auth, $this->cfs_http,
|
653 |
-
$info['name'], $info["count"], $info["bytes"], False);
|
654 |
-
}
|
655 |
-
return $containers;
|
656 |
-
}
|
657 |
-
|
658 |
-
/**
|
659 |
-
* Return list of remote Containers
|
660 |
-
*
|
661 |
-
* Return an array of strings containing the names of all remote Containers.
|
662 |
-
*
|
663 |
-
* Example:
|
664 |
-
* <code>
|
665 |
-
* # ... authentication code excluded (see previous examples) ...
|
666 |
-
* #
|
667 |
-
* $conn = new CF_Authentication($auth);
|
668 |
-
*
|
669 |
-
* $container_list = $conn->list_containers();
|
670 |
-
* print_r($container_list);
|
671 |
-
* Array
|
672 |
-
* (
|
673 |
-
* [0] => "my photos",
|
674 |
-
* [1] => "my docs"
|
675 |
-
* )
|
676 |
-
* </code>
|
677 |
-
*
|
678 |
-
* @param integer $limit restrict results to $limit Containers
|
679 |
-
* @param string $marker return results greater than $marker
|
680 |
-
* @return array list of remote Containers
|
681 |
-
* @throws InvalidResponseException unexpected response
|
682 |
-
*/
|
683 |
-
function list_containers($limit=0, $marker=NULL)
|
684 |
-
{
|
685 |
-
list($status, $reason, $containers) =
|
686 |
-
$this->cfs_http->list_containers($limit, $marker);
|
687 |
-
#if ($status == 401 && $this->_re_auth()) {
|
688 |
-
# return $this->list_containers($limit, $marker);
|
689 |
-
#}
|
690 |
-
if ($status < 200 || $status > 299) {
|
691 |
-
throw new InvalidResponseException(
|
692 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
693 |
-
}
|
694 |
-
return $containers;
|
695 |
-
}
|
696 |
-
|
697 |
-
/**
|
698 |
-
* Return array of information about remote Containers
|
699 |
-
*
|
700 |
-
* Return a nested array structure of Container info.
|
701 |
-
*
|
702 |
-
* Example:
|
703 |
-
* <code>
|
704 |
-
* # ... authentication code excluded (see previous examples) ...
|
705 |
-
* #
|
706 |
-
*
|
707 |
-
* $container_info = $conn->list_containers_info();
|
708 |
-
* print_r($container_info);
|
709 |
-
* Array
|
710 |
-
* (
|
711 |
-
* ["my photos"] =>
|
712 |
-
* Array
|
713 |
-
* (
|
714 |
-
* ["bytes"] => 78,
|
715 |
-
* ["count"] => 2
|
716 |
-
* )
|
717 |
-
* ["docs"] =>
|
718 |
-
* Array
|
719 |
-
* (
|
720 |
-
* ["bytes"] => 37323,
|
721 |
-
* ["count"] => 12
|
722 |
-
* )
|
723 |
-
* )
|
724 |
-
* </code>
|
725 |
-
*
|
726 |
-
* @param integer $limit restrict results to $limit Containers
|
727 |
-
* @param string $marker return results greater than $marker
|
728 |
-
* @return array nested array structure of Container info
|
729 |
-
* @throws InvalidResponseException unexpected response
|
730 |
-
*/
|
731 |
-
function list_containers_info($limit=0, $marker=NULL)
|
732 |
-
{
|
733 |
-
list($status, $reason, $container_info) =
|
734 |
-
$this->cfs_http->list_containers_info($limit, $marker);
|
735 |
-
#if ($status == 401 && $this->_re_auth()) {
|
736 |
-
# return $this->list_containers_info($limit, $marker);
|
737 |
-
#}
|
738 |
-
if ($status < 200 || $status > 299) {
|
739 |
-
throw new InvalidResponseException(
|
740 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
741 |
-
}
|
742 |
-
return $container_info;
|
743 |
-
}
|
744 |
-
|
745 |
-
/**
|
746 |
-
* Return list of Containers that have been published to the CDN.
|
747 |
-
*
|
748 |
-
* Return an array of strings containing the names of published Containers.
|
749 |
-
* Note that this function returns the list of any Container that has
|
750 |
-
* ever been CDN-enabled regardless of it's existence in the storage
|
751 |
-
* system.
|
752 |
-
*
|
753 |
-
* Example:
|
754 |
-
* <code>
|
755 |
-
* # ... authentication code excluded (see previous examples) ...
|
756 |
-
* #
|
757 |
-
* $conn = new CF_Authentication($auth);
|
758 |
-
*
|
759 |
-
* $public_containers = $conn->list_public_containers();
|
760 |
-
* print_r($public_containers);
|
761 |
-
* Array
|
762 |
-
* (
|
763 |
-
* [0] => "images",
|
764 |
-
* [1] => "css",
|
765 |
-
* [2] => "javascript"
|
766 |
-
* )
|
767 |
-
* </code>
|
768 |
-
*
|
769 |
-
* @param bool $enabled_only Will list all containers ever CDN enabled if * set to false or only currently enabled CDN containers if set to true. * Defaults to false.
|
770 |
-
* @return array list of published Container names
|
771 |
-
* @throws InvalidResponseException unexpected response
|
772 |
-
*/
|
773 |
-
function list_public_containers($enabled_only=False)
|
774 |
-
{
|
775 |
-
list($status, $reason, $containers) =
|
776 |
-
$this->cfs_http->list_cdn_containers($enabled_only);
|
777 |
-
#if ($status == 401 && $this->_re_auth()) {
|
778 |
-
# return $this->list_public_containers();
|
779 |
-
#}
|
780 |
-
if ($status < 200 || $status > 299) {
|
781 |
-
throw new InvalidResponseException(
|
782 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
783 |
-
}
|
784 |
-
return $containers;
|
785 |
-
}
|
786 |
-
|
787 |
-
/**
|
788 |
-
* Set a user-supplied callback function to report download progress
|
789 |
-
*
|
790 |
-
* The callback function is used to report incremental progress of a data
|
791 |
-
* download functions (e.g. $container->list_objects(), $obj->read(), etc).
|
792 |
-
* The specified function will be periodically called with the number of
|
793 |
-
* bytes transferred until the entire download is complete. This callback
|
794 |
-
* function can be useful for implementing "progress bars" for large
|
795 |
-
* downloads.
|
796 |
-
*
|
797 |
-
* The specified callback function should take a single integer parameter.
|
798 |
-
*
|
799 |
-
* <code>
|
800 |
-
* function read_callback($bytes_transferred) {
|
801 |
-
* print ">> downloaded " . $bytes_transferred . " bytes.\n";
|
802 |
-
* # ... do other things ...
|
803 |
-
* return;
|
804 |
-
* }
|
805 |
-
*
|
806 |
-
* $conn = new CF_Connection($auth_obj);
|
807 |
-
* $conn->set_read_progress_function("read_callback");
|
808 |
-
* print_r($conn->list_containers());
|
809 |
-
*
|
810 |
-
* # output would look like this:
|
811 |
-
* #
|
812 |
-
* >> downloaded 10 bytes.
|
813 |
-
* >> downloaded 11 bytes.
|
814 |
-
* Array
|
815 |
-
* (
|
816 |
-
* [0] => fuzzy.txt
|
817 |
-
* [1] => space name
|
818 |
-
* )
|
819 |
-
* </code>
|
820 |
-
*
|
821 |
-
* @param string $func_name the name of the user callback function
|
822 |
-
*/
|
823 |
-
function set_read_progress_function($func_name)
|
824 |
-
{
|
825 |
-
$this->cfs_http->setReadProgressFunc($func_name);
|
826 |
-
}
|
827 |
-
|
828 |
-
/**
|
829 |
-
* Set a user-supplied callback function to report upload progress
|
830 |
-
*
|
831 |
-
* The callback function is used to report incremental progress of a data
|
832 |
-
* upload functions (e.g. $obj->write() call). The specified function will
|
833 |
-
* be periodically called with the number of bytes transferred until the
|
834 |
-
* entire upload is complete. This callback function can be useful
|
835 |
-
* for implementing "progress bars" for large uploads/downloads.
|
836 |
-
*
|
837 |
-
* The specified callback function should take a single integer parameter.
|
838 |
-
*
|
839 |
-
* <code>
|
840 |
-
* function write_callback($bytes_transferred) {
|
841 |
-
* print ">> uploaded " . $bytes_transferred . " bytes.\n";
|
842 |
-
* # ... do other things ...
|
843 |
-
* return;
|
844 |
-
* }
|
845 |
-
*
|
846 |
-
* $conn = new CF_Connection($auth_obj);
|
847 |
-
* $conn->set_write_progress_function("write_callback");
|
848 |
-
* $container = $conn->create_container("stuff");
|
849 |
-
* $obj = $container->create_object("foo");
|
850 |
-
* $obj->write("The callback function will be called during upload.");
|
851 |
-
*
|
852 |
-
* # output would look like this:
|
853 |
-
* # >> uploaded 51 bytes.
|
854 |
-
* #
|
855 |
-
* </code>
|
856 |
-
*
|
857 |
-
* @param string $func_name the name of the user callback function
|
858 |
-
*/
|
859 |
-
function set_write_progress_function($func_name)
|
860 |
-
{
|
861 |
-
$this->cfs_http->setWriteProgressFunc($func_name);
|
862 |
-
}
|
863 |
-
|
864 |
-
/**
|
865 |
-
* Use the Certificate Authority bundle included with this API
|
866 |
-
*
|
867 |
-
* Most versions of PHP with cURL support include an outdated Certificate
|
868 |
-
* Authority (CA) bundle (the file that lists all valid certificate
|
869 |
-
* signing authorities). The SSL certificates used by the Cloud Files
|
870 |
-
* storage system are perfectly valid but have been created/signed by
|
871 |
-
* a CA not listed in these outdated cURL distributions.
|
872 |
-
*
|
873 |
-
* As a work-around, we've included an updated CA bundle obtained
|
874 |
-
* directly from cURL's web site (http://curl.haxx.se). You can direct
|
875 |
-
* the API to use this CA bundle by calling this method prior to making
|
876 |
-
* any remote calls. The best place to use this method is right after
|
877 |
-
* the CF_Authentication instance has been instantiated.
|
878 |
-
*
|
879 |
-
* You can specify your own CA bundle by passing in the full pathname
|
880 |
-
* to the bundle. You can use the included CA bundle by leaving the
|
881 |
-
* argument blank.
|
882 |
-
*
|
883 |
-
* @param string $path Specify path to CA bundle (default to included)
|
884 |
-
*/
|
885 |
-
function ssl_use_cabundle($path=NULL)
|
886 |
-
{
|
887 |
-
$this->cfs_http->ssl_use_cabundle($path);
|
888 |
-
}
|
889 |
-
|
890 |
-
#private function _re_auth()
|
891 |
-
#{
|
892 |
-
# $new_auth = new CF_Authentication(
|
893 |
-
# $this->cfs_auth->username,
|
894 |
-
# $this->cfs_auth->api_key,
|
895 |
-
# $this->cfs_auth->auth_host,
|
896 |
-
# $this->cfs_auth->account);
|
897 |
-
# $new_auth->authenticate();
|
898 |
-
# $this->cfs_auth = $new_auth;
|
899 |
-
# $this->cfs_http->setCFAuth($this->cfs_auth);
|
900 |
-
# return True;
|
901 |
-
#}
|
902 |
-
}
|
903 |
-
|
904 |
-
/**
|
905 |
-
* Container operations
|
906 |
-
*
|
907 |
-
* Containers are storage compartments where you put your data (objects).
|
908 |
-
* A container is similar to a directory or folder on a conventional filesystem
|
909 |
-
* with the exception that they exist in a flat namespace, you can not create
|
910 |
-
* containers inside of containers.
|
911 |
-
*
|
912 |
-
* You also have the option of marking a Container as "public" so that the
|
913 |
-
* Objects stored in the Container are publicly available via the CDN.
|
914 |
-
*
|
915 |
-
* @package php-cloudfiles
|
916 |
-
*/
|
917 |
-
class CF_Container
|
918 |
-
{
|
919 |
-
public $cfs_auth;
|
920 |
-
public $cfs_http;
|
921 |
-
public $name;
|
922 |
-
public $object_count;
|
923 |
-
public $bytes_used;
|
924 |
-
|
925 |
-
public $cdn_enabled;
|
926 |
-
public $cdn_uri;
|
927 |
-
public $cdn_ttl;
|
928 |
-
public $cdn_log_retention;
|
929 |
-
public $cdn_acl_user_agent;
|
930 |
-
public $cdn_acl_referrer;
|
931 |
-
|
932 |
-
/**
|
933 |
-
* Class constructor
|
934 |
-
*
|
935 |
-
* Constructor for Container
|
936 |
-
*
|
937 |
-
* @param obj $cfs_auth CF_Authentication instance
|
938 |
-
* @param obj $cfs_http HTTP connection manager
|
939 |
-
* @param string $name name of Container
|
940 |
-
* @param int $count number of Objects stored in this Container
|
941 |
-
* @param int $bytes number of bytes stored in this Container
|
942 |
-
* @throws SyntaxException invalid Container name
|
943 |
-
*/
|
944 |
-
function __construct(&$cfs_auth, &$cfs_http, $name, $count=0,
|
945 |
-
$bytes=0, $docdn=True)
|
946 |
-
{
|
947 |
-
if (strlen($name) > MAX_CONTAINER_NAME_LEN) {
|
948 |
-
throw new SyntaxException("Container name exceeds "
|
949 |
-
. "maximum allowed length.");
|
950 |
-
}
|
951 |
-
if (strpos($name, "/") !== False) {
|
952 |
-
throw new SyntaxException(
|
953 |
-
"Container names cannot contain a '/' character.");
|
954 |
-
}
|
955 |
-
$this->cfs_auth = $cfs_auth;
|
956 |
-
$this->cfs_http = $cfs_http;
|
957 |
-
$this->name = $name;
|
958 |
-
$this->object_count = $count;
|
959 |
-
$this->bytes_used = $bytes;
|
960 |
-
$this->cdn_enabled = NULL;
|
961 |
-
$this->cdn_uri = NULL;
|
962 |
-
$this->cdn_ttl = NULL;
|
963 |
-
$this->cdn_log_retention = NULL;
|
964 |
-
$this->cdn_acl_user_agent = NULL;
|
965 |
-
$this->cdn_acl_referrer = NULL;
|
966 |
-
if ($this->cfs_http->getCDNMUrl() != NULL && $docdn) {
|
967 |
-
$this->_cdn_initialize();
|
968 |
-
}
|
969 |
-
}
|
970 |
-
|
971 |
-
/**
|
972 |
-
* String representation of Container
|
973 |
-
*
|
974 |
-
* Pretty print the Container instance.
|
975 |
-
*
|
976 |
-
* @return string Container details
|
977 |
-
*/
|
978 |
-
function __toString()
|
979 |
-
{
|
980 |
-
$me = sprintf("name: %s, count: %.0f, bytes: %.0f",
|
981 |
-
$this->name, $this->object_count, $this->bytes_used);
|
982 |
-
if ($this->cfs_http->getCDNMUrl() != NULL) {
|
983 |
-
$me .= sprintf(", cdn: %s, cdn uri: %s, cdn ttl: %.0f, logs retention: %s",
|
984 |
-
$this->is_public() ? "Yes" : "No",
|
985 |
-
$this->cdn_uri, $this->cdn_ttl,
|
986 |
-
$this->cdn_log_retention ? "Yes" : "No"
|
987 |
-
);
|
988 |
-
|
989 |
-
if ($this->cdn_acl_user_agent != NULL) {
|
990 |
-
$me .= ", cdn acl user agent: " . $this->cdn_acl_user_agent;
|
991 |
-
}
|
992 |
-
|
993 |
-
if ($this->cdn_acl_referrer != NULL) {
|
994 |
-
$me .= ", cdn acl referrer: " . $this->cdn_acl_referrer;
|
995 |
-
}
|
996 |
-
|
997 |
-
|
998 |
-
}
|
999 |
-
return $me;
|
1000 |
-
}
|
1001 |
-
|
1002 |
-
/**
|
1003 |
-
* Enable Container content to be served via CDN or modify CDN attributes
|
1004 |
-
*
|
1005 |
-
* Either enable this Container's content to be served via CDN or
|
1006 |
-
* adjust its CDN attributes. This Container will always return the
|
1007 |
-
* same CDN-enabled URI each time it is toggled public/private/public.
|
1008 |
-
*
|
1009 |
-
* Example:
|
1010 |
-
* <code>
|
1011 |
-
* # ... authentication code excluded (see previous examples) ...
|
1012 |
-
* #
|
1013 |
-
* $conn = new CF_Authentication($auth);
|
1014 |
-
*
|
1015 |
-
* $public_container = $conn->create_container("public");
|
1016 |
-
*
|
1017 |
-
* # CDN-enable the container and set it's TTL for a month
|
1018 |
-
* #
|
1019 |
-
* $public_container->make_public(86400/2); # 12 hours (86400 seconds/day)
|
1020 |
-
* </code>
|
1021 |
-
*
|
1022 |
-
* @param int $ttl the time in seconds content will be cached in the CDN
|
1023 |
-
* @returns string the CDN enabled Container's URI
|
1024 |
-
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1025 |
-
* @throws AuthenticationException if auth token is not valid/expired
|
1026 |
-
* @throws InvalidResponseException unexpected response
|
1027 |
-
*/
|
1028 |
-
function make_public($ttl=86400)
|
1029 |
-
{
|
1030 |
-
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1031 |
-
throw new CDNNotEnabledException(
|
1032 |
-
"Authentication response did not indicate CDN availability");
|
1033 |
-
}
|
1034 |
-
if ($this->cdn_uri != NULL) {
|
1035 |
-
# previously published, assume we're setting new attributes
|
1036 |
-
list($status, $reason, $cdn_uri) =
|
1037 |
-
$this->cfs_http->update_cdn_container($this->name,$ttl,
|
1038 |
-
$this->cdn_log_retention,
|
1039 |
-
$this->cdn_acl_user_agent,
|
1040 |
-
$this->cdn_acl_referrer);
|
1041 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1042 |
-
# return $this->make_public($ttl);
|
1043 |
-
#}
|
1044 |
-
if ($status == 404) {
|
1045 |
-
# this instance _thinks_ the container was published, but the
|
1046 |
-
# cdn management system thinks otherwise - try again with a PUT
|
1047 |
-
list($status, $reason, $cdn_uri) =
|
1048 |
-
$this->cfs_http->add_cdn_container($this->name,$ttl);
|
1049 |
-
|
1050 |
-
}
|
1051 |
-
} else {
|
1052 |
-
# publish it for first time
|
1053 |
-
list($status, $reason, $cdn_uri) =
|
1054 |
-
$this->cfs_http->add_cdn_container($this->name,$ttl);
|
1055 |
-
}
|
1056 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1057 |
-
# return $this->make_public($ttl);
|
1058 |
-
#}
|
1059 |
-
if (!in_array($status, array(201,202))) {
|
1060 |
-
throw new InvalidResponseException(
|
1061 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1062 |
-
}
|
1063 |
-
$this->cdn_enabled = True;
|
1064 |
-
$this->cdn_ttl = $ttl;
|
1065 |
-
$this->cdn_uri = $cdn_uri;
|
1066 |
-
$this->cdn_log_retention = False;
|
1067 |
-
$this->cdn_acl_user_agent = "";
|
1068 |
-
$this->cdn_acl_referrer = "";
|
1069 |
-
return $this->cdn_uri;
|
1070 |
-
}
|
1071 |
-
|
1072 |
-
/**
|
1073 |
-
* Enable ACL restriction by User Agent for this container.
|
1074 |
-
*
|
1075 |
-
* Example:
|
1076 |
-
* <code>
|
1077 |
-
* # ... authentication code excluded (see previous examples) ...
|
1078 |
-
* #
|
1079 |
-
* $conn = new CF_Authentication($auth);
|
1080 |
-
*
|
1081 |
-
* $public_container = $conn->get_container("public");
|
1082 |
-
*
|
1083 |
-
* # Enable ACL by Referrer
|
1084 |
-
* $public_container->acl_referrer("Mozilla");
|
1085 |
-
* </code>
|
1086 |
-
*
|
1087 |
-
* @returns boolean True if successful
|
1088 |
-
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1089 |
-
* @throws AuthenticationException if auth token is not valid/expired
|
1090 |
-
* @throws InvalidResponseException unexpected response
|
1091 |
-
*/
|
1092 |
-
function acl_user_agent($cdn_acl_user_agent="") {
|
1093 |
-
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1094 |
-
throw new CDNNotEnabledException(
|
1095 |
-
"Authentication response did not indicate CDN availability");
|
1096 |
-
}
|
1097 |
-
list($status,$reason) =
|
1098 |
-
$this->cfs_http->update_cdn_container($this->name,
|
1099 |
-
$this->cdn_ttl,
|
1100 |
-
$this->cdn_log_retention,
|
1101 |
-
$cdn_acl_user_agent,
|
1102 |
-
$this->cdn_acl_referrer
|
1103 |
-
);
|
1104 |
-
if (!in_array($status, array(202,404))) {
|
1105 |
-
throw new InvalidResponseException(
|
1106 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1107 |
-
}
|
1108 |
-
$this->cdn_acl_user_agent = $cdn_acl_user_agent;
|
1109 |
-
return True;
|
1110 |
-
}
|
1111 |
-
|
1112 |
-
/**
|
1113 |
-
* Enable ACL restriction by referer for this container.
|
1114 |
-
*
|
1115 |
-
* Example:
|
1116 |
-
* <code>
|
1117 |
-
* # ... authentication code excluded (see previous examples) ...
|
1118 |
-
* #
|
1119 |
-
* $conn = new CF_Authentication($auth);
|
1120 |
-
*
|
1121 |
-
* $public_container = $conn->get_container("public");
|
1122 |
-
*
|
1123 |
-
* # Enable Referrer
|
1124 |
-
* $public_container->acl_referrer("http://www.example.com/gallery.php");
|
1125 |
-
* </code>
|
1126 |
-
*
|
1127 |
-
* @returns boolean True if successful
|
1128 |
-
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1129 |
-
* @throws AuthenticationException if auth token is not valid/expired
|
1130 |
-
* @throws InvalidResponseException unexpected response
|
1131 |
-
*/
|
1132 |
-
function acl_referrer($cdn_acl_referrer="") {
|
1133 |
-
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1134 |
-
throw new CDNNotEnabledException(
|
1135 |
-
"Authentication response did not indicate CDN availability");
|
1136 |
-
}
|
1137 |
-
list($status,$reason) =
|
1138 |
-
$this->cfs_http->update_cdn_container($this->name,
|
1139 |
-
$this->cdn_ttl,
|
1140 |
-
$this->cdn_log_retention,
|
1141 |
-
$this->cdn_acl_user_agent,
|
1142 |
-
$cdn_acl_referrer
|
1143 |
-
);
|
1144 |
-
if (!in_array($status, array(202,404))) {
|
1145 |
-
throw new InvalidResponseException(
|
1146 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1147 |
-
}
|
1148 |
-
$this->cdn_acl_referrer = $cdn_acl_referrer;
|
1149 |
-
return True;
|
1150 |
-
}
|
1151 |
-
|
1152 |
-
/**
|
1153 |
-
* Enable log retention for this CDN container.
|
1154 |
-
*
|
1155 |
-
* Enable CDN log retention on the container. If enabled logs will
|
1156 |
-
* be periodically (at unpredictable intervals) compressed and
|
1157 |
-
* uploaded to a ".CDN_ACCESS_LOGS" container in the form of
|
1158 |
-
* "container_name.YYYYMMDDHH-XXXX.gz". Requires CDN be enabled on
|
1159 |
-
* the account.
|
1160 |
-
*
|
1161 |
-
* Example:
|
1162 |
-
* <code>
|
1163 |
-
* # ... authentication code excluded (see previous examples) ...
|
1164 |
-
* #
|
1165 |
-
* $conn = new CF_Authentication($auth);
|
1166 |
-
*
|
1167 |
-
* $public_container = $conn->get_container("public");
|
1168 |
-
*
|
1169 |
-
* # Enable logs retention.
|
1170 |
-
* $public_container->log_retention(True);
|
1171 |
-
* </code>
|
1172 |
-
*
|
1173 |
-
* @returns boolean True if successful
|
1174 |
-
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1175 |
-
* @throws AuthenticationException if auth token is not valid/expired
|
1176 |
-
* @throws InvalidResponseException unexpected response
|
1177 |
-
*/
|
1178 |
-
function log_retention($cdn_log_retention=False) {
|
1179 |
-
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1180 |
-
throw new CDNNotEnabledException(
|
1181 |
-
"Authentication response did not indicate CDN availability");
|
1182 |
-
}
|
1183 |
-
list($status,$reason) =
|
1184 |
-
$this->cfs_http->update_cdn_container($this->name,
|
1185 |
-
$this->cdn_ttl,
|
1186 |
-
$cdn_log_retention,
|
1187 |
-
$this->cdn_acl_user_agent,
|
1188 |
-
$this->cdn_acl_referrer
|
1189 |
-
);
|
1190 |
-
if (!in_array($status, array(202,404))) {
|
1191 |
-
throw new InvalidResponseException(
|
1192 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1193 |
-
}
|
1194 |
-
$this->cdn_log_retention = $cdn_log_retention;
|
1195 |
-
return True;
|
1196 |
-
}
|
1197 |
-
|
1198 |
-
/**
|
1199 |
-
* Disable the CDN sharing for this container
|
1200 |
-
*
|
1201 |
-
* Use this method to disallow distribution into the CDN of this Container's
|
1202 |
-
* content.
|
1203 |
-
*
|
1204 |
-
* NOTE: Any content already cached in the CDN will continue to be served
|
1205 |
-
* from its cache until the TTL expiration transpires. The default
|
1206 |
-
* TTL is typically one day, so "privatizing" the Container will take
|
1207 |
-
* up to 24 hours before the content is purged from the CDN cache.
|
1208 |
-
*
|
1209 |
-
* Example:
|
1210 |
-
* <code>
|
1211 |
-
* # ... authentication code excluded (see previous examples) ...
|
1212 |
-
* #
|
1213 |
-
* $conn = new CF_Authentication($auth);
|
1214 |
-
*
|
1215 |
-
* $public_container = $conn->get_container("public");
|
1216 |
-
*
|
1217 |
-
* # Disable CDN accessability
|
1218 |
-
* # ... still cached up to a month based on previous example
|
1219 |
-
* #
|
1220 |
-
* $public_container->make_private();
|
1221 |
-
* </code>
|
1222 |
-
*
|
1223 |
-
* @returns boolean True if successful
|
1224 |
-
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1225 |
-
* @throws AuthenticationException if auth token is not valid/expired
|
1226 |
-
* @throws InvalidResponseException unexpected response
|
1227 |
-
*/
|
1228 |
-
function make_private()
|
1229 |
-
{
|
1230 |
-
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1231 |
-
throw new CDNNotEnabledException(
|
1232 |
-
"Authentication response did not indicate CDN availability");
|
1233 |
-
}
|
1234 |
-
list($status,$reason) = $this->cfs_http->remove_cdn_container($this->name);
|
1235 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1236 |
-
# return $this->make_private();
|
1237 |
-
#}
|
1238 |
-
if (!in_array($status, array(202,404))) {
|
1239 |
-
throw new InvalidResponseException(
|
1240 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1241 |
-
}
|
1242 |
-
$this->cdn_enabled = False;
|
1243 |
-
$this->cdn_ttl = NULL;
|
1244 |
-
$this->cdn_uri = NULL;
|
1245 |
-
$this->cdn_log_retention = NULL;
|
1246 |
-
$this->cdn_acl_user_agent = NULL;
|
1247 |
-
$this->cdn_acl_referrer = NULL;
|
1248 |
-
return True;
|
1249 |
-
}
|
1250 |
-
|
1251 |
-
/**
|
1252 |
-
* Check if this Container is being publicly served via CDN
|
1253 |
-
*
|
1254 |
-
* Use this method to determine if the Container's content is currently
|
1255 |
-
* available through the CDN.
|
1256 |
-
*
|
1257 |
-
* Example:
|
1258 |
-
* <code>
|
1259 |
-
* # ... authentication code excluded (see previous examples) ...
|
1260 |
-
* #
|
1261 |
-
* $conn = new CF_Authentication($auth);
|
1262 |
-
*
|
1263 |
-
* $public_container = $conn->get_container("public");
|
1264 |
-
*
|
1265 |
-
* # Display CDN accessability
|
1266 |
-
* #
|
1267 |
-
* $public_container->is_public() ? print "Yes" : print "No";
|
1268 |
-
* </code>
|
1269 |
-
*
|
1270 |
-
* @returns boolean True if enabled, False otherwise
|
1271 |
-
*/
|
1272 |
-
function is_public()
|
1273 |
-
{
|
1274 |
-
return $this->cdn_enabled == True ? True : False;
|
1275 |
-
}
|
1276 |
-
|
1277 |
-
/**
|
1278 |
-
* Create a new remote storage Object
|
1279 |
-
*
|
1280 |
-
* Return a new Object instance. If the remote storage Object exists,
|
1281 |
-
* the instance's attributes are populated.
|
1282 |
-
*
|
1283 |
-
* Example:
|
1284 |
-
* <code>
|
1285 |
-
* # ... authentication code excluded (see previous examples) ...
|
1286 |
-
* #
|
1287 |
-
* $conn = new CF_Authentication($auth);
|
1288 |
-
*
|
1289 |
-
* $public_container = $conn->get_container("public");
|
1290 |
-
*
|
1291 |
-
* # This creates a local instance of a storage object but only creates
|
1292 |
-
* # it in the storage system when the object's write() method is called.
|
1293 |
-
* #
|
1294 |
-
* $pic = $public_container->create_object("baby.jpg");
|
1295 |
-
* </code>
|
1296 |
-
*
|
1297 |
-
* @param string $obj_name name of storage Object
|
1298 |
-
* @return obj CF_Object instance
|
1299 |
-
*/
|
1300 |
-
function create_object($obj_name=NULL)
|
1301 |
-
{
|
1302 |
-
return new CF_Object($this, $obj_name);
|
1303 |
-
}
|
1304 |
-
|
1305 |
-
/**
|
1306 |
-
* Return an Object instance for the remote storage Object
|
1307 |
-
*
|
1308 |
-
* Given a name, return a Object instance representing the
|
1309 |
-
* remote storage object.
|
1310 |
-
*
|
1311 |
-
* Example:
|
1312 |
-
* <code>
|
1313 |
-
* # ... authentication code excluded (see previous examples) ...
|
1314 |
-
* #
|
1315 |
-
* $conn = new CF_Authentication($auth);
|
1316 |
-
*
|
1317 |
-
* $public_container = $conn->get_container("public");
|
1318 |
-
*
|
1319 |
-
* # This call only fetches header information and not the content of
|
1320 |
-
* # the storage object. Use the Object's read() or stream() methods
|
1321 |
-
* # to obtain the object's data.
|
1322 |
-
* #
|
1323 |
-
* $pic = $public_container->get_object("baby.jpg");
|
1324 |
-
* </code>
|
1325 |
-
*
|
1326 |
-
* @param string $obj_name name of storage Object
|
1327 |
-
* @return obj CF_Object instance
|
1328 |
-
*/
|
1329 |
-
function get_object($obj_name=NULL)
|
1330 |
-
{
|
1331 |
-
return new CF_Object($this, $obj_name, True);
|
1332 |
-
}
|
1333 |
-
|
1334 |
-
/**
|
1335 |
-
* Return a list of Objects
|
1336 |
-
*
|
1337 |
-
* Return an array of strings listing the Object names in this Container.
|
1338 |
-
*
|
1339 |
-
* Example:
|
1340 |
-
* <code>
|
1341 |
-
* # ... authentication code excluded (see previous examples) ...
|
1342 |
-
* #
|
1343 |
-
* $images = $conn->get_container("my photos");
|
1344 |
-
*
|
1345 |
-
* # Grab the list of all storage objects
|
1346 |
-
* #
|
1347 |
-
* $all_objects = $images->list_objects();
|
1348 |
-
*
|
1349 |
-
* # Grab subsets of all storage objects
|
1350 |
-
* #
|
1351 |
-
* $first_ten = $images->list_objects(10);
|
1352 |
-
*
|
1353 |
-
* # Note the use of the previous result's last object name being
|
1354 |
-
* # used as the 'marker' parameter to fetch the next 10 objects
|
1355 |
-
* #
|
1356 |
-
* $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]);
|
1357 |
-
*
|
1358 |
-
* # Grab images starting with "birthday_party" and default limit/marker
|
1359 |
-
* # to match all photos with that prefix
|
1360 |
-
* #
|
1361 |
-
* $prefixed = $images->list_objects(0, NULL, "birthday");
|
1362 |
-
*
|
1363 |
-
* # Assuming you have created the appropriate directory marker Objects,
|
1364 |
-
* # you can traverse your pseudo-hierarchical containers
|
1365 |
-
* # with the "path" argument.
|
1366 |
-
* #
|
1367 |
-
* $animals = $images->list_objects(0,NULL,NULL,"pictures/animals");
|
1368 |
-
* $dogs = $images->list_objects(0,NULL,NULL,"pictures/animals/dogs");
|
1369 |
-
* </code>
|
1370 |
-
*
|
1371 |
-
* @param int $limit <i>optional</i> only return $limit names
|
1372 |
-
* @param int $marker <i>optional</i> subset of names starting at $marker
|
1373 |
-
* @param string $prefix <i>optional</i> Objects whose names begin with $prefix
|
1374 |
-
* @param string $path <i>optional</i> only return results under "pathname"
|
1375 |
-
* @return array array of strings
|
1376 |
-
* @throws InvalidResponseException unexpected response
|
1377 |
-
*/
|
1378 |
-
function list_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL)
|
1379 |
-
{
|
1380 |
-
list($status, $reason, $obj_list) =
|
1381 |
-
$this->cfs_http->list_objects($this->name, $limit,
|
1382 |
-
$marker, $prefix, $path);
|
1383 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1384 |
-
# return $this->list_objects($limit, $marker, $prefix, $path);
|
1385 |
-
#}
|
1386 |
-
if ($status < 200 || $status > 299) {
|
1387 |
-
throw new InvalidResponseException(
|
1388 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1389 |
-
}
|
1390 |
-
return $obj_list;
|
1391 |
-
}
|
1392 |
-
|
1393 |
-
/**
|
1394 |
-
* Return an array of Objects
|
1395 |
-
*
|
1396 |
-
* Return an array of Object instances in this Container.
|
1397 |
-
*
|
1398 |
-
* Example:
|
1399 |
-
* <code>
|
1400 |
-
* # ... authentication code excluded (see previous examples) ...
|
1401 |
-
* #
|
1402 |
-
* $images = $conn->get_container("my photos");
|
1403 |
-
*
|
1404 |
-
* # Grab the list of all storage objects
|
1405 |
-
* #
|
1406 |
-
* $all_objects = $images->get_objects();
|
1407 |
-
*
|
1408 |
-
* # Grab subsets of all storage objects
|
1409 |
-
* #
|
1410 |
-
* $first_ten = $images->get_objects(10);
|
1411 |
-
*
|
1412 |
-
* # Note the use of the previous result's last object name being
|
1413 |
-
* # used as the 'marker' parameter to fetch the next 10 objects
|
1414 |
-
* #
|
1415 |
-
* $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]);
|
1416 |
-
*
|
1417 |
-
* # Grab images starting with "birthday_party" and default limit/marker
|
1418 |
-
* # to match all photos with that prefix
|
1419 |
-
* #
|
1420 |
-
* $prefixed = $images->get_objects(0, NULL, "birthday");
|
1421 |
-
*
|
1422 |
-
* # Assuming you have created the appropriate directory marker Objects,
|
1423 |
-
* # you can traverse your pseudo-hierarchical containers
|
1424 |
-
* # with the "path" argument.
|
1425 |
-
* #
|
1426 |
-
* $animals = $images->get_objects(0,NULL,NULL,"pictures/animals");
|
1427 |
-
* $dogs = $images->get_objects(0,NULL,NULL,"pictures/animals/dogs");
|
1428 |
-
* </code>
|
1429 |
-
*
|
1430 |
-
* @param int $limit <i>optional</i> only return $limit names
|
1431 |
-
* @param int $marker <i>optional</i> subset of names starting at $marker
|
1432 |
-
* @param string $prefix <i>optional</i> Objects whose names begin with $prefix
|
1433 |
-
* @param string $path <i>optional</i> only return results under "pathname"
|
1434 |
-
* @return array array of strings
|
1435 |
-
* @throws InvalidResponseException unexpected response
|
1436 |
-
*/
|
1437 |
-
function get_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL)
|
1438 |
-
{
|
1439 |
-
list($status, $reason, $obj_array) =
|
1440 |
-
$this->cfs_http->get_objects($this->name, $limit,
|
1441 |
-
$marker, $prefix, $path);
|
1442 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1443 |
-
# return $this->get_objects($limit, $marker, $prefix, $path);
|
1444 |
-
#}
|
1445 |
-
if ($status < 200 || $status > 299) {
|
1446 |
-
throw new InvalidResponseException(
|
1447 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1448 |
-
}
|
1449 |
-
$objects = array();
|
1450 |
-
foreach ($obj_array as $obj) {
|
1451 |
-
$tmp = new CF_Object($this, $obj["name"], False, False);
|
1452 |
-
$tmp->content_type = $obj["content_type"];
|
1453 |
-
$tmp->content_length = (float) $obj["bytes"];
|
1454 |
-
$tmp->set_etag($obj["hash"]);
|
1455 |
-
$tmp->last_modified = $obj["last_modified"];
|
1456 |
-
$objects[] = $tmp;
|
1457 |
-
}
|
1458 |
-
return $objects;
|
1459 |
-
}
|
1460 |
-
|
1461 |
-
/**
|
1462 |
-
* Delete a remote storage Object
|
1463 |
-
*
|
1464 |
-
* Given an Object instance or name, permanently remove the remote Object
|
1465 |
-
* and all associated metadata.
|
1466 |
-
*
|
1467 |
-
* Example:
|
1468 |
-
* <code>
|
1469 |
-
* # ... authentication code excluded (see previous examples) ...
|
1470 |
-
* #
|
1471 |
-
* $conn = new CF_Authentication($auth);
|
1472 |
-
*
|
1473 |
-
* $images = $conn->get_container("my photos");
|
1474 |
-
*
|
1475 |
-
* # Delete specific object
|
1476 |
-
* #
|
1477 |
-
* $images->delete_object("disco_dancing.jpg");
|
1478 |
-
* </code>
|
1479 |
-
*
|
1480 |
-
* @param obj $obj name or instance of Object to delete
|
1481 |
-
* @return boolean <kbd>True</kbd> if successfully removed
|
1482 |
-
* @throws SyntaxException invalid Object name
|
1483 |
-
* @throws NoSuchObjectException remote Object does not exist
|
1484 |
-
* @throws InvalidResponseException unexpected response
|
1485 |
-
*/
|
1486 |
-
function delete_object($obj)
|
1487 |
-
{
|
1488 |
-
$obj_name = NULL;
|
1489 |
-
if (is_object($obj)) {
|
1490 |
-
if (get_class($obj) == "CF_Object") {
|
1491 |
-
$obj_name = $obj->name;
|
1492 |
-
}
|
1493 |
-
}
|
1494 |
-
if (is_string($obj)) {
|
1495 |
-
$obj_name = $obj;
|
1496 |
-
}
|
1497 |
-
if (!$obj_name) {
|
1498 |
-
throw new SyntaxException("Object name not set.");
|
1499 |
-
}
|
1500 |
-
$status = $this->cfs_http->delete_object($this->name, $obj_name);
|
1501 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1502 |
-
# return $this->delete_object($obj);
|
1503 |
-
#}
|
1504 |
-
if ($status == 404) {
|
1505 |
-
$m = "Specified object '".$this->name."/".$obj_name;
|
1506 |
-
$m.= "' did not exist to delete.";
|
1507 |
-
throw new NoSuchObjectException($m);
|
1508 |
-
}
|
1509 |
-
if ($status != 204) {
|
1510 |
-
throw new InvalidResponseException(
|
1511 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1512 |
-
}
|
1513 |
-
return True;
|
1514 |
-
}
|
1515 |
-
|
1516 |
-
/**
|
1517 |
-
* Helper function to create "path" elements for a given Object name
|
1518 |
-
*
|
1519 |
-
* Given an Object whos name contains '/' path separators, this function
|
1520 |
-
* will create the "directory marker" Objects of one byte with the
|
1521 |
-
* Content-Type of "application/folder".
|
1522 |
-
*
|
1523 |
-
* It assumes the last element of the full path is the "real" Object
|
1524 |
-
* and does NOT create a remote storage Object for that last element.
|
1525 |
-
*/
|
1526 |
-
function create_paths($path_name)
|
1527 |
-
{
|
1528 |
-
if ($path_name[0] == '/') {
|
1529 |
-
$path_name = mb_substr($path_name, 0, 1);
|
1530 |
-
}
|
1531 |
-
$elements = explode('/', $path_name, -1);
|
1532 |
-
$build_path = "";
|
1533 |
-
foreach ($elements as $idx => $val) {
|
1534 |
-
if (!$build_path) {
|
1535 |
-
$build_path = $val;
|
1536 |
-
} else {
|
1537 |
-
$build_path .= "/" . $val;
|
1538 |
-
}
|
1539 |
-
$obj = new CF_Object($this, $build_path);
|
1540 |
-
$obj->content_type = "application/directory";
|
1541 |
-
$obj->write(".", 1);
|
1542 |
-
}
|
1543 |
-
}
|
1544 |
-
|
1545 |
-
/**
|
1546 |
-
* Internal method to grab CDN/Container info if appropriate to do so
|
1547 |
-
*
|
1548 |
-
* @throws InvalidResponseException unexpected response
|
1549 |
-
*/
|
1550 |
-
private function _cdn_initialize()
|
1551 |
-
{
|
1552 |
-
list($status, $reason, $cdn_enabled, $cdn_uri, $cdn_ttl,
|
1553 |
-
$cdn_log_retention, $cdn_acl_user_agent, $cdn_acl_referrer) =
|
1554 |
-
$this->cfs_http->head_cdn_container($this->name);
|
1555 |
-
#if ($status == 401 && $this->_re_auth()) {
|
1556 |
-
# return $this->_cdn_initialize();
|
1557 |
-
#}
|
1558 |
-
if (!in_array($status, array(204,404))) {
|
1559 |
-
throw new InvalidResponseException(
|
1560 |
-
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1561 |
-
}
|
1562 |
-
$this->cdn_enabled = $cdn_enabled;
|
1563 |
-
$this->cdn_uri = $cdn_uri;
|
1564 |
-
$this->cdn_ttl = $cdn_ttl;
|
1565 |
-
$this->cdn_log_retention = $cdn_log_retention;
|
1566 |
-
$this->cdn_acl_user_agent = $cdn_acl_user_agent;
|
1567 |
-
$this->cdn_acl_referrer = $cdn_acl_referrer;
|
1568 |
-
}
|
1569 |
-
|
1570 |
-
#private function _re_auth()
|
1571 |
-
#{
|
1572 |
-
# $new_auth = new CF_Authentication(
|
1573 |
-
# $this->cfs_auth->username,
|
1574 |
-
# $this->cfs_auth->api_key,
|
1575 |
-
# $this->cfs_auth->auth_host,
|
1576 |
-
# $this->cfs_auth->account);
|
1577 |
-
# $new_auth->authenticate();
|
1578 |
-
# $this->cfs_auth = $new_auth;
|
1579 |
-
# $this->cfs_http->setCFAuth($this->cfs_auth);
|
1580 |
-
# return True;
|
1581 |
-
#}
|
1582 |
-
}
|
1583 |
-
|
1584 |
-
|
1585 |
-
/**
|
1586 |
-
* Object operations
|
1587 |
-
*
|
1588 |
-
* An Object is analogous to a file on a conventional filesystem. You can
|
1589 |
-
* read data from, or write data to your Objects. You can also associate
|
1590 |
-
* arbitrary metadata with them.
|
1591 |
-
*
|
1592 |
-
* @package php-cloudfiles
|
1593 |
-
*/
|
1594 |
-
class CF_Object
|
1595 |
-
{
|
1596 |
-
public $container;
|
1597 |
-
public $name;
|
1598 |
-
public $last_modified;
|
1599 |
-
public $content_type;
|
1600 |
-
public $content_length;
|
1601 |
-
public $metadata;
|
1602 |
-
private $etag;
|
1603 |
-
|
1604 |
-
/**
|
1605 |
-
* Class constructor
|
1606 |
-
*
|
1607 |
-
* @param obj $container CF_Container instance
|
1608 |
-
* @param string $name name of Object
|
1609 |
-
* @param boolean $force_exists if set, throw an error if Object doesn't exist
|
1610 |
-
*/
|
1611 |
-
function __construct(&$container, $name, $force_exists=False, $dohead=True)
|
1612 |
-
{
|
1613 |
-
if ($name[0] == "/") {
|
1614 |
-
$r = "Object name '".$name;
|
1615 |
-
$r .= "' cannot contain begin with a '/' character.";
|
1616 |
-
throw new SyntaxException($r);
|
1617 |
-
}
|
1618 |
-
if (strlen($name) > MAX_OBJECT_NAME_LEN) {
|
1619 |
-
throw new SyntaxException("Object name exceeds "
|
1620 |
-
. "maximum allowed length.");
|
1621 |
-
}
|
1622 |
-
$this->container = $container;
|
1623 |
-
$this->name = $name;
|
1624 |
-
$this->etag = NULL;
|
1625 |
-
$this->_etag_override = False;
|
1626 |
-
$this->last_modified = NULL;
|
1627 |
-
$this->content_type = NULL;
|
1628 |
-
$this->content_length = 0;
|
1629 |
-
$this->metadata = array();
|
1630 |
-
if ($dohead) {
|
1631 |
-
if (!$this->_initialize() && $force_exists) {
|
1632 |
-
throw new NoSuchObjectException("No such object '".$name."'");
|
1633 |
-
}
|
1634 |
-
}
|
1635 |
-
}
|
1636 |
-
|
1637 |
-
/**
|
1638 |
-
* String representation of Object
|
1639 |
-
*
|
1640 |
-
* Pretty print the Object's location and name
|
1641 |
-
*
|
1642 |
-
* @return string Object information
|
1643 |
-
*/
|
1644 |
-
function __toString()
|
1645 |
-
{
|
1646 |
-
return $this->container->name . "/" . $this->name;
|
1647 |
-
}
|
1648 |
-
|
1649 |
-
/**
|
1650 |
-
* Internal check to get the proper mimetype.
|
1651 |
-
*
|
1652 |
-
* This function would go over the available PHP methods to get
|
1653 |
-
* the MIME type.
|
1654 |
-
*
|
1655 |
-
* By default it will try to use the PHP fileinfo library which is
|
1656 |
-
* available from PHP 5.3 or as an PECL extension
|
1657 |
-
* (http://pecl.php.net/package/Fileinfo).
|
1658 |
-
*
|
1659 |
-
* It will get the magic file by default from the system wide file
|
1660 |
-
* which is usually available in /usr/share/magic on Unix or try
|
1661 |
-
* to use the file specified in the source directory of the API
|
1662 |
-
* (share directory).
|
1663 |
-
*
|
1664 |
-
* if fileinfo is not available it will try to use the internal
|
1665 |
-
* mime_content_type function.
|
1666 |
-
*
|
1667 |
-
* @param string $handle name of file or buffer to guess the type from
|
1668 |
-
* @return boolean <kbd>True</kbd> if successful
|
1669 |
-
* @throws BadContentTypeException
|
1670 |
-
*/
|
1671 |
-
function _guess_content_type($handle) {
|
1672 |
-
if ($this->content_type)
|
1673 |
-
return;
|
1674 |
-
|
1675 |
-
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
|
1680 |
-
|
1681 |
-
|
1682 |
-
|
1683 |
-
|
1684 |
-
|
1685 |
-
|
1686 |
-
|
1687 |
-
*
|
1688 |
-
*
|
1689 |
-
*
|
1690 |
-
*
|
1691 |
-
*
|
1692 |
-
*
|
1693 |
-
*
|
1694 |
-
*
|
1695 |
-
* #
|
1696 |
-
*
|
1697 |
-
*
|
1698 |
-
*
|
1699 |
-
*
|
1700 |
-
*
|
1701 |
-
|
1702 |
-
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
*
|
1714 |
-
*
|
1715 |
-
* the
|
1716 |
-
*
|
1717 |
-
*
|
1718 |
-
*
|
1719 |
-
*
|
1720 |
-
*
|
1721 |
-
*
|
1722 |
-
*
|
1723 |
-
*
|
1724 |
-
*
|
1725 |
-
*
|
1726 |
-
*
|
1727 |
-
* $
|
1728 |
-
*
|
1729 |
-
*
|
1730 |
-
*
|
1731 |
-
*
|
1732 |
-
*
|
1733 |
-
*
|
1734 |
-
*
|
1735 |
-
*
|
1736 |
-
* @
|
1737 |
-
|
1738 |
-
|
1739 |
-
|
1740 |
-
|
1741 |
-
|
1742 |
-
|
1743 |
-
|
1744 |
-
#
|
1745 |
-
|
1746 |
-
|
1747 |
-
|
1748 |
-
|
1749 |
-
|
1750 |
-
|
1751 |
-
|
1752 |
-
|
1753 |
-
|
1754 |
-
|
1755 |
-
|
1756 |
-
*
|
1757 |
-
*
|
1758 |
-
*
|
1759 |
-
*
|
1760 |
-
*
|
1761 |
-
*
|
1762 |
-
*
|
1763 |
-
*
|
1764 |
-
*
|
1765 |
-
*
|
1766 |
-
*
|
1767 |
-
*
|
1768 |
-
*
|
1769 |
-
* #
|
1770 |
-
*
|
1771 |
-
* #
|
1772 |
-
*
|
1773 |
-
*
|
1774 |
-
*
|
1775 |
-
*
|
1776 |
-
*
|
1777 |
-
*
|
1778 |
-
*
|
1779 |
-
*
|
1780 |
-
*
|
1781 |
-
*
|
1782 |
-
* $doc->
|
1783 |
-
*
|
1784 |
-
*
|
1785 |
-
*
|
1786 |
-
*
|
1787 |
-
*
|
1788 |
-
*
|
1789 |
-
*
|
1790 |
-
*
|
1791 |
-
*
|
1792 |
-
* @
|
1793 |
-
* @
|
1794 |
-
|
1795 |
-
|
1796 |
-
|
1797 |
-
|
1798 |
-
|
1799 |
-
|
1800 |
-
|
1801 |
-
#
|
1802 |
-
|
1803 |
-
|
1804 |
-
|
1805 |
-
|
1806 |
-
|
1807 |
-
|
1808 |
-
|
1809 |
-
|
1810 |
-
|
1811 |
-
|
1812 |
-
|
1813 |
-
*
|
1814 |
-
*
|
1815 |
-
*
|
1816 |
-
*
|
1817 |
-
*
|
1818 |
-
*
|
1819 |
-
*
|
1820 |
-
*
|
1821 |
-
*
|
1822 |
-
*
|
1823 |
-
*
|
1824 |
-
*
|
1825 |
-
*
|
1826 |
-
*
|
1827 |
-
*
|
1828 |
-
*
|
1829 |
-
* "
|
1830 |
-
*
|
1831 |
-
*
|
1832 |
-
*
|
1833 |
-
*
|
1834 |
-
*
|
1835 |
-
*
|
1836 |
-
*
|
1837 |
-
*
|
1838 |
-
*
|
1839 |
-
|
1840 |
-
|
1841 |
-
|
1842 |
-
|
1843 |
-
|
1844 |
-
|
1845 |
-
|
1846 |
-
#
|
1847 |
-
|
1848 |
-
|
1849 |
-
|
1850 |
-
|
1851 |
-
|
1852 |
-
|
1853 |
-
|
1854 |
-
|
1855 |
-
|
1856 |
-
|
1857 |
-
|
1858 |
-
|
1859 |
-
*
|
1860 |
-
*
|
1861 |
-
*
|
1862 |
-
*
|
1863 |
-
*
|
1864 |
-
*
|
1865 |
-
*
|
1866 |
-
*
|
1867 |
-
*
|
1868 |
-
*
|
1869 |
-
*
|
1870 |
-
*
|
1871 |
-
*
|
1872 |
-
*
|
1873 |
-
*
|
1874 |
-
*
|
1875 |
-
*
|
1876 |
-
*
|
1877 |
-
*
|
1878 |
-
*
|
1879 |
-
* @param
|
1880 |
-
* @
|
1881 |
-
* @
|
1882 |
-
* @
|
1883 |
-
* @throws
|
1884 |
-
* @throws
|
1885 |
-
|
1886 |
-
|
1887 |
-
|
1888 |
-
|
1889 |
-
|
1890 |
-
|
1891 |
-
|
1892 |
-
|
1893 |
-
|
1894 |
-
|
1895 |
-
|
1896 |
-
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
}
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
# a
|
1907 |
-
#
|
1908 |
-
|
1909 |
-
|
1910 |
-
|
1911 |
-
|
1912 |
-
$
|
1913 |
-
|
1914 |
-
|
1915 |
-
|
1916 |
-
|
1917 |
-
|
1918 |
-
|
1919 |
-
$
|
1920 |
-
|
1921 |
-
$
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
|
1928 |
-
|
1929 |
-
|
1930 |
-
|
1931 |
-
#
|
1932 |
-
|
1933 |
-
|
1934 |
-
|
1935 |
-
|
1936 |
-
|
1937 |
-
|
1938 |
-
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
-
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
1955 |
-
|
1956 |
-
*
|
1957 |
-
*
|
1958 |
-
*
|
1959 |
-
*
|
1960 |
-
*
|
1961 |
-
*
|
1962 |
-
*
|
1963 |
-
*
|
1964 |
-
*
|
1965 |
-
*
|
1966 |
-
*
|
1967 |
-
*
|
1968 |
-
*
|
1969 |
-
*
|
1970 |
-
*
|
1971 |
-
*
|
1972 |
-
*
|
1973 |
-
*
|
1974 |
-
*
|
1975 |
-
* @
|
1976 |
-
* @
|
1977 |
-
* @
|
1978 |
-
* @throws
|
1979 |
-
* @throws
|
1980 |
-
* @throws
|
1981 |
-
|
1982 |
-
|
1983 |
-
|
1984 |
-
|
1985 |
-
|
1986 |
-
|
1987 |
-
|
1988 |
-
|
1989 |
-
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
1994 |
-
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
$this->
|
1999 |
-
|
2000 |
-
|
2001 |
-
|
2002 |
-
|
2003 |
-
|
2004 |
-
|
2005 |
-
|
2006 |
-
*
|
2007 |
-
*
|
2008 |
-
*
|
2009 |
-
*
|
2010 |
-
*
|
2011 |
-
*
|
2012 |
-
*
|
2013 |
-
*
|
2014 |
-
* #
|
2015 |
-
*
|
2016 |
-
*
|
2017 |
-
*
|
2018 |
-
*
|
2019 |
-
* $doc->
|
2020 |
-
*
|
2021 |
-
*
|
2022 |
-
*
|
2023 |
-
*
|
2024 |
-
* @
|
2025 |
-
* @
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
|
2030 |
-
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
|
2041 |
-
*
|
2042 |
-
*
|
2043 |
-
* the
|
2044 |
-
*
|
2045 |
-
*
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
2049 |
-
|
2050 |
-
|
2051 |
-
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
*
|
2057 |
-
*
|
2058 |
-
*
|
2059 |
-
|
2060 |
-
|
2061 |
-
|
2062 |
-
|
2063 |
-
|
2064 |
-
|
2065 |
-
|
2066 |
-
|
2067 |
-
|
2068 |
-
*
|
2069 |
-
*
|
2070 |
-
*
|
2071 |
-
*
|
2072 |
-
*
|
2073 |
-
*
|
2074 |
-
* compute
|
2075 |
-
*
|
2076 |
-
*
|
2077 |
-
*
|
2078 |
-
|
2079 |
-
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
|
2085 |
-
|
2086 |
-
|
2087 |
-
|
2088 |
-
|
2089 |
-
|
2090 |
-
|
2091 |
-
|
2092 |
-
}
|
2093 |
-
$md5 =
|
2094 |
-
}
|
2095 |
-
|
2096 |
-
|
2097 |
-
|
2098 |
-
|
2099 |
-
|
2100 |
-
|
2101 |
-
|
2102 |
-
|
2103 |
-
|
2104 |
-
|
2105 |
-
|
2106 |
-
|
2107 |
-
|
2108 |
-
#
|
2109 |
-
|
2110 |
-
|
2111 |
-
|
2112 |
-
|
2113 |
-
|
2114 |
-
|
2115 |
-
|
2116 |
-
|
2117 |
-
|
2118 |
-
$this->
|
2119 |
-
$this->
|
2120 |
-
$this->
|
2121 |
-
|
2122 |
-
|
2123 |
-
|
2124 |
-
|
2125 |
-
|
2126 |
-
#
|
2127 |
-
#
|
2128 |
-
#
|
2129 |
-
# $this->cfs_auth->
|
2130 |
-
# $this->cfs_auth->
|
2131 |
-
#
|
2132 |
-
#
|
2133 |
-
# $
|
2134 |
-
#
|
2135 |
-
#
|
2136 |
-
|
2137 |
-
|
2138 |
-
|
2139 |
-
|
2140 |
-
/*
|
2141 |
-
|
2142 |
-
|
2143 |
-
*
|
2144 |
-
*
|
2145 |
-
*
|
2146 |
-
|
2147 |
-
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This is the PHP Cloud Files API.
|
4 |
+
*
|
5 |
+
* <code>
|
6 |
+
* # Authenticate to Cloud Files. The default is to automatically try
|
7 |
+
* # to re-authenticate if an authentication token expires.
|
8 |
+
* #
|
9 |
+
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
10 |
+
* # file. This API ships with a newer version obtained directly from
|
11 |
+
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
12 |
+
* # call the CF_Authentication instance's 'ssl_use_cabundle()' method.
|
13 |
+
* #
|
14 |
+
* $auth = new CF_Authentication($username, $api_key);
|
15 |
+
* # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
16 |
+
* $auth->authenticate();
|
17 |
+
*
|
18 |
+
* # Establish a connection to the storage system
|
19 |
+
* #
|
20 |
+
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
21 |
+
* # file. This API ships with a newer version obtained directly from
|
22 |
+
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
23 |
+
* # call the CF_Connection instance's 'ssl_use_cabundle()' method.
|
24 |
+
* #
|
25 |
+
* $conn = new CF_Connection($auth);
|
26 |
+
* # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
27 |
+
*
|
28 |
+
* # Create a remote Container and storage Object
|
29 |
+
* #
|
30 |
+
* $images = $conn->create_container("photos");
|
31 |
+
* $bday = $images->create_object("first_birthday.jpg");
|
32 |
+
*
|
33 |
+
* # Upload content from a local file by streaming it. Note that we use
|
34 |
+
* # a "float" for the file size to overcome PHP's 32-bit integer limit for
|
35 |
+
* # very large files.
|
36 |
+
* #
|
37 |
+
* $fname = "/home/user/photos/birthdays/birthday1.jpg"; # filename to upload
|
38 |
+
* $size = (float) sprintf("%u", filesize($fname));
|
39 |
+
* $fp = open($fname, "r");
|
40 |
+
* $bday->write($fp, $size);
|
41 |
+
*
|
42 |
+
* # Or... use a convenience function instead
|
43 |
+
* #
|
44 |
+
* $bday->load_from_filename("/home/user/photos/birthdays/birthday1.jpg");
|
45 |
+
*
|
46 |
+
* # Now, publish the "photos" container to serve the images by CDN.
|
47 |
+
* # Use the "$uri" value to put in your web pages or send the link in an
|
48 |
+
* # email message, etc.
|
49 |
+
* #
|
50 |
+
* $uri = $images->make_public();
|
51 |
+
*
|
52 |
+
* # Or... print out the Object's public URI
|
53 |
+
* #
|
54 |
+
* print $bday->public_uri();
|
55 |
+
* </code>
|
56 |
+
*
|
57 |
+
* See the included tests directory for additional sample code.
|
58 |
+
*
|
59 |
+
* Requres PHP 5.x (for Exceptions and OO syntax) and PHP's cURL module.
|
60 |
+
*
|
61 |
+
* It uses the supporting "cloudfiles_http.php" module for HTTP(s) support and
|
62 |
+
* allows for connection re-use and streaming of content into/out of Cloud Files
|
63 |
+
* via PHP's cURL module.
|
64 |
+
*
|
65 |
+
* See COPYING for license information.
|
66 |
+
*
|
67 |
+
* @author Eric "EJ" Johnson <ej@racklabs.com>
|
68 |
+
* @copyright Copyright (c) 2008, Rackspace US, Inc.
|
69 |
+
* @package php-cloudfiles
|
70 |
+
*/
|
71 |
+
|
72 |
+
/**
|
73 |
+
*/
|
74 |
+
require_once("cloudfiles_exceptions.php");
|
75 |
+
require("cloudfiles_http.php");
|
76 |
+
define("DEFAULT_CF_API_VERSION", 1);
|
77 |
+
define("MAX_CONTAINER_NAME_LEN", 256);
|
78 |
+
define("MAX_OBJECT_NAME_LEN", 1024);
|
79 |
+
define("MAX_OBJECT_SIZE", 5*1024*1024*1024+1);
|
80 |
+
define("US_AUTHURL", "https://auth.api.rackspacecloud.com");
|
81 |
+
define("UK_AUTHURL", "https://lon.auth.api.rackspacecloud.com");
|
82 |
+
/**
|
83 |
+
* Class for handling Cloud Files Authentication, call it's {@link authenticate()}
|
84 |
+
* method to obtain authorized service urls and an authentication token.
|
85 |
+
*
|
86 |
+
* Example:
|
87 |
+
* <code>
|
88 |
+
* # Create the authentication instance
|
89 |
+
* #
|
90 |
+
* $auth = new CF_Authentication("username", "api_key");
|
91 |
+
*
|
92 |
+
* # NOTE: For UK Customers please specify your AuthURL Manually
|
93 |
+
* # There is a Predfined constant to use EX:
|
94 |
+
* #
|
95 |
+
* # $auth = new CF_Authentication("username, "api_key", NULL, UK_AUTHURL);
|
96 |
+
* # Using the UK_AUTHURL keyword will force the api to use the UK AuthUrl.
|
97 |
+
* # rather then the US one. The NULL Is passed for legacy purposes and must
|
98 |
+
* # be passed to function correctly.
|
99 |
+
*
|
100 |
+
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
101 |
+
* # file. This API ships with a newer version obtained directly from
|
102 |
+
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
103 |
+
* # call the CF_Authentication instance's 'ssl_use_cabundle()' method.
|
104 |
+
* #
|
105 |
+
* # $auth->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
106 |
+
*
|
107 |
+
* # Perform authentication request
|
108 |
+
* #
|
109 |
+
* $auth->authenticate();
|
110 |
+
* </code>
|
111 |
+
*
|
112 |
+
* @package php-cloudfiles
|
113 |
+
*/
|
114 |
+
class CF_Authentication
|
115 |
+
{
|
116 |
+
public $dbug;
|
117 |
+
public $username;
|
118 |
+
public $api_key;
|
119 |
+
public $auth_host;
|
120 |
+
public $account;
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Instance variables that are set after successful authentication
|
124 |
+
*/
|
125 |
+
public $storage_url;
|
126 |
+
public $cdnm_url;
|
127 |
+
public $auth_token;
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Class constructor (PHP 5 syntax)
|
131 |
+
*
|
132 |
+
* @param string $username Mosso username
|
133 |
+
* @param string $api_key Mosso API Access Key
|
134 |
+
* @param string $account <i>Account name</i>
|
135 |
+
* @param string $auth_host <i>Authentication service URI</i>
|
136 |
+
*/
|
137 |
+
function __construct($username=NULL, $api_key=NULL, $account=NULL, $auth_host=US_AUTHURL)
|
138 |
+
{
|
139 |
+
|
140 |
+
$this->dbug = False;
|
141 |
+
$this->username = $username;
|
142 |
+
$this->api_key = $api_key;
|
143 |
+
$this->account_name = $account;
|
144 |
+
$this->auth_host = $auth_host;
|
145 |
+
|
146 |
+
$this->storage_url = NULL;
|
147 |
+
$this->cdnm_url = NULL;
|
148 |
+
$this->auth_token = NULL;
|
149 |
+
|
150 |
+
$this->cfs_http = new CF_Http(DEFAULT_CF_API_VERSION);
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Use the Certificate Authority bundle included with this API
|
155 |
+
*
|
156 |
+
* Most versions of PHP with cURL support include an outdated Certificate
|
157 |
+
* Authority (CA) bundle (the file that lists all valid certificate
|
158 |
+
* signing authorities). The SSL certificates used by the Cloud Files
|
159 |
+
* storage system are perfectly valid but have been created/signed by
|
160 |
+
* a CA not listed in these outdated cURL distributions.
|
161 |
+
*
|
162 |
+
* As a work-around, we've included an updated CA bundle obtained
|
163 |
+
* directly from cURL's web site (http://curl.haxx.se). You can direct
|
164 |
+
* the API to use this CA bundle by calling this method prior to making
|
165 |
+
* any remote calls. The best place to use this method is right after
|
166 |
+
* the CF_Authentication instance has been instantiated.
|
167 |
+
*
|
168 |
+
* You can specify your own CA bundle by passing in the full pathname
|
169 |
+
* to the bundle. You can use the included CA bundle by leaving the
|
170 |
+
* argument blank.
|
171 |
+
*
|
172 |
+
* @param string $path Specify path to CA bundle (default to included)
|
173 |
+
*/
|
174 |
+
function ssl_use_cabundle($path=NULL)
|
175 |
+
{
|
176 |
+
$this->cfs_http->ssl_use_cabundle($path);
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* Attempt to validate Username/API Access Key
|
181 |
+
*
|
182 |
+
* Attempts to validate credentials with the authentication service. It
|
183 |
+
* either returns <kbd>True</kbd> or throws an Exception. Accepts a single
|
184 |
+
* (optional) argument for the storage system API version.
|
185 |
+
*
|
186 |
+
* Example:
|
187 |
+
* <code>
|
188 |
+
* # Create the authentication instance
|
189 |
+
* #
|
190 |
+
* $auth = new CF_Authentication("username", "api_key");
|
191 |
+
*
|
192 |
+
* # Perform authentication request
|
193 |
+
* #
|
194 |
+
* $auth->authenticate();
|
195 |
+
* </code>
|
196 |
+
*
|
197 |
+
* @param string $version API version for Auth service (optional)
|
198 |
+
* @return boolean <kbd>True</kbd> if successfully authenticated
|
199 |
+
* @throws AuthenticationException invalid credentials
|
200 |
+
* @throws InvalidResponseException invalid response
|
201 |
+
*/
|
202 |
+
function authenticate($version=DEFAULT_CF_API_VERSION)
|
203 |
+
{
|
204 |
+
list($status,$reason,$surl,$curl,$atoken) =
|
205 |
+
$this->cfs_http->authenticate($this->username, $this->api_key,
|
206 |
+
$this->account_name, $this->auth_host);
|
207 |
+
|
208 |
+
if ($status == 401) {
|
209 |
+
throw new AuthenticationException("Invalid username or access key.");
|
210 |
+
}
|
211 |
+
if ($status != 204) {
|
212 |
+
throw new InvalidResponseException(
|
213 |
+
"Unexpected response (".$status."): ".$reason);
|
214 |
+
}
|
215 |
+
|
216 |
+
if (!($surl || $curl) || !$atoken) {
|
217 |
+
throw new InvalidResponseException(
|
218 |
+
"Expected headers missing from auth service.");
|
219 |
+
}
|
220 |
+
$this->storage_url = $surl;
|
221 |
+
$this->cdnm_url = $curl;
|
222 |
+
$this->auth_token = $atoken;
|
223 |
+
return True;
|
224 |
+
}
|
225 |
+
/**
|
226 |
+
* Use Cached Token and Storage URL's rather then grabbing from the Auth System
|
227 |
+
*
|
228 |
+
* Example:
|
229 |
+
* <code>
|
230 |
+
* #Create an Auth instance
|
231 |
+
* $auth = new CF_Authentication();
|
232 |
+
* #Pass Cached URL's and Token as Args
|
233 |
+
* $auth->load_cached_credentials("auth_token", "storage_url", "cdn_management_url");
|
234 |
+
* </code>
|
235 |
+
*
|
236 |
+
* @param string $auth_token A Cloud Files Auth Token (Required)
|
237 |
+
* @param string $storage_url The Cloud Files Storage URL (Required)
|
238 |
+
* @param string $cdnm_url CDN Management URL (Required)
|
239 |
+
* @return boolean <kbd>True</kbd> if successful
|
240 |
+
* @throws SyntaxException If any of the Required Arguments are missing
|
241 |
+
*/
|
242 |
+
function load_cached_credentials($auth_token, $storage_url, $cdnm_url)
|
243 |
+
{
|
244 |
+
if(!$storage_url || !$cdnm_url)
|
245 |
+
{
|
246 |
+
throw new SyntaxException("Missing Required Interface URL's!");
|
247 |
+
return False;
|
248 |
+
}
|
249 |
+
if(!$auth_token)
|
250 |
+
{
|
251 |
+
throw new SyntaxException("Missing Auth Token!");
|
252 |
+
return False;
|
253 |
+
}
|
254 |
+
|
255 |
+
$this->storage_url = $storage_url;
|
256 |
+
$this->cdnm_url = $cdnm_url;
|
257 |
+
$this->auth_token = $auth_token;
|
258 |
+
return True;
|
259 |
+
}
|
260 |
+
/**
|
261 |
+
* Grab Cloud Files info to be Cached for later use with the load_cached_credentials method.
|
262 |
+
*
|
263 |
+
* Example:
|
264 |
+
* <code>
|
265 |
+
* #Create an Auth instance
|
266 |
+
* $auth = new CF_Authentication("UserName","API_Key");
|
267 |
+
* $auth->authenticate();
|
268 |
+
* $array = $auth->export_credentials();
|
269 |
+
* </code>
|
270 |
+
*
|
271 |
+
* @return array of url's and an auth token.
|
272 |
+
*/
|
273 |
+
function export_credentials()
|
274 |
+
{
|
275 |
+
$arr = array();
|
276 |
+
$arr['storage_url'] = $this->storage_url;
|
277 |
+
$arr['cdnm_url'] = $this->cdnm_url;
|
278 |
+
$arr['auth_token'] = $this->auth_token;
|
279 |
+
|
280 |
+
return $arr;
|
281 |
+
}
|
282 |
+
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Make sure the CF_Authentication instance has authenticated.
|
286 |
+
*
|
287 |
+
* Ensures that the instance variables necessary to communicate with
|
288 |
+
* Cloud Files have been set from a previous authenticate() call.
|
289 |
+
*
|
290 |
+
* @return boolean <kbd>True</kbd> if successfully authenticated
|
291 |
+
*/
|
292 |
+
function authenticated()
|
293 |
+
{
|
294 |
+
if (!($this->storage_url || $this->cdnm_url) || !$this->auth_token) {
|
295 |
+
return False;
|
296 |
+
}
|
297 |
+
return True;
|
298 |
+
}
|
299 |
+
|
300 |
+
/**
|
301 |
+
* Toggle debugging - set cURL verbose flag
|
302 |
+
*/
|
303 |
+
function setDebug($bool)
|
304 |
+
{
|
305 |
+
$this->dbug = $bool;
|
306 |
+
$this->cfs_http->setDebug($bool);
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
/**
|
311 |
+
* Class for establishing connections to the Cloud Files storage system.
|
312 |
+
* Connection instances are used to communicate with the storage system at
|
313 |
+
* the account level; listing and deleting Containers and returning Container
|
314 |
+
* instances.
|
315 |
+
*
|
316 |
+
* Example:
|
317 |
+
* <code>
|
318 |
+
* # Create the authentication instance
|
319 |
+
* #
|
320 |
+
* $auth = new CF_Authentication("username", "api_key");
|
321 |
+
*
|
322 |
+
* # Perform authentication request
|
323 |
+
* #
|
324 |
+
* $auth->authenticate();
|
325 |
+
*
|
326 |
+
* # Create a connection to the storage/cdn system(s) and pass in the
|
327 |
+
* # validated CF_Authentication instance.
|
328 |
+
* #
|
329 |
+
* $conn = new CF_Connection($auth);
|
330 |
+
*
|
331 |
+
* # NOTE: Some versions of cURL include an outdated certificate authority (CA)
|
332 |
+
* # file. This API ships with a newer version obtained directly from
|
333 |
+
* # cURL's web site (http://curl.haxx.se). To use the newer CA bundle,
|
334 |
+
* # call the CF_Authentication instance's 'ssl_use_cabundle()' method.
|
335 |
+
* #
|
336 |
+
* # $conn->ssl_use_cabundle(); # bypass cURL's old CA bundle
|
337 |
+
* </code>
|
338 |
+
*
|
339 |
+
* @package php-cloudfiles
|
340 |
+
*/
|
341 |
+
class CF_Connection
|
342 |
+
{
|
343 |
+
public $dbug;
|
344 |
+
public $cfs_http;
|
345 |
+
public $cfs_auth;
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Pass in a previously authenticated CF_Authentication instance.
|
349 |
+
*
|
350 |
+
* Example:
|
351 |
+
* <code>
|
352 |
+
* # Create the authentication instance
|
353 |
+
* #
|
354 |
+
* $auth = new CF_Authentication("username", "api_key");
|
355 |
+
*
|
356 |
+
* # Perform authentication request
|
357 |
+
* #
|
358 |
+
* $auth->authenticate();
|
359 |
+
*
|
360 |
+
* # Create a connection to the storage/cdn system(s) and pass in the
|
361 |
+
* # validated CF_Authentication instance.
|
362 |
+
* #
|
363 |
+
* $conn = new CF_Connection($auth);
|
364 |
+
*
|
365 |
+
* # If you are connecting via Rackspace servers and have access
|
366 |
+
* # to the servicenet network you can set the $servicenet to True
|
367 |
+
* # like this.
|
368 |
+
*
|
369 |
+
* $conn = new CF_Connection($auth, $servicenet=True);
|
370 |
+
*
|
371 |
+
* </code>
|
372 |
+
*
|
373 |
+
* If the environement variable RACKSPACE_SERVICENET is defined it will
|
374 |
+
* force to connect via the servicenet.
|
375 |
+
*
|
376 |
+
* @param obj $cfs_auth previously authenticated CF_Authentication instance
|
377 |
+
* @param boolean $servicenet enable/disable access via Rackspace servicenet.
|
378 |
+
* @throws AuthenticationException not authenticated
|
379 |
+
*/
|
380 |
+
function __construct($cfs_auth, $servicenet=False)
|
381 |
+
{
|
382 |
+
if (isset($_ENV['RACKSPACE_SERVICENET']))
|
383 |
+
$servicenet=True;
|
384 |
+
$this->cfs_http = new CF_Http(DEFAULT_CF_API_VERSION);
|
385 |
+
$this->cfs_auth = $cfs_auth;
|
386 |
+
if (!$this->cfs_auth->authenticated()) {
|
387 |
+
$e = "Need to pass in a previously authenticated ";
|
388 |
+
$e .= "CF_Authentication instance.";
|
389 |
+
throw new AuthenticationException($e);
|
390 |
+
}
|
391 |
+
$this->cfs_http->setCFAuth($this->cfs_auth, $servicenet=$servicenet);
|
392 |
+
$this->dbug = False;
|
393 |
+
}
|
394 |
+
|
395 |
+
/**
|
396 |
+
* Toggle debugging of instance and back-end HTTP module
|
397 |
+
*
|
398 |
+
* @param boolean $bool enable/disable cURL debugging
|
399 |
+
*/
|
400 |
+
function setDebug($bool)
|
401 |
+
{
|
402 |
+
$this->dbug = (boolean) $bool;
|
403 |
+
$this->cfs_http->setDebug($this->dbug);
|
404 |
+
}
|
405 |
+
|
406 |
+
/**
|
407 |
+
* Close a connection
|
408 |
+
*
|
409 |
+
* Example:
|
410 |
+
* <code>
|
411 |
+
*
|
412 |
+
* $conn->close();
|
413 |
+
*
|
414 |
+
* </code>
|
415 |
+
*
|
416 |
+
* Will close all current cUrl active connections.
|
417 |
+
*
|
418 |
+
*/
|
419 |
+
public function close()
|
420 |
+
{
|
421 |
+
$this->cfs_http->close();
|
422 |
+
}
|
423 |
+
|
424 |
+
/**
|
425 |
+
* Cloud Files account information
|
426 |
+
*
|
427 |
+
* Return an array of two floats (since PHP only supports 32-bit integers);
|
428 |
+
* number of containers on the account and total bytes used for the account.
|
429 |
+
*
|
430 |
+
* Example:
|
431 |
+
* <code>
|
432 |
+
* # ... authentication code excluded (see previous examples) ...
|
433 |
+
* #
|
434 |
+
* $conn = new CF_Authentication($auth);
|
435 |
+
*
|
436 |
+
* list($quantity, $bytes) = $conn->get_info();
|
437 |
+
* print "Number of containers: " . $quantity . "\n";
|
438 |
+
* print "Bytes stored in container: " . $bytes . "\n";
|
439 |
+
* </code>
|
440 |
+
*
|
441 |
+
* @return array (number of containers, total bytes stored)
|
442 |
+
* @throws InvalidResponseException unexpected response
|
443 |
+
*/
|
444 |
+
function get_info()
|
445 |
+
{
|
446 |
+
list($status, $reason, $container_count, $total_bytes) =
|
447 |
+
$this->cfs_http->head_account();
|
448 |
+
#if ($status == 401 && $this->_re_auth()) {
|
449 |
+
# return $this->get_info();
|
450 |
+
#}
|
451 |
+
if ($status < 200 || $status > 299) {
|
452 |
+
throw new InvalidResponseException(
|
453 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
454 |
+
}
|
455 |
+
return array($container_count, $total_bytes);
|
456 |
+
}
|
457 |
+
|
458 |
+
/**
|
459 |
+
* Create a Container
|
460 |
+
*
|
461 |
+
* Given a Container name, return a Container instance, creating a new
|
462 |
+
* remote Container if it does not exit.
|
463 |
+
*
|
464 |
+
* Example:
|
465 |
+
* <code>
|
466 |
+
* # ... authentication code excluded (see previous examples) ...
|
467 |
+
* #
|
468 |
+
* $conn = new CF_Authentication($auth);
|
469 |
+
*
|
470 |
+
* $images = $conn->create_container("my photos");
|
471 |
+
* </code>
|
472 |
+
*
|
473 |
+
* @param string $container_name container name
|
474 |
+
* @return CF_Container
|
475 |
+
* @throws SyntaxException invalid name
|
476 |
+
* @throws InvalidResponseException unexpected response
|
477 |
+
*/
|
478 |
+
function create_container($container_name=NULL)
|
479 |
+
{
|
480 |
+
if ($container_name != "0" and !isset($container_name))
|
481 |
+
throw new SyntaxException("Container name not set.");
|
482 |
+
|
483 |
+
if (!isset($container_name) or $container_name == "")
|
484 |
+
throw new SyntaxException("Container name not set.");
|
485 |
+
|
486 |
+
if (strpos($container_name, "/") !== False) {
|
487 |
+
$r = "Container name '".$container_name;
|
488 |
+
$r .= "' cannot contain a '/' character.";
|
489 |
+
throw new SyntaxException($r);
|
490 |
+
}
|
491 |
+
if (strlen($container_name) > MAX_CONTAINER_NAME_LEN) {
|
492 |
+
throw new SyntaxException(sprintf(
|
493 |
+
"Container name exeeds %d bytes.",
|
494 |
+
MAX_CONTAINER_NAME_LEN));
|
495 |
+
}
|
496 |
+
|
497 |
+
$return_code = $this->cfs_http->create_container($container_name);
|
498 |
+
if (!$return_code) {
|
499 |
+
throw new InvalidResponseException("Invalid response ("
|
500 |
+
. $return_code. "): " . $this->cfs_http->get_error());
|
501 |
+
}
|
502 |
+
#if ($status == 401 && $this->_re_auth()) {
|
503 |
+
# return $this->create_container($container_name);
|
504 |
+
#}
|
505 |
+
if ($return_code != 201 && $return_code != 202) {
|
506 |
+
throw new InvalidResponseException(
|
507 |
+
"Invalid response (".$return_code."): "
|
508 |
+
. $this->cfs_http->get_error());
|
509 |
+
}
|
510 |
+
return new CF_Container($this->cfs_auth, $this->cfs_http, $container_name);
|
511 |
+
}
|
512 |
+
|
513 |
+
/**
|
514 |
+
* Delete a Container
|
515 |
+
*
|
516 |
+
* Given either a Container instance or name, remove the remote Container.
|
517 |
+
* The Container must be empty prior to removing it.
|
518 |
+
*
|
519 |
+
* Example:
|
520 |
+
* <code>
|
521 |
+
* # ... authentication code excluded (see previous examples) ...
|
522 |
+
* #
|
523 |
+
* $conn = new CF_Authentication($auth);
|
524 |
+
*
|
525 |
+
* $conn->delete_container("my photos");
|
526 |
+
* </code>
|
527 |
+
*
|
528 |
+
* @param string|obj $container container name or instance
|
529 |
+
* @return boolean <kbd>True</kbd> if successfully deleted
|
530 |
+
* @throws SyntaxException missing proper argument
|
531 |
+
* @throws InvalidResponseException invalid response
|
532 |
+
* @throws NonEmptyContainerException container not empty
|
533 |
+
* @throws NoSuchContainerException remote container does not exist
|
534 |
+
*/
|
535 |
+
function delete_container($container=NULL)
|
536 |
+
{
|
537 |
+
$container_name = NULL;
|
538 |
+
|
539 |
+
if (is_object($container)) {
|
540 |
+
if (get_class($container) == "CF_Container") {
|
541 |
+
$container_name = $container->name;
|
542 |
+
}
|
543 |
+
}
|
544 |
+
if (is_string($container)) {
|
545 |
+
$container_name = $container;
|
546 |
+
}
|
547 |
+
|
548 |
+
if ($container_name != "0" and !isset($container_name))
|
549 |
+
throw new SyntaxException("Must specify container object or name.");
|
550 |
+
|
551 |
+
$return_code = $this->cfs_http->delete_container($container_name);
|
552 |
+
|
553 |
+
if (!$return_code) {
|
554 |
+
throw new InvalidResponseException("Failed to obtain http response");
|
555 |
+
}
|
556 |
+
#if ($status == 401 && $this->_re_auth()) {
|
557 |
+
# return $this->delete_container($container);
|
558 |
+
#}
|
559 |
+
if ($return_code == 409) {
|
560 |
+
throw new NonEmptyContainerException(
|
561 |
+
"Container must be empty prior to removing it.");
|
562 |
+
}
|
563 |
+
if ($return_code == 404) {
|
564 |
+
throw new NoSuchContainerException(
|
565 |
+
"Specified container did not exist to delete.");
|
566 |
+
}
|
567 |
+
if ($return_code != 204) {
|
568 |
+
throw new InvalidResponseException(
|
569 |
+
"Invalid response (".$return_code."): "
|
570 |
+
. $this->cfs_http->get_error());
|
571 |
+
}
|
572 |
+
return True;
|
573 |
+
}
|
574 |
+
|
575 |
+
/**
|
576 |
+
* Return a Container instance
|
577 |
+
*
|
578 |
+
* For the given name, return a Container instance if the remote Container
|
579 |
+
* exists, otherwise throw a Not Found exception.
|
580 |
+
*
|
581 |
+
* Example:
|
582 |
+
* <code>
|
583 |
+
* # ... authentication code excluded (see previous examples) ...
|
584 |
+
* #
|
585 |
+
* $conn = new CF_Authentication($auth);
|
586 |
+
*
|
587 |
+
* $images = $conn->get_container("my photos");
|
588 |
+
* print "Number of Objects: " . $images->count . "\n";
|
589 |
+
* print "Bytes stored in container: " . $images->bytes . "\n";
|
590 |
+
* </code>
|
591 |
+
*
|
592 |
+
* @param string $container_name name of the remote Container
|
593 |
+
* @return container CF_Container instance
|
594 |
+
* @throws NoSuchContainerException thrown if no remote Container
|
595 |
+
* @throws InvalidResponseException unexpected response
|
596 |
+
*/
|
597 |
+
function get_container($container_name=NULL)
|
598 |
+
{
|
599 |
+
list($status, $reason, $count, $bytes) =
|
600 |
+
$this->cfs_http->head_container($container_name);
|
601 |
+
#if ($status == 401 && $this->_re_auth()) {
|
602 |
+
# return $this->get_container($container_name);
|
603 |
+
#}
|
604 |
+
if ($status == 404) {
|
605 |
+
throw new NoSuchContainerException("Container not found.");
|
606 |
+
}
|
607 |
+
if ($status < 200 || $status > 299) {
|
608 |
+
throw new InvalidResponseException(
|
609 |
+
"Invalid response: ".$this->cfs_http->get_error());
|
610 |
+
}
|
611 |
+
return new CF_Container($this->cfs_auth, $this->cfs_http,
|
612 |
+
$container_name, $count, $bytes);
|
613 |
+
}
|
614 |
+
|
615 |
+
/**
|
616 |
+
* Return array of Container instances
|
617 |
+
*
|
618 |
+
* Return an array of CF_Container instances on the account. The instances
|
619 |
+
* will be fully populated with Container attributes (bytes stored and
|
620 |
+
* Object count)
|
621 |
+
*
|
622 |
+
* Example:
|
623 |
+
* <code>
|
624 |
+
* # ... authentication code excluded (see previous examples) ...
|
625 |
+
* #
|
626 |
+
* $conn = new CF_Authentication($auth);
|
627 |
+
*
|
628 |
+
* $clist = $conn->get_containers();
|
629 |
+
* foreach ($clist as $cont) {
|
630 |
+
* print "Container name: " . $cont->name . "\n";
|
631 |
+
* print "Number of Objects: " . $cont->count . "\n";
|
632 |
+
* print "Bytes stored in container: " . $cont->bytes . "\n";
|
633 |
+
* }
|
634 |
+
* </code>
|
635 |
+
*
|
636 |
+
* @return array An array of CF_Container instances
|
637 |
+
* @throws InvalidResponseException unexpected response
|
638 |
+
*/
|
639 |
+
function get_containers($limit=0, $marker=NULL)
|
640 |
+
{
|
641 |
+
list($status, $reason, $container_info) =
|
642 |
+
$this->cfs_http->list_containers_info($limit, $marker);
|
643 |
+
#if ($status == 401 && $this->_re_auth()) {
|
644 |
+
# return $this->get_containers();
|
645 |
+
#}
|
646 |
+
if ($status < 200 || $status > 299) {
|
647 |
+
throw new InvalidResponseException(
|
648 |
+
"Invalid response: ".$this->cfs_http->get_error());
|
649 |
+
}
|
650 |
+
$containers = array();
|
651 |
+
foreach ($container_info as $name => $info) {
|
652 |
+
$containers[] = new CF_Container($this->cfs_auth, $this->cfs_http,
|
653 |
+
$info['name'], $info["count"], $info["bytes"], False);
|
654 |
+
}
|
655 |
+
return $containers;
|
656 |
+
}
|
657 |
+
|
658 |
+
/**
|
659 |
+
* Return list of remote Containers
|
660 |
+
*
|
661 |
+
* Return an array of strings containing the names of all remote Containers.
|
662 |
+
*
|
663 |
+
* Example:
|
664 |
+
* <code>
|
665 |
+
* # ... authentication code excluded (see previous examples) ...
|
666 |
+
* #
|
667 |
+
* $conn = new CF_Authentication($auth);
|
668 |
+
*
|
669 |
+
* $container_list = $conn->list_containers();
|
670 |
+
* print_r($container_list);
|
671 |
+
* Array
|
672 |
+
* (
|
673 |
+
* [0] => "my photos",
|
674 |
+
* [1] => "my docs"
|
675 |
+
* )
|
676 |
+
* </code>
|
677 |
+
*
|
678 |
+
* @param integer $limit restrict results to $limit Containers
|
679 |
+
* @param string $marker return results greater than $marker
|
680 |
+
* @return array list of remote Containers
|
681 |
+
* @throws InvalidResponseException unexpected response
|
682 |
+
*/
|
683 |
+
function list_containers($limit=0, $marker=NULL)
|
684 |
+
{
|
685 |
+
list($status, $reason, $containers) =
|
686 |
+
$this->cfs_http->list_containers($limit, $marker);
|
687 |
+
#if ($status == 401 && $this->_re_auth()) {
|
688 |
+
# return $this->list_containers($limit, $marker);
|
689 |
+
#}
|
690 |
+
if ($status < 200 || $status > 299) {
|
691 |
+
throw new InvalidResponseException(
|
692 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
693 |
+
}
|
694 |
+
return $containers;
|
695 |
+
}
|
696 |
+
|
697 |
+
/**
|
698 |
+
* Return array of information about remote Containers
|
699 |
+
*
|
700 |
+
* Return a nested array structure of Container info.
|
701 |
+
*
|
702 |
+
* Example:
|
703 |
+
* <code>
|
704 |
+
* # ... authentication code excluded (see previous examples) ...
|
705 |
+
* #
|
706 |
+
*
|
707 |
+
* $container_info = $conn->list_containers_info();
|
708 |
+
* print_r($container_info);
|
709 |
+
* Array
|
710 |
+
* (
|
711 |
+
* ["my photos"] =>
|
712 |
+
* Array
|
713 |
+
* (
|
714 |
+
* ["bytes"] => 78,
|
715 |
+
* ["count"] => 2
|
716 |
+
* )
|
717 |
+
* ["docs"] =>
|
718 |
+
* Array
|
719 |
+
* (
|
720 |
+
* ["bytes"] => 37323,
|
721 |
+
* ["count"] => 12
|
722 |
+
* )
|
723 |
+
* )
|
724 |
+
* </code>
|
725 |
+
*
|
726 |
+
* @param integer $limit restrict results to $limit Containers
|
727 |
+
* @param string $marker return results greater than $marker
|
728 |
+
* @return array nested array structure of Container info
|
729 |
+
* @throws InvalidResponseException unexpected response
|
730 |
+
*/
|
731 |
+
function list_containers_info($limit=0, $marker=NULL)
|
732 |
+
{
|
733 |
+
list($status, $reason, $container_info) =
|
734 |
+
$this->cfs_http->list_containers_info($limit, $marker);
|
735 |
+
#if ($status == 401 && $this->_re_auth()) {
|
736 |
+
# return $this->list_containers_info($limit, $marker);
|
737 |
+
#}
|
738 |
+
if ($status < 200 || $status > 299) {
|
739 |
+
throw new InvalidResponseException(
|
740 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
741 |
+
}
|
742 |
+
return $container_info;
|
743 |
+
}
|
744 |
+
|
745 |
+
/**
|
746 |
+
* Return list of Containers that have been published to the CDN.
|
747 |
+
*
|
748 |
+
* Return an array of strings containing the names of published Containers.
|
749 |
+
* Note that this function returns the list of any Container that has
|
750 |
+
* ever been CDN-enabled regardless of it's existence in the storage
|
751 |
+
* system.
|
752 |
+
*
|
753 |
+
* Example:
|
754 |
+
* <code>
|
755 |
+
* # ... authentication code excluded (see previous examples) ...
|
756 |
+
* #
|
757 |
+
* $conn = new CF_Authentication($auth);
|
758 |
+
*
|
759 |
+
* $public_containers = $conn->list_public_containers();
|
760 |
+
* print_r($public_containers);
|
761 |
+
* Array
|
762 |
+
* (
|
763 |
+
* [0] => "images",
|
764 |
+
* [1] => "css",
|
765 |
+
* [2] => "javascript"
|
766 |
+
* )
|
767 |
+
* </code>
|
768 |
+
*
|
769 |
+
* @param bool $enabled_only Will list all containers ever CDN enabled if * set to false or only currently enabled CDN containers if set to true. * Defaults to false.
|
770 |
+
* @return array list of published Container names
|
771 |
+
* @throws InvalidResponseException unexpected response
|
772 |
+
*/
|
773 |
+
function list_public_containers($enabled_only=False)
|
774 |
+
{
|
775 |
+
list($status, $reason, $containers) =
|
776 |
+
$this->cfs_http->list_cdn_containers($enabled_only);
|
777 |
+
#if ($status == 401 && $this->_re_auth()) {
|
778 |
+
# return $this->list_public_containers();
|
779 |
+
#}
|
780 |
+
if ($status < 200 || $status > 299) {
|
781 |
+
throw new InvalidResponseException(
|
782 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
783 |
+
}
|
784 |
+
return $containers;
|
785 |
+
}
|
786 |
+
|
787 |
+
/**
|
788 |
+
* Set a user-supplied callback function to report download progress
|
789 |
+
*
|
790 |
+
* The callback function is used to report incremental progress of a data
|
791 |
+
* download functions (e.g. $container->list_objects(), $obj->read(), etc).
|
792 |
+
* The specified function will be periodically called with the number of
|
793 |
+
* bytes transferred until the entire download is complete. This callback
|
794 |
+
* function can be useful for implementing "progress bars" for large
|
795 |
+
* downloads.
|
796 |
+
*
|
797 |
+
* The specified callback function should take a single integer parameter.
|
798 |
+
*
|
799 |
+
* <code>
|
800 |
+
* function read_callback($bytes_transferred) {
|
801 |
+
* print ">> downloaded " . $bytes_transferred . " bytes.\n";
|
802 |
+
* # ... do other things ...
|
803 |
+
* return;
|
804 |
+
* }
|
805 |
+
*
|
806 |
+
* $conn = new CF_Connection($auth_obj);
|
807 |
+
* $conn->set_read_progress_function("read_callback");
|
808 |
+
* print_r($conn->list_containers());
|
809 |
+
*
|
810 |
+
* # output would look like this:
|
811 |
+
* #
|
812 |
+
* >> downloaded 10 bytes.
|
813 |
+
* >> downloaded 11 bytes.
|
814 |
+
* Array
|
815 |
+
* (
|
816 |
+
* [0] => fuzzy.txt
|
817 |
+
* [1] => space name
|
818 |
+
* )
|
819 |
+
* </code>
|
820 |
+
*
|
821 |
+
* @param string $func_name the name of the user callback function
|
822 |
+
*/
|
823 |
+
function set_read_progress_function($func_name)
|
824 |
+
{
|
825 |
+
$this->cfs_http->setReadProgressFunc($func_name);
|
826 |
+
}
|
827 |
+
|
828 |
+
/**
|
829 |
+
* Set a user-supplied callback function to report upload progress
|
830 |
+
*
|
831 |
+
* The callback function is used to report incremental progress of a data
|
832 |
+
* upload functions (e.g. $obj->write() call). The specified function will
|
833 |
+
* be periodically called with the number of bytes transferred until the
|
834 |
+
* entire upload is complete. This callback function can be useful
|
835 |
+
* for implementing "progress bars" for large uploads/downloads.
|
836 |
+
*
|
837 |
+
* The specified callback function should take a single integer parameter.
|
838 |
+
*
|
839 |
+
* <code>
|
840 |
+
* function write_callback($bytes_transferred) {
|
841 |
+
* print ">> uploaded " . $bytes_transferred . " bytes.\n";
|
842 |
+
* # ... do other things ...
|
843 |
+
* return;
|
844 |
+
* }
|
845 |
+
*
|
846 |
+
* $conn = new CF_Connection($auth_obj);
|
847 |
+
* $conn->set_write_progress_function("write_callback");
|
848 |
+
* $container = $conn->create_container("stuff");
|
849 |
+
* $obj = $container->create_object("foo");
|
850 |
+
* $obj->write("The callback function will be called during upload.");
|
851 |
+
*
|
852 |
+
* # output would look like this:
|
853 |
+
* # >> uploaded 51 bytes.
|
854 |
+
* #
|
855 |
+
* </code>
|
856 |
+
*
|
857 |
+
* @param string $func_name the name of the user callback function
|
858 |
+
*/
|
859 |
+
function set_write_progress_function($func_name)
|
860 |
+
{
|
861 |
+
$this->cfs_http->setWriteProgressFunc($func_name);
|
862 |
+
}
|
863 |
+
|
864 |
+
/**
|
865 |
+
* Use the Certificate Authority bundle included with this API
|
866 |
+
*
|
867 |
+
* Most versions of PHP with cURL support include an outdated Certificate
|
868 |
+
* Authority (CA) bundle (the file that lists all valid certificate
|
869 |
+
* signing authorities). The SSL certificates used by the Cloud Files
|
870 |
+
* storage system are perfectly valid but have been created/signed by
|
871 |
+
* a CA not listed in these outdated cURL distributions.
|
872 |
+
*
|
873 |
+
* As a work-around, we've included an updated CA bundle obtained
|
874 |
+
* directly from cURL's web site (http://curl.haxx.se). You can direct
|
875 |
+
* the API to use this CA bundle by calling this method prior to making
|
876 |
+
* any remote calls. The best place to use this method is right after
|
877 |
+
* the CF_Authentication instance has been instantiated.
|
878 |
+
*
|
879 |
+
* You can specify your own CA bundle by passing in the full pathname
|
880 |
+
* to the bundle. You can use the included CA bundle by leaving the
|
881 |
+
* argument blank.
|
882 |
+
*
|
883 |
+
* @param string $path Specify path to CA bundle (default to included)
|
884 |
+
*/
|
885 |
+
function ssl_use_cabundle($path=NULL)
|
886 |
+
{
|
887 |
+
$this->cfs_http->ssl_use_cabundle($path);
|
888 |
+
}
|
889 |
+
|
890 |
+
#private function _re_auth()
|
891 |
+
#{
|
892 |
+
# $new_auth = new CF_Authentication(
|
893 |
+
# $this->cfs_auth->username,
|
894 |
+
# $this->cfs_auth->api_key,
|
895 |
+
# $this->cfs_auth->auth_host,
|
896 |
+
# $this->cfs_auth->account);
|
897 |
+
# $new_auth->authenticate();
|
898 |
+
# $this->cfs_auth = $new_auth;
|
899 |
+
# $this->cfs_http->setCFAuth($this->cfs_auth);
|
900 |
+
# return True;
|
901 |
+
#}
|
902 |
+
}
|
903 |
+
|
904 |
+
/**
|
905 |
+
* Container operations
|
906 |
+
*
|
907 |
+
* Containers are storage compartments where you put your data (objects).
|
908 |
+
* A container is similar to a directory or folder on a conventional filesystem
|
909 |
+
* with the exception that they exist in a flat namespace, you can not create
|
910 |
+
* containers inside of containers.
|
911 |
+
*
|
912 |
+
* You also have the option of marking a Container as "public" so that the
|
913 |
+
* Objects stored in the Container are publicly available via the CDN.
|
914 |
+
*
|
915 |
+
* @package php-cloudfiles
|
916 |
+
*/
|
917 |
+
class CF_Container
|
918 |
+
{
|
919 |
+
public $cfs_auth;
|
920 |
+
public $cfs_http;
|
921 |
+
public $name;
|
922 |
+
public $object_count;
|
923 |
+
public $bytes_used;
|
924 |
+
|
925 |
+
public $cdn_enabled;
|
926 |
+
public $cdn_uri;
|
927 |
+
public $cdn_ttl;
|
928 |
+
public $cdn_log_retention;
|
929 |
+
public $cdn_acl_user_agent;
|
930 |
+
public $cdn_acl_referrer;
|
931 |
+
|
932 |
+
/**
|
933 |
+
* Class constructor
|
934 |
+
*
|
935 |
+
* Constructor for Container
|
936 |
+
*
|
937 |
+
* @param obj $cfs_auth CF_Authentication instance
|
938 |
+
* @param obj $cfs_http HTTP connection manager
|
939 |
+
* @param string $name name of Container
|
940 |
+
* @param int $count number of Objects stored in this Container
|
941 |
+
* @param int $bytes number of bytes stored in this Container
|
942 |
+
* @throws SyntaxException invalid Container name
|
943 |
+
*/
|
944 |
+
function __construct(&$cfs_auth, &$cfs_http, $name, $count=0,
|
945 |
+
$bytes=0, $docdn=True)
|
946 |
+
{
|
947 |
+
if (strlen($name) > MAX_CONTAINER_NAME_LEN) {
|
948 |
+
throw new SyntaxException("Container name exceeds "
|
949 |
+
. "maximum allowed length.");
|
950 |
+
}
|
951 |
+
if (strpos($name, "/") !== False) {
|
952 |
+
throw new SyntaxException(
|
953 |
+
"Container names cannot contain a '/' character.");
|
954 |
+
}
|
955 |
+
$this->cfs_auth = $cfs_auth;
|
956 |
+
$this->cfs_http = $cfs_http;
|
957 |
+
$this->name = $name;
|
958 |
+
$this->object_count = $count;
|
959 |
+
$this->bytes_used = $bytes;
|
960 |
+
$this->cdn_enabled = NULL;
|
961 |
+
$this->cdn_uri = NULL;
|
962 |
+
$this->cdn_ttl = NULL;
|
963 |
+
$this->cdn_log_retention = NULL;
|
964 |
+
$this->cdn_acl_user_agent = NULL;
|
965 |
+
$this->cdn_acl_referrer = NULL;
|
966 |
+
if ($this->cfs_http->getCDNMUrl() != NULL && $docdn) {
|
967 |
+
$this->_cdn_initialize();
|
968 |
+
}
|
969 |
+
}
|
970 |
+
|
971 |
+
/**
|
972 |
+
* String representation of Container
|
973 |
+
*
|
974 |
+
* Pretty print the Container instance.
|
975 |
+
*
|
976 |
+
* @return string Container details
|
977 |
+
*/
|
978 |
+
function __toString()
|
979 |
+
{
|
980 |
+
$me = sprintf("name: %s, count: %.0f, bytes: %.0f",
|
981 |
+
$this->name, $this->object_count, $this->bytes_used);
|
982 |
+
if ($this->cfs_http->getCDNMUrl() != NULL) {
|
983 |
+
$me .= sprintf(", cdn: %s, cdn uri: %s, cdn ttl: %.0f, logs retention: %s",
|
984 |
+
$this->is_public() ? "Yes" : "No",
|
985 |
+
$this->cdn_uri, $this->cdn_ttl,
|
986 |
+
$this->cdn_log_retention ? "Yes" : "No"
|
987 |
+
);
|
988 |
+
|
989 |
+
if ($this->cdn_acl_user_agent != NULL) {
|
990 |
+
$me .= ", cdn acl user agent: " . $this->cdn_acl_user_agent;
|
991 |
+
}
|
992 |
+
|
993 |
+
if ($this->cdn_acl_referrer != NULL) {
|
994 |
+
$me .= ", cdn acl referrer: " . $this->cdn_acl_referrer;
|
995 |
+
}
|
996 |
+
|
997 |
+
|
998 |
+
}
|
999 |
+
return $me;
|
1000 |
+
}
|
1001 |
+
|
1002 |
+
/**
|
1003 |
+
* Enable Container content to be served via CDN or modify CDN attributes
|
1004 |
+
*
|
1005 |
+
* Either enable this Container's content to be served via CDN or
|
1006 |
+
* adjust its CDN attributes. This Container will always return the
|
1007 |
+
* same CDN-enabled URI each time it is toggled public/private/public.
|
1008 |
+
*
|
1009 |
+
* Example:
|
1010 |
+
* <code>
|
1011 |
+
* # ... authentication code excluded (see previous examples) ...
|
1012 |
+
* #
|
1013 |
+
* $conn = new CF_Authentication($auth);
|
1014 |
+
*
|
1015 |
+
* $public_container = $conn->create_container("public");
|
1016 |
+
*
|
1017 |
+
* # CDN-enable the container and set it's TTL for a month
|
1018 |
+
* #
|
1019 |
+
* $public_container->make_public(86400/2); # 12 hours (86400 seconds/day)
|
1020 |
+
* </code>
|
1021 |
+
*
|
1022 |
+
* @param int $ttl the time in seconds content will be cached in the CDN
|
1023 |
+
* @returns string the CDN enabled Container's URI
|
1024 |
+
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1025 |
+
* @throws AuthenticationException if auth token is not valid/expired
|
1026 |
+
* @throws InvalidResponseException unexpected response
|
1027 |
+
*/
|
1028 |
+
function make_public($ttl=86400)
|
1029 |
+
{
|
1030 |
+
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1031 |
+
throw new CDNNotEnabledException(
|
1032 |
+
"Authentication response did not indicate CDN availability");
|
1033 |
+
}
|
1034 |
+
if ($this->cdn_uri != NULL) {
|
1035 |
+
# previously published, assume we're setting new attributes
|
1036 |
+
list($status, $reason, $cdn_uri) =
|
1037 |
+
$this->cfs_http->update_cdn_container($this->name,$ttl,
|
1038 |
+
$this->cdn_log_retention,
|
1039 |
+
$this->cdn_acl_user_agent,
|
1040 |
+
$this->cdn_acl_referrer);
|
1041 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1042 |
+
# return $this->make_public($ttl);
|
1043 |
+
#}
|
1044 |
+
if ($status == 404) {
|
1045 |
+
# this instance _thinks_ the container was published, but the
|
1046 |
+
# cdn management system thinks otherwise - try again with a PUT
|
1047 |
+
list($status, $reason, $cdn_uri) =
|
1048 |
+
$this->cfs_http->add_cdn_container($this->name,$ttl);
|
1049 |
+
|
1050 |
+
}
|
1051 |
+
} else {
|
1052 |
+
# publish it for first time
|
1053 |
+
list($status, $reason, $cdn_uri) =
|
1054 |
+
$this->cfs_http->add_cdn_container($this->name,$ttl);
|
1055 |
+
}
|
1056 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1057 |
+
# return $this->make_public($ttl);
|
1058 |
+
#}
|
1059 |
+
if (!in_array($status, array(201,202))) {
|
1060 |
+
throw new InvalidResponseException(
|
1061 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1062 |
+
}
|
1063 |
+
$this->cdn_enabled = True;
|
1064 |
+
$this->cdn_ttl = $ttl;
|
1065 |
+
$this->cdn_uri = $cdn_uri;
|
1066 |
+
$this->cdn_log_retention = False;
|
1067 |
+
$this->cdn_acl_user_agent = "";
|
1068 |
+
$this->cdn_acl_referrer = "";
|
1069 |
+
return $this->cdn_uri;
|
1070 |
+
}
|
1071 |
+
|
1072 |
+
/**
|
1073 |
+
* Enable ACL restriction by User Agent for this container.
|
1074 |
+
*
|
1075 |
+
* Example:
|
1076 |
+
* <code>
|
1077 |
+
* # ... authentication code excluded (see previous examples) ...
|
1078 |
+
* #
|
1079 |
+
* $conn = new CF_Authentication($auth);
|
1080 |
+
*
|
1081 |
+
* $public_container = $conn->get_container("public");
|
1082 |
+
*
|
1083 |
+
* # Enable ACL by Referrer
|
1084 |
+
* $public_container->acl_referrer("Mozilla");
|
1085 |
+
* </code>
|
1086 |
+
*
|
1087 |
+
* @returns boolean True if successful
|
1088 |
+
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1089 |
+
* @throws AuthenticationException if auth token is not valid/expired
|
1090 |
+
* @throws InvalidResponseException unexpected response
|
1091 |
+
*/
|
1092 |
+
function acl_user_agent($cdn_acl_user_agent="") {
|
1093 |
+
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1094 |
+
throw new CDNNotEnabledException(
|
1095 |
+
"Authentication response did not indicate CDN availability");
|
1096 |
+
}
|
1097 |
+
list($status,$reason) =
|
1098 |
+
$this->cfs_http->update_cdn_container($this->name,
|
1099 |
+
$this->cdn_ttl,
|
1100 |
+
$this->cdn_log_retention,
|
1101 |
+
$cdn_acl_user_agent,
|
1102 |
+
$this->cdn_acl_referrer
|
1103 |
+
);
|
1104 |
+
if (!in_array($status, array(202,404))) {
|
1105 |
+
throw new InvalidResponseException(
|
1106 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1107 |
+
}
|
1108 |
+
$this->cdn_acl_user_agent = $cdn_acl_user_agent;
|
1109 |
+
return True;
|
1110 |
+
}
|
1111 |
+
|
1112 |
+
/**
|
1113 |
+
* Enable ACL restriction by referer for this container.
|
1114 |
+
*
|
1115 |
+
* Example:
|
1116 |
+
* <code>
|
1117 |
+
* # ... authentication code excluded (see previous examples) ...
|
1118 |
+
* #
|
1119 |
+
* $conn = new CF_Authentication($auth);
|
1120 |
+
*
|
1121 |
+
* $public_container = $conn->get_container("public");
|
1122 |
+
*
|
1123 |
+
* # Enable Referrer
|
1124 |
+
* $public_container->acl_referrer("http://www.example.com/gallery.php");
|
1125 |
+
* </code>
|
1126 |
+
*
|
1127 |
+
* @returns boolean True if successful
|
1128 |
+
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1129 |
+
* @throws AuthenticationException if auth token is not valid/expired
|
1130 |
+
* @throws InvalidResponseException unexpected response
|
1131 |
+
*/
|
1132 |
+
function acl_referrer($cdn_acl_referrer="") {
|
1133 |
+
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1134 |
+
throw new CDNNotEnabledException(
|
1135 |
+
"Authentication response did not indicate CDN availability");
|
1136 |
+
}
|
1137 |
+
list($status,$reason) =
|
1138 |
+
$this->cfs_http->update_cdn_container($this->name,
|
1139 |
+
$this->cdn_ttl,
|
1140 |
+
$this->cdn_log_retention,
|
1141 |
+
$this->cdn_acl_user_agent,
|
1142 |
+
$cdn_acl_referrer
|
1143 |
+
);
|
1144 |
+
if (!in_array($status, array(202,404))) {
|
1145 |
+
throw new InvalidResponseException(
|
1146 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1147 |
+
}
|
1148 |
+
$this->cdn_acl_referrer = $cdn_acl_referrer;
|
1149 |
+
return True;
|
1150 |
+
}
|
1151 |
+
|
1152 |
+
/**
|
1153 |
+
* Enable log retention for this CDN container.
|
1154 |
+
*
|
1155 |
+
* Enable CDN log retention on the container. If enabled logs will
|
1156 |
+
* be periodically (at unpredictable intervals) compressed and
|
1157 |
+
* uploaded to a ".CDN_ACCESS_LOGS" container in the form of
|
1158 |
+
* "container_name.YYYYMMDDHH-XXXX.gz". Requires CDN be enabled on
|
1159 |
+
* the account.
|
1160 |
+
*
|
1161 |
+
* Example:
|
1162 |
+
* <code>
|
1163 |
+
* # ... authentication code excluded (see previous examples) ...
|
1164 |
+
* #
|
1165 |
+
* $conn = new CF_Authentication($auth);
|
1166 |
+
*
|
1167 |
+
* $public_container = $conn->get_container("public");
|
1168 |
+
*
|
1169 |
+
* # Enable logs retention.
|
1170 |
+
* $public_container->log_retention(True);
|
1171 |
+
* </code>
|
1172 |
+
*
|
1173 |
+
* @returns boolean True if successful
|
1174 |
+
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1175 |
+
* @throws AuthenticationException if auth token is not valid/expired
|
1176 |
+
* @throws InvalidResponseException unexpected response
|
1177 |
+
*/
|
1178 |
+
function log_retention($cdn_log_retention=False) {
|
1179 |
+
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1180 |
+
throw new CDNNotEnabledException(
|
1181 |
+
"Authentication response did not indicate CDN availability");
|
1182 |
+
}
|
1183 |
+
list($status,$reason) =
|
1184 |
+
$this->cfs_http->update_cdn_container($this->name,
|
1185 |
+
$this->cdn_ttl,
|
1186 |
+
$cdn_log_retention,
|
1187 |
+
$this->cdn_acl_user_agent,
|
1188 |
+
$this->cdn_acl_referrer
|
1189 |
+
);
|
1190 |
+
if (!in_array($status, array(202,404))) {
|
1191 |
+
throw new InvalidResponseException(
|
1192 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1193 |
+
}
|
1194 |
+
$this->cdn_log_retention = $cdn_log_retention;
|
1195 |
+
return True;
|
1196 |
+
}
|
1197 |
+
|
1198 |
+
/**
|
1199 |
+
* Disable the CDN sharing for this container
|
1200 |
+
*
|
1201 |
+
* Use this method to disallow distribution into the CDN of this Container's
|
1202 |
+
* content.
|
1203 |
+
*
|
1204 |
+
* NOTE: Any content already cached in the CDN will continue to be served
|
1205 |
+
* from its cache until the TTL expiration transpires. The default
|
1206 |
+
* TTL is typically one day, so "privatizing" the Container will take
|
1207 |
+
* up to 24 hours before the content is purged from the CDN cache.
|
1208 |
+
*
|
1209 |
+
* Example:
|
1210 |
+
* <code>
|
1211 |
+
* # ... authentication code excluded (see previous examples) ...
|
1212 |
+
* #
|
1213 |
+
* $conn = new CF_Authentication($auth);
|
1214 |
+
*
|
1215 |
+
* $public_container = $conn->get_container("public");
|
1216 |
+
*
|
1217 |
+
* # Disable CDN accessability
|
1218 |
+
* # ... still cached up to a month based on previous example
|
1219 |
+
* #
|
1220 |
+
* $public_container->make_private();
|
1221 |
+
* </code>
|
1222 |
+
*
|
1223 |
+
* @returns boolean True if successful
|
1224 |
+
* @throws CDNNotEnabledException CDN functionality not returned during auth
|
1225 |
+
* @throws AuthenticationException if auth token is not valid/expired
|
1226 |
+
* @throws InvalidResponseException unexpected response
|
1227 |
+
*/
|
1228 |
+
function make_private()
|
1229 |
+
{
|
1230 |
+
if ($this->cfs_http->getCDNMUrl() == NULL) {
|
1231 |
+
throw new CDNNotEnabledException(
|
1232 |
+
"Authentication response did not indicate CDN availability");
|
1233 |
+
}
|
1234 |
+
list($status,$reason) = $this->cfs_http->remove_cdn_container($this->name);
|
1235 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1236 |
+
# return $this->make_private();
|
1237 |
+
#}
|
1238 |
+
if (!in_array($status, array(202,404))) {
|
1239 |
+
throw new InvalidResponseException(
|
1240 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1241 |
+
}
|
1242 |
+
$this->cdn_enabled = False;
|
1243 |
+
$this->cdn_ttl = NULL;
|
1244 |
+
$this->cdn_uri = NULL;
|
1245 |
+
$this->cdn_log_retention = NULL;
|
1246 |
+
$this->cdn_acl_user_agent = NULL;
|
1247 |
+
$this->cdn_acl_referrer = NULL;
|
1248 |
+
return True;
|
1249 |
+
}
|
1250 |
+
|
1251 |
+
/**
|
1252 |
+
* Check if this Container is being publicly served via CDN
|
1253 |
+
*
|
1254 |
+
* Use this method to determine if the Container's content is currently
|
1255 |
+
* available through the CDN.
|
1256 |
+
*
|
1257 |
+
* Example:
|
1258 |
+
* <code>
|
1259 |
+
* # ... authentication code excluded (see previous examples) ...
|
1260 |
+
* #
|
1261 |
+
* $conn = new CF_Authentication($auth);
|
1262 |
+
*
|
1263 |
+
* $public_container = $conn->get_container("public");
|
1264 |
+
*
|
1265 |
+
* # Display CDN accessability
|
1266 |
+
* #
|
1267 |
+
* $public_container->is_public() ? print "Yes" : print "No";
|
1268 |
+
* </code>
|
1269 |
+
*
|
1270 |
+
* @returns boolean True if enabled, False otherwise
|
1271 |
+
*/
|
1272 |
+
function is_public()
|
1273 |
+
{
|
1274 |
+
return $this->cdn_enabled == True ? True : False;
|
1275 |
+
}
|
1276 |
+
|
1277 |
+
/**
|
1278 |
+
* Create a new remote storage Object
|
1279 |
+
*
|
1280 |
+
* Return a new Object instance. If the remote storage Object exists,
|
1281 |
+
* the instance's attributes are populated.
|
1282 |
+
*
|
1283 |
+
* Example:
|
1284 |
+
* <code>
|
1285 |
+
* # ... authentication code excluded (see previous examples) ...
|
1286 |
+
* #
|
1287 |
+
* $conn = new CF_Authentication($auth);
|
1288 |
+
*
|
1289 |
+
* $public_container = $conn->get_container("public");
|
1290 |
+
*
|
1291 |
+
* # This creates a local instance of a storage object but only creates
|
1292 |
+
* # it in the storage system when the object's write() method is called.
|
1293 |
+
* #
|
1294 |
+
* $pic = $public_container->create_object("baby.jpg");
|
1295 |
+
* </code>
|
1296 |
+
*
|
1297 |
+
* @param string $obj_name name of storage Object
|
1298 |
+
* @return obj CF_Object instance
|
1299 |
+
*/
|
1300 |
+
function create_object($obj_name=NULL)
|
1301 |
+
{
|
1302 |
+
return new CF_Object($this, $obj_name);
|
1303 |
+
}
|
1304 |
+
|
1305 |
+
/**
|
1306 |
+
* Return an Object instance for the remote storage Object
|
1307 |
+
*
|
1308 |
+
* Given a name, return a Object instance representing the
|
1309 |
+
* remote storage object.
|
1310 |
+
*
|
1311 |
+
* Example:
|
1312 |
+
* <code>
|
1313 |
+
* # ... authentication code excluded (see previous examples) ...
|
1314 |
+
* #
|
1315 |
+
* $conn = new CF_Authentication($auth);
|
1316 |
+
*
|
1317 |
+
* $public_container = $conn->get_container("public");
|
1318 |
+
*
|
1319 |
+
* # This call only fetches header information and not the content of
|
1320 |
+
* # the storage object. Use the Object's read() or stream() methods
|
1321 |
+
* # to obtain the object's data.
|
1322 |
+
* #
|
1323 |
+
* $pic = $public_container->get_object("baby.jpg");
|
1324 |
+
* </code>
|
1325 |
+
*
|
1326 |
+
* @param string $obj_name name of storage Object
|
1327 |
+
* @return obj CF_Object instance
|
1328 |
+
*/
|
1329 |
+
function get_object($obj_name=NULL)
|
1330 |
+
{
|
1331 |
+
return new CF_Object($this, $obj_name, True);
|
1332 |
+
}
|
1333 |
+
|
1334 |
+
/**
|
1335 |
+
* Return a list of Objects
|
1336 |
+
*
|
1337 |
+
* Return an array of strings listing the Object names in this Container.
|
1338 |
+
*
|
1339 |
+
* Example:
|
1340 |
+
* <code>
|
1341 |
+
* # ... authentication code excluded (see previous examples) ...
|
1342 |
+
* #
|
1343 |
+
* $images = $conn->get_container("my photos");
|
1344 |
+
*
|
1345 |
+
* # Grab the list of all storage objects
|
1346 |
+
* #
|
1347 |
+
* $all_objects = $images->list_objects();
|
1348 |
+
*
|
1349 |
+
* # Grab subsets of all storage objects
|
1350 |
+
* #
|
1351 |
+
* $first_ten = $images->list_objects(10);
|
1352 |
+
*
|
1353 |
+
* # Note the use of the previous result's last object name being
|
1354 |
+
* # used as the 'marker' parameter to fetch the next 10 objects
|
1355 |
+
* #
|
1356 |
+
* $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]);
|
1357 |
+
*
|
1358 |
+
* # Grab images starting with "birthday_party" and default limit/marker
|
1359 |
+
* # to match all photos with that prefix
|
1360 |
+
* #
|
1361 |
+
* $prefixed = $images->list_objects(0, NULL, "birthday");
|
1362 |
+
*
|
1363 |
+
* # Assuming you have created the appropriate directory marker Objects,
|
1364 |
+
* # you can traverse your pseudo-hierarchical containers
|
1365 |
+
* # with the "path" argument.
|
1366 |
+
* #
|
1367 |
+
* $animals = $images->list_objects(0,NULL,NULL,"pictures/animals");
|
1368 |
+
* $dogs = $images->list_objects(0,NULL,NULL,"pictures/animals/dogs");
|
1369 |
+
* </code>
|
1370 |
+
*
|
1371 |
+
* @param int $limit <i>optional</i> only return $limit names
|
1372 |
+
* @param int $marker <i>optional</i> subset of names starting at $marker
|
1373 |
+
* @param string $prefix <i>optional</i> Objects whose names begin with $prefix
|
1374 |
+
* @param string $path <i>optional</i> only return results under "pathname"
|
1375 |
+
* @return array array of strings
|
1376 |
+
* @throws InvalidResponseException unexpected response
|
1377 |
+
*/
|
1378 |
+
function list_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL)
|
1379 |
+
{
|
1380 |
+
list($status, $reason, $obj_list) =
|
1381 |
+
$this->cfs_http->list_objects($this->name, $limit,
|
1382 |
+
$marker, $prefix, $path);
|
1383 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1384 |
+
# return $this->list_objects($limit, $marker, $prefix, $path);
|
1385 |
+
#}
|
1386 |
+
if ($status < 200 || $status > 299) {
|
1387 |
+
throw new InvalidResponseException(
|
1388 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1389 |
+
}
|
1390 |
+
return $obj_list;
|
1391 |
+
}
|
1392 |
+
|
1393 |
+
/**
|
1394 |
+
* Return an array of Objects
|
1395 |
+
*
|
1396 |
+
* Return an array of Object instances in this Container.
|
1397 |
+
*
|
1398 |
+
* Example:
|
1399 |
+
* <code>
|
1400 |
+
* # ... authentication code excluded (see previous examples) ...
|
1401 |
+
* #
|
1402 |
+
* $images = $conn->get_container("my photos");
|
1403 |
+
*
|
1404 |
+
* # Grab the list of all storage objects
|
1405 |
+
* #
|
1406 |
+
* $all_objects = $images->get_objects();
|
1407 |
+
*
|
1408 |
+
* # Grab subsets of all storage objects
|
1409 |
+
* #
|
1410 |
+
* $first_ten = $images->get_objects(10);
|
1411 |
+
*
|
1412 |
+
* # Note the use of the previous result's last object name being
|
1413 |
+
* # used as the 'marker' parameter to fetch the next 10 objects
|
1414 |
+
* #
|
1415 |
+
* $next_ten = $images->list_objects(10, $first_ten[count($first_ten)-1]);
|
1416 |
+
*
|
1417 |
+
* # Grab images starting with "birthday_party" and default limit/marker
|
1418 |
+
* # to match all photos with that prefix
|
1419 |
+
* #
|
1420 |
+
* $prefixed = $images->get_objects(0, NULL, "birthday");
|
1421 |
+
*
|
1422 |
+
* # Assuming you have created the appropriate directory marker Objects,
|
1423 |
+
* # you can traverse your pseudo-hierarchical containers
|
1424 |
+
* # with the "path" argument.
|
1425 |
+
* #
|
1426 |
+
* $animals = $images->get_objects(0,NULL,NULL,"pictures/animals");
|
1427 |
+
* $dogs = $images->get_objects(0,NULL,NULL,"pictures/animals/dogs");
|
1428 |
+
* </code>
|
1429 |
+
*
|
1430 |
+
* @param int $limit <i>optional</i> only return $limit names
|
1431 |
+
* @param int $marker <i>optional</i> subset of names starting at $marker
|
1432 |
+
* @param string $prefix <i>optional</i> Objects whose names begin with $prefix
|
1433 |
+
* @param string $path <i>optional</i> only return results under "pathname"
|
1434 |
+
* @return array array of strings
|
1435 |
+
* @throws InvalidResponseException unexpected response
|
1436 |
+
*/
|
1437 |
+
function get_objects($limit=0, $marker=NULL, $prefix=NULL, $path=NULL)
|
1438 |
+
{
|
1439 |
+
list($status, $reason, $obj_array) =
|
1440 |
+
$this->cfs_http->get_objects($this->name, $limit,
|
1441 |
+
$marker, $prefix, $path);
|
1442 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1443 |
+
# return $this->get_objects($limit, $marker, $prefix, $path);
|
1444 |
+
#}
|
1445 |
+
if ($status < 200 || $status > 299) {
|
1446 |
+
throw new InvalidResponseException(
|
1447 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1448 |
+
}
|
1449 |
+
$objects = array();
|
1450 |
+
foreach ($obj_array as $obj) {
|
1451 |
+
$tmp = new CF_Object($this, $obj["name"], False, False);
|
1452 |
+
$tmp->content_type = $obj["content_type"];
|
1453 |
+
$tmp->content_length = (float) $obj["bytes"];
|
1454 |
+
$tmp->set_etag($obj["hash"]);
|
1455 |
+
$tmp->last_modified = $obj["last_modified"];
|
1456 |
+
$objects[] = $tmp;
|
1457 |
+
}
|
1458 |
+
return $objects;
|
1459 |
+
}
|
1460 |
+
|
1461 |
+
/**
|
1462 |
+
* Delete a remote storage Object
|
1463 |
+
*
|
1464 |
+
* Given an Object instance or name, permanently remove the remote Object
|
1465 |
+
* and all associated metadata.
|
1466 |
+
*
|
1467 |
+
* Example:
|
1468 |
+
* <code>
|
1469 |
+
* # ... authentication code excluded (see previous examples) ...
|
1470 |
+
* #
|
1471 |
+
* $conn = new CF_Authentication($auth);
|
1472 |
+
*
|
1473 |
+
* $images = $conn->get_container("my photos");
|
1474 |
+
*
|
1475 |
+
* # Delete specific object
|
1476 |
+
* #
|
1477 |
+
* $images->delete_object("disco_dancing.jpg");
|
1478 |
+
* </code>
|
1479 |
+
*
|
1480 |
+
* @param obj $obj name or instance of Object to delete
|
1481 |
+
* @return boolean <kbd>True</kbd> if successfully removed
|
1482 |
+
* @throws SyntaxException invalid Object name
|
1483 |
+
* @throws NoSuchObjectException remote Object does not exist
|
1484 |
+
* @throws InvalidResponseException unexpected response
|
1485 |
+
*/
|
1486 |
+
function delete_object($obj)
|
1487 |
+
{
|
1488 |
+
$obj_name = NULL;
|
1489 |
+
if (is_object($obj)) {
|
1490 |
+
if (get_class($obj) == "CF_Object") {
|
1491 |
+
$obj_name = $obj->name;
|
1492 |
+
}
|
1493 |
+
}
|
1494 |
+
if (is_string($obj)) {
|
1495 |
+
$obj_name = $obj;
|
1496 |
+
}
|
1497 |
+
if (!$obj_name) {
|
1498 |
+
throw new SyntaxException("Object name not set.");
|
1499 |
+
}
|
1500 |
+
$status = $this->cfs_http->delete_object($this->name, $obj_name);
|
1501 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1502 |
+
# return $this->delete_object($obj);
|
1503 |
+
#}
|
1504 |
+
if ($status == 404) {
|
1505 |
+
$m = "Specified object '".$this->name."/".$obj_name;
|
1506 |
+
$m.= "' did not exist to delete.";
|
1507 |
+
throw new NoSuchObjectException($m);
|
1508 |
+
}
|
1509 |
+
if ($status != 204) {
|
1510 |
+
throw new InvalidResponseException(
|
1511 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1512 |
+
}
|
1513 |
+
return True;
|
1514 |
+
}
|
1515 |
+
|
1516 |
+
/**
|
1517 |
+
* Helper function to create "path" elements for a given Object name
|
1518 |
+
*
|
1519 |
+
* Given an Object whos name contains '/' path separators, this function
|
1520 |
+
* will create the "directory marker" Objects of one byte with the
|
1521 |
+
* Content-Type of "application/folder".
|
1522 |
+
*
|
1523 |
+
* It assumes the last element of the full path is the "real" Object
|
1524 |
+
* and does NOT create a remote storage Object for that last element.
|
1525 |
+
*/
|
1526 |
+
function create_paths($path_name)
|
1527 |
+
{
|
1528 |
+
if ($path_name[0] == '/') {
|
1529 |
+
$path_name = mb_substr($path_name, 0, 1);
|
1530 |
+
}
|
1531 |
+
$elements = explode('/', $path_name, -1);
|
1532 |
+
$build_path = "";
|
1533 |
+
foreach ($elements as $idx => $val) {
|
1534 |
+
if (!$build_path) {
|
1535 |
+
$build_path = $val;
|
1536 |
+
} else {
|
1537 |
+
$build_path .= "/" . $val;
|
1538 |
+
}
|
1539 |
+
$obj = new CF_Object($this, $build_path);
|
1540 |
+
$obj->content_type = "application/directory";
|
1541 |
+
$obj->write(".", 1);
|
1542 |
+
}
|
1543 |
+
}
|
1544 |
+
|
1545 |
+
/**
|
1546 |
+
* Internal method to grab CDN/Container info if appropriate to do so
|
1547 |
+
*
|
1548 |
+
* @throws InvalidResponseException unexpected response
|
1549 |
+
*/
|
1550 |
+
private function _cdn_initialize()
|
1551 |
+
{
|
1552 |
+
list($status, $reason, $cdn_enabled, $cdn_uri, $cdn_ttl,
|
1553 |
+
$cdn_log_retention, $cdn_acl_user_agent, $cdn_acl_referrer) =
|
1554 |
+
$this->cfs_http->head_cdn_container($this->name);
|
1555 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1556 |
+
# return $this->_cdn_initialize();
|
1557 |
+
#}
|
1558 |
+
if (!in_array($status, array(204,404))) {
|
1559 |
+
throw new InvalidResponseException(
|
1560 |
+
"Invalid response (".$status."): ".$this->cfs_http->get_error());
|
1561 |
+
}
|
1562 |
+
$this->cdn_enabled = $cdn_enabled;
|
1563 |
+
$this->cdn_uri = $cdn_uri;
|
1564 |
+
$this->cdn_ttl = $cdn_ttl;
|
1565 |
+
$this->cdn_log_retention = $cdn_log_retention;
|
1566 |
+
$this->cdn_acl_user_agent = $cdn_acl_user_agent;
|
1567 |
+
$this->cdn_acl_referrer = $cdn_acl_referrer;
|
1568 |
+
}
|
1569 |
+
|
1570 |
+
#private function _re_auth()
|
1571 |
+
#{
|
1572 |
+
# $new_auth = new CF_Authentication(
|
1573 |
+
# $this->cfs_auth->username,
|
1574 |
+
# $this->cfs_auth->api_key,
|
1575 |
+
# $this->cfs_auth->auth_host,
|
1576 |
+
# $this->cfs_auth->account);
|
1577 |
+
# $new_auth->authenticate();
|
1578 |
+
# $this->cfs_auth = $new_auth;
|
1579 |
+
# $this->cfs_http->setCFAuth($this->cfs_auth);
|
1580 |
+
# return True;
|
1581 |
+
#}
|
1582 |
+
}
|
1583 |
+
|
1584 |
+
|
1585 |
+
/**
|
1586 |
+
* Object operations
|
1587 |
+
*
|
1588 |
+
* An Object is analogous to a file on a conventional filesystem. You can
|
1589 |
+
* read data from, or write data to your Objects. You can also associate
|
1590 |
+
* arbitrary metadata with them.
|
1591 |
+
*
|
1592 |
+
* @package php-cloudfiles
|
1593 |
+
*/
|
1594 |
+
class CF_Object
|
1595 |
+
{
|
1596 |
+
public $container;
|
1597 |
+
public $name;
|
1598 |
+
public $last_modified;
|
1599 |
+
public $content_type;
|
1600 |
+
public $content_length;
|
1601 |
+
public $metadata;
|
1602 |
+
private $etag;
|
1603 |
+
|
1604 |
+
/**
|
1605 |
+
* Class constructor
|
1606 |
+
*
|
1607 |
+
* @param obj $container CF_Container instance
|
1608 |
+
* @param string $name name of Object
|
1609 |
+
* @param boolean $force_exists if set, throw an error if Object doesn't exist
|
1610 |
+
*/
|
1611 |
+
function __construct(&$container, $name, $force_exists=False, $dohead=True)
|
1612 |
+
{
|
1613 |
+
if ($name[0] == "/") {
|
1614 |
+
$r = "Object name '".$name;
|
1615 |
+
$r .= "' cannot contain begin with a '/' character.";
|
1616 |
+
throw new SyntaxException($r);
|
1617 |
+
}
|
1618 |
+
if (strlen($name) > MAX_OBJECT_NAME_LEN) {
|
1619 |
+
throw new SyntaxException("Object name exceeds "
|
1620 |
+
. "maximum allowed length.");
|
1621 |
+
}
|
1622 |
+
$this->container = $container;
|
1623 |
+
$this->name = $name;
|
1624 |
+
$this->etag = NULL;
|
1625 |
+
$this->_etag_override = False;
|
1626 |
+
$this->last_modified = NULL;
|
1627 |
+
$this->content_type = NULL;
|
1628 |
+
$this->content_length = 0;
|
1629 |
+
$this->metadata = array();
|
1630 |
+
if ($dohead) {
|
1631 |
+
if (!$this->_initialize() && $force_exists) {
|
1632 |
+
throw new NoSuchObjectException("No such object '".$name."'");
|
1633 |
+
}
|
1634 |
+
}
|
1635 |
+
}
|
1636 |
+
|
1637 |
+
/**
|
1638 |
+
* String representation of Object
|
1639 |
+
*
|
1640 |
+
* Pretty print the Object's location and name
|
1641 |
+
*
|
1642 |
+
* @return string Object information
|
1643 |
+
*/
|
1644 |
+
function __toString()
|
1645 |
+
{
|
1646 |
+
return $this->container->name . "/" . $this->name;
|
1647 |
+
}
|
1648 |
+
|
1649 |
+
/**
|
1650 |
+
* Internal check to get the proper mimetype.
|
1651 |
+
*
|
1652 |
+
* This function would go over the available PHP methods to get
|
1653 |
+
* the MIME type.
|
1654 |
+
*
|
1655 |
+
* By default it will try to use the PHP fileinfo library which is
|
1656 |
+
* available from PHP 5.3 or as an PECL extension
|
1657 |
+
* (http://pecl.php.net/package/Fileinfo).
|
1658 |
+
*
|
1659 |
+
* It will get the magic file by default from the system wide file
|
1660 |
+
* which is usually available in /usr/share/magic on Unix or try
|
1661 |
+
* to use the file specified in the source directory of the API
|
1662 |
+
* (share directory).
|
1663 |
+
*
|
1664 |
+
* if fileinfo is not available it will try to use the internal
|
1665 |
+
* mime_content_type function.
|
1666 |
+
*
|
1667 |
+
* @param string $handle name of file or buffer to guess the type from
|
1668 |
+
* @return boolean <kbd>True</kbd> if successful
|
1669 |
+
* @throws BadContentTypeException
|
1670 |
+
*/
|
1671 |
+
function _guess_content_type($handle) {
|
1672 |
+
if ($this->content_type)
|
1673 |
+
return;
|
1674 |
+
|
1675 |
+
require_once W3TC_INC_DIR . '/functions/mime.php';
|
1676 |
+
|
1677 |
+
$this->content_type = w3_get_mime_type($handle);
|
1678 |
+
|
1679 |
+
if (!$this->content_type) {
|
1680 |
+
throw new BadContentTypeException("Required Content-Type not set");
|
1681 |
+
}
|
1682 |
+
|
1683 |
+
return True;
|
1684 |
+
}
|
1685 |
+
|
1686 |
+
/**
|
1687 |
+
* String representation of the Object's public URI
|
1688 |
+
*
|
1689 |
+
* A string representing the Object's public URI assuming that it's
|
1690 |
+
* parent Container is CDN-enabled.
|
1691 |
+
*
|
1692 |
+
* Example:
|
1693 |
+
* <code>
|
1694 |
+
* # ... authentication/connection/container code excluded
|
1695 |
+
* # ... see previous examples
|
1696 |
+
*
|
1697 |
+
* # Print out the Object's CDN URI (if it has one) in an HTML img-tag
|
1698 |
+
* #
|
1699 |
+
* print "<img src='$pic->public_uri()' />\n";
|
1700 |
+
* </code>
|
1701 |
+
*
|
1702 |
+
* @return string Object's public URI or NULL
|
1703 |
+
*/
|
1704 |
+
function public_uri()
|
1705 |
+
{
|
1706 |
+
if ($this->container->cdn_enabled) {
|
1707 |
+
return $this->container->cdn_uri . "/" . $this->name;
|
1708 |
+
}
|
1709 |
+
return NULL;
|
1710 |
+
}
|
1711 |
+
|
1712 |
+
/**
|
1713 |
+
* Read the remote Object's data
|
1714 |
+
*
|
1715 |
+
* Returns the Object's data. This is useful for smaller Objects such
|
1716 |
+
* as images or office documents. Object's with larger content should use
|
1717 |
+
* the stream() method below.
|
1718 |
+
*
|
1719 |
+
* Pass in $hdrs array to set specific custom HTTP headers such as
|
1720 |
+
* If-Match, If-None-Match, If-Modified-Since, Range, etc.
|
1721 |
+
*
|
1722 |
+
* Example:
|
1723 |
+
* <code>
|
1724 |
+
* # ... authentication/connection/container code excluded
|
1725 |
+
* # ... see previous examples
|
1726 |
+
*
|
1727 |
+
* $my_docs = $conn->get_container("documents");
|
1728 |
+
* $doc = $my_docs->get_object("README");
|
1729 |
+
* $data = $doc->read(); # read image content into a string variable
|
1730 |
+
* print $data;
|
1731 |
+
*
|
1732 |
+
* # Or see stream() below for a different example.
|
1733 |
+
* #
|
1734 |
+
* </code>
|
1735 |
+
*
|
1736 |
+
* @param array $hdrs user-defined headers (Range, If-Match, etc.)
|
1737 |
+
* @return string Object's data
|
1738 |
+
* @throws InvalidResponseException unexpected response
|
1739 |
+
*/
|
1740 |
+
function read($hdrs=array())
|
1741 |
+
{
|
1742 |
+
list($status, $reason, $data) =
|
1743 |
+
$this->container->cfs_http->get_object_to_string($this, $hdrs);
|
1744 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1745 |
+
# return $this->read($hdrs);
|
1746 |
+
#}
|
1747 |
+
if (($status < 200) || ($status > 299
|
1748 |
+
&& $status != 412 && $status != 304)) {
|
1749 |
+
throw new InvalidResponseException("Invalid response (".$status."): "
|
1750 |
+
. $this->container->cfs_http->get_error());
|
1751 |
+
}
|
1752 |
+
return $data;
|
1753 |
+
}
|
1754 |
+
|
1755 |
+
/**
|
1756 |
+
* Streaming read of Object's data
|
1757 |
+
*
|
1758 |
+
* Given an open PHP resource (see PHP's fopen() method), fetch the Object's
|
1759 |
+
* data and write it to the open resource handle. This is useful for
|
1760 |
+
* streaming an Object's content to the browser (videos, images) or for
|
1761 |
+
* fetching content to a local file.
|
1762 |
+
*
|
1763 |
+
* Pass in $hdrs array to set specific custom HTTP headers such as
|
1764 |
+
* If-Match, If-None-Match, If-Modified-Since, Range, etc.
|
1765 |
+
*
|
1766 |
+
* Example:
|
1767 |
+
* <code>
|
1768 |
+
* # ... authentication/connection/container code excluded
|
1769 |
+
* # ... see previous examples
|
1770 |
+
*
|
1771 |
+
* # Assuming this is a web script to display the README to the
|
1772 |
+
* # user's browser:
|
1773 |
+
* #
|
1774 |
+
* <?php
|
1775 |
+
* // grab README from storage system
|
1776 |
+
* //
|
1777 |
+
* $my_docs = $conn->get_container("documents");
|
1778 |
+
* $doc = $my_docs->get_object("README");
|
1779 |
+
*
|
1780 |
+
* // Hand it back to user's browser with appropriate content-type
|
1781 |
+
* //
|
1782 |
+
* header("Content-Type: " . $doc->content_type);
|
1783 |
+
* $output = fopen("php://output", "w");
|
1784 |
+
* $doc->stream($output); # stream object content to PHP's output buffer
|
1785 |
+
* fclose($output);
|
1786 |
+
* ?>
|
1787 |
+
*
|
1788 |
+
* # See read() above for a more simple example.
|
1789 |
+
* #
|
1790 |
+
* </code>
|
1791 |
+
*
|
1792 |
+
* @param resource $fp open resource for writing data to
|
1793 |
+
* @param array $hdrs user-defined headers (Range, If-Match, etc.)
|
1794 |
+
* @return string Object's data
|
1795 |
+
* @throws InvalidResponseException unexpected response
|
1796 |
+
*/
|
1797 |
+
function stream(&$fp, $hdrs=array())
|
1798 |
+
{
|
1799 |
+
list($status, $reason) =
|
1800 |
+
$this->container->cfs_http->get_object_to_stream($this,$fp,$hdrs);
|
1801 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1802 |
+
# return $this->stream($fp, $hdrs);
|
1803 |
+
#}
|
1804 |
+
if (($status < 200) || ($status > 299
|
1805 |
+
&& $status != 412 && $status != 304)) {
|
1806 |
+
throw new InvalidResponseException("Invalid response (".$status."): "
|
1807 |
+
.$reason);
|
1808 |
+
}
|
1809 |
+
return True;
|
1810 |
+
}
|
1811 |
+
|
1812 |
+
/**
|
1813 |
+
* Store new Object metadata
|
1814 |
+
*
|
1815 |
+
* Write's an Object's metadata to the remote Object. This will overwrite
|
1816 |
+
* an prior Object metadata.
|
1817 |
+
*
|
1818 |
+
* Example:
|
1819 |
+
* <code>
|
1820 |
+
* # ... authentication/connection/container code excluded
|
1821 |
+
* # ... see previous examples
|
1822 |
+
*
|
1823 |
+
* $my_docs = $conn->get_container("documents");
|
1824 |
+
* $doc = $my_docs->get_object("README");
|
1825 |
+
*
|
1826 |
+
* # Define new metadata for the object
|
1827 |
+
* #
|
1828 |
+
* $doc->metadata = array(
|
1829 |
+
* "Author" => "EJ",
|
1830 |
+
* "Subject" => "How to use the PHP tests",
|
1831 |
+
* "Version" => "1.2.2"
|
1832 |
+
* );
|
1833 |
+
*
|
1834 |
+
* # Push the new metadata up to the storage system
|
1835 |
+
* #
|
1836 |
+
* $doc->sync_metadata();
|
1837 |
+
* </code>
|
1838 |
+
*
|
1839 |
+
* @return boolean <kbd>True</kbd> if successful, <kbd>False</kbd> otherwise
|
1840 |
+
* @throws InvalidResponseException unexpected response
|
1841 |
+
*/
|
1842 |
+
function sync_metadata()
|
1843 |
+
{
|
1844 |
+
if (!empty($this->metadata)) {
|
1845 |
+
$status = $this->container->cfs_http->update_object($this);
|
1846 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1847 |
+
# return $this->sync_metadata();
|
1848 |
+
#}
|
1849 |
+
if ($status != 202) {
|
1850 |
+
throw new InvalidResponseException("Invalid response ("
|
1851 |
+
.$status."): ".$this->container->cfs_http->get_error());
|
1852 |
+
}
|
1853 |
+
return True;
|
1854 |
+
}
|
1855 |
+
return False;
|
1856 |
+
}
|
1857 |
+
|
1858 |
+
/**
|
1859 |
+
* Upload Object's data to Cloud Files
|
1860 |
+
*
|
1861 |
+
* Write data to the remote Object. The $data argument can either be a
|
1862 |
+
* PHP resource open for reading (see PHP's fopen() method) or an in-memory
|
1863 |
+
* variable. If passing in a PHP resource, you must also include the $bytes
|
1864 |
+
* parameter.
|
1865 |
+
*
|
1866 |
+
* Example:
|
1867 |
+
* <code>
|
1868 |
+
* # ... authentication/connection/container code excluded
|
1869 |
+
* # ... see previous examples
|
1870 |
+
*
|
1871 |
+
* $my_docs = $conn->get_container("documents");
|
1872 |
+
* $doc = $my_docs->get_object("README");
|
1873 |
+
*
|
1874 |
+
* # Upload placeholder text in my README
|
1875 |
+
* #
|
1876 |
+
* $doc->write("This is just placeholder text for now...");
|
1877 |
+
* </code>
|
1878 |
+
*
|
1879 |
+
* @param string|resource $data string or open resource
|
1880 |
+
* @param float $bytes amount of data to upload (required for resources)
|
1881 |
+
* @param boolean $verify generate, send, and compare MD5 checksums
|
1882 |
+
* @return boolean <kbd>True</kbd> when data uploaded successfully
|
1883 |
+
* @throws SyntaxException missing required parameters
|
1884 |
+
* @throws BadContentTypeException if no Content-Type was/could be set
|
1885 |
+
* @throws MisMatchedChecksumException $verify is set and checksums unequal
|
1886 |
+
* @throws InvalidResponseException unexpected response
|
1887 |
+
*/
|
1888 |
+
function write($data=NULL, $bytes=0, $verify=True)
|
1889 |
+
{
|
1890 |
+
if (!$data) {
|
1891 |
+
throw new SyntaxException("Missing data source.");
|
1892 |
+
}
|
1893 |
+
if ($bytes > MAX_OBJECT_SIZE) {
|
1894 |
+
throw new SyntaxException("Bytes exceeds maximum object size.");
|
1895 |
+
}
|
1896 |
+
if ($verify) {
|
1897 |
+
if (!$this->_etag_override) {
|
1898 |
+
$this->etag = $this->compute_md5sum($data);
|
1899 |
+
}
|
1900 |
+
} else {
|
1901 |
+
$this->etag = NULL;
|
1902 |
+
}
|
1903 |
+
|
1904 |
+
$close_fh = False;
|
1905 |
+
if (!is_resource($data)) {
|
1906 |
+
# A hack to treat string data as a file handle. php://memory feels
|
1907 |
+
# like a better option, but it seems to break on Windows so use
|
1908 |
+
# a temporary file instead.
|
1909 |
+
#
|
1910 |
+
$fp = fopen("php://temp", "wb+");
|
1911 |
+
#$fp = fopen("php://memory", "wb+");
|
1912 |
+
fwrite($fp, $data, strlen($data));
|
1913 |
+
rewind($fp);
|
1914 |
+
$close_fh = True;
|
1915 |
+
$this->content_length = (float) strlen($data);
|
1916 |
+
if ($this->content_length > MAX_OBJECT_SIZE) {
|
1917 |
+
throw new SyntaxException("Data exceeds maximum object size");
|
1918 |
+
}
|
1919 |
+
$ct_data = substr($data, 0, 64);
|
1920 |
+
} else {
|
1921 |
+
$this->content_length = $bytes;
|
1922 |
+
$fp = $data;
|
1923 |
+
$ct_data = fread($data, 64);
|
1924 |
+
rewind($data);
|
1925 |
+
}
|
1926 |
+
|
1927 |
+
$this->_guess_content_type($ct_data);
|
1928 |
+
|
1929 |
+
list($status, $reason, $etag) =
|
1930 |
+
$this->container->cfs_http->put_object($this, $fp);
|
1931 |
+
#if ($status == 401 && $this->_re_auth()) {
|
1932 |
+
# return $this->write($data, $bytes, $verify);
|
1933 |
+
#}
|
1934 |
+
if ($status == 412) {
|
1935 |
+
if ($close_fh) { fclose($fp); }
|
1936 |
+
throw new SyntaxException("Missing Content-Type header");
|
1937 |
+
}
|
1938 |
+
if ($status == 422) {
|
1939 |
+
if ($close_fh) { fclose($fp); }
|
1940 |
+
throw new MisMatchedChecksumException(
|
1941 |
+
"Supplied and computed checksums do not match.");
|
1942 |
+
}
|
1943 |
+
if ($status != 201) {
|
1944 |
+
if ($close_fh) { fclose($fp); }
|
1945 |
+
throw new InvalidResponseException("Invalid response (".$status."): "
|
1946 |
+
. $this->container->cfs_http->get_error());
|
1947 |
+
}
|
1948 |
+
if (!$verify) {
|
1949 |
+
$this->etag = $etag;
|
1950 |
+
}
|
1951 |
+
if ($close_fh) { fclose($fp); }
|
1952 |
+
return True;
|
1953 |
+
}
|
1954 |
+
|
1955 |
+
/**
|
1956 |
+
* Upload Object data from local filename
|
1957 |
+
*
|
1958 |
+
* This is a convenience function to upload the data from a local file. A
|
1959 |
+
* True value for $verify will cause the method to compute the Object's MD5
|
1960 |
+
* checksum prior to uploading.
|
1961 |
+
*
|
1962 |
+
* Example:
|
1963 |
+
* <code>
|
1964 |
+
* # ... authentication/connection/container code excluded
|
1965 |
+
* # ... see previous examples
|
1966 |
+
*
|
1967 |
+
* $my_docs = $conn->get_container("documents");
|
1968 |
+
* $doc = $my_docs->get_object("README");
|
1969 |
+
*
|
1970 |
+
* # Upload my local README's content
|
1971 |
+
* #
|
1972 |
+
* $doc->load_from_filename("/home/ej/cloudfiles/readme");
|
1973 |
+
* </code>
|
1974 |
+
*
|
1975 |
+
* @param string $filename full path to local file
|
1976 |
+
* @param boolean $verify enable local/remote MD5 checksum validation
|
1977 |
+
* @return boolean <kbd>True</kbd> if data uploaded successfully
|
1978 |
+
* @throws SyntaxException missing required parameters
|
1979 |
+
* @throws BadContentTypeException if no Content-Type was/could be set
|
1980 |
+
* @throws MisMatchedChecksumException $verify is set and checksums unequal
|
1981 |
+
* @throws InvalidResponseException unexpected response
|
1982 |
+
* @throws IOException error opening file
|
1983 |
+
*/
|
1984 |
+
function load_from_filename($filename, $verify=True)
|
1985 |
+
{
|
1986 |
+
$fp = @fopen($filename, "r");
|
1987 |
+
if (!$fp) {
|
1988 |
+
throw new IOException("Could not open file for reading: ".$filename);
|
1989 |
+
}
|
1990 |
+
|
1991 |
+
clearstatcache();
|
1992 |
+
|
1993 |
+
$size = (float) sprintf("%u", filesize($filename));
|
1994 |
+
if ($size > MAX_OBJECT_SIZE) {
|
1995 |
+
throw new SyntaxException("File size exceeds maximum object size.");
|
1996 |
+
}
|
1997 |
+
|
1998 |
+
$this->_guess_content_type($filename);
|
1999 |
+
|
2000 |
+
$this->write($fp, $size, $verify);
|
2001 |
+
fclose($fp);
|
2002 |
+
return True;
|
2003 |
+
}
|
2004 |
+
|
2005 |
+
/**
|
2006 |
+
* Save Object's data to local filename
|
2007 |
+
*
|
2008 |
+
* Given a local filename, the Object's data will be written to the newly
|
2009 |
+
* created file.
|
2010 |
+
*
|
2011 |
+
* Example:
|
2012 |
+
* <code>
|
2013 |
+
* # ... authentication/connection/container code excluded
|
2014 |
+
* # ... see previous examples
|
2015 |
+
*
|
2016 |
+
* # Whoops! I deleted my local README, let me download/save it
|
2017 |
+
* #
|
2018 |
+
* $my_docs = $conn->get_container("documents");
|
2019 |
+
* $doc = $my_docs->get_object("README");
|
2020 |
+
*
|
2021 |
+
* $doc->save_to_filename("/home/ej/cloudfiles/readme.restored");
|
2022 |
+
* </code>
|
2023 |
+
*
|
2024 |
+
* @param string $filename name of local file to write data to
|
2025 |
+
* @return boolean <kbd>True</kbd> if successful
|
2026 |
+
* @throws IOException error opening file
|
2027 |
+
* @throws InvalidResponseException unexpected response
|
2028 |
+
*/
|
2029 |
+
function save_to_filename($filename)
|
2030 |
+
{
|
2031 |
+
$fp = @fopen($filename, "wb");
|
2032 |
+
if (!$fp) {
|
2033 |
+
throw new IOException("Could not open file for writing: ".$filename);
|
2034 |
+
}
|
2035 |
+
$result = $this->stream($fp);
|
2036 |
+
fclose($fp);
|
2037 |
+
return $result;
|
2038 |
+
}
|
2039 |
+
|
2040 |
+
/**
|
2041 |
+
* Set Object's MD5 checksum
|
2042 |
+
*
|
2043 |
+
* Manually set the Object's ETag. Including the ETag is mandatory for
|
2044 |
+
* Cloud Files to perform end-to-end verification. Omitting the ETag forces
|
2045 |
+
* the user to handle any data integrity checks.
|
2046 |
+
*
|
2047 |
+
* @param string $etag MD5 checksum hexidecimal string
|
2048 |
+
*/
|
2049 |
+
function set_etag($etag)
|
2050 |
+
{
|
2051 |
+
$this->etag = $etag;
|
2052 |
+
$this->_etag_override = True;
|
2053 |
+
}
|
2054 |
+
|
2055 |
+
/**
|
2056 |
+
* Object's MD5 checksum
|
2057 |
+
*
|
2058 |
+
* Accessor method for reading Object's private ETag attribute.
|
2059 |
+
*
|
2060 |
+
* @return string MD5 checksum hexidecimal string
|
2061 |
+
*/
|
2062 |
+
function getETag()
|
2063 |
+
{
|
2064 |
+
return $this->etag;
|
2065 |
+
}
|
2066 |
+
|
2067 |
+
/**
|
2068 |
+
* Compute the MD5 checksum
|
2069 |
+
*
|
2070 |
+
* Calculate the MD5 checksum on either a PHP resource or data. The argument
|
2071 |
+
* may either be a local filename, open resource for reading, or a string.
|
2072 |
+
*
|
2073 |
+
* <b>WARNING:</b> if you are uploading a big file over a stream
|
2074 |
+
* it could get very slow to compute the md5 you probably want to
|
2075 |
+
* set the $verify parameter to False in the write() method and
|
2076 |
+
* compute yourself the md5 before if you have it.
|
2077 |
+
*
|
2078 |
+
* @param filename|obj|string $data filename, open resource, or string
|
2079 |
+
* @return string MD5 checksum hexidecimal string
|
2080 |
+
*/
|
2081 |
+
function compute_md5sum(&$data)
|
2082 |
+
{
|
2083 |
+
|
2084 |
+
if (function_exists("hash_init") && is_resource($data)) {
|
2085 |
+
$ctx = hash_init('md5');
|
2086 |
+
while (!feof($data)) {
|
2087 |
+
$buffer = fgets($data, 65536);
|
2088 |
+
hash_update($ctx, $buffer);
|
2089 |
+
}
|
2090 |
+
$md5 = hash_final($ctx, false);
|
2091 |
+
rewind($data);
|
2092 |
+
} elseif ((string)is_file($data)) {
|
2093 |
+
$md5 = md5_file($data);
|
2094 |
+
} else {
|
2095 |
+
$md5 = md5($data);
|
2096 |
+
}
|
2097 |
+
return $md5;
|
2098 |
+
}
|
2099 |
+
|
2100 |
+
/**
|
2101 |
+
* PRIVATE: fetch information about the remote Object if it exists
|
2102 |
+
*/
|
2103 |
+
private function _initialize()
|
2104 |
+
{
|
2105 |
+
list($status, $reason, $etag, $last_modified, $content_type,
|
2106 |
+
$content_length, $metadata) =
|
2107 |
+
$this->container->cfs_http->head_object($this);
|
2108 |
+
#if ($status == 401 && $this->_re_auth()) {
|
2109 |
+
# return $this->_initialize();
|
2110 |
+
#}
|
2111 |
+
if ($status == 404) {
|
2112 |
+
return False;
|
2113 |
+
}
|
2114 |
+
if ($status < 200 || $status > 299) {
|
2115 |
+
throw new InvalidResponseException("Invalid response (".$status."): "
|
2116 |
+
. $this->container->cfs_http->get_error());
|
2117 |
+
}
|
2118 |
+
$this->etag = $etag;
|
2119 |
+
$this->last_modified = $last_modified;
|
2120 |
+
$this->content_type = $content_type;
|
2121 |
+
$this->content_length = $content_length;
|
2122 |
+
$this->metadata = $metadata;
|
2123 |
+
return True;
|
2124 |
+
}
|
2125 |
+
|
2126 |
+
#private function _re_auth()
|
2127 |
+
#{
|
2128 |
+
# $new_auth = new CF_Authentication(
|
2129 |
+
# $this->cfs_auth->username,
|
2130 |
+
# $this->cfs_auth->api_key,
|
2131 |
+
# $this->cfs_auth->auth_host,
|
2132 |
+
# $this->cfs_auth->account);
|
2133 |
+
# $new_auth->authenticate();
|
2134 |
+
# $this->container->cfs_auth = $new_auth;
|
2135 |
+
# $this->container->cfs_http->setCFAuth($this->cfs_auth);
|
2136 |
+
# return True;
|
2137 |
+
#}
|
2138 |
+
}
|
2139 |
+
|
2140 |
+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
2141 |
+
|
2142 |
+
/*
|
2143 |
+
* Local variables:
|
2144 |
+
* tab-width: 4
|
2145 |
+
* c-basic-offset: 4
|
2146 |
+
* c-hanging-comment-ender-p: nil
|
2147 |
+
* End:
|
2148 |
+
*/
|
2149 |
+
?>
|
lib/CF/cloudfiles_exceptions.php
CHANGED
@@ -1,41 +1,41 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Custom Exceptions for the CloudFiles API
|
4 |
-
*
|
5 |
-
* Requres PHP 5.x (for Exceptions and OO syntax)
|
6 |
-
*
|
7 |
-
* See COPYING for license information.
|
8 |
-
*
|
9 |
-
* @author Eric "EJ" Johnson <ej@racklabs.com>
|
10 |
-
* @copyright Copyright (c) 2008, Rackspace US, Inc.
|
11 |
-
* @package php-cloudfiles-exceptions
|
12 |
-
*/
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Custom Exceptions for the CloudFiles API
|
16 |
-
* @package php-cloudfiles-exceptions
|
17 |
-
*/
|
18 |
-
class SyntaxException extends Exception { }
|
19 |
-
class AuthenticationException extends Exception { }
|
20 |
-
class InvalidResponseException extends Exception { }
|
21 |
-
class NonEmptyContainerException extends Exception { }
|
22 |
-
class NoSuchObjectException extends Exception { }
|
23 |
-
class NoSuchContainerException extends Exception { }
|
24 |
-
class NoSuchAccountException extends Exception { }
|
25 |
-
class MisMatchedChecksumException extends Exception { }
|
26 |
-
class IOException extends Exception { }
|
27 |
-
class CDNNotEnabledException extends Exception { }
|
28 |
-
class BadContentTypeException extends Exception { }
|
29 |
-
class InvalidUTF8Exception extends Exception { }
|
30 |
-
class ConnectionNotOpenException extends Exception { }
|
31 |
-
|
32 |
-
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
33 |
-
|
34 |
-
/*
|
35 |
-
* Local variables:
|
36 |
-
* tab-width: 4
|
37 |
-
* c-basic-offset: 4
|
38 |
-
* c-hanging-comment-ender-p: nil
|
39 |
-
* End:
|
40 |
-
*/
|
41 |
-
?>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Custom Exceptions for the CloudFiles API
|
4 |
+
*
|
5 |
+
* Requres PHP 5.x (for Exceptions and OO syntax)
|
6 |
+
*
|
7 |
+
* See COPYING for license information.
|
8 |
+
*
|
9 |
+
* @author Eric "EJ" Johnson <ej@racklabs.com>
|
10 |
+
* @copyright Copyright (c) 2008, Rackspace US, Inc.
|
11 |
+
* @package php-cloudfiles-exceptions
|
12 |
+
*/
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Custom Exceptions for the CloudFiles API
|
16 |
+
* @package php-cloudfiles-exceptions
|
17 |
+
*/
|
18 |
+
class SyntaxException extends Exception { }
|
19 |
+
class AuthenticationException extends Exception { }
|
20 |
+
class InvalidResponseException extends Exception { }
|
21 |
+
class NonEmptyContainerException extends Exception { }
|
22 |
+
class NoSuchObjectException extends Exception { }
|
23 |
+
class NoSuchContainerException extends Exception { }
|
24 |
+
class NoSuchAccountException extends Exception { }
|
25 |
+
class MisMatchedChecksumException extends Exception { }
|
26 |
+
class IOException extends Exception { }
|
27 |
+
class CDNNotEnabledException extends Exception { }
|
28 |
+
class BadContentTypeException extends Exception { }
|
29 |
+
class InvalidUTF8Exception extends Exception { }
|
30 |
+
class ConnectionNotOpenException extends Exception { }
|
31 |
+
|
32 |
+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
33 |
+
|
34 |
+
/*
|
35 |
+
* Local variables:
|
36 |
+
* tab-width: 4
|
37 |
+
* c-basic-offset: 4
|
38 |
+
* c-hanging-comment-ender-p: nil
|
39 |
+
* End:
|
40 |
+
*/
|
41 |
+
?>
|
lib/CF/cloudfiles_http.php
CHANGED
@@ -1,1347 +1,1347 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* This is an HTTP client class for Cloud Files. It uses PHP's cURL module
|
4 |
-
* to handle the actual HTTP request/response. This is NOT a generic HTTP
|
5 |
-
* client class and is only used to abstract out the HTTP communication for
|
6 |
-
* the PHP Cloud Files API.
|
7 |
-
*
|
8 |
-
* This module was designed to re-use existing HTTP(S) connections between
|
9 |
-
* subsequent operations. For example, performing multiple PUT operations
|
10 |
-
* will re-use the same connection.
|
11 |
-
*
|
12 |
-
* This modules also provides support for streaming content into and out
|
13 |
-
* of Cloud Files. The majority (all?) of the PHP HTTP client modules expect
|
14 |
-
* to read the server's response into a string variable. This will not work
|
15 |
-
* with large files without killing your server. Methods like,
|
16 |
-
* get_object_to_stream() and put_object() take an open filehandle
|
17 |
-
* argument for streaming data out of or into Cloud Files.
|
18 |
-
*
|
19 |
-
* Requres PHP 5.x (for Exceptions and OO syntax)
|
20 |
-
*
|
21 |
-
* See COPYING for license information.
|
22 |
-
*
|
23 |
-
* @author Eric "EJ" Johnson <ej@racklabs.com>
|
24 |
-
* @copyright Copyright (c) 2008, Rackspace US, Inc.
|
25 |
-
* @package php-cloudfiles-http
|
26 |
-
*/
|
27 |
-
|
28 |
-
/**
|
29 |
-
*/
|
30 |
-
require_once("cloudfiles_exceptions.php");
|
31 |
-
|
32 |
-
define("PHP_CF_VERSION", "1.7.6");
|
33 |
-
define("USER_AGENT", sprintf("PHP-CloudFiles/%s", PHP_CF_VERSION));
|
34 |
-
define("ACCOUNT_CONTAINER_COUNT", "X-Account-Container-Count");
|
35 |
-
define("ACCOUNT_BYTES_USED", "X-Account-Bytes-Used");
|
36 |
-
define("CONTAINER_OBJ_COUNT", "X-Container-Object-Count");
|
37 |
-
define("CONTAINER_BYTES_USED", "X-Container-Bytes-Used");
|
38 |
-
define("METADATA_HEADER", "X-Object-Meta-");
|
39 |
-
define("CDN_URI", "X-CDN-URI");
|
40 |
-
define("CDN_ENABLED", "X-CDN-Enabled");
|
41 |
-
define("CDN_LOG_RETENTION", "X-Log-Retention");
|
42 |
-
define("CDN_ACL_USER_AGENT", "X-User-Agent-ACL");
|
43 |
-
define("CDN_ACL_REFERRER", "X-Referrer-ACL");
|
44 |
-
define("CDN_TTL", "X-TTL");
|
45 |
-
define("CDNM_URL", "X-CDN-Management-Url");
|
46 |
-
define("STORAGE_URL", "X-Storage-Url");
|
47 |
-
define("AUTH_TOKEN", "X-Auth-Token");
|
48 |
-
define("AUTH_USER_HEADER", "X-Auth-User");
|
49 |
-
define("AUTH_KEY_HEADER", "X-Auth-Key");
|
50 |
-
define("AUTH_USER_HEADER_LEGACY", "X-Storage-User");
|
51 |
-
define("AUTH_KEY_HEADER_LEGACY", "X-Storage-Pass");
|
52 |
-
define("AUTH_TOKEN_LEGACY", "X-Storage-Token");
|
53 |
-
|
54 |
-
/**
|
55 |
-
* HTTP/cURL wrapper for Cloud Files
|
56 |
-
*
|
57 |
-
* This class should not be used directly. It's only purpose is to abstract
|
58 |
-
* out the HTTP communication from the main API.
|
59 |
-
*
|
60 |
-
* @package php-cloudfiles-http
|
61 |
-
*/
|
62 |
-
class CF_Http
|
63 |
-
{
|
64 |
-
private $error_str;
|
65 |
-
private $dbug;
|
66 |
-
private $cabundle_path;
|
67 |
-
private $api_version;
|
68 |
-
|
69 |
-
# Authentication instance variables
|
70 |
-
#
|
71 |
-
private $storage_url;
|
72 |
-
private $cdnm_url;
|
73 |
-
private $auth_token;
|
74 |
-
|
75 |
-
# Request/response variables
|
76 |
-
#
|
77 |
-
private $response_status;
|
78 |
-
private $response_reason;
|
79 |
-
private $connections;
|
80 |
-
|
81 |
-
# Variables used for content/header callbacks
|
82 |
-
#
|
83 |
-
private $_user_read_progress_callback_func;
|
84 |
-
private $_user_write_progress_callback_func;
|
85 |
-
private $_write_callback_type;
|
86 |
-
private $_text_list;
|
87 |
-
private $_account_container_count;
|
88 |
-
private $_account_bytes_used;
|
89 |
-
private $_container_object_count;
|
90 |
-
private $_container_bytes_used;
|
91 |
-
private $_obj_etag;
|
92 |
-
private $_obj_last_modified;
|
93 |
-
private $_obj_content_type;
|
94 |
-
private $_obj_content_length;
|
95 |
-
private $_obj_metadata;
|
96 |
-
private $_obj_write_resource;
|
97 |
-
private $_obj_write_string;
|
98 |
-
private $_cdn_enabled;
|
99 |
-
private $_cdn_uri;
|
100 |
-
private $_cdn_ttl;
|
101 |
-
private $_cdn_log_retention;
|
102 |
-
private $_cdn_acl_user_agent;
|
103 |
-
private $_cdn_acl_referrer;
|
104 |
-
|
105 |
-
function __construct($api_version)
|
106 |
-
{
|
107 |
-
$this->dbug = False;
|
108 |
-
$this->cabundle_path = NULL;
|
109 |
-
$this->api_version = $api_version;
|
110 |
-
$this->error_str = NULL;
|
111 |
-
|
112 |
-
$this->storage_url = NULL;
|
113 |
-
$this->cdnm_url = NULL;
|
114 |
-
$this->auth_token = NULL;
|
115 |
-
|
116 |
-
$this->response_status = NULL;
|
117 |
-
$this->response_reason = NULL;
|
118 |
-
|
119 |
-
# Curl connections array - since there is no way to "re-set" the
|
120 |
-
# connection paramaters for a cURL handle, we keep an array of
|
121 |
-
# the unique use-cases and funnel all of those same type
|
122 |
-
# requests through the appropriate curl connection.
|
123 |
-
#
|
124 |
-
$this->connections = array(
|
125 |
-
"GET_CALL" => NULL, # GET objects/containers/lists
|
126 |
-
"PUT_OBJ" => NULL, # PUT object
|
127 |
-
"HEAD" => NULL, # HEAD requests
|
128 |
-
"PUT_CONT" => NULL, # PUT container
|
129 |
-
"DEL_POST" => NULL, # DELETE containers/objects, POST objects
|
130 |
-
);
|
131 |
-
|
132 |
-
$this->_user_read_progress_callback_func = NULL;
|
133 |
-
$this->_user_write_progress_callback_func = NULL;
|
134 |
-
$this->_write_callback_type = NULL;
|
135 |
-
$this->_text_list = array();
|
136 |
-
$this->_return_list = NULL;
|
137 |
-
$this->_account_container_count = 0;
|
138 |
-
$this->_account_bytes_used = 0;
|
139 |
-
$this->_container_object_count = 0;
|
140 |
-
$this->_container_bytes_used = 0;
|
141 |
-
$this->_obj_write_resource = NULL;
|
142 |
-
$this->_obj_write_string = "";
|
143 |
-
$this->_obj_etag = NULL;
|
144 |
-
$this->_obj_last_modified = NULL;
|
145 |
-
$this->_obj_content_type = NULL;
|
146 |
-
$this->_obj_content_length = NULL;
|
147 |
-
$this->_obj_metadata = array();
|
148 |
-
$this->_cdn_enabled = NULL;
|
149 |
-
$this->_cdn_uri = NULL;
|
150 |
-
$this->_cdn_ttl = NULL;
|
151 |
-
$this->_cdn_log_retention = NULL;
|
152 |
-
$this->_cdn_acl_user_agent = NULL;
|
153 |
-
$this->_cdn_acl_referrer = NULL;
|
154 |
-
|
155 |
-
# The OS list with a PHP without an updated CA File for CURL to
|
156 |
-
# connect to SSL Websites. It is the first 3 letters of the PHP_OS
|
157 |
-
# variable.
|
158 |
-
$OS_CAFILE_NONUPDATED=array(
|
159 |
-
"win","dar"
|
160 |
-
);
|
161 |
-
|
162 |
-
if (in_array((strtolower (substr(PHP_OS, 0,3))), $OS_CAFILE_NONUPDATED))
|
163 |
-
$this->ssl_use_cabundle();
|
164 |
-
|
165 |
-
}
|
166 |
-
|
167 |
-
function ssl_use_cabundle($path=NULL)
|
168 |
-
{
|
169 |
-
if ($path) {
|
170 |
-
$this->cabundle_path = $path;
|
171 |
-
} else {
|
172 |
-
$this->cabundle_path = dirname(__FILE__) . "/cacert.pem";
|
173 |
-
}
|
174 |
-
if (!file_exists($this->cabundle_path)) {
|
175 |
-
throw new IOException("Could not use CA bundle: "
|
176 |
-
. $this->cabundle_path);
|
177 |
-
}
|
178 |
-
return;
|
179 |
-
}
|
180 |
-
|
181 |
-
# Uses separate cURL connection to authenticate
|
182 |
-
#
|
183 |
-
function authenticate($user, $pass, $acct=NULL, $host=NULL)
|
184 |
-
{
|
185 |
-
$path = array();
|
186 |
-
if (isset($acct)){
|
187 |
-
$headers = array(
|
188 |
-
sprintf("%s: %s", AUTH_USER_HEADER_LEGACY, $user),
|
189 |
-
sprintf("%s: %s", AUTH_KEY_HEADER_LEGACY, $pass),
|
190 |
-
);
|
191 |
-
$path[] = $host;
|
192 |
-
$path[] = rawurlencode(sprintf("v%d",$this->api_version));
|
193 |
-
$path[] = rawurlencode($acct);
|
194 |
-
} else {
|
195 |
-
$headers = array(
|
196 |
-
sprintf("%s: %s", AUTH_USER_HEADER, $user),
|
197 |
-
sprintf("%s: %s", AUTH_KEY_HEADER, $pass),
|
198 |
-
);
|
199 |
-
$path[] = $host;
|
200 |
-
}
|
201 |
-
$path[] = "v1.0";
|
202 |
-
$url = implode("/", $path);
|
203 |
-
|
204 |
-
$curl_ch = curl_init();
|
205 |
-
if (!is_null($this->cabundle_path)) {
|
206 |
-
curl_setopt($curl_ch, CURLOPT_SSL_VERIFYPEER, True);
|
207 |
-
curl_setopt($curl_ch, CURLOPT_CAINFO, $this->cabundle_path);
|
208 |
-
}
|
209 |
-
curl_setopt($curl_ch, CURLOPT_VERBOSE, $this->dbug);
|
210 |
-
@curl_setopt($curl_ch, CURLOPT_FOLLOWLOCATION, 1);
|
211 |
-
curl_setopt($curl_ch, CURLOPT_MAXREDIRS, 4);
|
212 |
-
curl_setopt($curl_ch, CURLOPT_HEADER, 0);
|
213 |
-
curl_setopt($curl_ch, CURLOPT_HTTPHEADER, $headers);
|
214 |
-
curl_setopt($curl_ch, CURLOPT_USERAGENT, USER_AGENT);
|
215 |
-
curl_setopt($curl_ch, CURLOPT_RETURNTRANSFER, TRUE);
|
216 |
-
curl_setopt($curl_ch, CURLOPT_HEADERFUNCTION,array(&$this,'_auth_hdr_cb'));
|
217 |
-
curl_setopt($curl_ch, CURLOPT_CONNECTTIMEOUT, 10);
|
218 |
-
curl_setopt($curl_ch, CURLOPT_URL, $url);
|
219 |
-
curl_exec($curl_ch);
|
220 |
-
curl_close($curl_ch);
|
221 |
-
|
222 |
-
return array($this->response_status, $this->response_reason,
|
223 |
-
$this->storage_url, $this->cdnm_url, $this->auth_token);
|
224 |
-
}
|
225 |
-
|
226 |
-
# (CDN) GET /v1/Account
|
227 |
-
#
|
228 |
-
function list_cdn_containers($enabled_only)
|
229 |
-
{
|
230 |
-
$conn_type = "GET_CALL";
|
231 |
-
$url_path = $this->_make_path("CDN");
|
232 |
-
|
233 |
-
$this->_write_callback_type = "TEXT_LIST";
|
234 |
-
if ($enabled_only)
|
235 |
-
{
|
236 |
-
$return_code = $this->_send_request($conn_type, $url_path .
|
237 |
-
'/?enabled_only=true');
|
238 |
-
}
|
239 |
-
else
|
240 |
-
{
|
241 |
-
$return_code = $this->_send_request($conn_type, $url_path);
|
242 |
-
}
|
243 |
-
if (!$return_code) {
|
244 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
245 |
-
array(0,$this->error_str,array());
|
246 |
-
}
|
247 |
-
if ($return_code == 401) {
|
248 |
-
return array($return_code,"Unauthorized",array());
|
249 |
-
}
|
250 |
-
if ($return_code == 404) {
|
251 |
-
return array($return_code,"Account not found.",array());
|
252 |
-
}
|
253 |
-
if ($return_code == 204) {
|
254 |
-
return array($return_code,"Account has no CDN enabled Containers.",
|
255 |
-
array());
|
256 |
-
}
|
257 |
-
if ($return_code == 200) {
|
258 |
-
$this->create_array();
|
259 |
-
return array($return_code,$this->response_reason,$this->_text_list);
|
260 |
-
}
|
261 |
-
$this->error_str = "Unexpected HTTP response: ".$this->response_reason;
|
262 |
-
return array($return_code,$this->error_str,array());
|
263 |
-
}
|
264 |
-
|
265 |
-
# (CDN) POST /v1/Account/Container
|
266 |
-
#
|
267 |
-
function update_cdn_container($container_name, $ttl=86400, $cdn_log_retention=False,
|
268 |
-
$cdn_acl_user_agent="", $cdn_acl_referrer)
|
269 |
-
{
|
270 |
-
if ($container_name == "")
|
271 |
-
throw new SyntaxException("Container name not set.");
|
272 |
-
|
273 |
-
if ($container_name != "0" and !isset($container_name))
|
274 |
-
throw new SyntaxException("Container name not set.");
|
275 |
-
|
276 |
-
$url_path = $this->_make_path("CDN", $container_name);
|
277 |
-
$hdrs = array(
|
278 |
-
CDN_ENABLED => "True",
|
279 |
-
CDN_TTL => $ttl,
|
280 |
-
CDN_LOG_RETENTION => $cdn_log_retention ? "True" : "False",
|
281 |
-
CDN_ACL_USER_AGENT => $cdn_acl_user_agent,
|
282 |
-
CDN_ACL_REFERRER => $cdn_acl_referrer,
|
283 |
-
);
|
284 |
-
$return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST");
|
285 |
-
if ($return_code == 401) {
|
286 |
-
$this->error_str = "Unauthorized";
|
287 |
-
return array($return_code, $this->error_str, NULL);
|
288 |
-
}
|
289 |
-
if ($return_code == 404) {
|
290 |
-
$this->error_str = "Container not found.";
|
291 |
-
return array($return_code, $this->error_str, NULL);
|
292 |
-
}
|
293 |
-
if ($return_code != 202) {
|
294 |
-
$this->error_str="Unexpected HTTP response: ".$this->response_reason;
|
295 |
-
return array($return_code, $this->error_str, NULL);
|
296 |
-
}
|
297 |
-
return array($return_code, "Accepted", $this->_cdn_uri);
|
298 |
-
|
299 |
-
}
|
300 |
-
|
301 |
-
# (CDN) PUT /v1/Account/Container
|
302 |
-
#
|
303 |
-
function add_cdn_container($container_name, $ttl=86400)
|
304 |
-
{
|
305 |
-
if ($container_name == "")
|
306 |
-
throw new SyntaxException("Container name not set.");
|
307 |
-
|
308 |
-
if ($container_name != "0" and !isset($container_name))
|
309 |
-
throw new SyntaxException("Container name not set.");
|
310 |
-
|
311 |
-
$url_path = $this->_make_path("CDN", $container_name);
|
312 |
-
$hdrs = array(
|
313 |
-
CDN_ENABLED => "True",
|
314 |
-
CDN_TTL => $ttl,
|
315 |
-
);
|
316 |
-
$return_code = $this->_send_request("PUT_CONT", $url_path, $hdrs);
|
317 |
-
if ($return_code == 401) {
|
318 |
-
$this->error_str = "Unauthorized";
|
319 |
-
return array($return_code,$this->response_reason,False);
|
320 |
-
}
|
321 |
-
if (!in_array($return_code, array(201,202))) {
|
322 |
-
$this->error_str="Unexpected HTTP response: ".$this->response_reason;
|
323 |
-
return array($return_code,$this->response_reason,False);
|
324 |
-
}
|
325 |
-
return array($return_code,$this->response_reason,$this->_cdn_uri);
|
326 |
-
}
|
327 |
-
|
328 |
-
# (CDN) POST /v1/Account/Container
|
329 |
-
#
|
330 |
-
function remove_cdn_container($container_name)
|
331 |
-
{
|
332 |
-
if ($container_name == "")
|
333 |
-
throw new SyntaxException("Container name not set.");
|
334 |
-
|
335 |
-
if ($container_name != "0" and !isset($container_name))
|
336 |
-
throw new SyntaxException("Container name not set.");
|
337 |
-
|
338 |
-
$url_path = $this->_make_path("CDN", $container_name);
|
339 |
-
$hdrs = array(CDN_ENABLED => "False");
|
340 |
-
$return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST");
|
341 |
-
if ($return_code == 401) {
|
342 |
-
$this->error_str = "Unauthorized";
|
343 |
-
return array($return_code, $this->error_str);
|
344 |
-
}
|
345 |
-
if ($return_code == 404) {
|
346 |
-
$this->error_str = "Container not found.";
|
347 |
-
return array($return_code, $this->error_str);
|
348 |
-
}
|
349 |
-
if ($return_code != 202) {
|
350 |
-
$this->error_str="Unexpected HTTP response: ".$this->response_reason;
|
351 |
-
return array($return_code, $this->error_str);
|
352 |
-
}
|
353 |
-
return array($return_code, "Accepted");
|
354 |
-
}
|
355 |
-
|
356 |
-
# (CDN) HEAD /v1/Account
|
357 |
-
#
|
358 |
-
function head_cdn_container($container_name)
|
359 |
-
{
|
360 |
-
if ($container_name == "")
|
361 |
-
throw new SyntaxException("Container name not set.");
|
362 |
-
|
363 |
-
if ($container_name != "0" and !isset($container_name))
|
364 |
-
throw new SyntaxException("Container name not set.");
|
365 |
-
|
366 |
-
$conn_type = "HEAD";
|
367 |
-
$url_path = $this->_make_path("CDN", $container_name);
|
368 |
-
$return_code = $this->_send_request($conn_type, $url_path);
|
369 |
-
|
370 |
-
if (!$return_code) {
|
371 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
372 |
-
return array(0,$this->error_str,NULL,NULL,NULL,NULL,NULL,NULL);
|
373 |
-
}
|
374 |
-
if ($return_code == 401) {
|
375 |
-
return array($return_code,"Unauthorized",NULL,NULL,NULL,NULL,NULL,NULL);
|
376 |
-
}
|
377 |
-
if ($return_code == 404) {
|
378 |
-
return array($return_code,"Account not found.",NULL,NULL,NULL,NULL,NULL,NULL);
|
379 |
-
}
|
380 |
-
if ($return_code == 204) {
|
381 |
-
return array($return_code,$this->response_reason,
|
382 |
-
$this->_cdn_enabled, $this->_cdn_uri, $this->_cdn_ttl,
|
383 |
-
$this->_cdn_log_retention,
|
384 |
-
$this->_cdn_acl_user_agent,
|
385 |
-
$this->_cdn_acl_referrer
|
386 |
-
);
|
387 |
-
}
|
388 |
-
return array($return_code,$this->response_reason,
|
389 |
-
NULL,NULL,NULL,
|
390 |
-
$this->_cdn_log_retention,
|
391 |
-
$this->_cdn_acl_user_agent,
|
392 |
-
$this->_cdn_acl_referrer
|
393 |
-
);
|
394 |
-
}
|
395 |
-
|
396 |
-
# GET /v1/Account
|
397 |
-
#
|
398 |
-
function list_containers($limit=0, $marker=NULL)
|
399 |
-
{
|
400 |
-
$conn_type = "GET_CALL";
|
401 |
-
$url_path = $this->_make_path();
|
402 |
-
|
403 |
-
$limit = intval($limit);
|
404 |
-
$params = array();
|
405 |
-
if ($limit > 0) {
|
406 |
-
$params[] = "limit=$limit";
|
407 |
-
}
|
408 |
-
if ($marker) {
|
409 |
-
$params[] = "marker=".rawurlencode($marker);
|
410 |
-
}
|
411 |
-
if (!empty($params)) {
|
412 |
-
$url_path .= "?" . implode("&", $params);
|
413 |
-
}
|
414 |
-
|
415 |
-
$this->_write_callback_type = "TEXT_LIST";
|
416 |
-
$return_code = $this->_send_request($conn_type, $url_path);
|
417 |
-
|
418 |
-
if (!$return_code) {
|
419 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
420 |
-
return array(0,$this->error_str,array());
|
421 |
-
}
|
422 |
-
if ($return_code == 204) {
|
423 |
-
return array($return_code, "Account has no containers.", array());
|
424 |
-
}
|
425 |
-
if ($return_code == 404) {
|
426 |
-
$this->error_str = "Invalid account name for authentication token.";
|
427 |
-
return array($return_code,$this->error_str,array());
|
428 |
-
}
|
429 |
-
if ($return_code == 200) {
|
430 |
-
$this->create_array();
|
431 |
-
return array($return_code, $this->response_reason, $this->_text_list);
|
432 |
-
}
|
433 |
-
$this->error_str = "Unexpected HTTP response: ".$this->response_reason;
|
434 |
-
return array($return_code,$this->error_str,array());
|
435 |
-
}
|
436 |
-
|
437 |
-
# GET /v1/Account?format=json
|
438 |
-
#
|
439 |
-
function list_containers_info($limit=0, $marker=NULL)
|
440 |
-
{
|
441 |
-
$conn_type = "GET_CALL";
|
442 |
-
$url_path = $this->_make_path() . "?format=json";
|
443 |
-
|
444 |
-
$limit = intval($limit);
|
445 |
-
$params = array();
|
446 |
-
if ($limit > 0) {
|
447 |
-
$params[] = "limit=$limit";
|
448 |
-
}
|
449 |
-
if ($marker) {
|
450 |
-
$params[] = "marker=".rawurlencode($marker);
|
451 |
-
}
|
452 |
-
if (!empty($params)) {
|
453 |
-
$url_path .= "&" . implode("&", $params);
|
454 |
-
}
|
455 |
-
|
456 |
-
$this->_write_callback_type = "OBJECT_STRING";
|
457 |
-
$return_code = $this->_send_request($conn_type, $url_path);
|
458 |
-
|
459 |
-
if (!$return_code) {
|
460 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
461 |
-
return array(0,$this->error_str,array());
|
462 |
-
}
|
463 |
-
if ($return_code == 204) {
|
464 |
-
return array($return_code, "Account has no containers.", array());
|
465 |
-
}
|
466 |
-
if ($return_code == 404) {
|
467 |
-
$this->error_str = "Invalid account name for authentication token.";
|
468 |
-
return array($return_code,$this->error_str,array());
|
469 |
-
}
|
470 |
-
if ($return_code == 200) {
|
471 |
-
$json_body = json_decode($this->_obj_write_string, True);
|
472 |
-
return array($return_code, $this->response_reason, $json_body);
|
473 |
-
}
|
474 |
-
$this->error_str = "Unexpected HTTP response: ".$this->response_reason;
|
475 |
-
return array($return_code,$this->error_str,array());
|
476 |
-
}
|
477 |
-
|
478 |
-
# HEAD /v1/Account
|
479 |
-
#
|
480 |
-
function head_account()
|
481 |
-
{
|
482 |
-
$conn_type = "HEAD";
|
483 |
-
|
484 |
-
$url_path = $this->_make_path();
|
485 |
-
$return_code = $this->_send_request($conn_type,$url_path);
|
486 |
-
|
487 |
-
if (!$return_code) {
|
488 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
489 |
-
array(0,$this->error_str,0,0);
|
490 |
-
}
|
491 |
-
if ($return_code == 404) {
|
492 |
-
return array($return_code,"Account not found.",0,0);
|
493 |
-
}
|
494 |
-
if ($return_code == 204) {
|
495 |
-
return array($return_code,$this->response_reason,
|
496 |
-
$this->_account_container_count, $this->_account_bytes_used);
|
497 |
-
}
|
498 |
-
return array($return_code,$this->response_reason,0,0);
|
499 |
-
}
|
500 |
-
|
501 |
-
# PUT /v1/Account/Container
|
502 |
-
#
|
503 |
-
function create_container($container_name)
|
504 |
-
{
|
505 |
-
if ($container_name == "")
|
506 |
-
throw new SyntaxException("Container name not set.");
|
507 |
-
|
508 |
-
if ($container_name != "0" and !isset($container_name))
|
509 |
-
throw new SyntaxException("Container name not set.");
|
510 |
-
|
511 |
-
$url_path = $this->_make_path("STORAGE", $container_name);
|
512 |
-
$return_code = $this->_send_request("PUT_CONT",$url_path);
|
513 |
-
|
514 |
-
if (!$return_code) {
|
515 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
516 |
-
return False;
|
517 |
-
}
|
518 |
-
return $return_code;
|
519 |
-
}
|
520 |
-
|
521 |
-
# DELETE /v1/Account/Container
|
522 |
-
#
|
523 |
-
function delete_container($container_name)
|
524 |
-
{
|
525 |
-
if ($container_name == "")
|
526 |
-
throw new SyntaxException("Container name not set.");
|
527 |
-
|
528 |
-
if ($container_name != "0" and !isset($container_name))
|
529 |
-
throw new SyntaxException("Container name not set.");
|
530 |
-
|
531 |
-
$url_path = $this->_make_path("STORAGE", $container_name);
|
532 |
-
$return_code = $this->_send_request("DEL_POST",$url_path,array(),"DELETE");
|
533 |
-
|
534 |
-
if (!$return_code) {
|
535 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
536 |
-
}
|
537 |
-
if ($return_code == 409) {
|
538 |
-
$this->error_str = "Container must be empty prior to removing it.";
|
539 |
-
}
|
540 |
-
if ($return_code == 404) {
|
541 |
-
$this->error_str = "Specified container did not exist to delete.";
|
542 |
-
}
|
543 |
-
if ($return_code != 204) {
|
544 |
-
$this->error_str = "Unexpected HTTP return code: $return_code.";
|
545 |
-
}
|
546 |
-
return $return_code;
|
547 |
-
}
|
548 |
-
|
549 |
-
# GET /v1/Account/Container
|
550 |
-
#
|
551 |
-
function list_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL)
|
552 |
-
{
|
553 |
-
if (!$cname) {
|
554 |
-
$this->error_str = "Container name not set.";
|
555 |
-
return array(0, $this->error_str, array());
|
556 |
-
}
|
557 |
-
|
558 |
-
$url_path = $this->_make_path("STORAGE", $cname);
|
559 |
-
|
560 |
-
$limit = intval($limit);
|
561 |
-
$params = array();
|
562 |
-
if ($limit > 0) {
|
563 |
-
$params[] = "limit=$limit";
|
564 |
-
}
|
565 |
-
if ($marker) {
|
566 |
-
$params[] = "marker=".rawurlencode($marker);
|
567 |
-
}
|
568 |
-
if ($prefix) {
|
569 |
-
$params[] = "prefix=".rawurlencode($prefix);
|
570 |
-
}
|
571 |
-
if ($path) {
|
572 |
-
$params[] = "path=".rawurlencode($path);
|
573 |
-
}
|
574 |
-
if (!empty($params)) {
|
575 |
-
$url_path .= "?" . implode("&", $params);
|
576 |
-
}
|
577 |
-
|
578 |
-
$conn_type = "GET_CALL";
|
579 |
-
$this->_write_callback_type = "TEXT_LIST";
|
580 |
-
$return_code = $this->_send_request($conn_type,$url_path);
|
581 |
-
|
582 |
-
if (!$return_code) {
|
583 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
584 |
-
return array(0,$this->error_str,array());
|
585 |
-
}
|
586 |
-
if ($return_code == 204) {
|
587 |
-
$this->error_str = "Container has no Objects.";
|
588 |
-
return array($return_code,$this->error_str,array());
|
589 |
-
}
|
590 |
-
if ($return_code == 404) {
|
591 |
-
$this->error_str = "Container has no Objects.";
|
592 |
-
return array($return_code,$this->error_str,array());
|
593 |
-
}
|
594 |
-
if ($return_code == 200) {
|
595 |
-
$this->create_array();
|
596 |
-
return array($return_code,$this->response_reason, $this->_text_list);
|
597 |
-
}
|
598 |
-
$this->error_str = "Unexpected HTTP response code: $return_code";
|
599 |
-
return array(0,$this->error_str,array());
|
600 |
-
}
|
601 |
-
|
602 |
-
# GET /v1/Account/Container?format=json
|
603 |
-
#
|
604 |
-
function get_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL)
|
605 |
-
{
|
606 |
-
if (!$cname) {
|
607 |
-
$this->error_str = "Container name not set.";
|
608 |
-
return array(0, $this->error_str, array());
|
609 |
-
}
|
610 |
-
|
611 |
-
$url_path = $this->_make_path("STORAGE", $cname);
|
612 |
-
|
613 |
-
$limit = intval($limit);
|
614 |
-
$params = array();
|
615 |
-
$params[] = "format=json";
|
616 |
-
if ($limit > 0) {
|
617 |
-
$params[] = "limit=$limit";
|
618 |
-
}
|
619 |
-
if ($marker) {
|
620 |
-
$params[] = "marker=".rawurlencode($marker);
|
621 |
-
}
|
622 |
-
if ($prefix) {
|
623 |
-
$params[] = "prefix=".rawurlencode($prefix);
|
624 |
-
}
|
625 |
-
if ($path) {
|
626 |
-
$params[] = "path=".rawurlencode($path);
|
627 |
-
}
|
628 |
-
if (!empty($params)) {
|
629 |
-
$url_path .= "?" . implode("&", $params);
|
630 |
-
}
|
631 |
-
|
632 |
-
$conn_type = "GET_CALL";
|
633 |
-
$this->_write_callback_type = "OBJECT_STRING";
|
634 |
-
$return_code = $this->_send_request($conn_type,$url_path);
|
635 |
-
|
636 |
-
if (!$return_code) {
|
637 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
638 |
-
return array(0,$this->error_str,array());
|
639 |
-
}
|
640 |
-
if ($return_code == 204) {
|
641 |
-
$this->error_str = "Container has no Objects.";
|
642 |
-
return array($return_code,$this->error_str,array());
|
643 |
-
}
|
644 |
-
if ($return_code == 404) {
|
645 |
-
$this->error_str = "Container has no Objects.";
|
646 |
-
return array($return_code,$this->error_str,array());
|
647 |
-
}
|
648 |
-
if ($return_code == 200) {
|
649 |
-
$json_body = json_decode($this->_obj_write_string, True);
|
650 |
-
return array($return_code,$this->response_reason, $json_body);
|
651 |
-
}
|
652 |
-
$this->error_str = "Unexpected HTTP response code: $return_code";
|
653 |
-
return array(0,$this->error_str,array());
|
654 |
-
}
|
655 |
-
|
656 |
-
|
657 |
-
# HEAD /v1/Account/Container
|
658 |
-
#
|
659 |
-
function head_container($container_name)
|
660 |
-
{
|
661 |
-
|
662 |
-
if ($container_name == "") {
|
663 |
-
$this->error_str = "Container name not set.";
|
664 |
-
return False;
|
665 |
-
}
|
666 |
-
|
667 |
-
if ($container_name != "0" and !isset($container_name)) {
|
668 |
-
$this->error_str = "Container name not set.";
|
669 |
-
return False;
|
670 |
-
}
|
671 |
-
|
672 |
-
$conn_type = "HEAD";
|
673 |
-
|
674 |
-
$url_path = $this->_make_path("STORAGE", $container_name);
|
675 |
-
$return_code = $this->_send_request($conn_type,$url_path);
|
676 |
-
|
677 |
-
if (!$return_code) {
|
678 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
679 |
-
array(0,$this->error_str,0,0);
|
680 |
-
}
|
681 |
-
if ($return_code == 404) {
|
682 |
-
return array($return_code,"Container not found.",0,0);
|
683 |
-
}
|
684 |
-
if ($return_code == 204 || $return_code == 200) {
|
685 |
-
return array($return_code,$this->response_reason,
|
686 |
-
$this->_container_object_count, $this->_container_bytes_used);
|
687 |
-
}
|
688 |
-
return array($return_code,$this->response_reason,0,0);
|
689 |
-
}
|
690 |
-
|
691 |
-
# GET /v1/Account/Container/Object
|
692 |
-
#
|
693 |
-
function get_object_to_string(&$obj, $hdrs=array())
|
694 |
-
{
|
695 |
-
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
696 |
-
throw new SyntaxException(
|
697 |
-
"Method argument is not a valid CF_Object.");
|
698 |
-
}
|
699 |
-
|
700 |
-
$conn_type = "GET_CALL";
|
701 |
-
|
702 |
-
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
703 |
-
$this->_write_callback_type = "OBJECT_STRING";
|
704 |
-
$return_code = $this->_send_request($conn_type,$url_path,$hdrs);
|
705 |
-
|
706 |
-
if (!$return_code) {
|
707 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
708 |
-
return array($return_code0,$this->error_str,NULL);
|
709 |
-
}
|
710 |
-
if ($return_code == 404) {
|
711 |
-
$this->error_str = "Object not found.";
|
712 |
-
return array($return_code0,$this->error_str,NULL);
|
713 |
-
}
|
714 |
-
if (($return_code < 200) || ($return_code > 299
|
715 |
-
&& $return_code != 412 && $return_code != 304)) {
|
716 |
-
$this->error_str = "Unexpected HTTP return code: $return_code";
|
717 |
-
return array($return_code,$this->error_str,NULL);
|
718 |
-
}
|
719 |
-
return array($return_code,$this->response_reason, $this->_obj_write_string);
|
720 |
-
}
|
721 |
-
|
722 |
-
# GET /v1/Account/Container/Object
|
723 |
-
#
|
724 |
-
function get_object_to_stream(&$obj, &$resource=NULL, $hdrs=array())
|
725 |
-
{
|
726 |
-
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
727 |
-
throw new SyntaxException(
|
728 |
-
"Method argument is not a valid CF_Object.");
|
729 |
-
}
|
730 |
-
if (!is_resource($resource)) {
|
731 |
-
throw new SyntaxException(
|
732 |
-
"Resource argument not a valid PHP resource.");
|
733 |
-
}
|
734 |
-
|
735 |
-
$conn_type = "GET_CALL";
|
736 |
-
|
737 |
-
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
738 |
-
$this->_obj_write_resource = $resource;
|
739 |
-
$this->_write_callback_type = "OBJECT_STREAM";
|
740 |
-
$return_code = $this->_send_request($conn_type,$url_path,$hdrs);
|
741 |
-
|
742 |
-
if (!$return_code) {
|
743 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
744 |
-
return array($return_code,$this->error_str);
|
745 |
-
}
|
746 |
-
if ($return_code == 404) {
|
747 |
-
$this->error_str = "Object not found.";
|
748 |
-
return array($return_code,$this->error_str);
|
749 |
-
}
|
750 |
-
if (($return_code < 200) || ($return_code > 299
|
751 |
-
&& $return_code != 412 && $return_code != 304)) {
|
752 |
-
$this->error_str = "Unexpected HTTP return code: $return_code";
|
753 |
-
return array($return_code,$this->error_str);
|
754 |
-
}
|
755 |
-
return array($return_code,$this->response_reason);
|
756 |
-
}
|
757 |
-
|
758 |
-
# PUT /v1/Account/Container/Object
|
759 |
-
#
|
760 |
-
function put_object(&$obj, &$fp)
|
761 |
-
{
|
762 |
-
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
763 |
-
throw new SyntaxException(
|
764 |
-
"Method argument is not a valid CF_Object.");
|
765 |
-
}
|
766 |
-
if (!is_resource($fp)) {
|
767 |
-
throw new SyntaxException(
|
768 |
-
"File pointer argument is not a valid resource.");
|
769 |
-
}
|
770 |
-
|
771 |
-
$conn_type = "PUT_OBJ";
|
772 |
-
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
773 |
-
|
774 |
-
$hdrs = $this->_metadata_headers($obj);
|
775 |
-
|
776 |
-
$etag = $obj->getETag();
|
777 |
-
if (isset($etag)) {
|
778 |
-
$hdrs[] = "ETag: " . $etag;
|
779 |
-
}
|
780 |
-
if (!$obj->content_type) {
|
781 |
-
$hdrs[] = "Content-Type: application/octet-stream";
|
782 |
-
} else {
|
783 |
-
$hdrs[] = "Content-Type: " . $obj->content_type;
|
784 |
-
}
|
785 |
-
|
786 |
-
$this->_init($conn_type);
|
787 |
-
curl_setopt($this->connections[$conn_type],
|
788 |
-
CURLOPT_INFILE, $fp);
|
789 |
-
if (!$obj->content_length) {
|
790 |
-
# We don''t know the Content-Length, so assumed "chunked" PUT
|
791 |
-
#
|
792 |
-
curl_setopt($this->connections[$conn_type], CURLOPT_UPLOAD, True);
|
793 |
-
$hdrs[] = 'Transfer-Encoding: chunked';
|
794 |
-
} else {
|
795 |
-
# We know the Content-Length, so use regular transfer
|
796 |
-
#
|
797 |
-
curl_setopt($this->connections[$conn_type],
|
798 |
-
CURLOPT_INFILESIZE, $obj->content_length);
|
799 |
-
}
|
800 |
-
$return_code = $this->_send_request($conn_type,$url_path,$hdrs);
|
801 |
-
|
802 |
-
if (!$return_code) {
|
803 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
804 |
-
return array(0,$this->error_str,NULL);
|
805 |
-
}
|
806 |
-
if ($return_code == 412) {
|
807 |
-
$this->error_str = "Missing Content-Type header";
|
808 |
-
return array($return_code,$this->error_str,NULL);
|
809 |
-
}
|
810 |
-
if ($return_code == 422) {
|
811 |
-
$this->error_str = "Derived and computed checksums do not match.";
|
812 |
-
return array($return_code,$this->error_str,NULL);
|
813 |
-
}
|
814 |
-
if ($return_code != 201) {
|
815 |
-
$this->error_str = "Unexpected HTTP return code: $return_code";
|
816 |
-
return array($return_code,$this->error_str,NULL);
|
817 |
-
}
|
818 |
-
return array($return_code,$this->response_reason,$this->_obj_etag);
|
819 |
-
}
|
820 |
-
|
821 |
-
# POST /v1/Account/Container/Object
|
822 |
-
#
|
823 |
-
function update_object(&$obj)
|
824 |
-
{
|
825 |
-
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
826 |
-
throw new SyntaxException(
|
827 |
-
"Method argument is not a valid CF_Object.");
|
828 |
-
}
|
829 |
-
|
830 |
-
if (!is_array($obj->metadata) || empty($obj->metadata)) {
|
831 |
-
$this->error_str = "Metadata array is empty.";
|
832 |
-
return 0;
|
833 |
-
}
|
834 |
-
|
835 |
-
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
836 |
-
|
837 |
-
$hdrs = $this->_metadata_headers($obj);
|
838 |
-
$return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST");
|
839 |
-
if (!$return_code) {
|
840 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
841 |
-
return 0;
|
842 |
-
}
|
843 |
-
if ($return_code == 404) {
|
844 |
-
$this->error_str = "Account, Container, or Object not found.";
|
845 |
-
}
|
846 |
-
if ($return_code != 202) {
|
847 |
-
$this->error_str = "Unexpected HTTP return code: $return_code";
|
848 |
-
}
|
849 |
-
return $return_code;
|
850 |
-
}
|
851 |
-
|
852 |
-
# HEAD /v1/Account/Container/Object
|
853 |
-
#
|
854 |
-
function head_object(&$obj)
|
855 |
-
{
|
856 |
-
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
857 |
-
throw new SyntaxException(
|
858 |
-
"Method argument is not a valid CF_Object.");
|
859 |
-
}
|
860 |
-
|
861 |
-
$conn_type = "HEAD";
|
862 |
-
|
863 |
-
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
864 |
-
$return_code = $this->_send_request($conn_type,$url_path);
|
865 |
-
|
866 |
-
if (!$return_code) {
|
867 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
868 |
-
return array(0, $this->error_str." ".$this->response_reason,
|
869 |
-
NULL, NULL, NULL, NULL, array());
|
870 |
-
}
|
871 |
-
|
872 |
-
if ($return_code == 404) {
|
873 |
-
return array($return_code, $this->response_reason,
|
874 |
-
NULL, NULL, NULL, NULL, array());
|
875 |
-
}
|
876 |
-
if ($return_code == 204 || $return_code == 200) {
|
877 |
-
return array($return_code,$this->response_reason,
|
878 |
-
$this->_obj_etag,
|
879 |
-
$this->_obj_last_modified,
|
880 |
-
$this->_obj_content_type,
|
881 |
-
$this->_obj_content_length,
|
882 |
-
$this->_obj_metadata);
|
883 |
-
}
|
884 |
-
$this->error_str = "Unexpected HTTP return code: $return_code";
|
885 |
-
return array($return_code, $this->error_str." ".$this->response_reason,
|
886 |
-
NULL, NULL, NULL, NULL, array());
|
887 |
-
}
|
888 |
-
|
889 |
-
# DELETE /v1/Account/Container/Object
|
890 |
-
#
|
891 |
-
function delete_object($container_name, $object_name)
|
892 |
-
{
|
893 |
-
if ($container_name == "") {
|
894 |
-
$this->error_str = "Container name not set.";
|
895 |
-
return 0;
|
896 |
-
}
|
897 |
-
|
898 |
-
if ($container_name != "0" and !isset($container_name)) {
|
899 |
-
$this->error_str = "Container name not set.";
|
900 |
-
return 0;
|
901 |
-
}
|
902 |
-
|
903 |
-
if (!$object_name) {
|
904 |
-
$this->error_str = "Object name not set.";
|
905 |
-
return 0;
|
906 |
-
}
|
907 |
-
|
908 |
-
$url_path = $this->_make_path("STORAGE", $container_name,$object_name);
|
909 |
-
$return_code = $this->_send_request("DEL_POST",$url_path,NULL,"DELETE");
|
910 |
-
if (!$return_code) {
|
911 |
-
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
912 |
-
return 0;
|
913 |
-
}
|
914 |
-
if ($return_code == 404) {
|
915 |
-
$this->error_str = "Specified container did not exist to delete.";
|
916 |
-
}
|
917 |
-
if ($return_code != 204) {
|
918 |
-
$this->error_str = "Unexpected HTTP return code: $return_code.";
|
919 |
-
}
|
920 |
-
return $return_code;
|
921 |
-
}
|
922 |
-
|
923 |
-
function get_error()
|
924 |
-
{
|
925 |
-
return $this->error_str;
|
926 |
-
}
|
927 |
-
|
928 |
-
function setDebug($bool)
|
929 |
-
{
|
930 |
-
$this->dbug = $bool;
|
931 |
-
foreach ($this->connections as $k => $v) {
|
932 |
-
if (!is_null($v)) {
|
933 |
-
curl_setopt($this->connections[$k], CURLOPT_VERBOSE, $this->dbug);
|
934 |
-
}
|
935 |
-
}
|
936 |
-
}
|
937 |
-
|
938 |
-
function getCDNMUrl()
|
939 |
-
{
|
940 |
-
return $this->cdnm_url;
|
941 |
-
}
|
942 |
-
|
943 |
-
function getStorageUrl()
|
944 |
-
{
|
945 |
-
return $this->storage_url;
|
946 |
-
}
|
947 |
-
|
948 |
-
function getAuthToken()
|
949 |
-
{
|
950 |
-
return $this->auth_token;
|
951 |
-
}
|
952 |
-
|
953 |
-
function setCFAuth($cfs_auth, $servicenet=False)
|
954 |
-
{
|
955 |
-
if ($servicenet) {
|
956 |
-
$this->storage_url = "https://snet-" . substr($cfs_auth->storage_url, 8);
|
957 |
-
} else {
|
958 |
-
$this->storage_url = $cfs_auth->storage_url;
|
959 |
-
}
|
960 |
-
$this->auth_token = $cfs_auth->auth_token;
|
961 |
-
$this->cdnm_url = $cfs_auth->cdnm_url;
|
962 |
-
}
|
963 |
-
|
964 |
-
function setReadProgressFunc($func_name)
|
965 |
-
{
|
966 |
-
$this->_user_read_progress_callback_func = $func_name;
|
967 |
-
}
|
968 |
-
|
969 |
-
function setWriteProgressFunc($func_name)
|
970 |
-
{
|
971 |
-
$this->_user_write_progress_callback_func = $func_name;
|
972 |
-
}
|
973 |
-
|
974 |
-
private function _header_cb($ch, $header)
|
975 |
-
{
|
976 |
-
preg_match("/^HTTP\/1\.[01] (\d{3}) (.*)/", $header, $matches);
|
977 |
-
if (isset($matches[1])) {
|
978 |
-
$this->response_status = $matches[1];
|
979 |
-
}
|
980 |
-
if (isset($matches[2])) {
|
981 |
-
$this->response_reason = $matches[2];
|
982 |
-
}
|
983 |
-
if (stripos($header, CDN_ENABLED) === 0) {
|
984 |
-
$val = trim(substr($header, strlen(CDN_ENABLED)+1));
|
985 |
-
if (strtolower($val) == "true") {
|
986 |
-
$this->_cdn_enabled = True;
|
987 |
-
} elseif (strtolower($val) == "false") {
|
988 |
-
$this->_cdn_enabled = False;
|
989 |
-
} else {
|
990 |
-
$this->_cdn_enabled = NULL;
|
991 |
-
}
|
992 |
-
return strlen($header);
|
993 |
-
}
|
994 |
-
if (stripos($header, CDN_URI) === 0) {
|
995 |
-
$this->_cdn_uri = trim(substr($header, strlen(CDN_URI)+1));
|
996 |
-
return strlen($header);
|
997 |
-
}
|
998 |
-
if (stripos($header, CDN_TTL) === 0) {
|
999 |
-
$this->_cdn_ttl = trim(substr($header, strlen(CDN_TTL)+1))+0;
|
1000 |
-
return strlen($header);
|
1001 |
-
}
|
1002 |
-
if (stripos($header, CDN_LOG_RETENTION) === 0) {
|
1003 |
-
$this->_cdn_log_retention =
|
1004 |
-
trim(substr($header, strlen(CDN_LOG_RETENTION)+1)) == "True" ? True : False;
|
1005 |
-
return strlen($header);
|
1006 |
-
}
|
1007 |
-
|
1008 |
-
if (stripos($header, CDN_ACL_USER_AGENT) === 0) {
|
1009 |
-
$this->_cdn_acl_user_agent =
|
1010 |
-
trim(substr($header, strlen(CDN_ACL_USER_AGENT)+1));
|
1011 |
-
return strlen($header);
|
1012 |
-
}
|
1013 |
-
|
1014 |
-
if (stripos($header, CDN_ACL_REFERRER) === 0) {
|
1015 |
-
$this->_cdn_acl_referrer =
|
1016 |
-
trim(substr($header, strlen(CDN_ACL_REFERRER)+1));
|
1017 |
-
return strlen($header);
|
1018 |
-
}
|
1019 |
-
|
1020 |
-
if (stripos($header, ACCOUNT_CONTAINER_COUNT) === 0) {
|
1021 |
-
$this->_account_container_count = (float) trim(substr($header,
|
1022 |
-
strlen(ACCOUNT_CONTAINER_COUNT)+1))+0;
|
1023 |
-
return strlen($header);
|
1024 |
-
}
|
1025 |
-
if (stripos($header, ACCOUNT_BYTES_USED) === 0) {
|
1026 |
-
$this->_account_bytes_used = (float) trim(substr($header,
|
1027 |
-
strlen(ACCOUNT_BYTES_USED)+1))+0;
|
1028 |
-
return strlen($header);
|
1029 |
-
}
|
1030 |
-
if (stripos($header, CONTAINER_OBJ_COUNT) === 0) {
|
1031 |
-
$this->_container_object_count = (float) trim(substr($header,
|
1032 |
-
strlen(CONTAINER_OBJ_COUNT)+1))+0;
|
1033 |
-
return strlen($header);
|
1034 |
-
}
|
1035 |
-
if (stripos($header, CONTAINER_BYTES_USED) === 0) {
|
1036 |
-
$this->_container_bytes_used = (float) trim(substr($header,
|
1037 |
-
strlen(CONTAINER_BYTES_USED)+1))+0;
|
1038 |
-
return strlen($header);
|
1039 |
-
}
|
1040 |
-
if (stripos($header, METADATA_HEADER) === 0) {
|
1041 |
-
# $header => X-Object-Meta-Foo: bar baz
|
1042 |
-
$temp = substr($header, strlen(METADATA_HEADER));
|
1043 |
-
# $temp => Foo: bar baz
|
1044 |
-
$parts = explode(":", $temp);
|
1045 |
-
# $parts[0] => Foo
|
1046 |
-
$val = substr(strstr($temp, ":"), 1);
|
1047 |
-
# $val => bar baz
|
1048 |
-
$this->_obj_metadata[$parts[0]] = trim($val);
|
1049 |
-
return strlen($header);
|
1050 |
-
}
|
1051 |
-
if (stripos($header, "ETag:") === 0) {
|
1052 |
-
# $header => ETag: abc123def456...
|
1053 |
-
$val = substr(strstr($header, ":"), 1);
|
1054 |
-
# $val => abc123def456...
|
1055 |
-
$this->_obj_etag = trim($val);
|
1056 |
-
return strlen($header);
|
1057 |
-
}
|
1058 |
-
if (stripos($header, "Last-Modified:") === 0) {
|
1059 |
-
$val = substr(strstr($header, ":"), 1);
|
1060 |
-
$this->_obj_last_modified = trim($val);
|
1061 |
-
return strlen($header);
|
1062 |
-
}
|
1063 |
-
if (stripos($header, "Content-Type:") === 0) {
|
1064 |
-
$val = substr(strstr($header, ":"), 1);
|
1065 |
-
$this->_obj_content_type = trim($val);
|
1066 |
-
return strlen($header);
|
1067 |
-
}
|
1068 |
-
if (stripos($header, "Content-Length:") === 0) {
|
1069 |
-
$val = substr(strstr($header, ":"), 1);
|
1070 |
-
$this->_obj_content_length = (float) trim($val)+0;
|
1071 |
-
return strlen($header);
|
1072 |
-
}
|
1073 |
-
return strlen($header);
|
1074 |
-
}
|
1075 |
-
|
1076 |
-
private function _read_cb($ch, $fd, $length)
|
1077 |
-
{
|
1078 |
-
$data = fread($fd, $length);
|
1079 |
-
$len = strlen($data);
|
1080 |
-
if (isset($this->_user_write_progress_callback_func)) {
|
1081 |
-
call_user_func($this->_user_write_progress_callback_func, $len);
|
1082 |
-
}
|
1083 |
-
return $data;
|
1084 |
-
}
|
1085 |
-
|
1086 |
-
private function _write_cb($ch, $data)
|
1087 |
-
{
|
1088 |
-
$dlen = strlen($data);
|
1089 |
-
switch ($this->_write_callback_type) {
|
1090 |
-
case "TEXT_LIST":
|
1091 |
-
$this->_return_list = $this->_return_list . $data;
|
1092 |
-
//= explode("\n",$data); # keep tab,space
|
1093 |
-
//his->_text_list[] = rtrim($data,"\n\r\x0B"); # keep tab,space
|
1094 |
-
break;
|
1095 |
-
case "OBJECT_STREAM":
|
1096 |
-
fwrite($this->_obj_write_resource, $data, $dlen);
|
1097 |
-
break;
|
1098 |
-
case "OBJECT_STRING":
|
1099 |
-
$this->_obj_write_string .= $data;
|
1100 |
-
break;
|
1101 |
-
}
|
1102 |
-
if (isset($this->_user_read_progress_callback_func)) {
|
1103 |
-
call_user_func($this->_user_read_progress_callback_func, $dlen);
|
1104 |
-
}
|
1105 |
-
return $dlen;
|
1106 |
-
}
|
1107 |
-
|
1108 |
-
private function _auth_hdr_cb($ch, $header)
|
1109 |
-
{
|
1110 |
-
preg_match("/^HTTP\/1\.[01] (\d{3}) (.*)/", $header, $matches);
|
1111 |
-
if (isset($matches[1])) {
|
1112 |
-
$this->response_status = $matches[1];
|
1113 |
-
}
|
1114 |
-
if (isset($matches[2])) {
|
1115 |
-
$this->response_reason = $matches[2];
|
1116 |
-
}
|
1117 |
-
if (stripos($header, STORAGE_URL) === 0) {
|
1118 |
-
$this->storage_url = trim(substr($header, strlen(STORAGE_URL)+1));
|
1119 |
-
}
|
1120 |
-
if (stripos($header, CDNM_URL) === 0) {
|
1121 |
-
$this->cdnm_url = trim(substr($header, strlen(CDNM_URL)+1));
|
1122 |
-
}
|
1123 |
-
if (stripos($header, AUTH_TOKEN) === 0) {
|
1124 |
-
$this->auth_token = trim(substr($header, strlen(AUTH_TOKEN)+1));
|
1125 |
-
}
|
1126 |
-
if (stripos($header, AUTH_TOKEN_LEGACY) === 0) {
|
1127 |
-
$this->auth_token = trim(substr($header,strlen(AUTH_TOKEN_LEGACY)+1));
|
1128 |
-
}
|
1129 |
-
return strlen($header);
|
1130 |
-
}
|
1131 |
-
|
1132 |
-
private function _make_headers($hdrs=NULL)
|
1133 |
-
{
|
1134 |
-
$new_headers = array();
|
1135 |
-
$has_stoken = False;
|
1136 |
-
$has_uagent = False;
|
1137 |
-
if (is_array($hdrs)) {
|
1138 |
-
foreach ($hdrs as $h => $v) {
|
1139 |
-
if (is_int($h)) {
|
1140 |
-
$parts = explode(":", $v);
|
1141 |
-
$header = $parts[0];
|
1142 |
-
$value = trim(substr(strstr($v, ":"), 1));
|
1143 |
-
} else {
|
1144 |
-
$header = $h;
|
1145 |
-
$value = trim($v);
|
1146 |
-
}
|
1147 |
-
|
1148 |
-
if (stripos($header, AUTH_TOKEN) === 0) {
|
1149 |
-
$has_stoken = True;
|
1150 |
-
}
|
1151 |
-
if (stripos($header, "user-agent") === 0) {
|
1152 |
-
$has_uagent = True;
|
1153 |
-
}
|
1154 |
-
$new_headers[] = $header . ": " . $value;
|
1155 |
-
}
|
1156 |
-
}
|
1157 |
-
if (!$has_stoken) {
|
1158 |
-
$new_headers[] = AUTH_TOKEN . ": " . $this->auth_token;
|
1159 |
-
}
|
1160 |
-
if (!$has_uagent) {
|
1161 |
-
$new_headers[] = "User-Agent: " . USER_AGENT;
|
1162 |
-
}
|
1163 |
-
return $new_headers;
|
1164 |
-
}
|
1165 |
-
|
1166 |
-
private function _init($conn_type, $force_new=False)
|
1167 |
-
{
|
1168 |
-
if (!array_key_exists($conn_type, $this->connections)) {
|
1169 |
-
$this->error_str = "Invalid CURL_XXX connection type";
|
1170 |
-
return False;
|
1171 |
-
}
|
1172 |
-
|
1173 |
-
if (is_null($this->connections[$conn_type]) || $force_new) {
|
1174 |
-
$ch = curl_init();
|
1175 |
-
} else {
|
1176 |
-
return;
|
1177 |
-
}
|
1178 |
-
|
1179 |
-
if ($this->dbug) { curl_setopt($ch, CURLOPT_VERBOSE, 1); }
|
1180 |
-
|
1181 |
-
if (!is_null($this->cabundle_path)) {
|
1182 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True);
|
1183 |
-
curl_setopt($ch, CURLOPT_CAINFO, $this->cabundle_path);
|
1184 |
-
}
|
1185 |
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True);
|
1186 |
-
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
1187 |
-
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
1188 |
-
curl_setopt($ch, CURLOPT_MAXREDIRS, 4);
|
1189 |
-
curl_setopt($ch, CURLOPT_HEADER, 0);
|
1190 |
-
curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&$this, '_header_cb'));
|
1191 |
-
|
1192 |
-
if ($conn_type == "GET_CALL") {
|
1193 |
-
curl_setopt($ch, CURLOPT_WRITEFUNCTION, array(&$this, '_write_cb'));
|
1194 |
-
}
|
1195 |
-
|
1196 |
-
if ($conn_type == "PUT_OBJ") {
|
1197 |
-
curl_setopt($ch, CURLOPT_PUT, 1);
|
1198 |
-
curl_setopt($ch, CURLOPT_READFUNCTION, array(&$this, '_read_cb'));
|
1199 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
1200 |
-
}
|
1201 |
-
if ($conn_type == "HEAD") {
|
1202 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "HEAD");
|
1203 |
-
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
1204 |
-
}
|
1205 |
-
if ($conn_type == "PUT_CONT") {
|
1206 |
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
|
1207 |
-
curl_setopt($ch, CURLOPT_INFILESIZE, 0);
|
1208 |
-
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
1209 |
-
}
|
1210 |
-
if ($conn_type == "DEL_POST") {
|
1211 |
-
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
1212 |
-
}
|
1213 |
-
$this->connections[$conn_type] = $ch;
|
1214 |
-
return;
|
1215 |
-
}
|
1216 |
-
|
1217 |
-
private function _reset_callback_vars()
|
1218 |
-
{
|
1219 |
-
$this->_text_list = array();
|
1220 |
-
$this->_return_list = NULL;
|
1221 |
-
$this->_account_container_count = 0;
|
1222 |
-
$this->_account_bytes_used = 0;
|
1223 |
-
$this->_container_object_count = 0;
|
1224 |
-
$this->_container_bytes_used = 0;
|
1225 |
-
$this->_obj_etag = NULL;
|
1226 |
-
$this->_obj_last_modified = NULL;
|
1227 |
-
$this->_obj_content_type = NULL;
|
1228 |
-
$this->_obj_content_length = NULL;
|
1229 |
-
$this->_obj_metadata = array();
|
1230 |
-
$this->_obj_write_string = "";
|
1231 |
-
$this->_cdn_enabled = NULL;
|
1232 |
-
$this->_cdn_uri = NULL;
|
1233 |
-
$this->_cdn_ttl = NULL;
|
1234 |
-
$this->response_status = 0;
|
1235 |
-
$this->response_reason = "";
|
1236 |
-
}
|
1237 |
-
|
1238 |
-
private function _make_path($t="STORAGE",$c=NULL,$o=NULL)
|
1239 |
-
{
|
1240 |
-
$path = array();
|
1241 |
-
switch ($t) {
|
1242 |
-
case "STORAGE":
|
1243 |
-
$path[] = $this->storage_url; break;
|
1244 |
-
case "CDN":
|
1245 |
-
$path[] = $this->cdnm_url; break;
|
1246 |
-
}
|
1247 |
-
if ($c == "0")
|
1248 |
-
$path[] = rawurlencode($c);
|
1249 |
-
|
1250 |
-
if ($c) {
|
1251 |
-
$path[] = rawurlencode($c);
|
1252 |
-
}
|
1253 |
-
if ($o) {
|
1254 |
-
# mimic Python''s urllib.quote() feature of a "safe" '/' character
|
1255 |
-
#
|
1256 |
-
$path[] = str_replace("%2F","/",rawurlencode($o));
|
1257 |
-
}
|
1258 |
-
return implode("/",$path);
|
1259 |
-
}
|
1260 |
-
|
1261 |
-
private function _metadata_headers(&$obj)
|
1262 |
-
{
|
1263 |
-
$hdrs = array();
|
1264 |
-
foreach ($obj->metadata as $k => $v) {
|
1265 |
-
if (strpos($k,":") !== False) {
|
1266 |
-
throw new SyntaxException(
|
1267 |
-
"Metadata keys cannot contain a ':' character.");
|
1268 |
-
}
|
1269 |
-
$k = trim($k);
|
1270 |
-
$key = sprintf("%s%s", METADATA_HEADER, $k);
|
1271 |
-
if (!array_key_exists($key, $hdrs)) {
|
1272 |
-
if (strlen($k) > 128 || strlen($v) > 256) {
|
1273 |
-
$this->error_str = "Metadata key or value exceeds ";
|
1274 |
-
$this->error_str .= "maximum length: ($k: $v)";
|
1275 |
-
return 0;
|
1276 |
-
}
|
1277 |
-
$hdrs[] = sprintf("%s%s: %s", METADATA_HEADER, $k, trim($v));
|
1278 |
-
}
|
1279 |
-
}
|
1280 |
-
return $hdrs;
|
1281 |
-
}
|
1282 |
-
|
1283 |
-
private function _send_request($conn_type, $url_path, $hdrs=NULL, $method="GET")
|
1284 |
-
{
|
1285 |
-
$this->_init($conn_type);
|
1286 |
-
$this->_reset_callback_vars();
|
1287 |
-
$headers = $this->_make_headers($hdrs);
|
1288 |
-
|
1289 |
-
if (gettype($this->connections[$conn_type]) == "unknown type")
|
1290 |
-
throw new ConnectionNotOpenException (
|
1291 |
-
"Connection is not open."
|
1292 |
-
);
|
1293 |
-
|
1294 |
-
switch ($method) {
|
1295 |
-
case "DELETE":
|
1296 |
-
curl_setopt($this->connections[$conn_type],
|
1297 |
-
CURLOPT_CUSTOMREQUEST, "DELETE");
|
1298 |
-
break;
|
1299 |
-
case "POST":
|
1300 |
-
curl_setopt($this->connections[$conn_type],
|
1301 |
-
CURLOPT_CUSTOMREQUEST, "POST");
|
1302 |
-
default:
|
1303 |
-
break;
|
1304 |
-
}
|
1305 |
-
|
1306 |
-
curl_setopt($this->connections[$conn_type],
|
1307 |
-
CURLOPT_HTTPHEADER, $headers);
|
1308 |
-
|
1309 |
-
curl_setopt($this->connections[$conn_type],
|
1310 |
-
CURLOPT_URL, $url_path);
|
1311 |
-
|
1312 |
-
if (!curl_exec($this->connections[$conn_type]) && curl_errno($this->connections[$conn_type]) !== 0) {
|
1313 |
-
$this->error_str = "(curl error: "
|
1314 |
-
. curl_errno($this->connections[$conn_type]) . ") ";
|
1315 |
-
$this->error_str .= curl_error($this->connections[$conn_type]);
|
1316 |
-
return False;
|
1317 |
-
}
|
1318 |
-
return curl_getinfo($this->connections[$conn_type], CURLINFO_HTTP_CODE);
|
1319 |
-
}
|
1320 |
-
|
1321 |
-
function close()
|
1322 |
-
{
|
1323 |
-
foreach ($this->connections as $cnx) {
|
1324 |
-
if (isset($cnx)) {
|
1325 |
-
curl_close($cnx);
|
1326 |
-
$this->connections[$cnx] = NULL;
|
1327 |
-
}
|
1328 |
-
}
|
1329 |
-
}
|
1330 |
-
private function create_array()
|
1331 |
-
{
|
1332 |
-
$this->_text_list = explode("\n",rtrim($this->_return_list,"\n\x0B"));
|
1333 |
-
return True;
|
1334 |
-
}
|
1335 |
-
|
1336 |
-
}
|
1337 |
-
|
1338 |
-
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
1339 |
-
|
1340 |
-
/*
|
1341 |
-
* Local variables:
|
1342 |
-
* tab-width: 4
|
1343 |
-
* c-basic-offset: 4
|
1344 |
-
* c-hanging-comment-ender-p: nil
|
1345 |
-
* End:
|
1346 |
-
*/
|
1347 |
-
?>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* This is an HTTP client class for Cloud Files. It uses PHP's cURL module
|
4 |
+
* to handle the actual HTTP request/response. This is NOT a generic HTTP
|
5 |
+
* client class and is only used to abstract out the HTTP communication for
|
6 |
+
* the PHP Cloud Files API.
|
7 |
+
*
|
8 |
+
* This module was designed to re-use existing HTTP(S) connections between
|
9 |
+
* subsequent operations. For example, performing multiple PUT operations
|
10 |
+
* will re-use the same connection.
|
11 |
+
*
|
12 |
+
* This modules also provides support for streaming content into and out
|
13 |
+
* of Cloud Files. The majority (all?) of the PHP HTTP client modules expect
|
14 |
+
* to read the server's response into a string variable. This will not work
|
15 |
+
* with large files without killing your server. Methods like,
|
16 |
+
* get_object_to_stream() and put_object() take an open filehandle
|
17 |
+
* argument for streaming data out of or into Cloud Files.
|
18 |
+
*
|
19 |
+
* Requres PHP 5.x (for Exceptions and OO syntax)
|
20 |
+
*
|
21 |
+
* See COPYING for license information.
|
22 |
+
*
|
23 |
+
* @author Eric "EJ" Johnson <ej@racklabs.com>
|
24 |
+
* @copyright Copyright (c) 2008, Rackspace US, Inc.
|
25 |
+
* @package php-cloudfiles-http
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
*/
|
30 |
+
require_once("cloudfiles_exceptions.php");
|
31 |
+
|
32 |
+
define("PHP_CF_VERSION", "1.7.6");
|
33 |
+
define("USER_AGENT", sprintf("PHP-CloudFiles/%s", PHP_CF_VERSION));
|
34 |
+
define("ACCOUNT_CONTAINER_COUNT", "X-Account-Container-Count");
|
35 |
+
define("ACCOUNT_BYTES_USED", "X-Account-Bytes-Used");
|
36 |
+
define("CONTAINER_OBJ_COUNT", "X-Container-Object-Count");
|
37 |
+
define("CONTAINER_BYTES_USED", "X-Container-Bytes-Used");
|
38 |
+
define("METADATA_HEADER", "X-Object-Meta-");
|
39 |
+
define("CDN_URI", "X-CDN-URI");
|
40 |
+
define("CDN_ENABLED", "X-CDN-Enabled");
|
41 |
+
define("CDN_LOG_RETENTION", "X-Log-Retention");
|
42 |
+
define("CDN_ACL_USER_AGENT", "X-User-Agent-ACL");
|
43 |
+
define("CDN_ACL_REFERRER", "X-Referrer-ACL");
|
44 |
+
define("CDN_TTL", "X-TTL");
|
45 |
+
define("CDNM_URL", "X-CDN-Management-Url");
|
46 |
+
define("STORAGE_URL", "X-Storage-Url");
|
47 |
+
define("AUTH_TOKEN", "X-Auth-Token");
|
48 |
+
define("AUTH_USER_HEADER", "X-Auth-User");
|
49 |
+
define("AUTH_KEY_HEADER", "X-Auth-Key");
|
50 |
+
define("AUTH_USER_HEADER_LEGACY", "X-Storage-User");
|
51 |
+
define("AUTH_KEY_HEADER_LEGACY", "X-Storage-Pass");
|
52 |
+
define("AUTH_TOKEN_LEGACY", "X-Storage-Token");
|
53 |
+
|
54 |
+
/**
|
55 |
+
* HTTP/cURL wrapper for Cloud Files
|
56 |
+
*
|
57 |
+
* This class should not be used directly. It's only purpose is to abstract
|
58 |
+
* out the HTTP communication from the main API.
|
59 |
+
*
|
60 |
+
* @package php-cloudfiles-http
|
61 |
+
*/
|
62 |
+
class CF_Http
|
63 |
+
{
|
64 |
+
private $error_str;
|
65 |
+
private $dbug;
|
66 |
+
private $cabundle_path;
|
67 |
+
private $api_version;
|
68 |
+
|
69 |
+
# Authentication instance variables
|
70 |
+
#
|
71 |
+
private $storage_url;
|
72 |
+
private $cdnm_url;
|
73 |
+
private $auth_token;
|
74 |
+
|
75 |
+
# Request/response variables
|
76 |
+
#
|
77 |
+
private $response_status;
|
78 |
+
private $response_reason;
|
79 |
+
private $connections;
|
80 |
+
|
81 |
+
# Variables used for content/header callbacks
|
82 |
+
#
|
83 |
+
private $_user_read_progress_callback_func;
|
84 |
+
private $_user_write_progress_callback_func;
|
85 |
+
private $_write_callback_type;
|
86 |
+
private $_text_list;
|
87 |
+
private $_account_container_count;
|
88 |
+
private $_account_bytes_used;
|
89 |
+
private $_container_object_count;
|
90 |
+
private $_container_bytes_used;
|
91 |
+
private $_obj_etag;
|
92 |
+
private $_obj_last_modified;
|
93 |
+
private $_obj_content_type;
|
94 |
+
private $_obj_content_length;
|
95 |
+
private $_obj_metadata;
|
96 |
+
private $_obj_write_resource;
|
97 |
+
private $_obj_write_string;
|
98 |
+
private $_cdn_enabled;
|
99 |
+
private $_cdn_uri;
|
100 |
+
private $_cdn_ttl;
|
101 |
+
private $_cdn_log_retention;
|
102 |
+
private $_cdn_acl_user_agent;
|
103 |
+
private $_cdn_acl_referrer;
|
104 |
+
|
105 |
+
function __construct($api_version)
|
106 |
+
{
|
107 |
+
$this->dbug = False;
|
108 |
+
$this->cabundle_path = NULL;
|
109 |
+
$this->api_version = $api_version;
|
110 |
+
$this->error_str = NULL;
|
111 |
+
|
112 |
+
$this->storage_url = NULL;
|
113 |
+
$this->cdnm_url = NULL;
|
114 |
+
$this->auth_token = NULL;
|
115 |
+
|
116 |
+
$this->response_status = NULL;
|
117 |
+
$this->response_reason = NULL;
|
118 |
+
|
119 |
+
# Curl connections array - since there is no way to "re-set" the
|
120 |
+
# connection paramaters for a cURL handle, we keep an array of
|
121 |
+
# the unique use-cases and funnel all of those same type
|
122 |
+
# requests through the appropriate curl connection.
|
123 |
+
#
|
124 |
+
$this->connections = array(
|
125 |
+
"GET_CALL" => NULL, # GET objects/containers/lists
|
126 |
+
"PUT_OBJ" => NULL, # PUT object
|
127 |
+
"HEAD" => NULL, # HEAD requests
|
128 |
+
"PUT_CONT" => NULL, # PUT container
|
129 |
+
"DEL_POST" => NULL, # DELETE containers/objects, POST objects
|
130 |
+
);
|
131 |
+
|
132 |
+
$this->_user_read_progress_callback_func = NULL;
|
133 |
+
$this->_user_write_progress_callback_func = NULL;
|
134 |
+
$this->_write_callback_type = NULL;
|
135 |
+
$this->_text_list = array();
|
136 |
+
$this->_return_list = NULL;
|
137 |
+
$this->_account_container_count = 0;
|
138 |
+
$this->_account_bytes_used = 0;
|
139 |
+
$this->_container_object_count = 0;
|
140 |
+
$this->_container_bytes_used = 0;
|
141 |
+
$this->_obj_write_resource = NULL;
|
142 |
+
$this->_obj_write_string = "";
|
143 |
+
$this->_obj_etag = NULL;
|
144 |
+
$this->_obj_last_modified = NULL;
|
145 |
+
$this->_obj_content_type = NULL;
|
146 |
+
$this->_obj_content_length = NULL;
|
147 |
+
$this->_obj_metadata = array();
|
148 |
+
$this->_cdn_enabled = NULL;
|
149 |
+
$this->_cdn_uri = NULL;
|
150 |
+
$this->_cdn_ttl = NULL;
|
151 |
+
$this->_cdn_log_retention = NULL;
|
152 |
+
$this->_cdn_acl_user_agent = NULL;
|
153 |
+
$this->_cdn_acl_referrer = NULL;
|
154 |
+
|
155 |
+
# The OS list with a PHP without an updated CA File for CURL to
|
156 |
+
# connect to SSL Websites. It is the first 3 letters of the PHP_OS
|
157 |
+
# variable.
|
158 |
+
$OS_CAFILE_NONUPDATED=array(
|
159 |
+
"win","dar"
|
160 |
+
);
|
161 |
+
|
162 |
+
if (in_array((strtolower (substr(PHP_OS, 0,3))), $OS_CAFILE_NONUPDATED))
|
163 |
+
$this->ssl_use_cabundle();
|
164 |
+
|
165 |
+
}
|
166 |
+
|
167 |
+
function ssl_use_cabundle($path=NULL)
|
168 |
+
{
|
169 |
+
if ($path) {
|
170 |
+
$this->cabundle_path = $path;
|
171 |
+
} else {
|
172 |
+
$this->cabundle_path = dirname(__FILE__) . "/cacert.pem";
|
173 |
+
}
|
174 |
+
if (!file_exists($this->cabundle_path)) {
|
175 |
+
throw new IOException("Could not use CA bundle: "
|
176 |
+
. $this->cabundle_path);
|
177 |
+
}
|
178 |
+
return;
|
179 |
+
}
|
180 |
+
|
181 |
+
# Uses separate cURL connection to authenticate
|
182 |
+
#
|
183 |
+
function authenticate($user, $pass, $acct=NULL, $host=NULL)
|
184 |
+
{
|
185 |
+
$path = array();
|
186 |
+
if (isset($acct)){
|
187 |
+
$headers = array(
|
188 |
+
sprintf("%s: %s", AUTH_USER_HEADER_LEGACY, $user),
|
189 |
+
sprintf("%s: %s", AUTH_KEY_HEADER_LEGACY, $pass),
|
190 |
+
);
|
191 |
+
$path[] = $host;
|
192 |
+
$path[] = rawurlencode(sprintf("v%d",$this->api_version));
|
193 |
+
$path[] = rawurlencode($acct);
|
194 |
+
} else {
|
195 |
+
$headers = array(
|
196 |
+
sprintf("%s: %s", AUTH_USER_HEADER, $user),
|
197 |
+
sprintf("%s: %s", AUTH_KEY_HEADER, $pass),
|
198 |
+
);
|
199 |
+
$path[] = $host;
|
200 |
+
}
|
201 |
+
$path[] = "v1.0";
|
202 |
+
$url = implode("/", $path);
|
203 |
+
|
204 |
+
$curl_ch = curl_init();
|
205 |
+
if (!is_null($this->cabundle_path)) {
|
206 |
+
curl_setopt($curl_ch, CURLOPT_SSL_VERIFYPEER, True);
|
207 |
+
curl_setopt($curl_ch, CURLOPT_CAINFO, $this->cabundle_path);
|
208 |
+
}
|
209 |
+
curl_setopt($curl_ch, CURLOPT_VERBOSE, $this->dbug);
|
210 |
+
@curl_setopt($curl_ch, CURLOPT_FOLLOWLOCATION, 1);
|
211 |
+
curl_setopt($curl_ch, CURLOPT_MAXREDIRS, 4);
|
212 |
+
curl_setopt($curl_ch, CURLOPT_HEADER, 0);
|
213 |
+
curl_setopt($curl_ch, CURLOPT_HTTPHEADER, $headers);
|
214 |
+
curl_setopt($curl_ch, CURLOPT_USERAGENT, USER_AGENT);
|
215 |
+
curl_setopt($curl_ch, CURLOPT_RETURNTRANSFER, TRUE);
|
216 |
+
curl_setopt($curl_ch, CURLOPT_HEADERFUNCTION,array(&$this,'_auth_hdr_cb'));
|
217 |
+
curl_setopt($curl_ch, CURLOPT_CONNECTTIMEOUT, 10);
|
218 |
+
curl_setopt($curl_ch, CURLOPT_URL, $url);
|
219 |
+
curl_exec($curl_ch);
|
220 |
+
curl_close($curl_ch);
|
221 |
+
|
222 |
+
return array($this->response_status, $this->response_reason,
|
223 |
+
$this->storage_url, $this->cdnm_url, $this->auth_token);
|
224 |
+
}
|
225 |
+
|
226 |
+
# (CDN) GET /v1/Account
|
227 |
+
#
|
228 |
+
function list_cdn_containers($enabled_only)
|
229 |
+
{
|
230 |
+
$conn_type = "GET_CALL";
|
231 |
+
$url_path = $this->_make_path("CDN");
|
232 |
+
|
233 |
+
$this->_write_callback_type = "TEXT_LIST";
|
234 |
+
if ($enabled_only)
|
235 |
+
{
|
236 |
+
$return_code = $this->_send_request($conn_type, $url_path .
|
237 |
+
'/?enabled_only=true');
|
238 |
+
}
|
239 |
+
else
|
240 |
+
{
|
241 |
+
$return_code = $this->_send_request($conn_type, $url_path);
|
242 |
+
}
|
243 |
+
if (!$return_code) {
|
244 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
245 |
+
array(0,$this->error_str,array());
|
246 |
+
}
|
247 |
+
if ($return_code == 401) {
|
248 |
+
return array($return_code,"Unauthorized",array());
|
249 |
+
}
|
250 |
+
if ($return_code == 404) {
|
251 |
+
return array($return_code,"Account not found.",array());
|
252 |
+
}
|
253 |
+
if ($return_code == 204) {
|
254 |
+
return array($return_code,"Account has no CDN enabled Containers.",
|
255 |
+
array());
|
256 |
+
}
|
257 |
+
if ($return_code == 200) {
|
258 |
+
$this->create_array();
|
259 |
+
return array($return_code,$this->response_reason,$this->_text_list);
|
260 |
+
}
|
261 |
+
$this->error_str = "Unexpected HTTP response: ".$this->response_reason;
|
262 |
+
return array($return_code,$this->error_str,array());
|
263 |
+
}
|
264 |
+
|
265 |
+
# (CDN) POST /v1/Account/Container
|
266 |
+
#
|
267 |
+
function update_cdn_container($container_name, $ttl=86400, $cdn_log_retention=False,
|
268 |
+
$cdn_acl_user_agent="", $cdn_acl_referrer)
|
269 |
+
{
|
270 |
+
if ($container_name == "")
|
271 |
+
throw new SyntaxException("Container name not set.");
|
272 |
+
|
273 |
+
if ($container_name != "0" and !isset($container_name))
|
274 |
+
throw new SyntaxException("Container name not set.");
|
275 |
+
|
276 |
+
$url_path = $this->_make_path("CDN", $container_name);
|
277 |
+
$hdrs = array(
|
278 |
+
CDN_ENABLED => "True",
|
279 |
+
CDN_TTL => $ttl,
|
280 |
+
CDN_LOG_RETENTION => $cdn_log_retention ? "True" : "False",
|
281 |
+
CDN_ACL_USER_AGENT => $cdn_acl_user_agent,
|
282 |
+
CDN_ACL_REFERRER => $cdn_acl_referrer,
|
283 |
+
);
|
284 |
+
$return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST");
|
285 |
+
if ($return_code == 401) {
|
286 |
+
$this->error_str = "Unauthorized";
|
287 |
+
return array($return_code, $this->error_str, NULL);
|
288 |
+
}
|
289 |
+
if ($return_code == 404) {
|
290 |
+
$this->error_str = "Container not found.";
|
291 |
+
return array($return_code, $this->error_str, NULL);
|
292 |
+
}
|
293 |
+
if ($return_code != 202) {
|
294 |
+
$this->error_str="Unexpected HTTP response: ".$this->response_reason;
|
295 |
+
return array($return_code, $this->error_str, NULL);
|
296 |
+
}
|
297 |
+
return array($return_code, "Accepted", $this->_cdn_uri);
|
298 |
+
|
299 |
+
}
|
300 |
+
|
301 |
+
# (CDN) PUT /v1/Account/Container
|
302 |
+
#
|
303 |
+
function add_cdn_container($container_name, $ttl=86400)
|
304 |
+
{
|
305 |
+
if ($container_name == "")
|
306 |
+
throw new SyntaxException("Container name not set.");
|
307 |
+
|
308 |
+
if ($container_name != "0" and !isset($container_name))
|
309 |
+
throw new SyntaxException("Container name not set.");
|
310 |
+
|
311 |
+
$url_path = $this->_make_path("CDN", $container_name);
|
312 |
+
$hdrs = array(
|
313 |
+
CDN_ENABLED => "True",
|
314 |
+
CDN_TTL => $ttl,
|
315 |
+
);
|
316 |
+
$return_code = $this->_send_request("PUT_CONT", $url_path, $hdrs);
|
317 |
+
if ($return_code == 401) {
|
318 |
+
$this->error_str = "Unauthorized";
|
319 |
+
return array($return_code,$this->response_reason,False);
|
320 |
+
}
|
321 |
+
if (!in_array($return_code, array(201,202))) {
|
322 |
+
$this->error_str="Unexpected HTTP response: ".$this->response_reason;
|
323 |
+
return array($return_code,$this->response_reason,False);
|
324 |
+
}
|
325 |
+
return array($return_code,$this->response_reason,$this->_cdn_uri);
|
326 |
+
}
|
327 |
+
|
328 |
+
# (CDN) POST /v1/Account/Container
|
329 |
+
#
|
330 |
+
function remove_cdn_container($container_name)
|
331 |
+
{
|
332 |
+
if ($container_name == "")
|
333 |
+
throw new SyntaxException("Container name not set.");
|
334 |
+
|
335 |
+
if ($container_name != "0" and !isset($container_name))
|
336 |
+
throw new SyntaxException("Container name not set.");
|
337 |
+
|
338 |
+
$url_path = $this->_make_path("CDN", $container_name);
|
339 |
+
$hdrs = array(CDN_ENABLED => "False");
|
340 |
+
$return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST");
|
341 |
+
if ($return_code == 401) {
|
342 |
+
$this->error_str = "Unauthorized";
|
343 |
+
return array($return_code, $this->error_str);
|
344 |
+
}
|
345 |
+
if ($return_code == 404) {
|
346 |
+
$this->error_str = "Container not found.";
|
347 |
+
return array($return_code, $this->error_str);
|
348 |
+
}
|
349 |
+
if ($return_code != 202) {
|
350 |
+
$this->error_str="Unexpected HTTP response: ".$this->response_reason;
|
351 |
+
return array($return_code, $this->error_str);
|
352 |
+
}
|
353 |
+
return array($return_code, "Accepted");
|
354 |
+
}
|
355 |
+
|
356 |
+
# (CDN) HEAD /v1/Account
|
357 |
+
#
|
358 |
+
function head_cdn_container($container_name)
|
359 |
+
{
|
360 |
+
if ($container_name == "")
|
361 |
+
throw new SyntaxException("Container name not set.");
|
362 |
+
|
363 |
+
if ($container_name != "0" and !isset($container_name))
|
364 |
+
throw new SyntaxException("Container name not set.");
|
365 |
+
|
366 |
+
$conn_type = "HEAD";
|
367 |
+
$url_path = $this->_make_path("CDN", $container_name);
|
368 |
+
$return_code = $this->_send_request($conn_type, $url_path);
|
369 |
+
|
370 |
+
if (!$return_code) {
|
371 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
372 |
+
return array(0,$this->error_str,NULL,NULL,NULL,NULL,NULL,NULL);
|
373 |
+
}
|
374 |
+
if ($return_code == 401) {
|
375 |
+
return array($return_code,"Unauthorized",NULL,NULL,NULL,NULL,NULL,NULL);
|
376 |
+
}
|
377 |
+
if ($return_code == 404) {
|
378 |
+
return array($return_code,"Account not found.",NULL,NULL,NULL,NULL,NULL,NULL);
|
379 |
+
}
|
380 |
+
if ($return_code == 204) {
|
381 |
+
return array($return_code,$this->response_reason,
|
382 |
+
$this->_cdn_enabled, $this->_cdn_uri, $this->_cdn_ttl,
|
383 |
+
$this->_cdn_log_retention,
|
384 |
+
$this->_cdn_acl_user_agent,
|
385 |
+
$this->_cdn_acl_referrer
|
386 |
+
);
|
387 |
+
}
|
388 |
+
return array($return_code,$this->response_reason,
|
389 |
+
NULL,NULL,NULL,
|
390 |
+
$this->_cdn_log_retention,
|
391 |
+
$this->_cdn_acl_user_agent,
|
392 |
+
$this->_cdn_acl_referrer
|
393 |
+
);
|
394 |
+
}
|
395 |
+
|
396 |
+
# GET /v1/Account
|
397 |
+
#
|
398 |
+
function list_containers($limit=0, $marker=NULL)
|
399 |
+
{
|
400 |
+
$conn_type = "GET_CALL";
|
401 |
+
$url_path = $this->_make_path();
|
402 |
+
|
403 |
+
$limit = intval($limit);
|
404 |
+
$params = array();
|
405 |
+
if ($limit > 0) {
|
406 |
+
$params[] = "limit=$limit";
|
407 |
+
}
|
408 |
+
if ($marker) {
|
409 |
+
$params[] = "marker=".rawurlencode($marker);
|
410 |
+
}
|
411 |
+
if (!empty($params)) {
|
412 |
+
$url_path .= "?" . implode("&", $params);
|
413 |
+
}
|
414 |
+
|
415 |
+
$this->_write_callback_type = "TEXT_LIST";
|
416 |
+
$return_code = $this->_send_request($conn_type, $url_path);
|
417 |
+
|
418 |
+
if (!$return_code) {
|
419 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
420 |
+
return array(0,$this->error_str,array());
|
421 |
+
}
|
422 |
+
if ($return_code == 204) {
|
423 |
+
return array($return_code, "Account has no containers.", array());
|
424 |
+
}
|
425 |
+
if ($return_code == 404) {
|
426 |
+
$this->error_str = "Invalid account name for authentication token.";
|
427 |
+
return array($return_code,$this->error_str,array());
|
428 |
+
}
|
429 |
+
if ($return_code == 200) {
|
430 |
+
$this->create_array();
|
431 |
+
return array($return_code, $this->response_reason, $this->_text_list);
|
432 |
+
}
|
433 |
+
$this->error_str = "Unexpected HTTP response: ".$this->response_reason;
|
434 |
+
return array($return_code,$this->error_str,array());
|
435 |
+
}
|
436 |
+
|
437 |
+
# GET /v1/Account?format=json
|
438 |
+
#
|
439 |
+
function list_containers_info($limit=0, $marker=NULL)
|
440 |
+
{
|
441 |
+
$conn_type = "GET_CALL";
|
442 |
+
$url_path = $this->_make_path() . "?format=json";
|
443 |
+
|
444 |
+
$limit = intval($limit);
|
445 |
+
$params = array();
|
446 |
+
if ($limit > 0) {
|
447 |
+
$params[] = "limit=$limit";
|
448 |
+
}
|
449 |
+
if ($marker) {
|
450 |
+
$params[] = "marker=".rawurlencode($marker);
|
451 |
+
}
|
452 |
+
if (!empty($params)) {
|
453 |
+
$url_path .= "&" . implode("&", $params);
|
454 |
+
}
|
455 |
+
|
456 |
+
$this->_write_callback_type = "OBJECT_STRING";
|
457 |
+
$return_code = $this->_send_request($conn_type, $url_path);
|
458 |
+
|
459 |
+
if (!$return_code) {
|
460 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
461 |
+
return array(0,$this->error_str,array());
|
462 |
+
}
|
463 |
+
if ($return_code == 204) {
|
464 |
+
return array($return_code, "Account has no containers.", array());
|
465 |
+
}
|
466 |
+
if ($return_code == 404) {
|
467 |
+
$this->error_str = "Invalid account name for authentication token.";
|
468 |
+
return array($return_code,$this->error_str,array());
|
469 |
+
}
|
470 |
+
if ($return_code == 200) {
|
471 |
+
$json_body = json_decode($this->_obj_write_string, True);
|
472 |
+
return array($return_code, $this->response_reason, $json_body);
|
473 |
+
}
|
474 |
+
$this->error_str = "Unexpected HTTP response: ".$this->response_reason;
|
475 |
+
return array($return_code,$this->error_str,array());
|
476 |
+
}
|
477 |
+
|
478 |
+
# HEAD /v1/Account
|
479 |
+
#
|
480 |
+
function head_account()
|
481 |
+
{
|
482 |
+
$conn_type = "HEAD";
|
483 |
+
|
484 |
+
$url_path = $this->_make_path();
|
485 |
+
$return_code = $this->_send_request($conn_type,$url_path);
|
486 |
+
|
487 |
+
if (!$return_code) {
|
488 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
489 |
+
array(0,$this->error_str,0,0);
|
490 |
+
}
|
491 |
+
if ($return_code == 404) {
|
492 |
+
return array($return_code,"Account not found.",0,0);
|
493 |
+
}
|
494 |
+
if ($return_code == 204) {
|
495 |
+
return array($return_code,$this->response_reason,
|
496 |
+
$this->_account_container_count, $this->_account_bytes_used);
|
497 |
+
}
|
498 |
+
return array($return_code,$this->response_reason,0,0);
|
499 |
+
}
|
500 |
+
|
501 |
+
# PUT /v1/Account/Container
|
502 |
+
#
|
503 |
+
function create_container($container_name)
|
504 |
+
{
|
505 |
+
if ($container_name == "")
|
506 |
+
throw new SyntaxException("Container name not set.");
|
507 |
+
|
508 |
+
if ($container_name != "0" and !isset($container_name))
|
509 |
+
throw new SyntaxException("Container name not set.");
|
510 |
+
|
511 |
+
$url_path = $this->_make_path("STORAGE", $container_name);
|
512 |
+
$return_code = $this->_send_request("PUT_CONT",$url_path);
|
513 |
+
|
514 |
+
if (!$return_code) {
|
515 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
516 |
+
return False;
|
517 |
+
}
|
518 |
+
return $return_code;
|
519 |
+
}
|
520 |
+
|
521 |
+
# DELETE /v1/Account/Container
|
522 |
+
#
|
523 |
+
function delete_container($container_name)
|
524 |
+
{
|
525 |
+
if ($container_name == "")
|
526 |
+
throw new SyntaxException("Container name not set.");
|
527 |
+
|
528 |
+
if ($container_name != "0" and !isset($container_name))
|
529 |
+
throw new SyntaxException("Container name not set.");
|
530 |
+
|
531 |
+
$url_path = $this->_make_path("STORAGE", $container_name);
|
532 |
+
$return_code = $this->_send_request("DEL_POST",$url_path,array(),"DELETE");
|
533 |
+
|
534 |
+
if (!$return_code) {
|
535 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
536 |
+
}
|
537 |
+
if ($return_code == 409) {
|
538 |
+
$this->error_str = "Container must be empty prior to removing it.";
|
539 |
+
}
|
540 |
+
if ($return_code == 404) {
|
541 |
+
$this->error_str = "Specified container did not exist to delete.";
|
542 |
+
}
|
543 |
+
if ($return_code != 204) {
|
544 |
+
$this->error_str = "Unexpected HTTP return code: $return_code.";
|
545 |
+
}
|
546 |
+
return $return_code;
|
547 |
+
}
|
548 |
+
|
549 |
+
# GET /v1/Account/Container
|
550 |
+
#
|
551 |
+
function list_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL)
|
552 |
+
{
|
553 |
+
if (!$cname) {
|
554 |
+
$this->error_str = "Container name not set.";
|
555 |
+
return array(0, $this->error_str, array());
|
556 |
+
}
|
557 |
+
|
558 |
+
$url_path = $this->_make_path("STORAGE", $cname);
|
559 |
+
|
560 |
+
$limit = intval($limit);
|
561 |
+
$params = array();
|
562 |
+
if ($limit > 0) {
|
563 |
+
$params[] = "limit=$limit";
|
564 |
+
}
|
565 |
+
if ($marker) {
|
566 |
+
$params[] = "marker=".rawurlencode($marker);
|
567 |
+
}
|
568 |
+
if ($prefix) {
|
569 |
+
$params[] = "prefix=".rawurlencode($prefix);
|
570 |
+
}
|
571 |
+
if ($path) {
|
572 |
+
$params[] = "path=".rawurlencode($path);
|
573 |
+
}
|
574 |
+
if (!empty($params)) {
|
575 |
+
$url_path .= "?" . implode("&", $params);
|
576 |
+
}
|
577 |
+
|
578 |
+
$conn_type = "GET_CALL";
|
579 |
+
$this->_write_callback_type = "TEXT_LIST";
|
580 |
+
$return_code = $this->_send_request($conn_type,$url_path);
|
581 |
+
|
582 |
+
if (!$return_code) {
|
583 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
584 |
+
return array(0,$this->error_str,array());
|
585 |
+
}
|
586 |
+
if ($return_code == 204) {
|
587 |
+
$this->error_str = "Container has no Objects.";
|
588 |
+
return array($return_code,$this->error_str,array());
|
589 |
+
}
|
590 |
+
if ($return_code == 404) {
|
591 |
+
$this->error_str = "Container has no Objects.";
|
592 |
+
return array($return_code,$this->error_str,array());
|
593 |
+
}
|
594 |
+
if ($return_code == 200) {
|
595 |
+
$this->create_array();
|
596 |
+
return array($return_code,$this->response_reason, $this->_text_list);
|
597 |
+
}
|
598 |
+
$this->error_str = "Unexpected HTTP response code: $return_code";
|
599 |
+
return array(0,$this->error_str,array());
|
600 |
+
}
|
601 |
+
|
602 |
+
# GET /v1/Account/Container?format=json
|
603 |
+
#
|
604 |
+
function get_objects($cname,$limit=0,$marker=NULL,$prefix=NULL,$path=NULL)
|
605 |
+
{
|
606 |
+
if (!$cname) {
|
607 |
+
$this->error_str = "Container name not set.";
|
608 |
+
return array(0, $this->error_str, array());
|
609 |
+
}
|
610 |
+
|
611 |
+
$url_path = $this->_make_path("STORAGE", $cname);
|
612 |
+
|
613 |
+
$limit = intval($limit);
|
614 |
+
$params = array();
|
615 |
+
$params[] = "format=json";
|
616 |
+
if ($limit > 0) {
|
617 |
+
$params[] = "limit=$limit";
|
618 |
+
}
|
619 |
+
if ($marker) {
|
620 |
+
$params[] = "marker=".rawurlencode($marker);
|
621 |
+
}
|
622 |
+
if ($prefix) {
|
623 |
+
$params[] = "prefix=".rawurlencode($prefix);
|
624 |
+
}
|
625 |
+
if ($path) {
|
626 |
+
$params[] = "path=".rawurlencode($path);
|
627 |
+
}
|
628 |
+
if (!empty($params)) {
|
629 |
+
$url_path .= "?" . implode("&", $params);
|
630 |
+
}
|
631 |
+
|
632 |
+
$conn_type = "GET_CALL";
|
633 |
+
$this->_write_callback_type = "OBJECT_STRING";
|
634 |
+
$return_code = $this->_send_request($conn_type,$url_path);
|
635 |
+
|
636 |
+
if (!$return_code) {
|
637 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
638 |
+
return array(0,$this->error_str,array());
|
639 |
+
}
|
640 |
+
if ($return_code == 204) {
|
641 |
+
$this->error_str = "Container has no Objects.";
|
642 |
+
return array($return_code,$this->error_str,array());
|
643 |
+
}
|
644 |
+
if ($return_code == 404) {
|
645 |
+
$this->error_str = "Container has no Objects.";
|
646 |
+
return array($return_code,$this->error_str,array());
|
647 |
+
}
|
648 |
+
if ($return_code == 200) {
|
649 |
+
$json_body = json_decode($this->_obj_write_string, True);
|
650 |
+
return array($return_code,$this->response_reason, $json_body);
|
651 |
+
}
|
652 |
+
$this->error_str = "Unexpected HTTP response code: $return_code";
|
653 |
+
return array(0,$this->error_str,array());
|
654 |
+
}
|
655 |
+
|
656 |
+
|
657 |
+
# HEAD /v1/Account/Container
|
658 |
+
#
|
659 |
+
function head_container($container_name)
|
660 |
+
{
|
661 |
+
|
662 |
+
if ($container_name == "") {
|
663 |
+
$this->error_str = "Container name not set.";
|
664 |
+
return False;
|
665 |
+
}
|
666 |
+
|
667 |
+
if ($container_name != "0" and !isset($container_name)) {
|
668 |
+
$this->error_str = "Container name not set.";
|
669 |
+
return False;
|
670 |
+
}
|
671 |
+
|
672 |
+
$conn_type = "HEAD";
|
673 |
+
|
674 |
+
$url_path = $this->_make_path("STORAGE", $container_name);
|
675 |
+
$return_code = $this->_send_request($conn_type,$url_path);
|
676 |
+
|
677 |
+
if (!$return_code) {
|
678 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
679 |
+
array(0,$this->error_str,0,0);
|
680 |
+
}
|
681 |
+
if ($return_code == 404) {
|
682 |
+
return array($return_code,"Container not found.",0,0);
|
683 |
+
}
|
684 |
+
if ($return_code == 204 || $return_code == 200) {
|
685 |
+
return array($return_code,$this->response_reason,
|
686 |
+
$this->_container_object_count, $this->_container_bytes_used);
|
687 |
+
}
|
688 |
+
return array($return_code,$this->response_reason,0,0);
|
689 |
+
}
|
690 |
+
|
691 |
+
# GET /v1/Account/Container/Object
|
692 |
+
#
|
693 |
+
function get_object_to_string(&$obj, $hdrs=array())
|
694 |
+
{
|
695 |
+
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
696 |
+
throw new SyntaxException(
|
697 |
+
"Method argument is not a valid CF_Object.");
|
698 |
+
}
|
699 |
+
|
700 |
+
$conn_type = "GET_CALL";
|
701 |
+
|
702 |
+
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
703 |
+
$this->_write_callback_type = "OBJECT_STRING";
|
704 |
+
$return_code = $this->_send_request($conn_type,$url_path,$hdrs);
|
705 |
+
|
706 |
+
if (!$return_code) {
|
707 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
708 |
+
return array($return_code0,$this->error_str,NULL);
|
709 |
+
}
|
710 |
+
if ($return_code == 404) {
|
711 |
+
$this->error_str = "Object not found.";
|
712 |
+
return array($return_code0,$this->error_str,NULL);
|
713 |
+
}
|
714 |
+
if (($return_code < 200) || ($return_code > 299
|
715 |
+
&& $return_code != 412 && $return_code != 304)) {
|
716 |
+
$this->error_str = "Unexpected HTTP return code: $return_code";
|
717 |
+
return array($return_code,$this->error_str,NULL);
|
718 |
+
}
|
719 |
+
return array($return_code,$this->response_reason, $this->_obj_write_string);
|
720 |
+
}
|
721 |
+
|
722 |
+
# GET /v1/Account/Container/Object
|
723 |
+
#
|
724 |
+
function get_object_to_stream(&$obj, &$resource=NULL, $hdrs=array())
|
725 |
+
{
|
726 |
+
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
727 |
+
throw new SyntaxException(
|
728 |
+
"Method argument is not a valid CF_Object.");
|
729 |
+
}
|
730 |
+
if (!is_resource($resource)) {
|
731 |
+
throw new SyntaxException(
|
732 |
+
"Resource argument not a valid PHP resource.");
|
733 |
+
}
|
734 |
+
|
735 |
+
$conn_type = "GET_CALL";
|
736 |
+
|
737 |
+
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
738 |
+
$this->_obj_write_resource = $resource;
|
739 |
+
$this->_write_callback_type = "OBJECT_STREAM";
|
740 |
+
$return_code = $this->_send_request($conn_type,$url_path,$hdrs);
|
741 |
+
|
742 |
+
if (!$return_code) {
|
743 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
744 |
+
return array($return_code,$this->error_str);
|
745 |
+
}
|
746 |
+
if ($return_code == 404) {
|
747 |
+
$this->error_str = "Object not found.";
|
748 |
+
return array($return_code,$this->error_str);
|
749 |
+
}
|
750 |
+
if (($return_code < 200) || ($return_code > 299
|
751 |
+
&& $return_code != 412 && $return_code != 304)) {
|
752 |
+
$this->error_str = "Unexpected HTTP return code: $return_code";
|
753 |
+
return array($return_code,$this->error_str);
|
754 |
+
}
|
755 |
+
return array($return_code,$this->response_reason);
|
756 |
+
}
|
757 |
+
|
758 |
+
# PUT /v1/Account/Container/Object
|
759 |
+
#
|
760 |
+
function put_object(&$obj, &$fp)
|
761 |
+
{
|
762 |
+
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
763 |
+
throw new SyntaxException(
|
764 |
+
"Method argument is not a valid CF_Object.");
|
765 |
+
}
|
766 |
+
if (!is_resource($fp)) {
|
767 |
+
throw new SyntaxException(
|
768 |
+
"File pointer argument is not a valid resource.");
|
769 |
+
}
|
770 |
+
|
771 |
+
$conn_type = "PUT_OBJ";
|
772 |
+
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
773 |
+
|
774 |
+
$hdrs = $this->_metadata_headers($obj);
|
775 |
+
|
776 |
+
$etag = $obj->getETag();
|
777 |
+
if (isset($etag)) {
|
778 |
+
$hdrs[] = "ETag: " . $etag;
|
779 |
+
}
|
780 |
+
if (!$obj->content_type) {
|
781 |
+
$hdrs[] = "Content-Type: application/octet-stream";
|
782 |
+
} else {
|
783 |
+
$hdrs[] = "Content-Type: " . $obj->content_type;
|
784 |
+
}
|
785 |
+
|
786 |
+
$this->_init($conn_type);
|
787 |
+
curl_setopt($this->connections[$conn_type],
|
788 |
+
CURLOPT_INFILE, $fp);
|
789 |
+
if (!$obj->content_length) {
|
790 |
+
# We don''t know the Content-Length, so assumed "chunked" PUT
|
791 |
+
#
|
792 |
+
curl_setopt($this->connections[$conn_type], CURLOPT_UPLOAD, True);
|
793 |
+
$hdrs[] = 'Transfer-Encoding: chunked';
|
794 |
+
} else {
|
795 |
+
# We know the Content-Length, so use regular transfer
|
796 |
+
#
|
797 |
+
curl_setopt($this->connections[$conn_type],
|
798 |
+
CURLOPT_INFILESIZE, $obj->content_length);
|
799 |
+
}
|
800 |
+
$return_code = $this->_send_request($conn_type,$url_path,$hdrs);
|
801 |
+
|
802 |
+
if (!$return_code) {
|
803 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
804 |
+
return array(0,$this->error_str,NULL);
|
805 |
+
}
|
806 |
+
if ($return_code == 412) {
|
807 |
+
$this->error_str = "Missing Content-Type header";
|
808 |
+
return array($return_code,$this->error_str,NULL);
|
809 |
+
}
|
810 |
+
if ($return_code == 422) {
|
811 |
+
$this->error_str = "Derived and computed checksums do not match.";
|
812 |
+
return array($return_code,$this->error_str,NULL);
|
813 |
+
}
|
814 |
+
if ($return_code != 201) {
|
815 |
+
$this->error_str = "Unexpected HTTP return code: $return_code";
|
816 |
+
return array($return_code,$this->error_str,NULL);
|
817 |
+
}
|
818 |
+
return array($return_code,$this->response_reason,$this->_obj_etag);
|
819 |
+
}
|
820 |
+
|
821 |
+
# POST /v1/Account/Container/Object
|
822 |
+
#
|
823 |
+
function update_object(&$obj)
|
824 |
+
{
|
825 |
+
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
826 |
+
throw new SyntaxException(
|
827 |
+
"Method argument is not a valid CF_Object.");
|
828 |
+
}
|
829 |
+
|
830 |
+
if (!is_array($obj->metadata) || empty($obj->metadata)) {
|
831 |
+
$this->error_str = "Metadata array is empty.";
|
832 |
+
return 0;
|
833 |
+
}
|
834 |
+
|
835 |
+
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
836 |
+
|
837 |
+
$hdrs = $this->_metadata_headers($obj);
|
838 |
+
$return_code = $this->_send_request("DEL_POST",$url_path,$hdrs,"POST");
|
839 |
+
if (!$return_code) {
|
840 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
841 |
+
return 0;
|
842 |
+
}
|
843 |
+
if ($return_code == 404) {
|
844 |
+
$this->error_str = "Account, Container, or Object not found.";
|
845 |
+
}
|
846 |
+
if ($return_code != 202) {
|
847 |
+
$this->error_str = "Unexpected HTTP return code: $return_code";
|
848 |
+
}
|
849 |
+
return $return_code;
|
850 |
+
}
|
851 |
+
|
852 |
+
# HEAD /v1/Account/Container/Object
|
853 |
+
#
|
854 |
+
function head_object(&$obj)
|
855 |
+
{
|
856 |
+
if (!is_object($obj) || get_class($obj) != "CF_Object") {
|
857 |
+
throw new SyntaxException(
|
858 |
+
"Method argument is not a valid CF_Object.");
|
859 |
+
}
|
860 |
+
|
861 |
+
$conn_type = "HEAD";
|
862 |
+
|
863 |
+
$url_path = $this->_make_path("STORAGE", $obj->container->name,$obj->name);
|
864 |
+
$return_code = $this->_send_request($conn_type,$url_path);
|
865 |
+
|
866 |
+
if (!$return_code) {
|
867 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
868 |
+
return array(0, $this->error_str." ".$this->response_reason,
|
869 |
+
NULL, NULL, NULL, NULL, array());
|
870 |
+
}
|
871 |
+
|
872 |
+
if ($return_code == 404) {
|
873 |
+
return array($return_code, $this->response_reason,
|
874 |
+
NULL, NULL, NULL, NULL, array());
|
875 |
+
}
|
876 |
+
if ($return_code == 204 || $return_code == 200) {
|
877 |
+
return array($return_code,$this->response_reason,
|
878 |
+
$this->_obj_etag,
|
879 |
+
$this->_obj_last_modified,
|
880 |
+
$this->_obj_content_type,
|
881 |
+
$this->_obj_content_length,
|
882 |
+
$this->_obj_metadata);
|
883 |
+
}
|
884 |
+
$this->error_str = "Unexpected HTTP return code: $return_code";
|
885 |
+
return array($return_code, $this->error_str." ".$this->response_reason,
|
886 |
+
NULL, NULL, NULL, NULL, array());
|
887 |
+
}
|
888 |
+
|
889 |
+
# DELETE /v1/Account/Container/Object
|
890 |
+
#
|
891 |
+
function delete_object($container_name, $object_name)
|
892 |
+
{
|
893 |
+
if ($container_name == "") {
|
894 |
+
$this->error_str = "Container name not set.";
|
895 |
+
return 0;
|
896 |
+
}
|
897 |
+
|
898 |
+
if ($container_name != "0" and !isset($container_name)) {
|
899 |
+
$this->error_str = "Container name not set.";
|
900 |
+
return 0;
|
901 |
+
}
|
902 |
+
|
903 |
+
if (!$object_name) {
|
904 |
+
$this->error_str = "Object name not set.";
|
905 |
+
return 0;
|
906 |
+
}
|
907 |
+
|
908 |
+
$url_path = $this->_make_path("STORAGE", $container_name,$object_name);
|
909 |
+
$return_code = $this->_send_request("DEL_POST",$url_path,NULL,"DELETE");
|
910 |
+
if (!$return_code) {
|
911 |
+
$this->error_str .= ": Failed to obtain valid HTTP response.";
|
912 |
+
return 0;
|
913 |
+
}
|
914 |
+
if ($return_code == 404) {
|
915 |
+
$this->error_str = "Specified container did not exist to delete.";
|
916 |
+
}
|
917 |
+
if ($return_code != 204) {
|
918 |
+
$this->error_str = "Unexpected HTTP return code: $return_code.";
|
919 |
+
}
|
920 |
+
return $return_code;
|
921 |
+
}
|
922 |
+
|
923 |
+
function get_error()
|
924 |
+
{
|
925 |
+
return $this->error_str;
|
926 |
+
}
|
927 |
+
|
928 |
+
function setDebug($bool)
|
929 |
+
{
|
930 |
+
$this->dbug = $bool;
|
931 |
+
foreach ($this->connections as $k => $v) {
|
932 |
+
if (!is_null($v)) {
|
933 |
+
curl_setopt($this->connections[$k], CURLOPT_VERBOSE, $this->dbug);
|
934 |
+
}
|
935 |
+
}
|
936 |
+
}
|
937 |
+
|
938 |
+
function getCDNMUrl()
|
939 |
+
{
|
940 |
+
return $this->cdnm_url;
|
941 |
+
}
|
942 |
+
|
943 |
+
function getStorageUrl()
|
944 |
+
{
|
945 |
+
return $this->storage_url;
|
946 |
+
}
|
947 |
+
|
948 |
+
function getAuthToken()
|
949 |
+
{
|
950 |
+
return $this->auth_token;
|
951 |
+
}
|
952 |
+
|
953 |
+
function setCFAuth($cfs_auth, $servicenet=False)
|
954 |
+
{
|
955 |
+
if ($servicenet) {
|
956 |
+
$this->storage_url = "https://snet-" . substr($cfs_auth->storage_url, 8);
|
957 |
+
} else {
|
958 |
+
$this->storage_url = $cfs_auth->storage_url;
|
959 |
+
}
|
960 |
+
$this->auth_token = $cfs_auth->auth_token;
|
961 |
+
$this->cdnm_url = $cfs_auth->cdnm_url;
|
962 |
+
}
|
963 |
+
|
964 |
+
function setReadProgressFunc($func_name)
|
965 |
+
{
|
966 |
+
$this->_user_read_progress_callback_func = $func_name;
|
967 |
+
}
|
968 |
+
|
969 |
+
function setWriteProgressFunc($func_name)
|
970 |
+
{
|
971 |
+
$this->_user_write_progress_callback_func = $func_name;
|
972 |
+
}
|
973 |
+
|
974 |
+
private function _header_cb($ch, $header)
|
975 |
+
{
|
976 |
+
preg_match("/^HTTP\/1\.[01] (\d{3}) (.*)/", $header, $matches);
|
977 |
+
if (isset($matches[1])) {
|
978 |
+
$this->response_status = $matches[1];
|
979 |
+
}
|
980 |
+
if (isset($matches[2])) {
|
981 |
+
$this->response_reason = $matches[2];
|
982 |
+
}
|
983 |
+
if (stripos($header, CDN_ENABLED) === 0) {
|
984 |
+
$val = trim(substr($header, strlen(CDN_ENABLED)+1));
|
985 |
+
if (strtolower($val) == "true") {
|
986 |
+
$this->_cdn_enabled = True;
|
987 |
+
} elseif (strtolower($val) == "false") {
|
988 |
+
$this->_cdn_enabled = False;
|
989 |
+
} else {
|
990 |
+
$this->_cdn_enabled = NULL;
|
991 |
+
}
|
992 |
+
return strlen($header);
|
993 |
+
}
|
994 |
+
if (stripos($header, CDN_URI) === 0) {
|
995 |
+
$this->_cdn_uri = trim(substr($header, strlen(CDN_URI)+1));
|
996 |
+
return strlen($header);
|
997 |
+
}
|
998 |
+
if (stripos($header, CDN_TTL) === 0) {
|
999 |
+
$this->_cdn_ttl = trim(substr($header, strlen(CDN_TTL)+1))+0;
|
1000 |
+
return strlen($header);
|
1001 |
+
}
|
1002 |
+
if (stripos($header, CDN_LOG_RETENTION) === 0) {
|
1003 |
+
$this->_cdn_log_retention =
|
1004 |
+
trim(substr($header, strlen(CDN_LOG_RETENTION)+1)) == "True" ? True : False;
|
1005 |
+
return strlen($header);
|
1006 |
+
}
|
1007 |
+
|
1008 |
+
if (stripos($header, CDN_ACL_USER_AGENT) === 0) {
|
1009 |
+
$this->_cdn_acl_user_agent =
|
1010 |
+
trim(substr($header, strlen(CDN_ACL_USER_AGENT)+1));
|
1011 |
+
return strlen($header);
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
if (stripos($header, CDN_ACL_REFERRER) === 0) {
|
1015 |
+
$this->_cdn_acl_referrer =
|
1016 |
+
trim(substr($header, strlen(CDN_ACL_REFERRER)+1));
|
1017 |
+
return strlen($header);
|
1018 |
+
}
|
1019 |
+
|
1020 |
+
if (stripos($header, ACCOUNT_CONTAINER_COUNT) === 0) {
|
1021 |
+
$this->_account_container_count = (float) trim(substr($header,
|
1022 |
+
strlen(ACCOUNT_CONTAINER_COUNT)+1))+0;
|
1023 |
+
return strlen($header);
|
1024 |
+
}
|
1025 |
+
if (stripos($header, ACCOUNT_BYTES_USED) === 0) {
|
1026 |
+
$this->_account_bytes_used = (float) trim(substr($header,
|
1027 |
+
strlen(ACCOUNT_BYTES_USED)+1))+0;
|
1028 |
+
return strlen($header);
|
1029 |
+
}
|
1030 |
+
if (stripos($header, CONTAINER_OBJ_COUNT) === 0) {
|
1031 |
+
$this->_container_object_count = (float) trim(substr($header,
|
1032 |
+
strlen(CONTAINER_OBJ_COUNT)+1))+0;
|
1033 |
+
return strlen($header);
|
1034 |
+
}
|
1035 |
+
if (stripos($header, CONTAINER_BYTES_USED) === 0) {
|
1036 |
+
$this->_container_bytes_used = (float) trim(substr($header,
|
1037 |
+
strlen(CONTAINER_BYTES_USED)+1))+0;
|
1038 |
+
return strlen($header);
|
1039 |
+
}
|
1040 |
+
if (stripos($header, METADATA_HEADER) === 0) {
|
1041 |
+
# $header => X-Object-Meta-Foo: bar baz
|
1042 |
+
$temp = substr($header, strlen(METADATA_HEADER));
|
1043 |
+
# $temp => Foo: bar baz
|
1044 |
+
$parts = explode(":", $temp);
|
1045 |
+
# $parts[0] => Foo
|
1046 |
+
$val = substr(strstr($temp, ":"), 1);
|
1047 |
+
# $val => bar baz
|
1048 |
+
$this->_obj_metadata[$parts[0]] = trim($val);
|
1049 |
+
return strlen($header);
|
1050 |
+
}
|
1051 |
+
if (stripos($header, "ETag:") === 0) {
|
1052 |
+
# $header => ETag: abc123def456...
|
1053 |
+
$val = substr(strstr($header, ":"), 1);
|
1054 |
+
# $val => abc123def456...
|
1055 |
+
$this->_obj_etag = trim($val);
|
1056 |
+
return strlen($header);
|
1057 |
+
}
|
1058 |
+
if (stripos($header, "Last-Modified:") === 0) {
|
1059 |
+
$val = substr(strstr($header, ":"), 1);
|
1060 |
+
$this->_obj_last_modified = trim($val);
|
1061 |
+
return strlen($header);
|
1062 |
+
}
|
1063 |
+
if (stripos($header, "Content-Type:") === 0) {
|
1064 |
+
$val = substr(strstr($header, ":"), 1);
|
1065 |
+
$this->_obj_content_type = trim($val);
|
1066 |
+
return strlen($header);
|
1067 |
+
}
|
1068 |
+
if (stripos($header, "Content-Length:") === 0) {
|
1069 |
+
$val = substr(strstr($header, ":"), 1);
|
1070 |
+
$this->_obj_content_length = (float) trim($val)+0;
|
1071 |
+
return strlen($header);
|
1072 |
+
}
|
1073 |
+
return strlen($header);
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
private function _read_cb($ch, $fd, $length)
|
1077 |
+
{
|
1078 |
+
$data = fread($fd, $length);
|
1079 |
+
$len = strlen($data);
|
1080 |
+
if (isset($this->_user_write_progress_callback_func)) {
|
1081 |
+
call_user_func($this->_user_write_progress_callback_func, $len);
|
1082 |
+
}
|
1083 |
+
return $data;
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
private function _write_cb($ch, $data)
|
1087 |
+
{
|
1088 |
+
$dlen = strlen($data);
|
1089 |
+
switch ($this->_write_callback_type) {
|
1090 |
+
case "TEXT_LIST":
|
1091 |
+
$this->_return_list = $this->_return_list . $data;
|
1092 |
+
//= explode("\n",$data); # keep tab,space
|
1093 |
+
//his->_text_list[] = rtrim($data,"\n\r\x0B"); # keep tab,space
|
1094 |
+
break;
|
1095 |
+
case "OBJECT_STREAM":
|
1096 |
+
fwrite($this->_obj_write_resource, $data, $dlen);
|
1097 |
+
break;
|
1098 |
+
case "OBJECT_STRING":
|
1099 |
+
$this->_obj_write_string .= $data;
|
1100 |
+
break;
|
1101 |
+
}
|
1102 |
+
if (isset($this->_user_read_progress_callback_func)) {
|
1103 |
+
call_user_func($this->_user_read_progress_callback_func, $dlen);
|
1104 |
+
}
|
1105 |
+
return $dlen;
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
private function _auth_hdr_cb($ch, $header)
|
1109 |
+
{
|
1110 |
+
preg_match("/^HTTP\/1\.[01] (\d{3}) (.*)/", $header, $matches);
|
1111 |
+
if (isset($matches[1])) {
|
1112 |
+
$this->response_status = $matches[1];
|
1113 |
+
}
|
1114 |
+
if (isset($matches[2])) {
|
1115 |
+
$this->response_reason = $matches[2];
|
1116 |
+
}
|
1117 |
+
if (stripos($header, STORAGE_URL) === 0) {
|
1118 |
+
$this->storage_url = trim(substr($header, strlen(STORAGE_URL)+1));
|
1119 |
+
}
|
1120 |
+
if (stripos($header, CDNM_URL) === 0) {
|
1121 |
+
$this->cdnm_url = trim(substr($header, strlen(CDNM_URL)+1));
|
1122 |
+
}
|
1123 |
+
if (stripos($header, AUTH_TOKEN) === 0) {
|
1124 |
+
$this->auth_token = trim(substr($header, strlen(AUTH_TOKEN)+1));
|
1125 |
+
}
|
1126 |
+
if (stripos($header, AUTH_TOKEN_LEGACY) === 0) {
|
1127 |
+
$this->auth_token = trim(substr($header,strlen(AUTH_TOKEN_LEGACY)+1));
|
1128 |
+
}
|
1129 |
+
return strlen($header);
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
private function _make_headers($hdrs=NULL)
|
1133 |
+
{
|
1134 |
+
$new_headers = array();
|
1135 |
+
$has_stoken = False;
|
1136 |
+
$has_uagent = False;
|
1137 |
+
if (is_array($hdrs)) {
|
1138 |
+
foreach ($hdrs as $h => $v) {
|
1139 |
+
if (is_int($h)) {
|
1140 |
+
$parts = explode(":", $v);
|
1141 |
+
$header = $parts[0];
|
1142 |
+
$value = trim(substr(strstr($v, ":"), 1));
|
1143 |
+
} else {
|
1144 |
+
$header = $h;
|
1145 |
+
$value = trim($v);
|
1146 |
+
}
|
1147 |
+
|
1148 |
+
if (stripos($header, AUTH_TOKEN) === 0) {
|
1149 |
+
$has_stoken = True;
|
1150 |
+
}
|
1151 |
+
if (stripos($header, "user-agent") === 0) {
|
1152 |
+
$has_uagent = True;
|
1153 |
+
}
|
1154 |
+
$new_headers[] = $header . ": " . $value;
|
1155 |
+
}
|
1156 |
+
}
|
1157 |
+
if (!$has_stoken) {
|
1158 |
+
$new_headers[] = AUTH_TOKEN . ": " . $this->auth_token;
|
1159 |
+
}
|
1160 |
+
if (!$has_uagent) {
|
1161 |
+
$new_headers[] = "User-Agent: " . USER_AGENT;
|
1162 |
+
}
|
1163 |
+
return $new_headers;
|
1164 |
+
}
|
1165 |
+
|
1166 |
+
private function _init($conn_type, $force_new=False)
|
1167 |
+
{
|
1168 |
+
if (!array_key_exists($conn_type, $this->connections)) {
|
1169 |
+
$this->error_str = "Invalid CURL_XXX connection type";
|
1170 |
+
return False;
|
1171 |
+
}
|
1172 |
+
|
1173 |
+
if (is_null($this->connections[$conn_type]) || $force_new) {
|
1174 |
+
$ch = curl_init();
|
1175 |
+
} else {
|
1176 |
+
return;
|
1177 |
+
}
|
1178 |
+
|
1179 |
+
if ($this->dbug) { curl_setopt($ch, CURLOPT_VERBOSE, 1); }
|
1180 |
+
|
1181 |
+
if (!is_null($this->cabundle_path)) {
|
1182 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True);
|
1183 |
+
curl_setopt($ch, CURLOPT_CAINFO, $this->cabundle_path);
|
1184 |
+
}
|
1185 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, True);
|
1186 |
+
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
1187 |
+
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
|
1188 |
+
curl_setopt($ch, CURLOPT_MAXREDIRS, 4);
|
1189 |
+
curl_setopt($ch, CURLOPT_HEADER, 0);
|
1190 |
+
curl_setopt($ch, CURLOPT_HEADERFUNCTION, array(&$this, '_header_cb'));
|
1191 |
+
|
1192 |
+
if ($conn_type == "GET_CALL") {
|
1193 |
+
curl_setopt($ch, CURLOPT_WRITEFUNCTION, array(&$this, '_write_cb'));
|
1194 |
+
}
|
1195 |
+
|
1196 |
+
if ($conn_type == "PUT_OBJ") {
|
1197 |
+
curl_setopt($ch, CURLOPT_PUT, 1);
|
1198 |
+
curl_setopt($ch, CURLOPT_READFUNCTION, array(&$this, '_read_cb'));
|
1199 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
1200 |
+
}
|
1201 |
+
if ($conn_type == "HEAD") {
|
1202 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "HEAD");
|
1203 |
+
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
1204 |
+
}
|
1205 |
+
if ($conn_type == "PUT_CONT") {
|
1206 |
+
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
|
1207 |
+
curl_setopt($ch, CURLOPT_INFILESIZE, 0);
|
1208 |
+
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
1209 |
+
}
|
1210 |
+
if ($conn_type == "DEL_POST") {
|
1211 |
+
curl_setopt($ch, CURLOPT_NOBODY, 1);
|
1212 |
+
}
|
1213 |
+
$this->connections[$conn_type] = $ch;
|
1214 |
+
return;
|
1215 |
+
}
|
1216 |
+
|
1217 |
+
private function _reset_callback_vars()
|
1218 |
+
{
|
1219 |
+
$this->_text_list = array();
|
1220 |
+
$this->_return_list = NULL;
|
1221 |
+
$this->_account_container_count = 0;
|
1222 |
+
$this->_account_bytes_used = 0;
|
1223 |
+
$this->_container_object_count = 0;
|
1224 |
+
$this->_container_bytes_used = 0;
|
1225 |
+
$this->_obj_etag = NULL;
|
1226 |
+
$this->_obj_last_modified = NULL;
|
1227 |
+
$this->_obj_content_type = NULL;
|
1228 |
+
$this->_obj_content_length = NULL;
|
1229 |
+
$this->_obj_metadata = array();
|
1230 |
+
$this->_obj_write_string = "";
|
1231 |
+
$this->_cdn_enabled = NULL;
|
1232 |
+
$this->_cdn_uri = NULL;
|
1233 |
+
$this->_cdn_ttl = NULL;
|
1234 |
+
$this->response_status = 0;
|
1235 |
+
$this->response_reason = "";
|
1236 |
+
}
|
1237 |
+
|
1238 |
+
private function _make_path($t="STORAGE",$c=NULL,$o=NULL)
|
1239 |
+
{
|
1240 |
+
$path = array();
|
1241 |
+
switch ($t) {
|
1242 |
+
case "STORAGE":
|
1243 |
+
$path[] = $this->storage_url; break;
|
1244 |
+
case "CDN":
|
1245 |
+
$path[] = $this->cdnm_url; break;
|
1246 |
+
}
|
1247 |
+
if ($c == "0")
|
1248 |
+
$path[] = rawurlencode($c);
|
1249 |
+
|
1250 |
+
if ($c) {
|
1251 |
+
$path[] = rawurlencode($c);
|
1252 |
+
}
|
1253 |
+
if ($o) {
|
1254 |
+
# mimic Python''s urllib.quote() feature of a "safe" '/' character
|
1255 |
+
#
|
1256 |
+
$path[] = str_replace("%2F","/",rawurlencode($o));
|
1257 |
+
}
|
1258 |
+
return implode("/",$path);
|
1259 |
+
}
|
1260 |
+
|
1261 |
+
private function _metadata_headers(&$obj)
|
1262 |
+
{
|
1263 |
+
$hdrs = array();
|
1264 |
+
foreach ($obj->metadata as $k => $v) {
|
1265 |
+
if (strpos($k,":") !== False) {
|
1266 |
+
throw new SyntaxException(
|
1267 |
+
"Metadata keys cannot contain a ':' character.");
|
1268 |
+
}
|
1269 |
+
$k = trim($k);
|
1270 |
+
$key = sprintf("%s%s", METADATA_HEADER, $k);
|
1271 |
+
if (!array_key_exists($key, $hdrs)) {
|
1272 |
+
if (strlen($k) > 128 || strlen($v) > 256) {
|
1273 |
+
$this->error_str = "Metadata key or value exceeds ";
|
1274 |
+
$this->error_str .= "maximum length: ($k: $v)";
|
1275 |
+
return 0;
|
1276 |
+
}
|
1277 |
+
$hdrs[] = sprintf("%s%s: %s", METADATA_HEADER, $k, trim($v));
|
1278 |
+
}
|
1279 |
+
}
|
1280 |
+
return $hdrs;
|
1281 |
+
}
|
1282 |
+
|
1283 |
+
private function _send_request($conn_type, $url_path, $hdrs=NULL, $method="GET")
|
1284 |
+
{
|
1285 |
+
$this->_init($conn_type);
|
1286 |
+
$this->_reset_callback_vars();
|
1287 |
+
$headers = $this->_make_headers($hdrs);
|
1288 |
+
|
1289 |
+
if (gettype($this->connections[$conn_type]) == "unknown type")
|
1290 |
+
throw new ConnectionNotOpenException (
|
1291 |
+
"Connection is not open."
|
1292 |
+
);
|
1293 |
+
|
1294 |
+
switch ($method) {
|
1295 |
+
case "DELETE":
|
1296 |
+
curl_setopt($this->connections[$conn_type],
|
1297 |
+
CURLOPT_CUSTOMREQUEST, "DELETE");
|
1298 |
+
break;
|
1299 |
+
case "POST":
|
1300 |
+
curl_setopt($this->connections[$conn_type],
|
1301 |
+
CURLOPT_CUSTOMREQUEST, "POST");
|
1302 |
+
default:
|
1303 |
+
break;
|
1304 |
+
}
|
1305 |
+
|
1306 |
+
curl_setopt($this->connections[$conn_type],
|
1307 |
+
CURLOPT_HTTPHEADER, $headers);
|
1308 |
+
|
1309 |
+
curl_setopt($this->connections[$conn_type],
|
1310 |
+
CURLOPT_URL, $url_path);
|
1311 |
+
|
1312 |
+
if (!curl_exec($this->connections[$conn_type]) && curl_errno($this->connections[$conn_type]) !== 0) {
|
1313 |
+
$this->error_str = "(curl error: "
|
1314 |
+
. curl_errno($this->connections[$conn_type]) . ") ";
|
1315 |
+
$this->error_str .= curl_error($this->connections[$conn_type]);
|
1316 |
+
return False;
|
1317 |
+
}
|
1318 |
+
return curl_getinfo($this->connections[$conn_type], CURLINFO_HTTP_CODE);
|
1319 |
+
}
|
1320 |
+
|
1321 |
+
function close()
|
1322 |
+
{
|
1323 |
+
foreach ($this->connections as $cnx) {
|
1324 |
+
if (isset($cnx)) {
|
1325 |
+
curl_close($cnx);
|
1326 |
+
$this->connections[$cnx] = NULL;
|
1327 |
+
}
|
1328 |
+
}
|
1329 |
+
}
|
1330 |
+
private function create_array()
|
1331 |
+
{
|
1332 |
+
$this->_text_list = explode("\n",rtrim($this->_return_list,"\n\x0B"));
|
1333 |
+
return True;
|
1334 |
+
}
|
1335 |
+
|
1336 |
+
}
|
1337 |
+
|
1338 |
+
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
1339 |
+
|
1340 |
+
/*
|
1341 |
+
* Local variables:
|
1342 |
+
* tab-width: 4
|
1343 |
+
* c-basic-offset: 4
|
1344 |
+
* c-hanging-comment-ender-p: nil
|
1345 |
+
* End:
|
1346 |
+
*/
|
1347 |
+
?>
|
lib/CF/index.html
ADDED
File without changes
|
lib/CSSTidy/class.csstidy.php
CHANGED
@@ -1,999 +1,999 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* CSSTidy - CSS Parser and Optimiser
|
4 |
-
*
|
5 |
-
* CSS Parser class
|
6 |
-
*
|
7 |
-
* This file is part of CSSTidy.
|
8 |
-
*
|
9 |
-
* CSSTidy is free software; you can redistribute it and/or modify
|
10 |
-
* it under the terms of the GNU General Public License as published by
|
11 |
-
* the Free Software Foundation; either version 2 of the License, or
|
12 |
-
* (at your option) any later version.
|
13 |
-
*
|
14 |
-
* CSSTidy is distributed in the hope that it will be useful,
|
15 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
-
* GNU General Public License for more details.
|
18 |
-
*
|
19 |
-
* You should have received a copy of the GNU General Public License
|
20 |
-
* along with CSSTidy; if not, write to the Free Software
|
21 |
-
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
22 |
-
*
|
23 |
-
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
24 |
-
* @package csstidy
|
25 |
-
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
26 |
-
*/
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Various CSS data needed for correct optimisations etc.
|
30 |
-
*
|
31 |
-
* @version 1.3
|
32 |
-
*/
|
33 |
-
require('data.inc.php');
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Contains a class for printing CSS code
|
37 |
-
*
|
38 |
-
* @version 1.0
|
39 |
-
*/
|
40 |
-
require('class.csstidy_print.php');
|
41 |
-
|
42 |
-
/**
|
43 |
-
* Contains a class for optimising CSS code
|
44 |
-
*
|
45 |
-
* @version 1.0
|
46 |
-
*/
|
47 |
-
require('class.csstidy_optimise.php');
|
48 |
-
|
49 |
-
/**
|
50 |
-
* CSS Parser class
|
51 |
-
*
|
52 |
-
* This class represents a CSS parser which reads CSS code and saves it in an array.
|
53 |
-
* In opposite to most other CSS parsers, it does not use regular expressions and
|
54 |
-
* thus has full CSS2 support and a higher reliability.
|
55 |
-
* Additional to that it applies some optimisations and fixes to the CSS code.
|
56 |
-
* An online version should be available here: http://cdburnerxp.se/cssparse/css_optimiser.php
|
57 |
-
* @package csstidy
|
58 |
-
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
59 |
-
* @version 1.3
|
60 |
-
*/
|
61 |
-
class csstidy {
|
62 |
-
|
63 |
-
/**
|
64 |
-
* Saves the parsed CSS
|
65 |
-
* @var array
|
66 |
-
* @access public
|
67 |
-
*/
|
68 |
-
var $css = array();
|
69 |
-
|
70 |
-
/**
|
71 |
-
* Saves the parsed CSS (raw)
|
72 |
-
* @var array
|
73 |
-
* @access private
|
74 |
-
*/
|
75 |
-
var $tokens = array();
|
76 |
-
|
77 |
-
/**
|
78 |
-
* Printer class
|
79 |
-
* @see csstidy_print
|
80 |
-
* @var object
|
81 |
-
* @access public
|
82 |
-
*/
|
83 |
-
var $print;
|
84 |
-
|
85 |
-
/**
|
86 |
-
* Optimiser class
|
87 |
-
* @see csstidy_optimise
|
88 |
-
* @var object
|
89 |
-
* @access private
|
90 |
-
*/
|
91 |
-
var $optimise;
|
92 |
-
|
93 |
-
/**
|
94 |
-
* Saves the CSS charset (@charset)
|
95 |
-
* @var string
|
96 |
-
* @access private
|
97 |
-
*/
|
98 |
-
var $charset = '';
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Saves all @import URLs
|
102 |
-
* @var array
|
103 |
-
* @access private
|
104 |
-
*/
|
105 |
-
var $import = array();
|
106 |
-
|
107 |
-
/**
|
108 |
-
* Saves the namespace
|
109 |
-
* @var string
|
110 |
-
* @access private
|
111 |
-
*/
|
112 |
-
var $namespace = '';
|
113 |
-
|
114 |
-
/**
|
115 |
-
* Contains the version of csstidy
|
116 |
-
* @var string
|
117 |
-
* @access private
|
118 |
-
*/
|
119 |
-
var $version = '1.3';
|
120 |
-
|
121 |
-
/**
|
122 |
-
* Stores the settings
|
123 |
-
* @var array
|
124 |
-
* @access private
|
125 |
-
*/
|
126 |
-
var $settings = array();
|
127 |
-
|
128 |
-
/**
|
129 |
-
* Saves the parser-status.
|
130 |
-
*
|
131 |
-
* Possible values:
|
132 |
-
* - is = in selector
|
133 |
-
* - ip = in property
|
134 |
-
* - iv = in value
|
135 |
-
* - instr = in string (started at " or ' or ( )
|
136 |
-
* - ic = in comment (ignore everything)
|
137 |
-
* - at = in @-block
|
138 |
-
*
|
139 |
-
* @var string
|
140 |
-
* @access private
|
141 |
-
*/
|
142 |
-
var $status = 'is';
|
143 |
-
|
144 |
-
|
145 |
-
/**
|
146 |
-
* Saves the current at rule (@media)
|
147 |
-
* @var string
|
148 |
-
* @access private
|
149 |
-
*/
|
150 |
-
var $at = '';
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Saves the current selector
|
154 |
-
* @var string
|
155 |
-
* @access private
|
156 |
-
*/
|
157 |
-
var $selector = '';
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Saves the current property
|
161 |
-
* @var string
|
162 |
-
* @access private
|
163 |
-
*/
|
164 |
-
var $property = '';
|
165 |
-
|
166 |
-
/**
|
167 |
-
* Saves the position of , in selectors
|
168 |
-
* @var array
|
169 |
-
* @access private
|
170 |
-
*/
|
171 |
-
var $sel_separate = array();
|
172 |
-
|
173 |
-
/**
|
174 |
-
* Saves the current value
|
175 |
-
* @var string
|
176 |
-
* @access private
|
177 |
-
*/
|
178 |
-
var $value = '';
|
179 |
-
|
180 |
-
/**
|
181 |
-
* Saves the current sub-value
|
182 |
-
*
|
183 |
-
* Example for a subvalue:
|
184 |
-
* background:url(foo.png) red no-repeat;
|
185 |
-
* "url(foo.png)", "red", and "no-repeat" are subvalues,
|
186 |
-
* seperated by whitespace
|
187 |
-
* @var string
|
188 |
-
* @access private
|
189 |
-
*/
|
190 |
-
var $sub_value = '';
|
191 |
-
|
192 |
-
/**
|
193 |
-
* Array which saves all subvalues for a property.
|
194 |
-
* @var array
|
195 |
-
* @see sub_value
|
196 |
-
* @access private
|
197 |
-
*/
|
198 |
-
var $sub_value_arr = array();
|
199 |
-
|
200 |
-
/**
|
201 |
-
* Saves the char which opened the last string
|
202 |
-
* @var string
|
203 |
-
* @access private
|
204 |
-
*/
|
205 |
-
var $str_char = '';
|
206 |
-
var $cur_string = '';
|
207 |
-
|
208 |
-
/**
|
209 |
-
* Status from which the parser switched to ic or instr
|
210 |
-
* @var string
|
211 |
-
* @access private
|
212 |
-
*/
|
213 |
-
var $from = '';
|
214 |
-
|
215 |
-
/**
|
216 |
-
* Variable needed to manage string-in-strings, for example url("foo.png")
|
217 |
-
* @var string
|
218 |
-
* @access private
|
219 |
-
*/
|
220 |
-
var $str_in_str = false;
|
221 |
-
|
222 |
-
/**
|
223 |
-
* =true if in invalid at-rule
|
224 |
-
* @var bool
|
225 |
-
* @access private
|
226 |
-
*/
|
227 |
-
var $invalid_at = false;
|
228 |
-
|
229 |
-
/**
|
230 |
-
* =true if something has been added to the current selector
|
231 |
-
* @var bool
|
232 |
-
* @access private
|
233 |
-
*/
|
234 |
-
var $added = false;
|
235 |
-
|
236 |
-
/**
|
237 |
-
* Array which saves the message log
|
238 |
-
* @var array
|
239 |
-
* @access private
|
240 |
-
*/
|
241 |
-
var $log = array();
|
242 |
-
|
243 |
-
/**
|
244 |
-
* Saves the line number
|
245 |
-
* @var integer
|
246 |
-
* @access private
|
247 |
-
*/
|
248 |
-
var $line = 1;
|
249 |
-
|
250 |
-
/**
|
251 |
-
* Loads standard template and sets default settings
|
252 |
-
* @access private
|
253 |
-
* @version 1.3
|
254 |
-
*/
|
255 |
-
function csstidy()
|
256 |
-
{
|
257 |
-
$this->settings['remove_bslash'] = true;
|
258 |
-
$this->settings['compress_colors'] = true;
|
259 |
-
$this->settings['compress_font-weight'] = true;
|
260 |
-
$this->settings['lowercase_s'] = false;
|
261 |
-
$this->settings['optimise_shorthands'] = 1;
|
262 |
-
$this->settings['remove_last_;'] = false;
|
263 |
-
$this->settings['case_properties'] = 1;
|
264 |
-
$this->settings['sort_properties'] = false;
|
265 |
-
$this->settings['sort_selectors'] = false;
|
266 |
-
$this->settings['merge_selectors'] = 2;
|
267 |
-
$this->settings['discard_invalid_properties'] = false;
|
268 |
-
$this->settings['css_level'] = 'CSS2.1';
|
269 |
-
$this->settings['preserve_css'] = false;
|
270 |
-
$this->settings['timestamp'] = false;
|
271 |
-
|
272 |
-
$this->load_template('default');
|
273 |
-
$this->print = new csstidy_print($this);
|
274 |
-
$this->optimise = new csstidy_optimise($this);
|
275 |
-
}
|
276 |
-
|
277 |
-
/**
|
278 |
-
* Get the value of a setting.
|
279 |
-
* @param string $setting
|
280 |
-
* @access public
|
281 |
-
* @return mixed
|
282 |
-
* @version 1.0
|
283 |
-
*/
|
284 |
-
function get_cfg($setting)
|
285 |
-
{
|
286 |
-
if(isset($this->settings[$setting]))
|
287 |
-
{
|
288 |
-
return $this->settings[$setting];
|
289 |
-
}
|
290 |
-
return false;
|
291 |
-
}
|
292 |
-
|
293 |
-
/**
|
294 |
-
* Set the value of a setting.
|
295 |
-
* @param string $setting
|
296 |
-
* @param mixed $value
|
297 |
-
* @access public
|
298 |
-
* @return bool
|
299 |
-
* @version 1.0
|
300 |
-
*/
|
301 |
-
function set_cfg($setting,$value)
|
302 |
-
{
|
303 |
-
if(isset($this->settings[$setting]) && $value !== '')
|
304 |
-
{
|
305 |
-
$this->settings[$setting] = $value;
|
306 |
-
return true;
|
307 |
-
}
|
308 |
-
return false;
|
309 |
-
}
|
310 |
-
|
311 |
-
/**
|
312 |
-
* Adds a token to $this->tokens
|
313 |
-
* @param mixed $type
|
314 |
-
* @param string $data
|
315 |
-
* @param bool $do add a token even if preserve_css is off
|
316 |
-
* @access private
|
317 |
-
* @version 1.0
|
318 |
-
*/
|
319 |
-
function _add_token($type, $data, $do = false) {
|
320 |
-
if($this->get_cfg('preserve_css') || $do) {
|
321 |
-
$this->tokens[] = array($type, ($type == COMMENT) ? $data : trim($data));
|
322 |
-
}
|
323 |
-
}
|
324 |
-
|
325 |
-
/**
|
326 |
-
* Add a message to the message log
|
327 |
-
* @param string $message
|
328 |
-
* @param string $type
|
329 |
-
* @param integer $line
|
330 |
-
* @access private
|
331 |
-
* @version 1.0
|
332 |
-
*/
|
333 |
-
function log($message,$type,$line = -1)
|
334 |
-
{
|
335 |
-
if($line === -1)
|
336 |
-
{
|
337 |
-
$line = $this->line;
|
338 |
-
}
|
339 |
-
$line = intval($line);
|
340 |
-
$add = array('m' => $message, 't' => $type);
|
341 |
-
if(!isset($this->log[$line]) || !in_array($add,$this->log[$line]))
|
342 |
-
{
|
343 |
-
$this->log[$line][] = $add;
|
344 |
-
}
|
345 |
-
}
|
346 |
-
|
347 |
-
/**
|
348 |
-
* Parse unicode notations and find a replacement character
|
349 |
-
* @param string $string
|
350 |
-
* @param integer $i
|
351 |
-
* @access private
|
352 |
-
* @return string
|
353 |
-
* @version 1.2
|
354 |
-
*/
|
355 |
-
function _unicode(&$string, &$i)
|
356 |
-
{
|
357 |
-
++$i;
|
358 |
-
$add = '';
|
359 |
-
$tokens =& $GLOBALS['csstidy']['tokens'];
|
360 |
-
$replaced = false;
|
361 |
-
|
362 |
-
while($i < strlen($string) && (ctype_xdigit($string{$i}) || ctype_space($string{$i})) && strlen($add) < 6)
|
363 |
-
{
|
364 |
-
$add .= $string{$i};
|
365 |
-
|
366 |
-
if(ctype_space($string{$i})) {
|
367 |
-
break;
|
368 |
-
}
|
369 |
-
$i++;
|
370 |
-
}
|
371 |
-
|
372 |
-
if(hexdec($add) > 47 && hexdec($add) < 58 || hexdec($add) > 64 && hexdec($add) < 91 || hexdec($add) > 96 && hexdec($add) < 123)
|
373 |
-
{
|
374 |
-
$this->log('Replaced unicode notation: Changed \\'. $add .' to ' . chr(hexdec($add)),'Information');
|
375 |
-
$add = chr(hexdec($add));
|
376 |
-
$replaced = true;
|
377 |
-
}
|
378 |
-
else {
|
379 |
-
$add = trim('\\'.$add);
|
380 |
-
}
|
381 |
-
|
382 |
-
if(@ctype_xdigit($string{$i+1}) && ctype_space($string{$i})
|
383 |
-
&& !$replaced || !ctype_space($string{$i})) {
|
384 |
-
$i--;
|
385 |
-
}
|
386 |
-
|
387 |
-
if($add != '\\' || !$this->get_cfg('remove_bslash') || strpos($tokens, $string{$i+1}) !== false) {
|
388 |
-
return $add;
|
389 |
-
}
|
390 |
-
|
391 |
-
if($add == '\\') {
|
392 |
-
$this->log('Removed unnecessary backslash','Information');
|
393 |
-
}
|
394 |
-
return '';
|
395 |
-
}
|
396 |
-
|
397 |
-
/**
|
398 |
-
* Loads a new template
|
399 |
-
* @param string $content either filename (if $from_file == true), content of a template file, "high_compression", "highest_compression", "low_compression", or "default"
|
400 |
-
* @param bool $from_file uses $content as filename if true
|
401 |
-
* @access public
|
402 |
-
* @version 1.1
|
403 |
-
* @see http://csstidy.sourceforge.net/templates.php
|
404 |
-
*/
|
405 |
-
function load_template($content, $from_file=true)
|
406 |
-
{
|
407 |
-
$predefined_templates =& $GLOBALS['csstidy']['predefined_templates'];
|
408 |
-
if($content == 'high_compression' || $content == 'default' || $content == 'highest_compression' || $content == 'low_compression')
|
409 |
-
{
|
410 |
-
$this->template = $predefined_templates[$content];
|
411 |
-
return;
|
412 |
-
}
|
413 |
-
|
414 |
-
if($from_file)
|
415 |
-
{
|
416 |
-
$content = strip_tags(file_get_contents($content),'<span>');
|
417 |
-
}
|
418 |
-
$content = str_replace("\r\n","\n",$content); // Unify newlines (because the output also only uses \n)
|
419 |
-
$template = explode('|',$content);
|
420 |
-
|
421 |
-
for ($i = 0; $i < count($template); $i++ )
|
422 |
-
{
|
423 |
-
$this->template[$i] = $template[$i];
|
424 |
-
}
|
425 |
-
}
|
426 |
-
|
427 |
-
/**
|
428 |
-
* Starts parsing from URL
|
429 |
-
* @param string $url
|
430 |
-
* @access public
|
431 |
-
* @version 1.0
|
432 |
-
*/
|
433 |
-
function parse_from_url($url)
|
434 |
-
{
|
435 |
-
return $this->parse(@file_get_contents($url));
|
436 |
-
}
|
437 |
-
|
438 |
-
/**
|
439 |
-
* Checks if there is a token at the current position
|
440 |
-
* @param string $string
|
441 |
-
* @param integer $i
|
442 |
-
* @access public
|
443 |
-
* @version 1.11
|
444 |
-
*/
|
445 |
-
function is_token(&$string, $i)
|
446 |
-
{
|
447 |
-
$tokens =& $GLOBALS['csstidy']['tokens'];
|
448 |
-
return (strpos($tokens, $string{$i}) !== false && !csstidy::escaped($string,$i));
|
449 |
-
}
|
450 |
-
|
451 |
-
|
452 |
-
/**
|
453 |
-
* Parses CSS in $string. The code is saved as array in $this->css
|
454 |
-
* @param string $string the CSS code
|
455 |
-
* @access public
|
456 |
-
* @return bool
|
457 |
-
* @version 1.1
|
458 |
-
*/
|
459 |
-
function parse($string) {
|
460 |
-
// PHP bug? Settings need to be refreshed in PHP4
|
461 |
-
$this->print = new csstidy_print($this);
|
462 |
-
$this->optimise = new csstidy_optimise($this);
|
463 |
-
|
464 |
-
$all_properties =& $GLOBALS['csstidy']['all_properties'];
|
465 |
-
$at_rules =& $GLOBALS['csstidy']['at_rules'];
|
466 |
-
|
467 |
-
$this->css = array();
|
468 |
-
$this->print->input_css = $string;
|
469 |
-
$string = str_replace("\r\n","\n",$string) . ' ';
|
470 |
-
$cur_comment = '';
|
471 |
-
|
472 |
-
for ($i = 0, $size = strlen($string); $i < $size; $i++ )
|
473 |
-
{
|
474 |
-
if($string{$i} == "\n" || $string{$i} == "\r")
|
475 |
-
{
|
476 |
-
++$this->line;
|
477 |
-
}
|
478 |
-
|
479 |
-
switch($this->status)
|
480 |
-
{
|
481 |
-
/* Case in at-block */
|
482 |
-
case 'at':
|
483 |
-
if(csstidy::is_token($string,$i))
|
484 |
-
{
|
485 |
-
if($string{$i} == '/' && @$string{$i+1} == '*')
|
486 |
-
{
|
487 |
-
$this->status = 'ic'; ++$i;
|
488 |
-
$this->from = 'at';
|
489 |
-
}
|
490 |
-
elseif($string{$i} == '{')
|
491 |
-
{
|
492 |
-
$this->status = 'is';
|
493 |
-
$this->_add_token(AT_START, $this->at);
|
494 |
-
}
|
495 |
-
elseif($string{$i} == ',')
|
496 |
-
{
|
497 |
-
$this->at = trim($this->at).',';
|
498 |
-
}
|
499 |
-
elseif($string{$i} == '\\')
|
500 |
-
{
|
501 |
-
$this->at .= $this->_unicode($string,$i);
|
502 |
-
}
|
503 |
-
}
|
504 |
-
else
|
505 |
-
{
|
506 |
-
$lastpos = strlen($this->at)-1;
|
507 |
-
if(!( (ctype_space($this->at{$lastpos}) || csstidy::is_token($this->at,$lastpos) && $this->at{$lastpos} == ',') && ctype_space($string{$i})))
|
508 |
-
{
|
509 |
-
$this->at .= $string{$i};
|
510 |
-
}
|
511 |
-
}
|
512 |
-
break;
|
513 |
-
|
514 |
-
/* Case in-selector */
|
515 |
-
case 'is':
|
516 |
-
if(csstidy::is_token($string,$i))
|
517 |
-
{
|
518 |
-
if($string{$i} == '/' && @$string{$i+1} == '*' && trim($this->selector) == '')
|
519 |
-
{
|
520 |
-
$this->status = 'ic'; ++$i;
|
521 |
-
$this->from = 'is';
|
522 |
-
}
|
523 |
-
elseif($string{$i} == '@' && trim($this->selector) == '')
|
524 |
-
{
|
525 |
-
// Check for at-rule
|
526 |
-
$this->invalid_at = true;
|
527 |
-
foreach($at_rules as $name => $type)
|
528 |
-
{
|
529 |
-
if(!strcasecmp(substr($string,$i+1,strlen($name)),$name))
|
530 |
-
{
|
531 |
-
($type == 'at') ? $this->at = '@'.$name : $this->selector = '@'.$name;
|
532 |
-
$this->status = $type;
|
533 |
-
$i += strlen($name);
|
534 |
-
$this->invalid_at = false;
|
535 |
-
}
|
536 |
-
}
|
537 |
-
|
538 |
-
if($this->invalid_at)
|
539 |
-
{
|
540 |
-
$this->selector = '@';
|
541 |
-
$invalid_at_name = '';
|
542 |
-
for($j = $i+1; $j < $size; ++$j)
|
543 |
-
{
|
544 |
-
if(!ctype_alpha($string{$j}))
|
545 |
-
{
|
546 |
-
break;
|
547 |
-
}
|
548 |
-
$invalid_at_name .= $string{$j};
|
549 |
-
}
|
550 |
-
$this->log('Invalid @-rule: '.$invalid_at_name.' (removed)','Warning');
|
551 |
-
}
|
552 |
-
}
|
553 |
-
elseif(($string{$i} == '"' || $string{$i} == "'"))
|
554 |
-
{
|
555 |
-
$this->cur_string = $string{$i};
|
556 |
-
$this->status = 'instr';
|
557 |
-
$this->str_char = $string{$i};
|
558 |
-
$this->from = 'is';
|
559 |
-
}
|
560 |
-
elseif($this->invalid_at && $string{$i} == ';')
|
561 |
-
{
|
562 |
-
$this->invalid_at = false;
|
563 |
-
$this->status = 'is';
|
564 |
-
}
|
565 |
-
elseif($string{$i} == '{')
|
566 |
-
{
|
567 |
-
$this->status = 'ip';
|
568 |
-
$this->_add_token(SEL_START, $this->selector);
|
569 |
-
$this->added = false;
|
570 |
-
}
|
571 |
-
elseif($string{$i} == '}')
|
572 |
-
{
|
573 |
-
$this->_add_token(AT_END, $this->at);
|
574 |
-
$this->at = '';
|
575 |
-
$this->selector = '';
|
576 |
-
$this->sel_separate = array();
|
577 |
-
}
|
578 |
-
elseif($string{$i} == ',')
|
579 |
-
{
|
580 |
-
$this->selector = trim($this->selector).',';
|
581 |
-
$this->sel_separate[] = strlen($this->selector);
|
582 |
-
}
|
583 |
-
elseif($string{$i} == '\\')
|
584 |
-
{
|
585 |
-
$this->selector .= $this->_unicode($string,$i);
|
586 |
-
}
|
587 |
-
// remove unnecessary universal selector, FS#147
|
588 |
-
else if(!($string{$i} == '*' && @in_array($string{$i+1}, array('.', '#', '[', ':')))) {
|
589 |
-
$this->selector .= $string{$i};
|
590 |
-
}
|
591 |
-
}
|
592 |
-
else
|
593 |
-
{
|
594 |
-
$lastpos = strlen($this->selector)-1;
|
595 |
-
if($lastpos == -1 || !( (ctype_space($this->selector{$lastpos}) || csstidy::is_token($this->selector,$lastpos) && $this->selector{$lastpos} == ',') && ctype_space($string{$i})))
|
596 |
-
{
|
597 |
-
$this->selector .= $string{$i};
|
598 |
-
}
|
599 |
-
}
|
600 |
-
break;
|
601 |
-
|
602 |
-
/* Case in-property */
|
603 |
-
case 'ip':
|
604 |
-
if(csstidy::is_token($string,$i))
|
605 |
-
{
|
606 |
-
if(($string{$i} == ':' || $string{$i} == '=') && $this->property != '')
|
607 |
-
{
|
608 |
-
$this->status = 'iv';
|
609 |
-
if(!$this->get_cfg('discard_invalid_properties') || csstidy::property_is_valid($this->property)) {
|
610 |
-
$this->_add_token(PROPERTY, $this->property);
|
611 |
-
}
|
612 |
-
}
|
613 |
-
elseif($string{$i} == '/' && @$string{$i+1} == '*' && $this->property == '')
|
614 |
-
{
|
615 |
-
$this->status = 'ic'; ++$i;
|
616 |
-
$this->from = 'ip';
|
617 |
-
}
|
618 |
-
elseif($string{$i} == '}')
|
619 |
-
{
|
620 |
-
$this->explode_selectors();
|
621 |
-
$this->status = 'is';
|
622 |
-
$this->invalid_at = false;
|
623 |
-
$this->_add_token(SEL_END, $this->selector);
|
624 |
-
$this->selector = '';
|
625 |
-
$this->property = '';
|
626 |
-
}
|
627 |
-
elseif($string{$i} == ';')
|
628 |
-
{
|
629 |
-
$this->property = '';
|
630 |
-
}
|
631 |
-
elseif($string{$i} == '\\')
|
632 |
-
{
|
633 |
-
$this->property .= $this->_unicode($string,$i);
|
634 |
-
}
|
635 |
-
}
|
636 |
-
elseif(!ctype_space($string{$i}))
|
637 |
-
{
|
638 |
-
$this->property .= $string{$i};
|
639 |
-
}
|
640 |
-
break;
|
641 |
-
|
642 |
-
/* Case in-value */
|
643 |
-
case 'iv':
|
644 |
-
$pn = (($string{$i} == "\n" || $string{$i} == "\r") && $this->property_is_next($string,$i+1) || $i == strlen($string)-1);
|
645 |
-
if(csstidy::is_token($string,$i) || $pn)
|
646 |
-
{
|
647 |
-
if($string{$i} == '/' && @$string{$i+1} == '*')
|
648 |
-
{
|
649 |
-
$this->status = 'ic'; ++$i;
|
650 |
-
$this->from = 'iv';
|
651 |
-
}
|
652 |
-
elseif(($string{$i} == '"' || $string{$i} == "'" || $string{$i} == '('))
|
653 |
-
{
|
654 |
-
$this->cur_string = $string{$i};
|
655 |
-
$this->str_char = ($string{$i} == '(') ? ')' : $string{$i};
|
656 |
-
$this->status = 'instr';
|
657 |
-
$this->from = 'iv';
|
658 |
-
}
|
659 |
-
elseif($string{$i} == ',')
|
660 |
-
{
|
661 |
-
$this->sub_value = trim($this->sub_value).',';
|
662 |
-
}
|
663 |
-
elseif($string{$i} == '\\')
|
664 |
-
{
|
665 |
-
$this->sub_value .= $this->_unicode($string,$i);
|
666 |
-
}
|
667 |
-
elseif($string{$i} == ';' || $pn)
|
668 |
-
{
|
669 |
-
if($this->selector{0} == '@' && isset($at_rules[substr($this->selector,1)]) && $at_rules[substr($this->selector,1)] == 'iv')
|
670 |
-
{
|
671 |
-
$this->sub_value_arr[] = trim($this->sub_value);
|
672 |
-
|
673 |
-
$this->status = 'is';
|
674 |
-
|
675 |
-
switch($this->selector)
|
676 |
-
{
|
677 |
-
case '@charset': $this->charset = $this->sub_value_arr[0]; break;
|
678 |
-
case '@namespace': $this->namespace = implode(' ',$this->sub_value_arr); break;
|
679 |
-
case '@import': $this->import[] = implode(' ',$this->sub_value_arr); break;
|
680 |
-
}
|
681 |
-
|
682 |
-
$this->sub_value_arr = array();
|
683 |
-
$this->sub_value = '';
|
684 |
-
$this->selector = '';
|
685 |
-
$this->sel_separate = array();
|
686 |
-
}
|
687 |
-
else
|
688 |
-
{
|
689 |
-
$this->status = 'ip';
|
690 |
-
}
|
691 |
-
}
|
692 |
-
elseif($string{$i} != '}')
|
693 |
-
{
|
694 |
-
$this->sub_value .= $string{$i};
|
695 |
-
}
|
696 |
-
if(($string{$i} == '}' || $string{$i} == ';' || $pn) && !empty($this->selector))
|
697 |
-
{
|
698 |
-
if($this->at == '')
|
699 |
-
{
|
700 |
-
$this->at = DEFAULT_AT;
|
701 |
-
}
|
702 |
-
|
703 |
-
// case settings
|
704 |
-
if($this->get_cfg('lowercase_s'))
|
705 |
-
{
|
706 |
-
$this->selector = strtolower($this->selector);
|
707 |
-
}
|
708 |
-
$this->property = strtolower($this->property);
|
709 |
-
|
710 |
-
$this->optimise->subvalue();
|
711 |
-
if($this->sub_value != '') {
|
712 |
-
$this->sub_value_arr[] = $this->sub_value;
|
713 |
-
$this->sub_value = '';
|
714 |
-
}
|
715 |
-
|
716 |
-
$this->value = implode(' ',$this->sub_value_arr);
|
717 |
-
|
718 |
-
$this->selector = trim($this->selector);
|
719 |
-
|
720 |
-
$this->optimise->value();
|
721 |
-
|
722 |
-
$valid = csstidy::property_is_valid($this->property);
|
723 |
-
if((!$this->invalid_at || $this->get_cfg('preserve_css')) && (!$this->get_cfg('discard_invalid_properties') || $valid))
|
724 |
-
{
|
725 |
-
$this->css_add_property($this->at,$this->selector,$this->property,$this->value);
|
726 |
-
$this->_add_token(VALUE, $this->value);
|
727 |
-
$this->optimise->shorthands();
|
728 |
-
}
|
729 |
-
if(!$valid)
|
730 |
-
{
|
731 |
-
if($this->get_cfg('discard_invalid_properties'))
|
732 |
-
{
|
733 |
-
$this->log('Removed invalid property: '.$this->property,'Warning');
|
734 |
-
}
|
735 |
-
else
|
736 |
-
{
|
737 |
-
$this->log('Invalid property in '.strtoupper($this->get_cfg('css_level')).': '.$this->property,'Warning');
|
738 |
-
}
|
739 |
-
}
|
740 |
-
|
741 |
-
$this->property = '';
|
742 |
-
$this->sub_value_arr = array();
|
743 |
-
$this->value = '';
|
744 |
-
}
|
745 |
-
if($string{$i} == '}')
|
746 |
-
{
|
747 |
-
$this->explode_selectors();
|
748 |
-
$this->_add_token(SEL_END, $this->selector);
|
749 |
-
$this->status = 'is';
|
750 |
-
$this->invalid_at = false;
|
751 |
-
$this->selector = '';
|
752 |
-
}
|
753 |
-
}
|
754 |
-
elseif(!$pn)
|
755 |
-
{
|
756 |
-
$this->sub_value .= $string{$i};
|
757 |
-
|
758 |
-
if(ctype_space($string{$i}))
|
759 |
-
{
|
760 |
-
$this->optimise->subvalue();
|
761 |
-
if($this->sub_value != '') {
|
762 |
-
$this->sub_value_arr[] = $this->sub_value;
|
763 |
-
$this->sub_value = '';
|
764 |
-
}
|
765 |
-
}
|
766 |
-
}
|
767 |
-
break;
|
768 |
-
|
769 |
-
/* Case in string */
|
770 |
-
case 'instr':
|
771 |
-
if($this->str_char == ')' && ($string{$i} == '"' || $string{$i} == '\'') && !$this->str_in_str && !csstidy::escaped($string,$i))
|
772 |
-
{
|
773 |
-
$this->str_in_str = true;
|
774 |
-
}
|
775 |
-
elseif($this->str_char == ')' && ($string{$i} == '"' || $string{$i} == '\'') && $this->str_in_str && !csstidy::escaped($string,$i))
|
776 |
-
{
|
777 |
-
$this->str_in_str = false;
|
778 |
-
}
|
779 |
-
$temp_add = $string{$i}; // ...and no not-escaped backslash at the previous position
|
780 |
-
if( ($string{$i} == "\n" || $string{$i} == "\r") && !($string{$i-1} == '\\' && !csstidy::escaped($string,$i-1)) )
|
781 |
-
{
|
782 |
-
$temp_add = "\\A ";
|
783 |
-
$this->log('Fixed incorrect newline in string','Warning');
|
784 |
-
}
|
785 |
-
if (!($this->str_char == ')' && in_array($string{$i}, $GLOBALS['csstidy']['whitespace']) && !$this->str_in_str)) {
|
786 |
-
$this->cur_string .= $temp_add;
|
787 |
-
}
|
788 |
-
if($string{$i} == $this->str_char && !csstidy::escaped($string,$i) && !$this->str_in_str)
|
789 |
-
{
|
790 |
-
$this->status = $this->from;
|
791 |
-
if (!preg_match('|[' . implode('', $GLOBALS['csstidy']['whitespace']) . ']|uis', $this->cur_string) && $this->property != 'content') {
|
792 |
-
if ($this->str_char == '"' || $this->str_char == '\'') {
|
793 |
-
$this->cur_string = substr($this->cur_string, 1, -1);
|
794 |
-
} else if (strlen($this->cur_string) > 3 && ($this->cur_string[1] == '"' || $this->cur_string[1] == '\'')) /* () */ {
|
795 |
-
$this->cur_string = $this->cur_string[0] . substr($this->cur_string, 2, -2) . substr($this->cur_string, -1);
|
796 |
-
}
|
797 |
-
}
|
798 |
-
if($this->from == 'iv')
|
799 |
-
{
|
800 |
-
$this->sub_value .= $this->cur_string;
|
801 |
-
}
|
802 |
-
elseif($this->from == 'is')
|
803 |
-
{
|
804 |
-
$this->selector .= $this->cur_string;
|
805 |
-
}
|
806 |
-
}
|
807 |
-
break;
|
808 |
-
|
809 |
-
/* Case in-comment */
|
810 |
-
case 'ic':
|
811 |
-
if($string{$i} == '*' && $string{$i+1} == '/')
|
812 |
-
{
|
813 |
-
$this->status = $this->from;
|
814 |
-
$i++;
|
815 |
-
$this->_add_token(COMMENT, $cur_comment);
|
816 |
-
$cur_comment = '';
|
817 |
-
}
|
818 |
-
else
|
819 |
-
{
|
820 |
-
$cur_comment .= $string{$i};
|
821 |
-
}
|
822 |
-
break;
|
823 |
-
}
|
824 |
-
}
|
825 |
-
|
826 |
-
$this->optimise->postparse();
|
827 |
-
|
828 |
-
$this->print->_reset();
|
829 |
-
|
830 |
-
return !(empty($this->css) && empty($this->import) && empty($this->charset) && empty($this->tokens) && empty($this->namespace));
|
831 |
-
}
|
832 |
-
|
833 |
-
/**
|
834 |
-
* Explodes selectors
|
835 |
-
* @access private
|
836 |
-
* @version 1.0
|
837 |
-
*/
|
838 |
-
function explode_selectors()
|
839 |
-
{
|
840 |
-
// Explode multiple selectors
|
841 |
-
if($this->get_cfg('merge_selectors') == 1)
|
842 |
-
{
|
843 |
-
$new_sels = array();
|
844 |
-
$lastpos = 0;
|
845 |
-
$this->sel_separate[] = strlen($this->selector);
|
846 |
-
foreach($this->sel_separate as $num => $pos)
|
847 |
-
{
|
848 |
-
if($num == count($this->sel_separate)-1) {
|
849 |
-
$pos += 1;
|
850 |
-
}
|
851 |
-
|
852 |
-
$new_sels[] = substr($this->selector,$lastpos,$pos-$lastpos-1);
|
853 |
-
$lastpos = $pos;
|
854 |
-
}
|
855 |
-
|
856 |
-
if(count($new_sels) > 1)
|
857 |
-
{
|
858 |
-
foreach($new_sels as $selector)
|
859 |
-
{
|
860 |
-
$this->merge_css_blocks($this->at,$selector,$this->css[$this->at][$this->selector]);
|
861 |
-
}
|
862 |
-
unset($this->css[$this->at][$this->selector]);
|
863 |
-
}
|
864 |
-
}
|
865 |
-
$this->sel_separate = array();
|
866 |
-
}
|
867 |
-
|
868 |
-
/**
|
869 |
-
* Checks if a character is escaped (and returns true if it is)
|
870 |
-
* @param string $string
|
871 |
-
* @param integer $pos
|
872 |
-
* @access public
|
873 |
-
* @return bool
|
874 |
-
* @version 1.02
|
875 |
-
*/
|
876 |
-
function escaped(&$string,$pos)
|
877 |
-
{
|
878 |
-
return !(@($string{$pos-1} != '\\') || csstidy::escaped($string,$pos-1));
|
879 |
-
}
|
880 |
-
|
881 |
-
/**
|
882 |
-
* Adds a property with value to the existing CSS code
|
883 |
-
* @param string $media
|
884 |
-
* @param string $selector
|
885 |
-
* @param string $property
|
886 |
-
* @param string $new_val
|
887 |
-
* @access private
|
888 |
-
* @version 1.2
|
889 |
-
*/
|
890 |
-
function css_add_property($media,$selector,$property,$new_val)
|
891 |
-
{
|
892 |
-
if($this->get_cfg('preserve_css') || trim($new_val) == '') {
|
893 |
-
return;
|
894 |
-
}
|
895 |
-
|
896 |
-
$this->added = true;
|
897 |
-
if(isset($this->css[$media][$selector][$property]))
|
898 |
-
{
|
899 |
-
if((csstidy::is_important($this->css[$media][$selector][$property]) && csstidy::is_important($new_val)) || !csstidy::is_important($this->css[$media][$selector][$property]))
|
900 |
-
{
|
901 |
-
unset($this->css[$media][$selector][$property]);
|
902 |
-
$this->css[$media][$selector][$property] = trim($new_val);
|
903 |
-
}
|
904 |
-
}
|
905 |
-
else
|
906 |
-
{
|
907 |
-
$this->css[$media][$selector][$property] = trim($new_val);
|
908 |
-
}
|
909 |
-
}
|
910 |
-
|
911 |
-
/**
|
912 |
-
* Adds CSS to an existing media/selector
|
913 |
-
* @param string $media
|
914 |
-
* @param string $selector
|
915 |
-
* @param array $css_add
|
916 |
-
* @access private
|
917 |
-
* @version 1.1
|
918 |
-
*/
|
919 |
-
function merge_css_blocks($media,$selector,$css_add)
|
920 |
-
{
|
921 |
-
foreach($css_add as $property => $value)
|
922 |
-
{
|
923 |
-
$this->css_add_property($media,$selector,$property,$value,false);
|
924 |
-
}
|
925 |
-
}
|
926 |
-
|
927 |
-
/**
|
928 |
-
* Checks if $value is !important.
|
929 |
-
* @param string $value
|
930 |
-
* @return bool
|
931 |
-
* @access public
|
932 |
-
* @version 1.0
|
933 |
-
*/
|
934 |
-
function is_important(&$value)
|
935 |
-
{
|
936 |
-
return (!strcasecmp(substr(str_replace($GLOBALS['csstidy']['whitespace'],'',$value),-10,10),'!important'));
|
937 |
-
}
|
938 |
-
|
939 |
-
/**
|
940 |
-
* Returns a value without !important
|
941 |
-
* @param string $value
|
942 |
-
* @return string
|
943 |
-
* @access public
|
944 |
-
* @version 1.0
|
945 |
-
*/
|
946 |
-
function gvw_important($value)
|
947 |
-
{
|
948 |
-
if(csstidy::is_important($value))
|
949 |
-
{
|
950 |
-
$value = trim($value);
|
951 |
-
$value = substr($value,0,-9);
|
952 |
-
$value = trim($value);
|
953 |
-
$value = substr($value,0,-1);
|
954 |
-
$value = trim($value);
|
955 |
-
return $value;
|
956 |
-
}
|
957 |
-
return $value;
|
958 |
-
}
|
959 |
-
|
960 |
-
/**
|
961 |
-
* Checks if the next word in a string from pos is a CSS property
|
962 |
-
* @param string $istring
|
963 |
-
* @param integer $pos
|
964 |
-
* @return bool
|
965 |
-
* @access private
|
966 |
-
* @version 1.2
|
967 |
-
*/
|
968 |
-
function property_is_next($istring, $pos)
|
969 |
-
{
|
970 |
-
$all_properties =& $GLOBALS['csstidy']['all_properties'];
|
971 |
-
$istring = substr($istring,$pos,strlen($istring)-$pos);
|
972 |
-
$pos = strpos($istring,':');
|
973 |
-
if($pos === false)
|
974 |
-
{
|
975 |
-
return false;
|
976 |
-
}
|
977 |
-
$istring = strtolower(trim(substr($istring,0,$pos)));
|
978 |
-
if(isset($all_properties[$istring]))
|
979 |
-
{
|
980 |
-
$this->log('Added semicolon to the end of declaration','Warning');
|
981 |
-
return true;
|
982 |
-
}
|
983 |
-
return false;
|
984 |
-
}
|
985 |
-
|
986 |
-
/**
|
987 |
-
* Checks if a property is valid
|
988 |
-
* @param string $property
|
989 |
-
* @return bool;
|
990 |
-
* @access public
|
991 |
-
* @version 1.0
|
992 |
-
*/
|
993 |
-
function property_is_valid($property) {
|
994 |
-
$all_properties =& $GLOBALS['csstidy']['all_properties'];
|
995 |
-
return (isset($all_properties[$property]) && strpos($all_properties[$property],strtoupper($this->get_cfg('css_level'))) !== false );
|
996 |
-
}
|
997 |
-
|
998 |
-
}
|
999 |
-
?>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* CSSTidy - CSS Parser and Optimiser
|
4 |
+
*
|
5 |
+
* CSS Parser class
|
6 |
+
*
|
7 |
+
* This file is part of CSSTidy.
|
8 |
+
*
|
9 |
+
* CSSTidy is free software; you can redistribute it and/or modify
|
10 |
+
* it under the terms of the GNU General Public License as published by
|
11 |
+
* the Free Software Foundation; either version 2 of the License, or
|
12 |
+
* (at your option) any later version.
|
13 |
+
*
|
14 |
+
* CSSTidy is distributed in the hope that it will be useful,
|
15 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
+
* GNU General Public License for more details.
|
18 |
+
*
|
19 |
+
* You should have received a copy of the GNU General Public License
|
20 |
+
* along with CSSTidy; if not, write to the Free Software
|
21 |
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
22 |
+
*
|
23 |
+
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
24 |
+
* @package csstidy
|
25 |
+
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Various CSS data needed for correct optimisations etc.
|
30 |
+
*
|
31 |
+
* @version 1.3
|
32 |
+
*/
|
33 |
+
require('data.inc.php');
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Contains a class for printing CSS code
|
37 |
+
*
|
38 |
+
* @version 1.0
|
39 |
+
*/
|
40 |
+
require('class.csstidy_print.php');
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Contains a class for optimising CSS code
|
44 |
+
*
|
45 |
+
* @version 1.0
|
46 |
+
*/
|
47 |
+
require('class.csstidy_optimise.php');
|
48 |
+
|
49 |
+
/**
|
50 |
+
* CSS Parser class
|
51 |
+
*
|
52 |
+
* This class represents a CSS parser which reads CSS code and saves it in an array.
|
53 |
+
* In opposite to most other CSS parsers, it does not use regular expressions and
|
54 |
+
* thus has full CSS2 support and a higher reliability.
|
55 |
+
* Additional to that it applies some optimisations and fixes to the CSS code.
|
56 |
+
* An online version should be available here: http://cdburnerxp.se/cssparse/css_optimiser.php
|
57 |
+
* @package csstidy
|
58 |
+
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
59 |
+
* @version 1.3
|
60 |
+
*/
|
61 |
+
class csstidy {
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Saves the parsed CSS
|
65 |
+
* @var array
|
66 |
+
* @access public
|
67 |
+
*/
|
68 |
+
var $css = array();
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Saves the parsed CSS (raw)
|
72 |
+
* @var array
|
73 |
+
* @access private
|
74 |
+
*/
|
75 |
+
var $tokens = array();
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Printer class
|
79 |
+
* @see csstidy_print
|
80 |
+
* @var object
|
81 |
+
* @access public
|
82 |
+
*/
|
83 |
+
var $print;
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Optimiser class
|
87 |
+
* @see csstidy_optimise
|
88 |
+
* @var object
|
89 |
+
* @access private
|
90 |
+
*/
|
91 |
+
var $optimise;
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Saves the CSS charset (@charset)
|
95 |
+
* @var string
|
96 |
+
* @access private
|
97 |
+
*/
|
98 |
+
var $charset = '';
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Saves all @import URLs
|
102 |
+
* @var array
|
103 |
+
* @access private
|
104 |
+
*/
|
105 |
+
var $import = array();
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Saves the namespace
|
109 |
+
* @var string
|
110 |
+
* @access private
|
111 |
+
*/
|
112 |
+
var $namespace = '';
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Contains the version of csstidy
|
116 |
+
* @var string
|
117 |
+
* @access private
|
118 |
+
*/
|
119 |
+
var $version = '1.3';
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Stores the settings
|
123 |
+
* @var array
|
124 |
+
* @access private
|
125 |
+
*/
|
126 |
+
var $settings = array();
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Saves the parser-status.
|
130 |
+
*
|
131 |
+
* Possible values:
|
132 |
+
* - is = in selector
|
133 |
+
* - ip = in property
|
134 |
+
* - iv = in value
|
135 |
+
* - instr = in string (started at " or ' or ( )
|
136 |
+
* - ic = in comment (ignore everything)
|
137 |
+
* - at = in @-block
|
138 |
+
*
|
139 |
+
* @var string
|
140 |
+
* @access private
|
141 |
+
*/
|
142 |
+
var $status = 'is';
|
143 |
+
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Saves the current at rule (@media)
|
147 |
+
* @var string
|
148 |
+
* @access private
|
149 |
+
*/
|
150 |
+
var $at = '';
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Saves the current selector
|
154 |
+
* @var string
|
155 |
+
* @access private
|
156 |
+
*/
|
157 |
+
var $selector = '';
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Saves the current property
|
161 |
+
* @var string
|
162 |
+
* @access private
|
163 |
+
*/
|
164 |
+
var $property = '';
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Saves the position of , in selectors
|
168 |
+
* @var array
|
169 |
+
* @access private
|
170 |
+
*/
|
171 |
+
var $sel_separate = array();
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Saves the current value
|
175 |
+
* @var string
|
176 |
+
* @access private
|
177 |
+
*/
|
178 |
+
var $value = '';
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Saves the current sub-value
|
182 |
+
*
|
183 |
+
* Example for a subvalue:
|
184 |
+
* background:url(foo.png) red no-repeat;
|
185 |
+
* "url(foo.png)", "red", and "no-repeat" are subvalues,
|
186 |
+
* seperated by whitespace
|
187 |
+
* @var string
|
188 |
+
* @access private
|
189 |
+
*/
|
190 |
+
var $sub_value = '';
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Array which saves all subvalues for a property.
|
194 |
+
* @var array
|
195 |
+
* @see sub_value
|
196 |
+
* @access private
|
197 |
+
*/
|
198 |
+
var $sub_value_arr = array();
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Saves the char which opened the last string
|
202 |
+
* @var string
|
203 |
+
* @access private
|
204 |
+
*/
|
205 |
+
var $str_char = '';
|
206 |
+
var $cur_string = '';
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Status from which the parser switched to ic or instr
|
210 |
+
* @var string
|
211 |
+
* @access private
|
212 |
+
*/
|
213 |
+
var $from = '';
|
214 |
+
|
215 |
+
/**
|
216 |
+
* Variable needed to manage string-in-strings, for example url("foo.png")
|
217 |
+
* @var string
|
218 |
+
* @access private
|
219 |
+
*/
|
220 |
+
var $str_in_str = false;
|
221 |
+
|
222 |
+
/**
|
223 |
+
* =true if in invalid at-rule
|
224 |
+
* @var bool
|
225 |
+
* @access private
|
226 |
+
*/
|
227 |
+
var $invalid_at = false;
|
228 |
+
|
229 |
+
/**
|
230 |
+
* =true if something has been added to the current selector
|
231 |
+
* @var bool
|
232 |
+
* @access private
|
233 |
+
*/
|
234 |
+
var $added = false;
|
235 |
+
|
236 |
+
/**
|
237 |
+
* Array which saves the message log
|
238 |
+
* @var array
|
239 |
+
* @access private
|
240 |
+
*/
|
241 |
+
var $log = array();
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Saves the line number
|
245 |
+
* @var integer
|
246 |
+
* @access private
|
247 |
+
*/
|
248 |
+
var $line = 1;
|
249 |
+
|
250 |
+
/**
|
251 |
+
* Loads standard template and sets default settings
|
252 |
+
* @access private
|
253 |
+
* @version 1.3
|
254 |
+
*/
|
255 |
+
function csstidy()
|
256 |
+
{
|
257 |
+
$this->settings['remove_bslash'] = true;
|
258 |
+
$this->settings['compress_colors'] = true;
|
259 |
+
$this->settings['compress_font-weight'] = true;
|
260 |
+
$this->settings['lowercase_s'] = false;
|
261 |
+
$this->settings['optimise_shorthands'] = 1;
|
262 |
+
$this->settings['remove_last_;'] = false;
|
263 |
+
$this->settings['case_properties'] = 1;
|
264 |
+
$this->settings['sort_properties'] = false;
|
265 |
+
$this->settings['sort_selectors'] = false;
|
266 |
+
$this->settings['merge_selectors'] = 2;
|
267 |
+
$this->settings['discard_invalid_properties'] = false;
|
268 |
+
$this->settings['css_level'] = 'CSS2.1';
|
269 |
+
$this->settings['preserve_css'] = false;
|
270 |
+
$this->settings['timestamp'] = false;
|
271 |
+
|
272 |
+
$this->load_template('default');
|
273 |
+
$this->print = new csstidy_print($this);
|
274 |
+
$this->optimise = new csstidy_optimise($this);
|
275 |
+
}
|
276 |
+
|
277 |
+
/**
|
278 |
+
* Get the value of a setting.
|
279 |
+
* @param string $setting
|
280 |
+
* @access public
|
281 |
+
* @return mixed
|
282 |
+
* @version 1.0
|
283 |
+
*/
|
284 |
+
function get_cfg($setting)
|
285 |
+
{
|
286 |
+
if(isset($this->settings[$setting]))
|
287 |
+
{
|
288 |
+
return $this->settings[$setting];
|
289 |
+
}
|
290 |
+
return false;
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* Set the value of a setting.
|
295 |
+
* @param string $setting
|
296 |
+
* @param mixed $value
|
297 |
+
* @access public
|
298 |
+
* @return bool
|
299 |
+
* @version 1.0
|
300 |
+
*/
|
301 |
+
function set_cfg($setting,$value)
|
302 |
+
{
|
303 |
+
if(isset($this->settings[$setting]) && $value !== '')
|
304 |
+
{
|
305 |
+
$this->settings[$setting] = $value;
|
306 |
+
return true;
|
307 |
+
}
|
308 |
+
return false;
|
309 |
+
}
|
310 |
+
|
311 |
+
/**
|
312 |
+
* Adds a token to $this->tokens
|
313 |
+
* @param mixed $type
|
314 |
+
* @param string $data
|
315 |
+
* @param bool $do add a token even if preserve_css is off
|
316 |
+
* @access private
|
317 |
+
* @version 1.0
|
318 |
+
*/
|
319 |
+
function _add_token($type, $data, $do = false) {
|
320 |
+
if($this->get_cfg('preserve_css') || $do) {
|
321 |
+
$this->tokens[] = array($type, ($type == COMMENT) ? $data : trim($data));
|
322 |
+
}
|
323 |
+
}
|
324 |
+
|
325 |
+
/**
|
326 |
+
* Add a message to the message log
|
327 |
+
* @param string $message
|
328 |
+
* @param string $type
|
329 |
+
* @param integer $line
|
330 |
+
* @access private
|
331 |
+
* @version 1.0
|
332 |
+
*/
|
333 |
+
function log($message,$type,$line = -1)
|
334 |
+
{
|
335 |
+
if($line === -1)
|
336 |
+
{
|
337 |
+
$line = $this->line;
|
338 |
+
}
|
339 |
+
$line = intval($line);
|
340 |
+
$add = array('m' => $message, 't' => $type);
|
341 |
+
if(!isset($this->log[$line]) || !in_array($add,$this->log[$line]))
|
342 |
+
{
|
343 |
+
$this->log[$line][] = $add;
|
344 |
+
}
|
345 |
+
}
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Parse unicode notations and find a replacement character
|
349 |
+
* @param string $string
|
350 |
+
* @param integer $i
|
351 |
+
* @access private
|
352 |
+
* @return string
|
353 |
+
* @version 1.2
|
354 |
+
*/
|
355 |
+
function _unicode(&$string, &$i)
|
356 |
+
{
|
357 |
+
++$i;
|
358 |
+
$add = '';
|
359 |
+
$tokens =& $GLOBALS['csstidy']['tokens'];
|
360 |
+
$replaced = false;
|
361 |
+
|
362 |
+
while($i < strlen($string) && (ctype_xdigit($string{$i}) || ctype_space($string{$i})) && strlen($add) < 6)
|
363 |
+
{
|
364 |
+
$add .= $string{$i};
|
365 |
+
|
366 |
+
if(ctype_space($string{$i})) {
|
367 |
+
break;
|
368 |
+
}
|
369 |
+
$i++;
|
370 |
+
}
|
371 |
+
|
372 |
+
if(hexdec($add) > 47 && hexdec($add) < 58 || hexdec($add) > 64 && hexdec($add) < 91 || hexdec($add) > 96 && hexdec($add) < 123)
|
373 |
+
{
|
374 |
+
$this->log('Replaced unicode notation: Changed \\'. $add .' to ' . chr(hexdec($add)),'Information');
|
375 |
+
$add = chr(hexdec($add));
|
376 |
+
$replaced = true;
|
377 |
+
}
|
378 |
+
else {
|
379 |
+
$add = trim('\\'.$add);
|
380 |
+
}
|
381 |
+
|
382 |
+
if(@ctype_xdigit($string{$i+1}) && ctype_space($string{$i})
|
383 |
+
&& !$replaced || !ctype_space($string{$i})) {
|
384 |
+
$i--;
|
385 |
+
}
|
386 |
+
|
387 |
+
if($add != '\\' || !$this->get_cfg('remove_bslash') || strpos($tokens, $string{$i+1}) !== false) {
|
388 |
+
return $add;
|
389 |
+
}
|
390 |
+
|
391 |
+
if($add == '\\') {
|
392 |
+
$this->log('Removed unnecessary backslash','Information');
|
393 |
+
}
|
394 |
+
return '';
|
395 |
+
}
|
396 |
+
|
397 |
+
/**
|
398 |
+
* Loads a new template
|
399 |
+
* @param string $content either filename (if $from_file == true), content of a template file, "high_compression", "highest_compression", "low_compression", or "default"
|
400 |
+
* @param bool $from_file uses $content as filename if true
|
401 |
+
* @access public
|
402 |
+
* @version 1.1
|
403 |
+
* @see http://csstidy.sourceforge.net/templates.php
|
404 |
+
*/
|
405 |
+
function load_template($content, $from_file=true)
|
406 |
+
{
|
407 |
+
$predefined_templates =& $GLOBALS['csstidy']['predefined_templates'];
|
408 |
+
if($content == 'high_compression' || $content == 'default' || $content == 'highest_compression' || $content == 'low_compression')
|
409 |
+
{
|
410 |
+
$this->template = $predefined_templates[$content];
|
411 |
+
return;
|
412 |
+
}
|
413 |
+
|
414 |
+
if($from_file)
|
415 |
+
{
|
416 |
+
$content = strip_tags(file_get_contents($content),'<span>');
|
417 |
+
}
|
418 |
+
$content = str_replace("\r\n","\n",$content); // Unify newlines (because the output also only uses \n)
|
419 |
+
$template = explode('|',$content);
|
420 |
+
|
421 |
+
for ($i = 0; $i < count($template); $i++ )
|
422 |
+
{
|
423 |
+
$this->template[$i] = $template[$i];
|
424 |
+
}
|
425 |
+
}
|
426 |
+
|
427 |
+
/**
|
428 |
+
* Starts parsing from URL
|
429 |
+
* @param string $url
|
430 |
+
* @access public
|
431 |
+
* @version 1.0
|
432 |
+
*/
|
433 |
+
function parse_from_url($url)
|
434 |
+
{
|
435 |
+
return $this->parse(@file_get_contents($url));
|
436 |
+
}
|
437 |
+
|
438 |
+
/**
|
439 |
+
* Checks if there is a token at the current position
|
440 |
+
* @param string $string
|
441 |
+
* @param integer $i
|
442 |
+
* @access public
|
443 |
+
* @version 1.11
|
444 |
+
*/
|
445 |
+
function is_token(&$string, $i)
|
446 |
+
{
|
447 |
+
$tokens =& $GLOBALS['csstidy']['tokens'];
|
448 |
+
return (strpos($tokens, $string{$i}) !== false && !csstidy::escaped($string,$i));
|
449 |
+
}
|
450 |
+
|
451 |
+
|
452 |
+
/**
|
453 |
+
* Parses CSS in $string. The code is saved as array in $this->css
|
454 |
+
* @param string $string the CSS code
|
455 |
+
* @access public
|
456 |
+
* @return bool
|
457 |
+
* @version 1.1
|
458 |
+
*/
|
459 |
+
function parse($string) {
|
460 |
+
// PHP bug? Settings need to be refreshed in PHP4
|
461 |
+
$this->print = new csstidy_print($this);
|
462 |
+
$this->optimise = new csstidy_optimise($this);
|
463 |
+
|
464 |
+
$all_properties =& $GLOBALS['csstidy']['all_properties'];
|
465 |
+
$at_rules =& $GLOBALS['csstidy']['at_rules'];
|
466 |
+
|
467 |
+
$this->css = array();
|
468 |
+
$this->print->input_css = $string;
|
469 |
+
$string = str_replace("\r\n","\n",$string) . ' ';
|
470 |
+
$cur_comment = '';
|
471 |
+
|
472 |
+
for ($i = 0, $size = strlen($string); $i < $size; $i++ )
|
473 |
+
{
|
474 |
+
if($string{$i} == "\n" || $string{$i} == "\r")
|
475 |
+
{
|
476 |
+
++$this->line;
|
477 |
+
}
|
478 |
+
|
479 |
+
switch($this->status)
|
480 |
+
{
|
481 |
+
/* Case in at-block */
|
482 |
+
case 'at':
|
483 |
+
if(csstidy::is_token($string,$i))
|
484 |
+
{
|
485 |
+
if($string{$i} == '/' && @$string{$i+1} == '*')
|
486 |
+
{
|
487 |
+
$this->status = 'ic'; ++$i;
|
488 |
+
$this->from = 'at';
|
489 |
+
}
|
490 |
+
elseif($string{$i} == '{')
|
491 |
+
{
|
492 |
+
$this->status = 'is';
|
493 |
+
$this->_add_token(AT_START, $this->at);
|
494 |
+
}
|
495 |
+
elseif($string{$i} == ',')
|
496 |
+
{
|
497 |
+
$this->at = trim($this->at).',';
|
498 |
+
}
|
499 |
+
elseif($string{$i} == '\\')
|
500 |
+
{
|
501 |
+
$this->at .= $this->_unicode($string,$i);
|
502 |
+
}
|
503 |
+
}
|
504 |
+
else
|
505 |
+
{
|
506 |
+
$lastpos = strlen($this->at)-1;
|
507 |
+
if(!( (ctype_space($this->at{$lastpos}) || csstidy::is_token($this->at,$lastpos) && $this->at{$lastpos} == ',') && ctype_space($string{$i})))
|
508 |
+
{
|
509 |
+
$this->at .= $string{$i};
|
510 |
+
}
|
511 |
+
}
|
512 |
+
break;
|
513 |
+
|
514 |
+
/* Case in-selector */
|
515 |
+
case 'is':
|
516 |
+
if(csstidy::is_token($string,$i))
|
517 |
+
{
|
518 |
+
if($string{$i} == '/' && @$string{$i+1} == '*' && trim($this->selector) == '')
|
519 |
+
{
|
520 |
+
$this->status = 'ic'; ++$i;
|
521 |
+
$this->from = 'is';
|
522 |
+
}
|
523 |
+
elseif($string{$i} == '@' && trim($this->selector) == '')
|
524 |
+
{
|
525 |
+
// Check for at-rule
|
526 |
+
$this->invalid_at = true;
|
527 |
+
foreach($at_rules as $name => $type)
|
528 |
+
{
|
529 |
+
if(!strcasecmp(substr($string,$i+1,strlen($name)),$name))
|
530 |
+
{
|
531 |
+
($type == 'at') ? $this->at = '@'.$name : $this->selector = '@'.$name;
|
532 |
+
$this->status = $type;
|
533 |
+
$i += strlen($name);
|
534 |
+
$this->invalid_at = false;
|
535 |
+
}
|
536 |
+
}
|
537 |
+
|
538 |
+
if($this->invalid_at)
|
539 |
+
{
|
540 |
+
$this->selector = '@';
|
541 |
+
$invalid_at_name = '';
|
542 |
+
for($j = $i+1; $j < $size; ++$j)
|
543 |
+
{
|
544 |
+
if(!ctype_alpha($string{$j}))
|
545 |
+
{
|
546 |
+
break;
|
547 |
+
}
|
548 |
+
$invalid_at_name .= $string{$j};
|
549 |
+
}
|
550 |
+
$this->log('Invalid @-rule: '.$invalid_at_name.' (removed)','Warning');
|
551 |
+
}
|
552 |
+
}
|
553 |
+
elseif(($string{$i} == '"' || $string{$i} == "'"))
|
554 |
+
{
|
555 |
+
$this->cur_string = $string{$i};
|
556 |
+
$this->status = 'instr';
|
557 |
+
$this->str_char = $string{$i};
|
558 |
+
$this->from = 'is';
|
559 |
+
}
|
560 |
+
elseif($this->invalid_at && $string{$i} == ';')
|
561 |
+
{
|
562 |
+
$this->invalid_at = false;
|
563 |
+
$this->status = 'is';
|
564 |
+
}
|
565 |
+
elseif($string{$i} == '{')
|
566 |
+
{
|
567 |
+
$this->status = 'ip';
|
568 |
+
$this->_add_token(SEL_START, $this->selector);
|
569 |
+
$this->added = false;
|
570 |
+
}
|
571 |
+
elseif($string{$i} == '}')
|
572 |
+
{
|
573 |
+
$this->_add_token(AT_END, $this->at);
|
574 |
+
$this->at = '';
|
575 |
+
$this->selector = '';
|
576 |
+
$this->sel_separate = array();
|
577 |
+
}
|
578 |
+
elseif($string{$i} == ',')
|
579 |
+
{
|
580 |
+
$this->selector = trim($this->selector).',';
|
581 |
+
$this->sel_separate[] = strlen($this->selector);
|
582 |
+
}
|
583 |
+
elseif($string{$i} == '\\')
|
584 |
+
{
|
585 |
+
$this->selector .= $this->_unicode($string,$i);
|
586 |
+
}
|
587 |
+
// remove unnecessary universal selector, FS#147
|
588 |
+
else if(!($string{$i} == '*' && @in_array($string{$i+1}, array('.', '#', '[', ':')))) {
|
589 |
+
$this->selector .= $string{$i};
|
590 |
+
}
|
591 |
+
}
|
592 |
+
else
|
593 |
+
{
|
594 |
+
$lastpos = strlen($this->selector)-1;
|
595 |
+
if($lastpos == -1 || !( (ctype_space($this->selector{$lastpos}) || csstidy::is_token($this->selector,$lastpos) && $this->selector{$lastpos} == ',') && ctype_space($string{$i})))
|
596 |
+
{
|
597 |
+
$this->selector .= $string{$i};
|
598 |
+
}
|
599 |
+
}
|
600 |
+
break;
|
601 |
+
|
602 |
+
/* Case in-property */
|
603 |
+
case 'ip':
|
604 |
+
if(csstidy::is_token($string,$i))
|
605 |
+
{
|
606 |
+
if(($string{$i} == ':' || $string{$i} == '=') && $this->property != '')
|
607 |
+
{
|
608 |
+
$this->status = 'iv';
|
609 |
+
if(!$this->get_cfg('discard_invalid_properties') || csstidy::property_is_valid($this->property)) {
|
610 |
+
$this->_add_token(PROPERTY, $this->property);
|
611 |
+
}
|
612 |
+
}
|
613 |
+
elseif($string{$i} == '/' && @$string{$i+1} == '*' && $this->property == '')
|
614 |
+
{
|
615 |
+
$this->status = 'ic'; ++$i;
|
616 |
+
$this->from = 'ip';
|
617 |
+
}
|
618 |
+
elseif($string{$i} == '}')
|
619 |
+
{
|
620 |
+
$this->explode_selectors();
|
621 |
+
$this->status = 'is';
|
622 |
+
$this->invalid_at = false;
|
623 |
+
$this->_add_token(SEL_END, $this->selector);
|
624 |
+
$this->selector = '';
|
625 |
+
$this->property = '';
|
626 |
+
}
|
627 |
+
elseif($string{$i} == ';')
|
628 |
+
{
|
629 |
+
$this->property = '';
|
630 |
+
}
|
631 |
+
elseif($string{$i} == '\\')
|
632 |
+
{
|
633 |
+
$this->property .= $this->_unicode($string,$i);
|
634 |
+
}
|
635 |
+
}
|
636 |
+
elseif(!ctype_space($string{$i}))
|
637 |
+
{
|
638 |
+
$this->property .= $string{$i};
|
639 |
+
}
|
640 |
+
break;
|
641 |
+
|
642 |
+
/* Case in-value */
|
643 |
+
case 'iv':
|
644 |
+
$pn = (($string{$i} == "\n" || $string{$i} == "\r") && $this->property_is_next($string,$i+1) || $i == strlen($string)-1);
|
645 |
+
if(csstidy::is_token($string,$i) || $pn)
|
646 |
+
{
|
647 |
+
if($string{$i} == '/' && @$string{$i+1} == '*')
|
648 |
+
{
|
649 |
+
$this->status = 'ic'; ++$i;
|
650 |
+
$this->from = 'iv';
|
651 |
+
}
|
652 |
+
elseif(($string{$i} == '"' || $string{$i} == "'" || $string{$i} == '('))
|
653 |
+
{
|
654 |
+
$this->cur_string = $string{$i};
|
655 |
+
$this->str_char = ($string{$i} == '(') ? ')' : $string{$i};
|
656 |
+
$this->status = 'instr';
|
657 |
+
$this->from = 'iv';
|
658 |
+
}
|
659 |
+
elseif($string{$i} == ',')
|
660 |
+
{
|
661 |
+
$this->sub_value = trim($this->sub_value).',';
|
662 |
+
}
|
663 |
+
elseif($string{$i} == '\\')
|
664 |
+
{
|
665 |
+
$this->sub_value .= $this->_unicode($string,$i);
|
666 |
+
}
|
667 |
+
elseif($string{$i} == ';' || $pn)
|
668 |
+
{
|
669 |
+
if($this->selector{0} == '@' && isset($at_rules[substr($this->selector,1)]) && $at_rules[substr($this->selector,1)] == 'iv')
|
670 |
+
{
|
671 |
+
$this->sub_value_arr[] = trim($this->sub_value);
|
672 |
+
|
673 |
+
$this->status = 'is';
|
674 |
+
|
675 |
+
switch($this->selector)
|
676 |
+
{
|
677 |
+
case '@charset': $this->charset = $this->sub_value_arr[0]; break;
|
678 |
+
case '@namespace': $this->namespace = implode(' ',$this->sub_value_arr); break;
|
679 |
+
case '@import': $this->import[] = implode(' ',$this->sub_value_arr); break;
|
680 |
+
}
|
681 |
+
|
682 |
+
$this->sub_value_arr = array();
|
683 |
+
$this->sub_value = '';
|
684 |
+
$this->selector = '';
|
685 |
+
$this->sel_separate = array();
|
686 |
+
}
|
687 |
+
else
|
688 |
+
{
|
689 |
+
$this->status = 'ip';
|
690 |
+
}
|
691 |
+
}
|
692 |
+
elseif($string{$i} != '}')
|
693 |
+
{
|
694 |
+
$this->sub_value .= $string{$i};
|
695 |
+
}
|
696 |
+
if(($string{$i} == '}' || $string{$i} == ';' || $pn) && !empty($this->selector))
|
697 |
+
{
|
698 |
+
if($this->at == '')
|
699 |
+
{
|
700 |
+
$this->at = DEFAULT_AT;
|
701 |
+
}
|
702 |
+
|
703 |
+
// case settings
|
704 |
+
if($this->get_cfg('lowercase_s'))
|
705 |
+
{
|
706 |
+
$this->selector = strtolower($this->selector);
|
707 |
+
}
|
708 |
+
$this->property = strtolower($this->property);
|
709 |
+
|
710 |
+
$this->optimise->subvalue();
|
711 |
+
if($this->sub_value != '') {
|
712 |
+
$this->sub_value_arr[] = $this->sub_value;
|
713 |
+
$this->sub_value = '';
|
714 |
+
}
|
715 |
+
|
716 |
+
$this->value = implode(' ',$this->sub_value_arr);
|
717 |
+
|
718 |
+
$this->selector = trim($this->selector);
|
719 |
+
|
720 |
+
$this->optimise->value();
|
721 |
+
|
722 |
+
$valid = csstidy::property_is_valid($this->property);
|
723 |
+
if((!$this->invalid_at || $this->get_cfg('preserve_css')) && (!$this->get_cfg('discard_invalid_properties') || $valid))
|
724 |
+
{
|
725 |
+
$this->css_add_property($this->at,$this->selector,$this->property,$this->value);
|
726 |
+
$this->_add_token(VALUE, $this->value);
|
727 |
+
$this->optimise->shorthands();
|
728 |
+
}
|
729 |
+
if(!$valid)
|
730 |
+
{
|
731 |
+
if($this->get_cfg('discard_invalid_properties'))
|
732 |
+
{
|
733 |
+
$this->log('Removed invalid property: '.$this->property,'Warning');
|
734 |
+
}
|
735 |
+
else
|
736 |
+
{
|
737 |
+
$this->log('Invalid property in '.strtoupper($this->get_cfg('css_level')).': '.$this->property,'Warning');
|
738 |
+
}
|
739 |
+
}
|
740 |
+
|
741 |
+
$this->property = '';
|
742 |
+
$this->sub_value_arr = array();
|
743 |
+
$this->value = '';
|
744 |
+
}
|
745 |
+
if($string{$i} == '}')
|
746 |
+
{
|
747 |
+
$this->explode_selectors();
|
748 |
+
$this->_add_token(SEL_END, $this->selector);
|
749 |
+
$this->status = 'is';
|
750 |
+
$this->invalid_at = false;
|
751 |
+
$this->selector = '';
|
752 |
+
}
|
753 |
+
}
|
754 |
+
elseif(!$pn)
|
755 |
+
{
|
756 |
+
$this->sub_value .= $string{$i};
|
757 |
+
|
758 |
+
if(ctype_space($string{$i}))
|
759 |
+
{
|
760 |
+
$this->optimise->subvalue();
|
761 |
+
if($this->sub_value != '') {
|
762 |
+
$this->sub_value_arr[] = $this->sub_value;
|
763 |
+
$this->sub_value = '';
|
764 |
+
}
|
765 |
+
}
|
766 |
+
}
|
767 |
+
break;
|
768 |
+
|
769 |
+
/* Case in string */
|
770 |
+
case 'instr':
|
771 |
+
if($this->str_char == ')' && ($string{$i} == '"' || $string{$i} == '\'') && !$this->str_in_str && !csstidy::escaped($string,$i))
|
772 |
+
{
|
773 |
+
$this->str_in_str = true;
|
774 |
+
}
|
775 |
+
elseif($this->str_char == ')' && ($string{$i} == '"' || $string{$i} == '\'') && $this->str_in_str && !csstidy::escaped($string,$i))
|
776 |
+
{
|
777 |
+
$this->str_in_str = false;
|
778 |
+
}
|
779 |
+
$temp_add = $string{$i}; // ...and no not-escaped backslash at the previous position
|
780 |
+
if( ($string{$i} == "\n" || $string{$i} == "\r") && !($string{$i-1} == '\\' && !csstidy::escaped($string,$i-1)) )
|
781 |
+
{
|
782 |
+
$temp_add = "\\A ";
|
783 |
+
$this->log('Fixed incorrect newline in string','Warning');
|
784 |
+
}
|
785 |
+
if (!($this->str_char == ')' && in_array($string{$i}, $GLOBALS['csstidy']['whitespace']) && !$this->str_in_str)) {
|
786 |
+
$this->cur_string .= $temp_add;
|
787 |
+
}
|
788 |
+
if($string{$i} == $this->str_char && !csstidy::escaped($string,$i) && !$this->str_in_str)
|
789 |
+
{
|
790 |
+
$this->status = $this->from;
|
791 |
+
if (!preg_match('|[' . implode('', $GLOBALS['csstidy']['whitespace']) . ']|uis', $this->cur_string) && $this->property != 'content') {
|
792 |
+
if ($this->str_char == '"' || $this->str_char == '\'') {
|
793 |
+
$this->cur_string = substr($this->cur_string, 1, -1);
|
794 |
+
} else if (strlen($this->cur_string) > 3 && ($this->cur_string[1] == '"' || $this->cur_string[1] == '\'')) /* () */ {
|
795 |
+
$this->cur_string = $this->cur_string[0] . substr($this->cur_string, 2, -2) . substr($this->cur_string, -1);
|
796 |
+
}
|
797 |
+
}
|
798 |
+
if($this->from == 'iv')
|
799 |
+
{
|
800 |
+
$this->sub_value .= $this->cur_string;
|
801 |
+
}
|
802 |
+
elseif($this->from == 'is')
|
803 |
+
{
|
804 |
+
$this->selector .= $this->cur_string;
|
805 |
+
}
|
806 |
+
}
|
807 |
+
break;
|
808 |
+
|
809 |
+
/* Case in-comment */
|
810 |
+
case 'ic':
|
811 |
+
if($string{$i} == '*' && $string{$i+1} == '/')
|
812 |
+
{
|
813 |
+
$this->status = $this->from;
|
814 |
+
$i++;
|
815 |
+
$this->_add_token(COMMENT, $cur_comment);
|
816 |
+
$cur_comment = '';
|
817 |
+
}
|
818 |
+
else
|
819 |
+
{
|
820 |
+
$cur_comment .= $string{$i};
|
821 |
+
}
|
822 |
+
break;
|
823 |
+
}
|
824 |
+
}
|
825 |
+
|
826 |
+
$this->optimise->postparse();
|
827 |
+
|
828 |
+
$this->print->_reset();
|
829 |
+
|
830 |
+
return !(empty($this->css) && empty($this->import) && empty($this->charset) && empty($this->tokens) && empty($this->namespace));
|
831 |
+
}
|
832 |
+
|
833 |
+
/**
|
834 |
+
* Explodes selectors
|
835 |
+
* @access private
|
836 |
+
* @version 1.0
|
837 |
+
*/
|
838 |
+
function explode_selectors()
|
839 |
+
{
|
840 |
+
// Explode multiple selectors
|
841 |
+
if($this->get_cfg('merge_selectors') == 1)
|
842 |
+
{
|
843 |
+
$new_sels = array();
|
844 |
+
$lastpos = 0;
|
845 |
+
$this->sel_separate[] = strlen($this->selector);
|
846 |
+
foreach($this->sel_separate as $num => $pos)
|
847 |
+
{
|
848 |
+
if($num == count($this->sel_separate)-1) {
|
849 |
+
$pos += 1;
|
850 |
+
}
|
851 |
+
|
852 |
+
$new_sels[] = substr($this->selector,$lastpos,$pos-$lastpos-1);
|
853 |
+
$lastpos = $pos;
|
854 |
+
}
|
855 |
+
|
856 |
+
if(count($new_sels) > 1)
|
857 |
+
{
|
858 |
+
foreach($new_sels as $selector)
|
859 |
+
{
|
860 |
+
$this->merge_css_blocks($this->at,$selector,$this->css[$this->at][$this->selector]);
|
861 |
+
}
|
862 |
+
unset($this->css[$this->at][$this->selector]);
|
863 |
+
}
|
864 |
+
}
|
865 |
+
$this->sel_separate = array();
|
866 |
+
}
|
867 |
+
|
868 |
+
/**
|
869 |
+
* Checks if a character is escaped (and returns true if it is)
|
870 |
+
* @param string $string
|
871 |
+
* @param integer $pos
|
872 |
+
* @access public
|
873 |
+
* @return bool
|
874 |
+
* @version 1.02
|
875 |
+
*/
|
876 |
+
function escaped(&$string,$pos)
|
877 |
+
{
|
878 |
+
return !(@($string{$pos-1} != '\\') || csstidy::escaped($string,$pos-1));
|
879 |
+
}
|
880 |
+
|
881 |
+
/**
|
882 |
+
* Adds a property with value to the existing CSS code
|
883 |
+
* @param string $media
|
884 |
+
* @param string $selector
|
885 |
+
* @param string $property
|
886 |
+
* @param string $new_val
|
887 |
+
* @access private
|
888 |
+
* @version 1.2
|
889 |
+
*/
|
890 |
+
function css_add_property($media,$selector,$property,$new_val)
|
891 |
+
{
|
892 |
+
if($this->get_cfg('preserve_css') || trim($new_val) == '') {
|
893 |
+
return;
|
894 |
+
}
|
895 |
+
|
896 |
+
$this->added = true;
|
897 |
+
if(isset($this->css[$media][$selector][$property]))
|
898 |
+
{
|
899 |
+
if((csstidy::is_important($this->css[$media][$selector][$property]) && csstidy::is_important($new_val)) || !csstidy::is_important($this->css[$media][$selector][$property]))
|
900 |
+
{
|
901 |
+
unset($this->css[$media][$selector][$property]);
|
902 |
+
$this->css[$media][$selector][$property] = trim($new_val);
|
903 |
+
}
|
904 |
+
}
|
905 |
+
else
|
906 |
+
{
|
907 |
+
$this->css[$media][$selector][$property] = trim($new_val);
|
908 |
+
}
|
909 |
+
}
|
910 |
+
|
911 |
+
/**
|
912 |
+
* Adds CSS to an existing media/selector
|
913 |
+
* @param string $media
|
914 |
+
* @param string $selector
|
915 |
+
* @param array $css_add
|
916 |
+
* @access private
|
917 |
+
* @version 1.1
|
918 |
+
*/
|
919 |
+
function merge_css_blocks($media,$selector,$css_add)
|
920 |
+
{
|
921 |
+
foreach($css_add as $property => $value)
|
922 |
+
{
|
923 |
+
$this->css_add_property($media,$selector,$property,$value,false);
|
924 |
+
}
|
925 |
+
}
|
926 |
+
|
927 |
+
/**
|
928 |
+
* Checks if $value is !important.
|
929 |
+
* @param string $value
|
930 |
+
* @return bool
|
931 |
+
* @access public
|
932 |
+
* @version 1.0
|
933 |
+
*/
|
934 |
+
function is_important(&$value)
|
935 |
+
{
|
936 |
+
return (!strcasecmp(substr(str_replace($GLOBALS['csstidy']['whitespace'],'',$value),-10,10),'!important'));
|
937 |
+
}
|
938 |
+
|
939 |
+
/**
|
940 |
+
* Returns a value without !important
|
941 |
+
* @param string $value
|
942 |
+
* @return string
|
943 |
+
* @access public
|
944 |
+
* @version 1.0
|
945 |
+
*/
|
946 |
+
function gvw_important($value)
|
947 |
+
{
|
948 |
+
if(csstidy::is_important($value))
|
949 |
+
{
|
950 |
+
$value = trim($value);
|
951 |
+
$value = substr($value,0,-9);
|
952 |
+
$value = trim($value);
|
953 |
+
$value = substr($value,0,-1);
|
954 |
+
$value = trim($value);
|
955 |
+
return $value;
|
956 |
+
}
|
957 |
+
return $value;
|
958 |
+
}
|
959 |
+
|
960 |
+
/**
|
961 |
+
* Checks if the next word in a string from pos is a CSS property
|
962 |
+
* @param string $istring
|
963 |
+
* @param integer $pos
|
964 |
+
* @return bool
|
965 |
+
* @access private
|
966 |
+
* @version 1.2
|
967 |
+
*/
|
968 |
+
function property_is_next($istring, $pos)
|
969 |
+
{
|
970 |
+
$all_properties =& $GLOBALS['csstidy']['all_properties'];
|
971 |
+
$istring = substr($istring,$pos,strlen($istring)-$pos);
|
972 |
+
$pos = strpos($istring,':');
|
973 |
+
if($pos === false)
|
974 |
+
{
|
975 |
+
return false;
|
976 |
+
}
|
977 |
+
$istring = strtolower(trim(substr($istring,0,$pos)));
|
978 |
+
if(isset($all_properties[$istring]))
|
979 |
+
{
|
980 |
+
$this->log('Added semicolon to the end of declaration','Warning');
|
981 |
+
return true;
|
982 |
+
}
|
983 |
+
return false;
|
984 |
+
}
|
985 |
+
|
986 |
+
/**
|
987 |
+
* Checks if a property is valid
|
988 |
+
* @param string $property
|
989 |
+
* @return bool;
|
990 |
+
* @access public
|
991 |
+
* @version 1.0
|
992 |
+
*/
|
993 |
+
function property_is_valid($property) {
|
994 |
+
$all_properties =& $GLOBALS['csstidy']['all_properties'];
|
995 |
+
return (isset($all_properties[$property]) && strpos($all_properties[$property],strtoupper($this->get_cfg('css_level'))) !== false );
|
996 |
+
}
|
997 |
+
|
998 |
+
}
|
999 |
+
?>
|
lib/CSSTidy/class.csstidy_optimise.php
CHANGED
@@ -1,809 +1,809 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* CSSTidy - CSS Parser and Optimiser
|
4 |
-
*
|
5 |
-
* CSS Optimising Class
|
6 |
-
* This class optimises CSS data generated by csstidy.
|
7 |
-
*
|
8 |
-
* This file is part of CSSTidy.
|
9 |
-
*
|
10 |
-
* CSSTidy is free software; you can redistribute it and/or modify
|
11 |
-
* it under the terms of the GNU General Public License as published by
|
12 |
-
* the Free Software Foundation; either version 2 of the License, or
|
13 |
-
* (at your option) any later version.
|
14 |
-
*
|
15 |
-
* CSSTidy is distributed in the hope that it will be useful,
|
16 |
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18 |
-
* GNU General Public License for more details.
|
19 |
-
*
|
20 |
-
* You should have received a copy of the GNU General Public License
|
21 |
-
* along with CSSTidy; if not, write to the Free Software
|
22 |
-
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
23 |
-
*
|
24 |
-
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
25 |
-
* @package csstidy
|
26 |
-
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
27 |
-
*/
|
28 |
-
|
29 |
-
/**
|
30 |
-
* CSS Optimising Class
|
31 |
-
*
|
32 |
-
* This class optimises CSS data generated by csstidy.
|
33 |
-
*
|
34 |
-
* @package csstidy
|
35 |
-
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
36 |
-
* @version 1.0
|
37 |
-
*/
|
38 |
-
|
39 |
-
class csstidy_optimise
|
40 |
-
{
|
41 |
-
/**
|
42 |
-
* Constructor
|
43 |
-
* @param array $css contains the class csstidy
|
44 |
-
* @access private
|
45 |
-
* @version 1.0
|
46 |
-
*/
|
47 |
-
function csstidy_optimise(&$css)
|
48 |
-
{
|
49 |
-
$this->parser =& $css;
|
50 |
-
$this->css =& $css->css;
|
51 |
-
$this->sub_value =& $css->sub_value;
|
52 |
-
$this->at =& $css->at;
|
53 |
-
$this->selector =& $css->selector;
|
54 |
-
$this->property =& $css->property;
|
55 |
-
$this->value =& $css->value;
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* Optimises $css after parsing
|
60 |
-
* @access public
|
61 |
-
* @version 1.0
|
62 |
-
*/
|
63 |
-
function postparse()
|
64 |
-
{
|
65 |
-
if ($this->parser->get_cfg('preserve_css')) {
|
66 |
-
return;
|
67 |
-
}
|
68 |
-
|
69 |
-
if ($this->parser->get_cfg('merge_selectors') == 2)
|
70 |
-
{
|
71 |
-
foreach ($this->css as $medium => $value)
|
72 |
-
{
|
73 |
-
$this->merge_selectors($this->css[$medium]);
|
74 |
-
}
|
75 |
-
}
|
76 |
-
|
77 |
-
if ($this->parser->get_cfg('optimise_shorthands') > 0)
|
78 |
-
{
|
79 |
-
foreach ($this->css as $medium => $value)
|
80 |
-
{
|
81 |
-
foreach ($value as $selector => $value1)
|
82 |
-
{
|
83 |
-
$this->css[$medium][$selector] = csstidy_optimise::merge_4value_shorthands($this->css[$medium][$selector]);
|
84 |
-
|
85 |
-
if ($this->parser->get_cfg('optimise_shorthands') < 2) {
|
86 |
-
continue;
|
87 |
-
}
|
88 |
-
|
89 |
-
$this->css[$medium][$selector] = csstidy_optimise::merge_bg($this->css[$medium][$selector]);
|
90 |
-
if (empty($this->css[$medium][$selector])) {
|
91 |
-
unset($this->css[$medium][$selector]);
|
92 |
-
}
|
93 |
-
}
|
94 |
-
}
|
95 |
-
}
|
96 |
-
}
|
97 |
-
|
98 |
-
/**
|
99 |
-
* Optimises values
|
100 |
-
* @access public
|
101 |
-
* @version 1.0
|
102 |
-
*/
|
103 |
-
function value()
|
104 |
-
{
|
105 |
-
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
106 |
-
|
107 |
-
// optimise shorthand properties
|
108 |
-
if(isset($shorthands[$this->property]))
|
109 |
-
{
|
110 |
-
$temp = csstidy_optimise::shorthand($this->value); // FIXME - move
|
111 |
-
if($temp != $this->value)
|
112 |
-
{
|
113 |
-
$this->parser->log('Optimised shorthand notation ('.$this->property.'): Changed "'.$this->value.'" to "'.$temp.'"','Information');
|
114 |
-
}
|
115 |
-
$this->value = $temp;
|
116 |
-
}
|
117 |
-
|
118 |
-
// Remove whitespace at ! important
|
119 |
-
if($this->value != $this->compress_important($this->value))
|
120 |
-
{
|
121 |
-
$this->parser->log('Optimised !important','Information');
|
122 |
-
}
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
* Optimises shorthands
|
127 |
-
* @access public
|
128 |
-
* @version 1.0
|
129 |
-
*/
|
130 |
-
function shorthands()
|
131 |
-
{
|
132 |
-
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
133 |
-
|
134 |
-
if(!$this->parser->get_cfg('optimise_shorthands') || $this->parser->get_cfg('preserve_css')) {
|
135 |
-
return;
|
136 |
-
}
|
137 |
-
|
138 |
-
if($this->property == 'background' && $this->parser->get_cfg('optimise_shorthands') > 1)
|
139 |
-
{
|
140 |
-
unset($this->css[$this->at][$this->selector]['background']);
|
141 |
-
$this->parser->merge_css_blocks($this->at,$this->selector,csstidy_optimise::dissolve_short_bg($this->value));
|
142 |
-
}
|
143 |
-
if(isset($shorthands[$this->property]))
|
144 |
-
{
|
145 |
-
$this->parser->merge_css_blocks($this->at,$this->selector,csstidy_optimise::dissolve_4value_shorthands($this->property,$this->value));
|
146 |
-
if(is_array($shorthands[$this->property]))
|
147 |
-
{
|
148 |
-
unset($this->css[$this->at][$this->selector][$this->property]);
|
149 |
-
}
|
150 |
-
}
|
151 |
-
}
|
152 |
-
|
153 |
-
/**
|
154 |
-
* Optimises a sub-value
|
155 |
-
* @access public
|
156 |
-
* @version 1.0
|
157 |
-
*/
|
158 |
-
function subvalue()
|
159 |
-
{
|
160 |
-
$replace_colors =& $GLOBALS['csstidy']['replace_colors'];
|
161 |
-
|
162 |
-
$this->sub_value = trim($this->sub_value);
|
163 |
-
if($this->sub_value == '') // caution : '0'
|
164 |
-
{
|
165 |
-
return;
|
166 |
-
}
|
167 |
-
|
168 |
-
$important = '';
|
169 |
-
if(csstidy::is_important($this->sub_value))
|
170 |
-
{
|
171 |
-
$important = '!important';
|
172 |
-
}
|
173 |
-
$this->sub_value = csstidy::gvw_important($this->sub_value);
|
174 |
-
|
175 |
-
// Compress font-weight
|
176 |
-
if($this->property == 'font-weight' && $this->parser->get_cfg('compress_font-weight'))
|
177 |
-
{
|
178 |
-
if($this->sub_value == 'bold')
|
179 |
-
{
|
180 |
-
$this->sub_value = '700';
|
181 |
-
$this->parser->log('Optimised font-weight: Changed "bold" to "700"','Information');
|
182 |
-
}
|
183 |
-
else if($this->sub_value == 'normal')
|
184 |
-
{
|
185 |
-
$this->sub_value = '400';
|
186 |
-
$this->parser->log('Optimised font-weight: Changed "normal" to "400"','Information');
|
187 |
-
}
|
188 |
-
}
|
189 |
-
|
190 |
-
$temp = $this->compress_numbers($this->sub_value);
|
191 |
-
if($temp != $this->sub_value)
|
192 |
-
{
|
193 |
-
if(strlen($temp) > strlen($this->sub_value)) {
|
194 |
-
$this->parser->log('Fixed invalid number: Changed "'.$this->sub_value.'" to "'.$temp.'"','Warning');
|
195 |
-
} else {
|
196 |
-
$this->parser->log('Optimised number: Changed "'.$this->sub_value.'" to "'.$temp.'"','Information');
|
197 |
-
}
|
198 |
-
$this->sub_value = $temp;
|
199 |
-
}
|
200 |
-
if($this->parser->get_cfg('compress_colors'))
|
201 |
-
{
|
202 |
-
$temp = $this->cut_color($this->sub_value);
|
203 |
-
if($temp !== $this->sub_value)
|
204 |
-
{
|
205 |
-
if(isset($replace_colors[$this->sub_value])) {
|
206 |
-
$this->parser->log('Fixed invalid color name: Changed "'.$this->sub_value.'" to "'.$temp.'"','Warning');
|
207 |
-
} else {
|
208 |
-
$this->parser->log('Optimised color: Changed "'.$this->sub_value.'" to "'.$temp.'"','Information');
|
209 |
-
}
|
210 |
-
$this->sub_value = $temp;
|
211 |
-
}
|
212 |
-
}
|
213 |
-
$this->sub_value .= $important;
|
214 |
-
}
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Compresses shorthand values. Example: margin:1px 1px 1px 1px -> margin:1px
|
218 |
-
* @param string $value
|
219 |
-
* @access public
|
220 |
-
* @return string
|
221 |
-
* @version 1.0
|
222 |
-
*/
|
223 |
-
function shorthand($value)
|
224 |
-
{
|
225 |
-
$important = '';
|
226 |
-
if(csstidy::is_important($value))
|
227 |
-
{
|
228 |
-
$values = csstidy::gvw_important($value);
|
229 |
-
$important = '!important';
|
230 |
-
}
|
231 |
-
else $values = $value;
|
232 |
-
|
233 |
-
$values = explode(' ',$values);
|
234 |
-
switch(count($values))
|
235 |
-
{
|
236 |
-
case 4:
|
237 |
-
if($values[0] == $values[1] && $values[0] == $values[2] && $values[0] == $values[3])
|
238 |
-
{
|
239 |
-
return $values[0].$important;
|
240 |
-
}
|
241 |
-
elseif($values[1] == $values[3] && $values[0] == $values[2])
|
242 |
-
{
|
243 |
-
return $values[0].' '.$values[1].$important;
|
244 |
-
}
|
245 |
-
elseif($values[1] == $values[3])
|
246 |
-
{
|
247 |
-
return $values[0].' '.$values[1].' '.$values[2].$important;
|
248 |
-
}
|
249 |
-
break;
|
250 |
-
|
251 |
-
case 3:
|
252 |
-
if($values[0] == $values[1] && $values[0] == $values[2])
|
253 |
-
{
|
254 |
-
return $values[0].$important;
|
255 |
-
}
|
256 |
-
elseif($values[0] == $values[2])
|
257 |
-
{
|
258 |
-
return $values[0].' '.$values[1].$important;
|
259 |
-
}
|
260 |
-
break;
|
261 |
-
|
262 |
-
case 2:
|
263 |
-
if($values[0] == $values[1])
|
264 |
-
{
|
265 |
-
return $values[0].$important;
|
266 |
-
}
|
267 |
-
break;
|
268 |
-
}
|
269 |
-
|
270 |
-
return $value;
|
271 |
-
}
|
272 |
-
|
273 |
-
/**
|
274 |
-
* Removes unnecessary whitespace in ! important
|
275 |
-
* @param string $string
|
276 |
-
* @return string
|
277 |
-
* @access public
|
278 |
-
* @version 1.1
|
279 |
-
*/
|
280 |
-
function compress_important(&$string)
|
281 |
-
{
|
282 |
-
if(csstidy::is_important($string))
|
283 |
-
{
|
284 |
-
$string = csstidy::gvw_important($string) . '!important';
|
285 |
-
}
|
286 |
-
return $string;
|
287 |
-
}
|
288 |
-
|
289 |
-
/**
|
290 |
-
* Color compression function. Converts all rgb() values to #-values and uses the short-form if possible. Also replaces 4 color names by #-values.
|
291 |
-
* @param string $color
|
292 |
-
* @return string
|
293 |
-
* @version 1.1
|
294 |
-
*/
|
295 |
-
function cut_color($color)
|
296 |
-
{
|
297 |
-
$replace_colors =& $GLOBALS['csstidy']['replace_colors'];
|
298 |
-
|
299 |
-
// rgb(0,0,0) -> #000000 (or #000 in this case later)
|
300 |
-
if(strtolower(substr($color,0,4)) == 'rgb(')
|
301 |
-
{
|
302 |
-
$color_tmp = substr($color,4,strlen($color)-5);
|
303 |
-
$color_tmp = explode(',',$color_tmp);
|
304 |
-
for ( $i = 0; $i < count($color_tmp); $i++ )
|
305 |
-
{
|
306 |
-
$color_tmp[$i] = trim ($color_tmp[$i]);
|
307 |
-
if(substr($color_tmp[$i],-1) == '%')
|
308 |
-
{
|
309 |
-
$color_tmp[$i] = round((255*$color_tmp[$i])/100);
|
310 |
-
}
|
311 |
-
if($color_tmp[$i]>255) $color_tmp[$i] = 255;
|
312 |
-
}
|
313 |
-
$color = '#';
|
314 |
-
for ($i = 0; $i < 3; $i++ )
|
315 |
-
{
|
316 |
-
if($color_tmp[$i]<16) {
|
317 |
-
$color .= '0' . dechex($color_tmp[$i]);
|
318 |
-
} else {
|
319 |
-
$color .= dechex($color_tmp[$i]);
|
320 |
-
}
|
321 |
-
}
|
322 |
-
}
|
323 |
-
|
324 |
-
// Fix bad color names
|
325 |
-
if(isset($replace_colors[strtolower($color)]))
|
326 |
-
{
|
327 |
-
$color = $replace_colors[strtolower($color)];
|
328 |
-
}
|
329 |
-
|
330 |
-
// #aabbcc -> #abc
|
331 |
-
if(strlen($color) == 7)
|
332 |
-
{
|
333 |
-
$color_temp = strtolower($color);
|
334 |
-
if($color_temp{0} == '#' && $color_temp{1} == $color_temp{2} && $color_temp{3} == $color_temp{4} && $color_temp{5} == $color_temp{6})
|
335 |
-
{
|
336 |
-
$color = '#'.$color{1}.$color{3}.$color{5};
|
337 |
-
}
|
338 |
-
}
|
339 |
-
|
340 |
-
switch(strtolower($color))
|
341 |
-
{
|
342 |
-
/* color name -> hex code */
|
343 |
-
case 'black': return '#000';
|
344 |
-
case 'fuchsia': return '#F0F';
|
345 |
-
case 'white': return '#FFF';
|
346 |
-
case 'yellow': return '#FF0';
|
347 |
-
|
348 |
-
/* hex code -> color name */
|
349 |
-
case '#800000': return 'maroon';
|
350 |
-
case '#ffa500': return 'orange';
|
351 |
-
case '#808000': return 'olive';
|
352 |
-
case '#800080': return 'purple';
|
353 |
-
case '#008000': return 'green';
|
354 |
-
case '#000080': return 'navy';
|
355 |
-
case '#008080': return 'teal';
|
356 |
-
case '#c0c0c0': return 'silver';
|
357 |
-
case '#808080': return 'gray';
|
358 |
-
case '#f00': return 'red';
|
359 |
-
}
|
360 |
-
|
361 |
-
return $color;
|
362 |
-
}
|
363 |
-
|
364 |
-
/**
|
365 |
-
* Compresses numbers (ie. 1.0 becomes 1 or 1.100 becomes 1.1 )
|
366 |
-
* @param string $subvalue
|
367 |
-
* @return string
|
368 |
-
* @version 1.2
|
369 |
-
*/
|
370 |
-
function compress_numbers($subvalue)
|
371 |
-
{
|
372 |
-
$units =& $GLOBALS['csstidy']['units'];
|
373 |
-
$unit_values =& $GLOBALS['csstidy']['unit_values'];
|
374 |
-
$color_values =& $GLOBALS['csstidy']['color_values'];
|
375 |
-
|
376 |
-
// for font:1em/1em sans-serif...;
|
377 |
-
if($this->property == 'font')
|
378 |
-
{
|
379 |
-
$temp = explode('/',$subvalue);
|
380 |
-
}
|
381 |
-
else
|
382 |
-
{
|
383 |
-
$temp = array($subvalue);
|
384 |
-
}
|
385 |
-
for ($l = 0; $l < count($temp); $l++)
|
386 |
-
{
|
387 |
-
// continue if no numeric value
|
388 |
-
if (!(strlen($temp[$l]) > 0 && ( is_numeric($temp[$l]{0}) || $temp[$l]{0} == '+' || $temp[$l]{0} == '-' ) ))
|
389 |
-
{
|
390 |
-
continue;
|
391 |
-
}
|
392 |
-
|
393 |
-
// Fix bad colors
|
394 |
-
if (in_array($this->property, $color_values))
|
395 |
-
{
|
396 |
-
$temp[$l] = '#'.$temp[$l];
|
397 |
-
}
|
398 |
-
|
399 |
-
if (floatval($temp[$l]) == 0)
|
400 |
-
{
|
401 |
-
$temp[$l] = '0';
|
402 |
-
}
|
403 |
-
else
|
404 |
-
{
|
405 |
-
$unit_found = FALSE;
|
406 |
-
for ($m = 0, $size_4 = count($units); $m < $size_4; $m++)
|
407 |
-
{
|
408 |
-
if (strpos(strtolower($temp[$l]),$units[$m]) !== FALSE)
|
409 |
-
{
|
410 |
-
$temp[$l] = floatval($temp[$l]).$units[$m];
|
411 |
-
$unit_found = TRUE;
|
412 |
-
break;
|
413 |
-
}
|
414 |
-
}
|
415 |
-
if (!$unit_found && in_array($this->property,$unit_values,TRUE))
|
416 |
-
{
|
417 |
-
$temp[$l] = floatval($temp[$l]).'px';
|
418 |
-
}
|
419 |
-
else if (!$unit_found)
|
420 |
-
{
|
421 |
-
$temp[$l] = floatval($temp[$l]);
|
422 |
-
}
|
423 |
-
// Remove leading zero
|
424 |
-
if (abs(floatval($temp[$l])) < 1) {
|
425 |
-
if (floatval($temp[$l]) < 0) {
|
426 |
-
$temp[$l] = '-' . substr($temp[$l], 2);
|
427 |
-
} else {
|
428 |
-
$temp[$l] = substr($temp[$l], 1);
|
429 |
-
}
|
430 |
-
}
|
431 |
-
}
|
432 |
-
}
|
433 |
-
|
434 |
-
return ((count($temp) > 1) ? $temp[0].'/'.$temp[1] : $temp[0]);
|
435 |
-
}
|
436 |
-
|
437 |
-
/**
|
438 |
-
* Merges selectors with same properties. Example: a{color:red} b{color:red} -> a,b{color:red}
|
439 |
-
* Very basic and has at least one bug. Hopefully there is a replacement soon.
|
440 |
-
* @param array $array
|
441 |
-
* @return array
|
442 |
-
* @access public
|
443 |
-
* @version 1.2
|
444 |
-
*/
|
445 |
-
function merge_selectors(&$array)
|
446 |
-
{
|
447 |
-
$css = $array;
|
448 |
-
foreach($css as $key => $value)
|
449 |
-
{
|
450 |
-
if(!isset($css[$key]))
|
451 |
-
{
|
452 |
-
continue;
|
453 |
-
}
|
454 |
-
$newsel = '';
|
455 |
-
|
456 |
-
// Check if properties also exist in another selector
|
457 |
-
$keys = array();
|
458 |
-
// PHP bug (?) without $css = $array; here
|
459 |
-
foreach($css as $selector => $vali)
|
460 |
-
{
|
461 |
-
if($selector == $key)
|
462 |
-
{
|
463 |
-
continue;
|
464 |
-
}
|
465 |
-
|
466 |
-
if($css[$key] === $vali)
|
467 |
-
{
|
468 |
-
$keys[] = $selector;
|
469 |
-
}
|
470 |
-
}
|
471 |
-
|
472 |
-
if(!empty($keys))
|
473 |
-
{
|
474 |
-
$newsel = $key;
|
475 |
-
unset($css[$key]);
|
476 |
-
foreach($keys as $selector)
|
477 |
-
{
|
478 |
-
unset($css[$selector]);
|
479 |
-
$newsel .= ','.$selector;
|
480 |
-
}
|
481 |
-
$css[$newsel] = $value;
|
482 |
-
}
|
483 |
-
}
|
484 |
-
$array = $css;
|
485 |
-
}
|
486 |
-
|
487 |
-
/**
|
488 |
-
* Dissolves properties like padding:10px 10px 10px to padding-top:10px;padding-bottom:10px;...
|
489 |
-
* @param string $property
|
490 |
-
* @param string $value
|
491 |
-
* @return array
|
492 |
-
* @version 1.0
|
493 |
-
* @see merge_4value_shorthands()
|
494 |
-
*/
|
495 |
-
function dissolve_4value_shorthands($property,$value)
|
496 |
-
{
|
497 |
-
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
498 |
-
if(!is_array($shorthands[$property]))
|
499 |
-
{
|
500 |
-
$return[$property] = $value;
|
501 |
-
return $return;
|
502 |
-
}
|
503 |
-
|
504 |
-
$important = '';
|
505 |
-
if(csstidy::is_important($value))
|
506 |
-
{
|
507 |
-
$value = csstidy::gvw_important($value);
|
508 |
-
$important = '!important';
|
509 |
-
}
|
510 |
-
$values = explode(' ',$value);
|
511 |
-
|
512 |
-
|
513 |
-
$return = array();
|
514 |
-
if(count($values) == 4)
|
515 |
-
{
|
516 |
-
for($i=0;$i<4;$i++)
|
517 |
-
{
|
518 |
-
$return[$shorthands[$property][$i]] = $values[$i].$important;
|
519 |
-
}
|
520 |
-
}
|
521 |
-
elseif(count($values) == 3)
|
522 |
-
{
|
523 |
-
$return[$shorthands[$property][0]] = $values[0].$important;
|
524 |
-
$return[$shorthands[$property][1]] = $values[1].$important;
|
525 |
-
$return[$shorthands[$property][3]] = $values[1].$important;
|
526 |
-
$return[$shorthands[$property][2]] = $values[2].$important;
|
527 |
-
}
|
528 |
-
elseif(count($values) == 2)
|
529 |
-
{
|
530 |
-
for($i=0;$i<4;$i++)
|
531 |
-
{
|
532 |
-
$return[$shorthands[$property][$i]] = (($i % 2 != 0)) ? $values[1].$important : $values[0].$important;
|
533 |
-
}
|
534 |
-
}
|
535 |
-
else
|
536 |
-
{
|
537 |
-
for($i=0;$i<4;$i++)
|
538 |
-
{
|
539 |
-
$return[$shorthands[$property][$i]] = $values[0].$important;
|
540 |
-
}
|
541 |
-
}
|
542 |
-
|
543 |
-
return $return;
|
544 |
-
}
|
545 |
-
|
546 |
-
/**
|
547 |
-
* Explodes a string as explode() does, however, not if $sep is escaped or within a string.
|
548 |
-
* @param string $sep seperator
|
549 |
-
* @param string $string
|
550 |
-
* @return array
|
551 |
-
* @version 1.0
|
552 |
-
*/
|
553 |
-
function explode_ws($sep,$string)
|
554 |
-
{
|
555 |
-
$status = 'st';
|
556 |
-
$to = '';
|
557 |
-
|
558 |
-
$output = array();
|
559 |
-
$num = 0;
|
560 |
-
for($i = 0, $len = strlen($string);$i < $len; $i++)
|
561 |
-
{
|
562 |
-
switch($status)
|
563 |
-
{
|
564 |
-
case 'st':
|
565 |
-
if($string{$i} == $sep && !csstidy::escaped($string,$i))
|
566 |
-
{
|
567 |
-
++$num;
|
568 |
-
}
|
569 |
-
elseif($string{$i} == '"' || $string{$i} == '\'' || $string{$i} == '(' && !csstidy::escaped($string,$i))
|
570 |
-
{
|
571 |
-
$status = 'str';
|
572 |
-
$to = ($string{$i} == '(') ? ')' : $string{$i};
|
573 |
-
(isset($output[$num])) ? $output[$num] .= $string{$i} : $output[$num] = $string{$i};
|
574 |
-
}
|
575 |
-
else
|
576 |
-
{
|
577 |
-
(isset($output[$num])) ? $output[$num] .= $string{$i} : $output[$num] = $string{$i};
|
578 |
-
}
|
579 |
-
break;
|
580 |
-
|
581 |
-
case 'str':
|
582 |
-
if($string{$i} == $to && !csstidy::escaped($string,$i))
|
583 |
-
{
|
584 |
-
$status = 'st';
|
585 |
-
}
|
586 |
-
(isset($output[$num])) ? $output[$num] .= $string{$i} : $output[$num] = $string{$i};
|
587 |
-
break;
|
588 |
-
}
|
589 |
-
}
|
590 |
-
|
591 |
-
if(isset($output[0]))
|
592 |
-
{
|
593 |
-
return $output;
|
594 |
-
}
|
595 |
-
else
|
596 |
-
{
|
597 |
-
return array($output);
|
598 |
-
}
|
599 |
-
}
|
600 |
-
|
601 |
-
/**
|
602 |
-
* Merges Shorthand properties again, the opposite of dissolve_4value_shorthands()
|
603 |
-
* @param array $array
|
604 |
-
* @return array
|
605 |
-
* @version 1.2
|
606 |
-
* @see dissolve_4value_shorthands()
|
607 |
-
*/
|
608 |
-
function merge_4value_shorthands($array)
|
609 |
-
{
|
610 |
-
$return = $array;
|
611 |
-
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
612 |
-
|
613 |
-
foreach($shorthands as $key => $value)
|
614 |
-
{
|
615 |
-
if(isset($array[$value[0]]) && isset($array[$value[1]])
|
616 |
-
&& isset($array[$value[2]]) && isset($array[$value[3]]) && $value !== 0)
|
617 |
-
{
|
618 |
-
$return[$key] = '';
|
619 |
-
|
620 |
-
$important = '';
|
621 |
-
for($i = 0; $i < 4; $i++)
|
622 |
-
{
|
623 |
-
$val = $array[$value[$i]];
|
624 |
-
if(csstidy::is_important($val))
|
625 |
-
{
|
626 |
-
$important = '!important';
|
627 |
-
$return[$key] .= csstidy::gvw_important($val).' ';
|
628 |
-
}
|
629 |
-
else
|
630 |
-
{
|
631 |
-
$return[$key] .= $val.' ';
|
632 |
-
}
|
633 |
-
unset($return[$value[$i]]);
|
634 |
-
}
|
635 |
-
$return[$key] = csstidy_optimise::shorthand(trim($return[$key].$important));
|
636 |
-
}
|
637 |
-
}
|
638 |
-
return $return;
|
639 |
-
}
|
640 |
-
|
641 |
-
/**
|
642 |
-
* Dissolve background property
|
643 |
-
* @param string $str_value
|
644 |
-
* @return array
|
645 |
-
* @version 1.0
|
646 |
-
* @see merge_bg()
|
647 |
-
* @todo full CSS 3 compliance
|
648 |
-
*/
|
649 |
-
function dissolve_short_bg($str_value)
|
650 |
-
{
|
651 |
-
$background_prop_default =& $GLOBALS['csstidy']['background_prop_default'];
|
652 |
-
$repeat = array('repeat','repeat-x','repeat-y','no-repeat','space');
|
653 |
-
$attachment = array('scroll','fixed','local');
|
654 |
-
$clip = array('border','padding');
|
655 |
-
$origin = array('border','padding','content');
|
656 |
-
$pos = array('top','center','bottom','left','right');
|
657 |
-
$important = '';
|
658 |
-
$return = array('background-image' => NULL,'background-size' => NULL,'background-repeat' => NULL,'background-position' => NULL,'background-attachment'=>NULL,'background-clip' => NULL,'background-origin' => NULL,'background-color' => NULL);
|
659 |
-
|
660 |
-
if(csstidy::is_important($str_value))
|
661 |
-
{
|
662 |
-
$important = ' !important';
|
663 |
-
$str_value = csstidy::gvw_important($str_value);
|
664 |
-
}
|
665 |
-
|
666 |
-
$str_value = csstidy_optimise::explode_ws(',',$str_value);
|
667 |
-
for($i = 0; $i < count($str_value); $i++)
|
668 |
-
{
|
669 |
-
$have['clip'] = FALSE; $have['pos'] = FALSE;
|
670 |
-
$have['color'] = FALSE; $have['bg'] = FALSE;
|
671 |
-
|
672 |
-
$str_value[$i] = csstidy_optimise::explode_ws(' ',trim($str_value[$i]));
|
673 |
-
|
674 |
-
for($j = 0; $j < count($str_value[$i]); $j++)
|
675 |
-
{
|
676 |
-
if($have['bg'] === FALSE && (substr($str_value[$i][$j],0,4) == 'url(' || $str_value[$i][$j] === 'none'))
|
677 |
-
{
|
678 |
-
$return['background-image'] .= $str_value[$i][$j].',';
|
679 |
-
$have['bg'] = TRUE;
|
680 |
-
}
|
681 |
-
elseif(in_array($str_value[$i][$j],$repeat,TRUE))
|
682 |
-
{
|
683 |
-
$return['background-repeat'] .= $str_value[$i][$j].',';
|
684 |
-
}
|
685 |
-
elseif(in_array($str_value[$i][$j],$attachment,TRUE))
|
686 |
-
{
|
687 |
-
$return['background-attachment'] .= $str_value[$i][$j].',';
|
688 |
-
}
|
689 |
-
elseif(in_array($str_value[$i][$j],$clip,TRUE) && !$have['clip'])
|
690 |
-
{
|
691 |
-
$return['background-clip'] .= $str_value[$i][$j].',';
|
692 |
-
$have['clip'] = TRUE;
|
693 |
-
}
|
694 |
-
elseif(in_array($str_value[$i][$j],$origin,TRUE))
|
695 |
-
{
|
696 |
-
$return['background-origin'] .= $str_value[$i][$j].',';
|
697 |
-
}
|
698 |
-
elseif($str_value[$i][$j]{0} == '(')
|
699 |
-
{
|
700 |
-
$return['background-size'] .= substr($str_value[$i][$j],1,-1).',';
|
701 |
-
}
|
702 |
-
elseif(in_array($str_value[$i][$j],$pos,TRUE) || is_numeric($str_value[$i][$j]{0}) || $str_value[$i][$j]{0} === NULL)
|
703 |
-
{
|
704 |
-
$return['background-position'] .= $str_value[$i][$j];
|
705 |
-
if(!$have['pos']) $return['background-position'] .= ' '; else $return['background-position'].= ',';
|
706 |
-
$have['pos'] = TRUE;
|
707 |
-
}
|
708 |
-
elseif(!$have['color'])
|
709 |
-
{
|
710 |
-
$return['background-color'] .= $str_value[$i][$j].',';
|
711 |
-
$have['color'] = TRUE;
|
712 |
-
}
|
713 |
-
}
|
714 |
-
}
|
715 |
-
|
716 |
-
foreach($background_prop_default as $bg_prop => $default_value)
|
717 |
-
{
|
718 |
-
if($return[$bg_prop] !== NULL)
|
719 |
-
{
|
720 |
-
$return[$bg_prop] = substr($return[$bg_prop],0,-1).$important;
|
721 |
-
}
|
722 |
-
else $return[$bg_prop] = $default_value.$important;
|
723 |
-
}
|
724 |
-
return $return;
|
725 |
-
}
|
726 |
-
|
727 |
-
/**
|
728 |
-
* Merges all background properties
|
729 |
-
* @param array $input_css
|
730 |
-
* @return array
|
731 |
-
* @version 1.0
|
732 |
-
* @see dissolve_short_bg()
|
733 |
-
* @todo full CSS 3 compliance
|
734 |
-
*/
|
735 |
-
function merge_bg($input_css)
|
736 |
-
{
|
737 |
-
$background_prop_default =& $GLOBALS['csstidy']['background_prop_default'];
|
738 |
-
// Max number of background images. CSS3 not yet fully implemented
|
739 |
-
$number_of_values = @max(count(csstidy_optimise::explode_ws(',',$input_css['background-image'])),count(csstidy_optimise::explode_ws(',',$input_css['background-color'])),1);
|
740 |
-
// Array with background images to check if BG image exists
|
741 |
-
$bg_img_array = @csstidy_optimise::explode_ws(',',csstidy::gvw_important($input_css['background-image']));
|
742 |
-
$new_bg_value = '';
|
743 |
-
$important = '';
|
744 |
-
|
745 |
-
for($i = 0; $i < $number_of_values; $i++)
|
746 |
-
{
|
747 |
-
foreach($background_prop_default as $bg_property => $default_value)
|
748 |
-
{
|
749 |
-
// Skip if property does not exist
|
750 |
-
if(!isset($input_css[$bg_property]))
|
751 |
-
{
|
752 |
-
continue;
|
753 |
-
}
|
754 |
-
|
755 |
-
$cur_value = $input_css[$bg_property];
|
756 |
-
|
757 |
-
// Skip some properties if there is no background image
|
758 |
-
if((!isset($bg_img_array[$i]) || $bg_img_array[$i] === 'none')
|
759 |
-
&& ($bg_property === 'background-size' || $bg_property === 'background-position'
|
760 |
-
|| $bg_property === 'background-attachment' || $bg_property === 'background-repeat'))
|
761 |
-
{
|
762 |
-
continue;
|
763 |
-
}
|
764 |
-
|
765 |
-
// Remove !important
|
766 |
-
if(csstidy::is_important($cur_value))
|
767 |
-
{
|
768 |
-
$important = ' !important';
|
769 |
-
$cur_value = csstidy::gvw_important($cur_value);
|
770 |
-
}
|
771 |
-
|
772 |
-
// Do not add default values
|
773 |
-
if($cur_value === $default_value)
|
774 |
-
{
|
775 |
-
continue;
|
776 |
-
}
|
777 |
-
|
778 |
-
$temp = csstidy_optimise::explode_ws(',',$cur_value);
|
779 |
-
|
780 |
-
if(isset($temp[$i]))
|
781 |
-
{
|
782 |
-
if($bg_property == 'background-size')
|
783 |
-
{
|
784 |
-
|
785 |
-
}
|
786 |
-
else
|
787 |
-
{
|
788 |
-
$new_bg_value .= $temp[$i].' ';
|
789 |
-
}
|
790 |
-
}
|
791 |
-
}
|
792 |
-
|
793 |
-
$new_bg_value = trim($new_bg_value);
|
794 |
-
if($i != $number_of_values-1) $new_bg_value .= ',';
|
795 |
-
}
|
796 |
-
|
797 |
-
// Delete all background-properties
|
798 |
-
foreach($background_prop_default as $bg_property => $default_value)
|
799 |
-
{
|
800 |
-
unset($input_css[$bg_property]);
|
801 |
-
}
|
802 |
-
|
803 |
-
// Add new background property
|
804 |
-
if($new_bg_value !== '') $input_css['background'] = $new_bg_value.$important;
|
805 |
-
|
806 |
-
return $input_css;
|
807 |
-
}
|
808 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* CSSTidy - CSS Parser and Optimiser
|
4 |
+
*
|
5 |
+
* CSS Optimising Class
|
6 |
+
* This class optimises CSS data generated by csstidy.
|
7 |
+
*
|
8 |
+
* This file is part of CSSTidy.
|
9 |
+
*
|
10 |
+
* CSSTidy is free software; you can redistribute it and/or modify
|
11 |
+
* it under the terms of the GNU General Public License as published by
|
12 |
+
* the Free Software Foundation; either version 2 of the License, or
|
13 |
+
* (at your option) any later version.
|
14 |
+
*
|
15 |
+
* CSSTidy is distributed in the hope that it will be useful,
|
16 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18 |
+
* GNU General Public License for more details.
|
19 |
+
*
|
20 |
+
* You should have received a copy of the GNU General Public License
|
21 |
+
* along with CSSTidy; if not, write to the Free Software
|
22 |
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
23 |
+
*
|
24 |
+
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
25 |
+
* @package csstidy
|
26 |
+
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
27 |
+
*/
|
28 |
+
|
29 |
+
/**
|
30 |
+
* CSS Optimising Class
|
31 |
+
*
|
32 |
+
* This class optimises CSS data generated by csstidy.
|
33 |
+
*
|
34 |
+
* @package csstidy
|
35 |
+
* @author Florian Schmitz (floele at gmail dot com) 2005-2006
|
36 |
+
* @version 1.0
|
37 |
+
*/
|
38 |
+
|
39 |
+
class csstidy_optimise
|
40 |
+
{
|
41 |
+
/**
|
42 |
+
* Constructor
|
43 |
+
* @param array $css contains the class csstidy
|
44 |
+
* @access private
|
45 |
+
* @version 1.0
|
46 |
+
*/
|
47 |
+
function csstidy_optimise(&$css)
|
48 |
+
{
|
49 |
+
$this->parser =& $css;
|
50 |
+
$this->css =& $css->css;
|
51 |
+
$this->sub_value =& $css->sub_value;
|
52 |
+
$this->at =& $css->at;
|
53 |
+
$this->selector =& $css->selector;
|
54 |
+
$this->property =& $css->property;
|
55 |
+
$this->value =& $css->value;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Optimises $css after parsing
|
60 |
+
* @access public
|
61 |
+
* @version 1.0
|
62 |
+
*/
|
63 |
+
function postparse()
|
64 |
+
{
|
65 |
+
if ($this->parser->get_cfg('preserve_css')) {
|
66 |
+
return;
|
67 |
+
}
|
68 |
+
|
69 |
+
if ($this->parser->get_cfg('merge_selectors') == 2)
|
70 |
+
{
|
71 |
+
foreach ($this->css as $medium => $value)
|
72 |
+
{
|
73 |
+
$this->merge_selectors($this->css[$medium]);
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
if ($this->parser->get_cfg('optimise_shorthands') > 0)
|
78 |
+
{
|
79 |
+
foreach ($this->css as $medium => $value)
|
80 |
+
{
|
81 |
+
foreach ($value as $selector => $value1)
|
82 |
+
{
|
83 |
+
$this->css[$medium][$selector] = csstidy_optimise::merge_4value_shorthands($this->css[$medium][$selector]);
|
84 |
+
|
85 |
+
if ($this->parser->get_cfg('optimise_shorthands') < 2) {
|
86 |
+
continue;
|
87 |
+
}
|
88 |
+
|
89 |
+
$this->css[$medium][$selector] = csstidy_optimise::merge_bg($this->css[$medium][$selector]);
|
90 |
+
if (empty($this->css[$medium][$selector])) {
|
91 |
+
unset($this->css[$medium][$selector]);
|
92 |
+
}
|
93 |
+
}
|
94 |
+
}
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Optimises values
|
100 |
+
* @access public
|
101 |
+
* @version 1.0
|
102 |
+
*/
|
103 |
+
function value()
|
104 |
+
{
|
105 |
+
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
106 |
+
|
107 |
+
// optimise shorthand properties
|
108 |
+
if(isset($shorthands[$this->property]))
|
109 |
+
{
|
110 |
+
$temp = csstidy_optimise::shorthand($this->value); // FIXME - move
|
111 |
+
if($temp != $this->value)
|
112 |
+
{
|
113 |
+
$this->parser->log('Optimised shorthand notation ('.$this->property.'): Changed "'.$this->value.'" to "'.$temp.'"','Information');
|
114 |
+
}
|
115 |
+
$this->value = $temp;
|
116 |
+
}
|
117 |
+
|
118 |
+
// Remove whitespace at ! important
|
119 |
+
if($this->value != $this->compress_important($this->value))
|
120 |
+
{
|
121 |
+
$this->parser->log('Optimised !important','Information');
|
122 |
+
}
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Optimises shorthands
|
127 |
+
* @access public
|
128 |
+
* @version 1.0
|
129 |
+
*/
|
130 |
+
function shorthands()
|
131 |
+
{
|
132 |
+
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
133 |
+
|
134 |
+
if(!$this->parser->get_cfg('optimise_shorthands') || $this->parser->get_cfg('preserve_css')) {
|
135 |
+
return;
|
136 |
+
}
|
137 |
+
|
138 |
+
if($this->property == 'background' && $this->parser->get_cfg('optimise_shorthands') > 1)
|
139 |
+
{
|
140 |
+
unset($this->css[$this->at][$this->selector]['background']);
|
141 |
+
$this->parser->merge_css_blocks($this->at,$this->selector,csstidy_optimise::dissolve_short_bg($this->value));
|
142 |
+
}
|
143 |
+
if(isset($shorthands[$this->property]))
|
144 |
+
{
|
145 |
+
$this->parser->merge_css_blocks($this->at,$this->selector,csstidy_optimise::dissolve_4value_shorthands($this->property,$this->value));
|
146 |
+
if(is_array($shorthands[$this->property]))
|
147 |
+
{
|
148 |
+
unset($this->css[$this->at][$this->selector][$this->property]);
|
149 |
+
}
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* Optimises a sub-value
|
155 |
+
* @access public
|
156 |
+
* @version 1.0
|
157 |
+
*/
|
158 |
+
function subvalue()
|
159 |
+
{
|
160 |
+
$replace_colors =& $GLOBALS['csstidy']['replace_colors'];
|
161 |
+
|
162 |
+
$this->sub_value = trim($this->sub_value);
|
163 |
+
if($this->sub_value == '') // caution : '0'
|
164 |
+
{
|
165 |
+
return;
|
166 |
+
}
|
167 |
+
|
168 |
+
$important = '';
|
169 |
+
if(csstidy::is_important($this->sub_value))
|
170 |
+
{
|
171 |
+
$important = '!important';
|
172 |
+
}
|
173 |
+
$this->sub_value = csstidy::gvw_important($this->sub_value);
|
174 |
+
|
175 |
+
// Compress font-weight
|
176 |
+
if($this->property == 'font-weight' && $this->parser->get_cfg('compress_font-weight'))
|
177 |
+
{
|
178 |
+
if($this->sub_value == 'bold')
|
179 |
+
{
|
180 |
+
$this->sub_value = '700';
|
181 |
+
$this->parser->log('Optimised font-weight: Changed "bold" to "700"','Information');
|
182 |
+
}
|
183 |
+
else if($this->sub_value == 'normal')
|
184 |
+
{
|
185 |
+
$this->sub_value = '400';
|
186 |
+
$this->parser->log('Optimised font-weight: Changed "normal" to "400"','Information');
|
187 |
+
}
|
188 |
+
}
|
189 |
+
|
190 |
+
$temp = $this->compress_numbers($this->sub_value);
|
191 |
+
if($temp != $this->sub_value)
|
192 |
+
{
|
193 |
+
if(strlen($temp) > strlen($this->sub_value)) {
|
194 |
+
$this->parser->log('Fixed invalid number: Changed "'.$this->sub_value.'" to "'.$temp.'"','Warning');
|
195 |
+
} else {
|
196 |
+
$this->parser->log('Optimised number: Changed "'.$this->sub_value.'" to "'.$temp.'"','Information');
|
197 |
+
}
|
198 |
+
$this->sub_value = $temp;
|
199 |
+
}
|
200 |
+
if($this->parser->get_cfg('compress_colors'))
|
201 |
+
{
|
202 |
+
$temp = $this->cut_color($this->sub_value);
|
203 |
+
if($temp !== $this->sub_value)
|
204 |
+
{
|
205 |
+
if(isset($replace_colors[$this->sub_value])) {
|
206 |
+
$this->parser->log('Fixed invalid color name: Changed "'.$this->sub_value.'" to "'.$temp.'"','Warning');
|
207 |
+
} else {
|
208 |
+
$this->parser->log('Optimised color: Changed "'.$this->sub_value.'" to "'.$temp.'"','Information');
|
209 |
+
}
|
210 |
+
$this->sub_value = $temp;
|
211 |
+
}
|
212 |
+
}
|
213 |
+
$this->sub_value .= $important;
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Compresses shorthand values. Example: margin:1px 1px 1px 1px -> margin:1px
|
218 |
+
* @param string $value
|
219 |
+
* @access public
|
220 |
+
* @return string
|
221 |
+
* @version 1.0
|
222 |
+
*/
|
223 |
+
function shorthand($value)
|
224 |
+
{
|
225 |
+
$important = '';
|
226 |
+
if(csstidy::is_important($value))
|
227 |
+
{
|
228 |
+
$values = csstidy::gvw_important($value);
|
229 |
+
$important = '!important';
|
230 |
+
}
|
231 |
+
else $values = $value;
|
232 |
+
|
233 |
+
$values = explode(' ',$values);
|
234 |
+
switch(count($values))
|
235 |
+
{
|
236 |
+
case 4:
|
237 |
+
if($values[0] == $values[1] && $values[0] == $values[2] && $values[0] == $values[3])
|
238 |
+
{
|
239 |
+
return $values[0].$important;
|
240 |
+
}
|
241 |
+
elseif($values[1] == $values[3] && $values[0] == $values[2])
|
242 |
+
{
|
243 |
+
return $values[0].' '.$values[1].$important;
|
244 |
+
}
|
245 |
+
elseif($values[1] == $values[3])
|
246 |
+
{
|
247 |
+
return $values[0].' '.$values[1].' '.$values[2].$important;
|
248 |
+
}
|
249 |
+
break;
|
250 |
+
|
251 |
+
case 3:
|
252 |
+
if($values[0] == $values[1] && $values[0] == $values[2])
|
253 |
+
{
|
254 |
+
return $values[0].$important;
|
255 |
+
}
|
256 |
+
elseif($values[0] == $values[2])
|
257 |
+
{
|
258 |
+
return $values[0].' '.$values[1].$important;
|
259 |
+
}
|
260 |
+
break;
|
261 |
+
|
262 |
+
case 2:
|
263 |
+
if($values[0] == $values[1])
|
264 |
+
{
|
265 |
+
return $values[0].$important;
|
266 |
+
}
|
267 |
+
break;
|
268 |
+
}
|
269 |
+
|
270 |
+
return $value;
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Removes unnecessary whitespace in ! important
|
275 |
+
* @param string $string
|
276 |
+
* @return string
|
277 |
+
* @access public
|
278 |
+
* @version 1.1
|
279 |
+
*/
|
280 |
+
function compress_important(&$string)
|
281 |
+
{
|
282 |
+
if(csstidy::is_important($string))
|
283 |
+
{
|
284 |
+
$string = csstidy::gvw_important($string) . '!important';
|
285 |
+
}
|
286 |
+
return $string;
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* Color compression function. Converts all rgb() values to #-values and uses the short-form if possible. Also replaces 4 color names by #-values.
|
291 |
+
* @param string $color
|
292 |
+
* @return string
|
293 |
+
* @version 1.1
|
294 |
+
*/
|
295 |
+
function cut_color($color)
|
296 |
+
{
|
297 |
+
$replace_colors =& $GLOBALS['csstidy']['replace_colors'];
|
298 |
+
|
299 |
+
// rgb(0,0,0) -> #000000 (or #000 in this case later)
|
300 |
+
if(strtolower(substr($color,0,4)) == 'rgb(')
|
301 |
+
{
|
302 |
+
$color_tmp = substr($color,4,strlen($color)-5);
|
303 |
+
$color_tmp = explode(',',$color_tmp);
|
304 |
+
for ( $i = 0; $i < count($color_tmp); $i++ )
|
305 |
+
{
|
306 |
+
$color_tmp[$i] = trim ($color_tmp[$i]);
|
307 |
+
if(substr($color_tmp[$i],-1) == '%')
|
308 |
+
{
|
309 |
+
$color_tmp[$i] = round((255*$color_tmp[$i])/100);
|
310 |
+
}
|
311 |
+
if($color_tmp[$i]>255) $color_tmp[$i] = 255;
|
312 |
+
}
|
313 |
+
$color = '#';
|
314 |
+
for ($i = 0; $i < 3; $i++ )
|
315 |
+
{
|
316 |
+
if($color_tmp[$i]<16) {
|
317 |
+
$color .= '0' . dechex($color_tmp[$i]);
|
318 |
+
} else {
|
319 |
+
$color .= dechex($color_tmp[$i]);
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
// Fix bad color names
|
325 |
+
if(isset($replace_colors[strtolower($color)]))
|
326 |
+
{
|
327 |
+
$color = $replace_colors[strtolower($color)];
|
328 |
+
}
|
329 |
+
|
330 |
+
// #aabbcc -> #abc
|
331 |
+
if(strlen($color) == 7)
|
332 |
+
{
|
333 |
+
$color_temp = strtolower($color);
|
334 |
+
if($color_temp{0} == '#' && $color_temp{1} == $color_temp{2} && $color_temp{3} == $color_temp{4} && $color_temp{5} == $color_temp{6})
|
335 |
+
{
|
336 |
+
$color = '#'.$color{1}.$color{3}.$color{5};
|
337 |
+
}
|
338 |
+
}
|
339 |
+
|
340 |
+
switch(strtolower($color))
|
341 |
+
{
|
342 |
+
/* color name -> hex code */
|
343 |
+
case 'black': return '#000';
|
344 |
+
case 'fuchsia': return '#F0F';
|
345 |
+
case 'white': return '#FFF';
|
346 |
+
case 'yellow': return '#FF0';
|
347 |
+
|
348 |
+
/* hex code -> color name */
|
349 |
+
case '#800000': return 'maroon';
|
350 |
+
case '#ffa500': return 'orange';
|
351 |
+
case '#808000': return 'olive';
|
352 |
+
case '#800080': return 'purple';
|
353 |
+
case '#008000': return 'green';
|
354 |
+
case '#000080': return 'navy';
|
355 |
+
case '#008080': return 'teal';
|
356 |
+
case '#c0c0c0': return 'silver';
|
357 |
+
case '#808080': return 'gray';
|
358 |
+
case '#f00': return 'red';
|
359 |
+
}
|
360 |
+
|
361 |
+
return $color;
|
362 |
+
}
|
363 |
+
|
364 |
+
/**
|
365 |
+
* Compresses numbers (ie. 1.0 becomes 1 or 1.100 becomes 1.1 )
|
366 |
+
* @param string $subvalue
|
367 |
+
* @return string
|
368 |
+
* @version 1.2
|
369 |
+
*/
|
370 |
+
function compress_numbers($subvalue)
|
371 |
+
{
|
372 |
+
$units =& $GLOBALS['csstidy']['units'];
|
373 |
+
$unit_values =& $GLOBALS['csstidy']['unit_values'];
|
374 |
+
$color_values =& $GLOBALS['csstidy']['color_values'];
|
375 |
+
|
376 |
+
// for font:1em/1em sans-serif...;
|
377 |
+
if($this->property == 'font')
|
378 |
+
{
|
379 |
+
$temp = explode('/',$subvalue);
|
380 |
+
}
|
381 |
+
else
|
382 |
+
{
|
383 |
+
$temp = array($subvalue);
|
384 |
+
}
|
385 |
+
for ($l = 0; $l < count($temp); $l++)
|
386 |
+
{
|
387 |
+
// continue if no numeric value
|
388 |
+
if (!(strlen($temp[$l]) > 0 && ( is_numeric($temp[$l]{0}) || $temp[$l]{0} == '+' || $temp[$l]{0} == '-' ) ))
|
389 |
+
{
|
390 |
+
continue;
|
391 |
+
}
|
392 |
+
|
393 |
+
// Fix bad colors
|
394 |
+
if (in_array($this->property, $color_values))
|
395 |
+
{
|
396 |
+
$temp[$l] = '#'.$temp[$l];
|
397 |
+
}
|
398 |
+
|
399 |
+
if (floatval($temp[$l]) == 0)
|
400 |
+
{
|
401 |
+
$temp[$l] = '0';
|
402 |
+
}
|
403 |
+
else
|
404 |
+
{
|
405 |
+
$unit_found = FALSE;
|
406 |
+
for ($m = 0, $size_4 = count($units); $m < $size_4; $m++)
|
407 |
+
{
|
408 |
+
if (strpos(strtolower($temp[$l]),$units[$m]) !== FALSE)
|
409 |
+
{
|
410 |
+
$temp[$l] = floatval($temp[$l]).$units[$m];
|
411 |
+
$unit_found = TRUE;
|
412 |
+
break;
|
413 |
+
}
|
414 |
+
}
|
415 |
+
if (!$unit_found && in_array($this->property,$unit_values,TRUE))
|
416 |
+
{
|
417 |
+
$temp[$l] = floatval($temp[$l]).'px';
|
418 |
+
}
|
419 |
+
else if (!$unit_found)
|
420 |
+
{
|
421 |
+
$temp[$l] = floatval($temp[$l]);
|
422 |
+
}
|
423 |
+
// Remove leading zero
|
424 |
+
if (abs(floatval($temp[$l])) < 1) {
|
425 |
+
if (floatval($temp[$l]) < 0) {
|
426 |
+
$temp[$l] = '-' . substr($temp[$l], 2);
|
427 |
+
} else {
|
428 |
+
$temp[$l] = substr($temp[$l], 1);
|
429 |
+
}
|
430 |
+
}
|
431 |
+
}
|
432 |
+
}
|
433 |
+
|
434 |
+
return ((count($temp) > 1) ? $temp[0].'/'.$temp[1] : $temp[0]);
|
435 |
+
}
|
436 |
+
|
437 |
+
/**
|
438 |
+
* Merges selectors with same properties. Example: a{color:red} b{color:red} -> a,b{color:red}
|
439 |
+
* Very basic and has at least one bug. Hopefully there is a replacement soon.
|
440 |
+
* @param array $array
|
441 |
+
* @return array
|
442 |
+
* @access public
|
443 |
+
* @version 1.2
|
444 |
+
*/
|
445 |
+
function merge_selectors(&$array)
|
446 |
+
{
|
447 |
+
$css = $array;
|
448 |
+
foreach($css as $key => $value)
|
449 |
+
{
|
450 |
+
if(!isset($css[$key]))
|
451 |
+
{
|
452 |
+
continue;
|
453 |
+
}
|
454 |
+
$newsel = '';
|
455 |
+
|
456 |
+
// Check if properties also exist in another selector
|
457 |
+
$keys = array();
|
458 |
+
// PHP bug (?) without $css = $array; here
|
459 |
+
foreach($css as $selector => $vali)
|
460 |
+
{
|
461 |
+
if($selector == $key)
|
462 |
+
{
|
463 |
+
continue;
|
464 |
+
}
|
465 |
+
|
466 |
+
if($css[$key] === $vali)
|
467 |
+
{
|
468 |
+
$keys[] = $selector;
|
469 |
+
}
|
470 |
+
}
|
471 |
+
|
472 |
+
if(!empty($keys))
|
473 |
+
{
|
474 |
+
$newsel = $key;
|
475 |
+
unset($css[$key]);
|
476 |
+
foreach($keys as $selector)
|
477 |
+
{
|
478 |
+
unset($css[$selector]);
|
479 |
+
$newsel .= ','.$selector;
|
480 |
+
}
|
481 |
+
$css[$newsel] = $value;
|
482 |
+
}
|
483 |
+
}
|
484 |
+
$array = $css;
|
485 |
+
}
|
486 |
+
|
487 |
+
/**
|
488 |
+
* Dissolves properties like padding:10px 10px 10px to padding-top:10px;padding-bottom:10px;...
|
489 |
+
* @param string $property
|
490 |
+
* @param string $value
|
491 |
+
* @return array
|
492 |
+
* @version 1.0
|
493 |
+
* @see merge_4value_shorthands()
|
494 |
+
*/
|
495 |
+
function dissolve_4value_shorthands($property,$value)
|
496 |
+
{
|
497 |
+
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
498 |
+
if(!is_array($shorthands[$property]))
|
499 |
+
{
|
500 |
+
$return[$property] = $value;
|
501 |
+
return $return;
|
502 |
+
}
|
503 |
+
|
504 |
+
$important = '';
|
505 |
+
if(csstidy::is_important($value))
|
506 |
+
{
|
507 |
+
$value = csstidy::gvw_important($value);
|
508 |
+
$important = '!important';
|
509 |
+
}
|
510 |
+
$values = explode(' ',$value);
|
511 |
+
|
512 |
+
|
513 |
+
$return = array();
|
514 |
+
if(count($values) == 4)
|
515 |
+
{
|
516 |
+
for($i=0;$i<4;$i++)
|
517 |
+
{
|
518 |
+
$return[$shorthands[$property][$i]] = $values[$i].$important;
|
519 |
+
}
|
520 |
+
}
|
521 |
+
elseif(count($values) == 3)
|
522 |
+
{
|
523 |
+
$return[$shorthands[$property][0]] = $values[0].$important;
|
524 |
+
$return[$shorthands[$property][1]] = $values[1].$important;
|
525 |
+
$return[$shorthands[$property][3]] = $values[1].$important;
|
526 |
+
$return[$shorthands[$property][2]] = $values[2].$important;
|
527 |
+
}
|
528 |
+
elseif(count($values) == 2)
|
529 |
+
{
|
530 |
+
for($i=0;$i<4;$i++)
|
531 |
+
{
|
532 |
+
$return[$shorthands[$property][$i]] = (($i % 2 != 0)) ? $values[1].$important : $values[0].$important;
|
533 |
+
}
|
534 |
+
}
|
535 |
+
else
|
536 |
+
{
|
537 |
+
for($i=0;$i<4;$i++)
|
538 |
+
{
|
539 |
+
$return[$shorthands[$property][$i]] = $values[0].$important;
|
540 |
+
}
|
541 |
+
}
|
542 |
+
|
543 |
+
return $return;
|
544 |
+
}
|
545 |
+
|
546 |
+
/**
|
547 |
+
* Explodes a string as explode() does, however, not if $sep is escaped or within a string.
|
548 |
+
* @param string $sep seperator
|
549 |
+
* @param string $string
|
550 |
+
* @return array
|
551 |
+
* @version 1.0
|
552 |
+
*/
|
553 |
+
function explode_ws($sep,$string)
|
554 |
+
{
|
555 |
+
$status = 'st';
|
556 |
+
$to = '';
|
557 |
+
|
558 |
+
$output = array();
|
559 |
+
$num = 0;
|
560 |
+
for($i = 0, $len = strlen($string);$i < $len; $i++)
|
561 |
+
{
|
562 |
+
switch($status)
|
563 |
+
{
|
564 |
+
case 'st':
|
565 |
+
if($string{$i} == $sep && !csstidy::escaped($string,$i))
|
566 |
+
{
|
567 |
+
++$num;
|
568 |
+
}
|
569 |
+
elseif($string{$i} == '"' || $string{$i} == '\'' || $string{$i} == '(' && !csstidy::escaped($string,$i))
|
570 |
+
{
|
571 |
+
$status = 'str';
|
572 |
+
$to = ($string{$i} == '(') ? ')' : $string{$i};
|
573 |
+
(isset($output[$num])) ? $output[$num] .= $string{$i} : $output[$num] = $string{$i};
|
574 |
+
}
|
575 |
+
else
|
576 |
+
{
|
577 |
+
(isset($output[$num])) ? $output[$num] .= $string{$i} : $output[$num] = $string{$i};
|
578 |
+
}
|
579 |
+
break;
|
580 |
+
|
581 |
+
case 'str':
|
582 |
+
if($string{$i} == $to && !csstidy::escaped($string,$i))
|
583 |
+
{
|
584 |
+
$status = 'st';
|
585 |
+
}
|
586 |
+
(isset($output[$num])) ? $output[$num] .= $string{$i} : $output[$num] = $string{$i};
|
587 |
+
break;
|
588 |
+
}
|
589 |
+
}
|
590 |
+
|
591 |
+
if(isset($output[0]))
|
592 |
+
{
|
593 |
+
return $output;
|
594 |
+
}
|
595 |
+
else
|
596 |
+
{
|
597 |
+
return array($output);
|
598 |
+
}
|
599 |
+
}
|
600 |
+
|
601 |
+
/**
|
602 |
+
* Merges Shorthand properties again, the opposite of dissolve_4value_shorthands()
|
603 |
+
* @param array $array
|
604 |
+
* @return array
|
605 |
+
* @version 1.2
|
606 |
+
* @see dissolve_4value_shorthands()
|
607 |
+
*/
|
608 |
+
function merge_4value_shorthands($array)
|
609 |
+
{
|
610 |
+
$return = $array;
|
611 |
+
$shorthands =& $GLOBALS['csstidy']['shorthands'];
|
612 |
+
|
613 |
+
foreach($shorthands as $key => $value)
|
614 |
+
{
|
615 |
+
if(isset($array[$value[0]]) && isset($array[$value[1]])
|
616 |
+
&& isset($array[$value[2]]) && isset($array[$value[3]]) && $value !== 0)
|
617 |
+
{
|
618 |
+
$return[$key] = '';
|
619 |
+
|
620 |
+
$important = '';
|
621 |
+
for($i = 0; $i < 4; $i++)
|
622 |
+
{
|
623 |
+
$val = $array[$value[$i]];
|
624 |
+
if(csstidy::is_important($val))
|
625 |
+
{
|
626 |
+
$important = '!important';
|
627 |
+
$return[$key] .= csstidy::gvw_important($val).' ';
|
628 |
+
}
|
629 |
+
else
|
630 |
+
{
|
631 |
+
$return[$key] .= $val.' ';
|
632 |
+
}
|
633 |
+
unset($return[$value[$i]]);
|
634 |
+
}
|
635 |
+
$return[$key] = csstidy_optimise::shorthand(trim($return[$key].$important));
|
636 |
+
}
|
637 |
+
}
|
638 |
+
return $return;
|
639 |
+
}
|
640 |
+
|
641 |
+
/**
|
642 |
+
* Dissolve background property
|
643 |
+
* @param string $str_value
|
644 |
+
* @return array
|
645 |
+
* @version 1.0
|
646 |
+
* @see merge_bg()
|
647 |
+
* @todo full CSS 3 compliance
|
648 |
+
*/
|
649 |
+
function dissolve_short_bg($str_value)
|
650 |
+
{
|
651 |
+
$background_prop_default =& $GLOBALS['csstidy']['background_prop_default'];
|
652 |
+
$repeat = array('repeat','repeat-x','repeat-y','no-repeat','space');
|
653 |
+
$attachment = array('scroll','fixed','local');
|
654 |
+
$clip = array('border','padding');
|
655 |
+
$origin = array('border','padding','content');
|
656 |
+
$pos = array('top','center','bottom','left','right');
|
657 |
+
$important = '';
|
658 |
+
$return = array('background-image' => NULL,'background-size' => NULL,'background-repeat' => NULL,'background-position' => NULL,'background-attachment'=>NULL,'background-clip' => NULL,'background-origin' => NULL,'background-color' => NULL);
|
659 |
+
|
660 |
+
if(csstidy::is_important($str_value))
|
661 |
+
{
|
662 |
+
$important = ' !important';
|
663 |
+
$str_value = csstidy::gvw_important($str_value);
|
664 |
+
}
|
665 |
+
|
666 |
+
$str_value = csstidy_optimise::explode_ws(',',$str_value);
|
667 |
+
for($i = 0; $i < count($str_value); $i++)
|
668 |
+
{
|
669 |
+
$have['clip'] = FALSE; $have['pos'] = FALSE;
|
670 |
+
$have['color'] = FALSE; $have['bg'] = FALSE;
|
671 |
+
|
672 |
+
$str_value[$i] = csstidy_optimise::explode_ws(' ',trim($str_value[$i]));
|
673 |
+
|
674 |
+
for($j = 0; $j < count($str_value[$i]); $j++)
|
675 |
+
{
|
676 |
+
if($have['bg'] === FALSE && (substr($str_value[$i][$j],0,4) == 'url(' || $str_value[$i][$j] === 'none'))
|
677 |
+
{
|
678 |
+
$return['background-image'] .= $str_value[$i][$j].',';
|
679 |
+
$have['bg'] = TRUE;
|
680 |
+
}
|
681 |
+
elseif(in_array($str_value[$i][$j],$repeat,TRUE))
|
682 |
+
{
|
683 |
+
$return['background-repeat'] .= $str_value[$i][$j].',';
|
684 |
+
}
|
685 |
+
elseif(in_array($str_value[$i][$j],$attachment,TRUE))
|
686 |
+
{
|
687 |
+
$return['background-attachment'] .= $str_value[$i][$j].',';
|
688 |
+
}
|
689 |
+
elseif(in_array($str_value[$i][$j],$clip,TRUE) && !$have['clip'])
|
690 |
+
{
|
691 |
+
$return['background-clip'] .= $str_value[$i][$j].',';
|
692 |
+
$have['clip'] = TRUE;
|
693 |
+
}
|
694 |
+
elseif(in_array($str_value[$i][$j],$origin,TRUE))
|
695 |
+
{
|
696 |
+
$return['background-origin'] .= $str_value[$i][$j].',';
|
697 |
+
}
|
698 |
+
elseif($str_value[$i][$j]{0} == '(')
|
699 |
+
{
|
700 |
+
$return['background-size'] .= substr($str_value[$i][$j],1,-1).',';
|
701 |
+
}
|
702 |
+
elseif(in_array($str_value[$i][$j],$pos,TRUE) || is_numeric($str_value[$i][$j]{0}) || $str_value[$i][$j]{0} === NULL)
|
703 |
+
{
|
704 |
+
$return['background-position'] .= $str_value[$i][$j];
|
705 |
+
if(!$have['pos']) $return['background-position'] .= ' '; else $return['background-position'].= ',';
|
706 |
+
$have['pos'] = TRUE;
|
707 |
+
}
|
708 |
+
elseif(!$have['color'])
|
709 |
+
{
|
710 |
+
$return['background-color'] .= $str_value[$i][$j].',';
|
711 |
+
$have['color'] = TRUE;
|
712 |
+
}
|
713 |
+
}
|
714 |
+
}
|
715 |
+
|
716 |
+
foreach($background_prop_default as $bg_prop => $default_value)
|
717 |
+
{
|
718 |
+
if($return[$bg_prop] !== NULL)
|
719 |
+
{
|
720 |
+
$return[$bg_prop] = substr($return[$bg_prop],0,-1).$important;
|
721 |
+
}
|
722 |
+
else $return[$bg_prop] = $default_value.$important;
|
723 |
+
}
|
724 |
+
return $return;
|
725 |
+
}
|
726 |
+
|
727 |
+
/**
|
728 |
+
* Merges all background properties
|
729 |
+
* @param array $input_css
|
730 |
+
* @return array
|
731 |
+
* @version 1.0
|
732 |
+
* @see dissolve_short_bg()
|
733 |
+
* @todo full CSS 3 compliance
|
734 |
+
*/
|
735 |
+
function merge_bg($input_css)
|
736 |
+
{
|
737 |
+
$background_prop_default =& $GLOBALS['csstidy']['background_prop_default'];
|
738 |
+
// Max number of background images. CSS3 not yet fully implemented
|
739 |
+
$number_of_values = @max(count(csstidy_optimise::explode_ws(',',$input_css['background-image'])),count(csstidy_optimise::explode_ws(',',$input_css['background-color'])),1);
|
740 |
+
// Array with background images to check if BG image exists
|
741 |
+
$bg_img_array = @csstidy_optimise::explode_ws(',',csstidy::gvw_important($input_css['background-image']));
|
742 |
+
$new_bg_value = '';
|
743 |
+
$important = '';
|
744 |
+
|
745 |
+
for($i = 0; $i < $number_of_values; $i++)
|
746 |
+
{
|
747 |
+
foreach($background_prop_default as $bg_property => $default_value)
|
748 |
+
{
|
749 |
+
// Skip if property does not exist
|
750 |
+
if(!isset($input_css[$bg_property]))
|
751 |
+
{
|
752 |
+
continue;
|
753 |
+
}
|
754 |
+
|
755 |
+
$cur_value = $input_css[$bg_property];
|
756 |
+
|
757 |
+
// Skip some properties if there is no background image
|
758 |
+
if((!isset($bg_img_array[$i]) || $bg_img_array[$i] === 'none')
|
759 |
+
&& ($bg_property === 'background-size' || $bg_property === 'background-position'
|
760 |
+
|| $bg_property === 'background-attachment' || $bg_property === 'background-repeat'))
|
761 |
+
{
|
762 |
+
continue;
|
763 |
+
}
|
764 |
+
|
765 |
+
// Remove !important
|
766 |
+
if(csstidy::is_important($cur_value))
|
767 |
+
{
|
768 |
+
$important = ' !important';
|
769 |
+
$cur_value = csstidy::gvw_important($cur_value);
|
770 |
+
}
|
771 |
+
|
772 |
+
// Do not add default values
|
773 |
+
if($cur_value === $default_value)
|
774 |
+
{
|
775 |
+
continue;
|
776 |
+
}
|
777 |
+
|
778 |
+
$temp = csstidy_optimise::explode_ws(',',$cur_value);
|
779 |
+
|
780 |
+
if(isset($temp[$i]))
|
781 |
+
{
|
782 |
+
if($bg_property == 'background-size')
|
783 |
+
{
|
784 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|