Razorpay for WooCommerce - Version 1.3.0

Version Description

Download this release

Release Info

Developer razorpay
Plugin Icon 128x128 Razorpay for WooCommerce
Version 1.3.0
Comparing to
See all releases

Code changes from version 1.2.4 to 1.3.0

Files changed (76) hide show
  1. .editorconfig +13 -0
  2. images/logo.png +0 -0
  3. razorpay-payments.php +280 -145
  4. razorpay-sdk/Razorpay.php +42 -0
  5. razorpay-sdk/libs/Requests-1.6.1/LICENSE +49 -0
  6. razorpay-sdk/libs/Requests-1.6.1/library/Requests.php +863 -0
  7. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Auth.php +33 -0
  8. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Auth/Basic.php +88 -0
  9. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Cookie.php +171 -0
  10. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Cookie/Jar.php +146 -0
  11. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception.php +62 -0
  12. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP.php +67 -0
  13. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/400.php +27 -0
  14. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/401.php +27 -0
  15. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/402.php +27 -0
  16. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/403.php +27 -0
  17. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/404.php +27 -0
  18. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/405.php +27 -0
  19. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/406.php +27 -0
  20. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/407.php +27 -0
  21. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/408.php +27 -0
  22. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/409.php +27 -0
  23. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/410.php +27 -0
  24. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/411.php +27 -0
  25. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/412.php +27 -0
  26. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/413.php +27 -0
  27. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/414.php +27 -0
  28. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/415.php +27 -0
  29. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/416.php +27 -0
  30. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/417.php +27 -0
  31. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/418.php +29 -0
  32. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/428.php +29 -0
  33. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/429.php +29 -0
  34. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/431.php +29 -0
  35. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/500.php +27 -0
  36. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/501.php +27 -0
  37. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/502.php +27 -0
  38. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/503.php +27 -0
  39. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/504.php +27 -0
  40. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/505.php +27 -0
  41. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/511.php +29 -0
  42. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/Unknown.php +44 -0
  43. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Hooker.php +33 -0
  44. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Hooks.php +61 -0
  45. razorpay-sdk/libs/Requests-1.6.1/library/Requests/IDNAEncoder.php +390 -0
  46. razorpay-sdk/libs/Requests-1.6.1/library/Requests/IPv6.php +221 -0
  47. razorpay-sdk/libs/Requests-1.6.1/library/Requests/IRI.php +1220 -0
  48. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Proxy.php +35 -0
  49. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Proxy/HTTP.php +150 -0
  50. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Response.php +95 -0
  51. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Response/Headers.php +95 -0
  52. razorpay-sdk/libs/Requests-1.6.1/library/Requests/SSL.php +151 -0
  53. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Session.php +253 -0
  54. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport.php +41 -0
  55. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport/cURL.php +351 -0
  56. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport/cacert.pem +3554 -0
  57. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport/fsockopen.php +394 -0
  58. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Utility/CaseInsensitiveDictionary.php +91 -0
  59. razorpay-sdk/libs/Requests-1.6.1/library/Requests/Utility/FilteredIterator.php +38 -0
  60. razorpay-sdk/src/Api.php +49 -0
  61. razorpay-sdk/src/ArrayableInterface.php +13 -0
  62. razorpay-sdk/src/Collection.php +20 -0
  63. razorpay-sdk/src/Customer.php +35 -0
  64. razorpay-sdk/src/Entity.php +192 -0
  65. razorpay-sdk/src/Errors/BadRequestError.php +20 -0
  66. razorpay-sdk/src/Errors/Error.php +24 -0
  67. razorpay-sdk/src/Errors/ErrorCode.php +15 -0
  68. razorpay-sdk/src/Errors/GatewayError.php +7 -0
  69. razorpay-sdk/src/Errors/ServerError.php +7 -0
  70. razorpay-sdk/src/Order.php +32 -0
  71. razorpay-sdk/src/Payment.php +48 -0
  72. razorpay-sdk/src/Refund.php +23 -0
  73. razorpay-sdk/src/Request.php +150 -0
  74. razorpay-sdk/src/Resource.php +57 -0
  75. razorpay-sdk/src/Token.php +30 -0
  76. readme.txt +22 -6
.editorconfig ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ; This file is for unifying the coding style for different editors and IDEs.
2
+ ; More information at http://EditorConfig.org
3
+
4
+ root = true
5
+ ; Use 2 spaces for indentation in all files
6
+
7
+ [*.php]
8
+ end_of_line = lf
9
+ charset = utf-8
10
+ trim_trailing_whitespace = true
11
+ indent_style = space
12
+ indent_size = 4
13
+ insert_final_newline = true
images/logo.png ADDED
Binary file
razorpay-payments.php CHANGED
@@ -3,31 +3,41 @@
3
  Plugin Name: WooCommerce Razorpay Payments
4
  Plugin URI: https://razorpay.com
5
  Description: Razorpay Payment Gateway Integration for WooCommerce
6
- Version: 1.2.4
7
  Author: Razorpay
8
  Author URI: https://razorpay.com
9
  */
10
 
 
 
 
 
11
  add_action('plugins_loaded', 'woocommerce_razorpay_init', 0);
12
 
13
- function woocommerce_razorpay_init(){
14
- if(!class_exists('WC_Payment_Gateway')) return;
15
-
16
- class WC_Razorpay extends WC_Payment_Gateway{
17
- public function __construct(){
 
 
 
 
 
 
 
 
18
  $this->id = 'razorpay';
19
  $this->method_title = 'Razorpay';
20
- $this->icon = plugins_url('images/logo.jpg' , __FILE__ );
21
  $this->has_fields = false;
22
-
23
  $this->init_form_fields();
24
  $this->init_settings();
25
-
26
  $this->title = $this->settings['title'];
27
  $this->description = $this->settings['description'];
28
  $this->key_id = $this->settings['key_id'];
29
  $this->key_secret = $this->settings['key_secret'];
30
- $this->liveurl = 'https://checkout.razorpay.com/v1/checkout.js';
31
 
32
  $this->msg['message'] = "";
33
  $this->msg['class'] = "";
@@ -35,47 +45,69 @@ function woocommerce_razorpay_init(){
35
  add_action('init', array(&$this, 'check_razorpay_response'));
36
  add_action('woocommerce_api_' . strtolower(get_class($this)), array($this, 'check_razorpay_response'));
37
 
38
- if ( version_compare(WOOCOMMERCE_VERSION, '2.0.0', '>=' ) ) {
39
- add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( &$this, 'process_admin_options' ) );
40
- } else {
41
- add_action( 'woocommerce_update_options_payment_gateways', array( &$this, 'process_admin_options' ) );
42
- }
43
- add_action('woocommerce_receipt_razorpay', array(&$this, 'receipt_page'));
 
 
 
 
 
 
44
  }
45
 
46
- function init_form_fields(){
 
47
  $this->form_fields = array(
48
  'enabled' => array(
49
  'title' => __('Enable/Disable', 'razorpay'),
50
  'type' => 'checkbox',
51
  'label' => __('Enable Razorpay Payment Module.', 'razorpay'),
52
- 'default' => 'yes'),
 
53
  'title' => array(
54
- 'title' => __('Title:', 'razorpay'),
55
  'type'=> 'text',
56
  'description' => __('This controls the title which the user sees during checkout.', 'razorpay'),
57
- 'default' => __('Credit Card/Debit Card/Net banking', 'razorpay')),
 
58
  'description' => array(
59
- 'title' => __('Description:', 'razorpay'),
60
  'type' => 'textarea',
61
  'description' => __('This controls the description which the user sees during checkout.', 'razorpay'),
62
- 'default' => __('Pay securely by Credit or Debit card or internet banking through Razorpay.', 'razorpay')),
 
63
  'key_id' => array(
64
  'title' => __('Key ID', 'razorpay'),
65
  'type' => 'text',
66
- 'description' => __('The key Id and key secret can be generated from "API Keys" section of Razorpay Dashboard. Use test or live for test or live mode.', 'razorpay')),
 
67
  'key_secret' => array(
68
  'title' => __('Key Secret', 'razorpay'),
69
  'type' => 'text',
70
- 'description' => __('The key Id and key secret can be generated from "API Keys" section of Razorpay Dashboard. Use test or live for test or live mode.', 'razorpay'),
 
 
 
 
 
 
 
 
 
 
71
  )
72
  );
73
  }
74
-
75
- public function admin_options(){
76
- echo '<h3>'.__('Razorpay Payment Gateway', 'razorpay').'</h3>';
77
- echo '<p>'.__('Razorpay is an online payment gateway for India with transparent pricing, seamless integration and great support').'</p>';
78
  echo '<table class="form-table">';
 
79
  // Generate the HTML For the settings form.
80
  $this->generate_settings_html();
81
  echo '</table>';
@@ -84,73 +116,166 @@ function woocommerce_razorpay_init(){
84
  /**
85
  * There are no payment fields, but we want to show the description if set.
86
  **/
87
- function payment_fields(){
88
- if($this->description) echo wpautop(wptexturize($this->description));
 
 
 
 
89
  }
90
-
91
  /**
92
  * Receipt Page
93
  **/
94
- function receipt_page($order){
 
95
  echo '<p>'.__('Thank you for your order, please click the button below to pay with Razorpay.', 'razorpay').'</p>';
96
  echo $this->generate_razorpay_form($order);
97
  }
98
-
99
  /**
100
  * Generate razorpay button link
101
  **/
102
- public function generate_razorpay_form($order_id){
103
-
104
  global $woocommerce;
105
-
106
  $order = new WC_Order($order_id);
107
-
108
- $redirect_url = get_site_url() . '/?wc-api' ."=". get_class($this) ;
109
-
110
  $productinfo = "Order $order_id";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
- $razorpay_args = array(
113
- 'key' => $this->key_id,
114
- 'name' => get_bloginfo('name'),
115
- 'amount' => $order->order_total*100,
116
- 'currency' => get_woocommerce_currency(),
117
- 'description' => $productinfo,
118
- 'prefill' => array(
119
- 'name' => $order->billing_first_name." ".$order->billing_last_name,
120
- 'email' => $order->billing_email,
121
- 'contact' => $order->billing_phone
122
- ),
123
- 'notes' => array(
124
- 'woocommerce_order_id' => $order_id
125
- )
 
 
126
  );
127
 
128
- $json = json_encode($razorpay_args);
 
 
 
 
 
 
 
 
 
 
 
 
129
 
 
 
 
 
 
130
  $html = <<<EOT
131
- <script src="{$this->liveurl}"></script>
132
  <script>
133
  var data = $json;
134
  </script>
135
  <form name='razorpayform' action="$redirect_url" method="POST">
136
- <input type="hidden" name="merchant_order_id" value="$order_id">
137
  <input type="hidden" name="razorpay_payment_id" id="razorpay_payment_id">
 
138
  </form>
 
 
 
 
 
 
 
139
  <script>
140
- data.backdropClose = false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  data.handler = function(payment){
142
- document.getElementById('razorpay_payment_id').value =
143
- payment.razorpay_payment_id;
 
 
 
144
  document.razorpayform.submit();
145
  };
146
  var razorpayCheckout = new Razorpay(data);
147
- razorpayCheckout.open();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  </script>
149
- <p>
150
- <button id="btn-razorpay" onclick="razorpayCheckout.open();">Pay Now</button>
151
- <button onclick="document.razorpayform.submit()">Cancel</button>
152
- </p>
153
-
154
  EOT;
155
  return $html;
156
  }
@@ -158,17 +283,21 @@ EOT;
158
  /**
159
  * Process the payment and return the result
160
  **/
161
- function process_payment($order_id){
 
 
162
  $order = new WC_Order($order_id);
163
-
164
- if ( version_compare(WOOCOMMERCE_VERSION, '2.0.0', '>=' ) ) {
 
165
  return array(
166
  'result' => 'success',
167
  'redirect' => add_query_arg('order', $order->id,
168
  add_query_arg('key', $order->order_key, $order->get_checkout_payment_url(true)))
169
  );
170
  }
171
- else {
 
172
  return array(
173
  'result' => 'success',
174
  'redirect' => add_query_arg('order', $order->id,
@@ -176,125 +305,131 @@ EOT;
176
  );
177
  }
178
  }
179
-
180
  /**
181
  * Check for valid razorpay server callback
182
  **/
183
- function check_razorpay_response(){
 
184
  global $woocommerce;
 
185
 
186
- if(isset($_REQUEST['merchant_order_id']) && isset($_REQUEST['razorpay_payment_id'])){
187
- $order_id = $_REQUEST['merchant_order_id'];
188
- $razorpay_payment_id = $_REQUEST['razorpay_payment_id'];
189
-
190
-
191
  $order = new WC_Order($order_id);
192
  $key_id = $this->key_id;
193
  $key_secret = $this->key_secret;
194
  $amount = $order->order_total*100;
195
-
196
  $success = false;
197
  $error = "";
 
 
198
 
199
- try {
200
- $url = 'https://api.razorpay.com/v1/payments/'.$razorpay_payment_id.'/capture';
201
- $fields_string="amount=$amount";
202
-
203
- //cURL Request
204
- $ch = curl_init();
205
-
206
- //set the url, number of POST vars, POST data
207
- curl_setopt($ch,CURLOPT_URL, $url);
208
- curl_setopt($ch,CURLOPT_USERPWD, $key_id . ":" . $key_secret);
209
- curl_setopt($ch,CURLOPT_TIMEOUT, 60);
210
- curl_setopt($ch,CURLOPT_POST, 1);
211
- curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
212
- curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
213
- curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, true);
214
- curl_setopt($ch,CURLOPT_CAINFO, plugin_dir_path(__FILE__) . 'ca-bundle.crt');
215
-
216
- //execute post
217
- $result = curl_exec($ch);
218
- $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
219
 
 
 
 
 
220
 
221
- if($result === false) {
222
- $success = false;
223
- $error = 'Curl error: ' . curl_error($ch);
224
- }
225
- else {
226
- $response_array = json_decode($result, true);
227
- //Check success response
228
- if($http_status === 200 and isset($response_array['error']) === false){
229
- $success = true;
230
  }
231
- else {
 
232
  $success = false;
233
-
234
- if(!empty($response_array['error']['code'])) {
235
- $error = $response_array['error']['code'].":".$response_array['error']['description'];
236
- }
237
- else {
238
- $error = "RAZORPAY_ERROR:Invalid Response <br/>".$result;
239
- }
240
  }
241
  }
242
- //close connection
243
- curl_close($ch);
244
  }
245
- catch (Exception $e) {
 
246
  $success = false;
247
- $error ="WOOCOMMERCE_ERROR:Request to Razorpay Failed";
248
  }
249
-
250
- if($success === true){
251
- $this->msg['message'] = "Thank you for shopping with us. Your account has been charged and your transaction is successful. We will be shipping your order to you soon. Order Id: ".$order_id;
252
  $this->msg['class'] = 'success';
253
  $order->payment_complete();
254
- $order->add_order_note('Razorpay payment successful <br/>Razorpay Id: '.$razorpay_payment_id);
255
  $order->add_order_note($this->msg['message']);
256
  $woocommerce->cart->empty_cart();
257
  }
258
- else{
 
259
  $this->msg['class'] = 'error';
260
- $this->msg['message'] = "Thank you for shopping with us. However, the payment failed.";
261
- $order->add_order_note('Transaction Declined: '.$error);
262
- $order->add_order_note('Payment Failed. Please check Razorpay Dashboard. <br/> Razorpay Id:'.$razorpay_payment_id);
263
  $order->update_status('failed');
264
- }
265
  }
266
- else {
 
 
 
 
 
 
 
 
267
  $this->msg['class'] = 'error';
268
- $this->msg['message'] = "An Error occured";
269
  }
 
 
 
 
 
270
 
271
- if (function_exists('wc_add_notice')) {
272
- wc_add_notice( $this->msg['message'], $this->msg['class'] );
 
 
 
 
 
 
 
 
 
 
 
 
273
  }
274
- else {
275
- if($this->msg['class']=='success'){
276
- $woocommerce->add_message($this->msg['message']);
277
- }
278
- else{
279
- $woocommerce->add_error($this->msg['message']);
280
-
 
 
 
 
281
  }
282
- $woocommerce->set_messages();
283
  }
284
-
285
- $redirect_url = get_permalink(woocommerce_get_page_id('myaccount'));
286
- wp_redirect( $redirect_url );
287
- exit;
288
  }
289
  }
290
 
291
  /**
292
  * Add the Gateway to WooCommerce
293
  **/
294
- function woocommerce_add_razorpay_gateway($methods) {
 
295
  $methods[] = 'WC_Razorpay';
296
  return $methods;
297
  }
298
-
299
  add_filter('woocommerce_payment_gateways', 'woocommerce_add_razorpay_gateway' );
300
  }
3
  Plugin Name: WooCommerce Razorpay Payments
4
  Plugin URI: https://razorpay.com
5
  Description: Razorpay Payment Gateway Integration for WooCommerce
6
+ Version: 1.3.0
7
  Author: Razorpay
8
  Author URI: https://razorpay.com
9
  */
10
 
11
+ use Razorpay\Api\Api;
12
+
13
+ require_once __DIR__.'/razorpay-sdk/Razorpay.php';
14
+
15
  add_action('plugins_loaded', 'woocommerce_razorpay_init', 0);
16
 
17
+ function woocommerce_razorpay_init()
18
+ {
19
+ if (!class_exists('WC_Payment_Gateway'))
20
+ return;
21
+
22
+ class WC_Razorpay extends WC_Payment_Gateway
23
+ {
24
+ const BASE_URL = 'https://api.razorpay.com/';
25
+ const API_VERSION = 'v1';
26
+ const SESSION_KEY = 'razorpay_wc_order_id';
27
+
28
+ public function __construct()
29
+ {
30
  $this->id = 'razorpay';
31
  $this->method_title = 'Razorpay';
32
+ $this->icon = plugins_url('images/logo.png' , __FILE__);
33
  $this->has_fields = false;
 
34
  $this->init_form_fields();
35
  $this->init_settings();
 
36
  $this->title = $this->settings['title'];
37
  $this->description = $this->settings['description'];
38
  $this->key_id = $this->settings['key_id'];
39
  $this->key_secret = $this->settings['key_secret'];
40
+ $this->payment_action = $this->settings['payment_action'];
41
 
42
  $this->msg['message'] = "";
43
  $this->msg['class'] = "";
45
  add_action('init', array(&$this, 'check_razorpay_response'));
46
  add_action('woocommerce_api_' . strtolower(get_class($this)), array($this, 'check_razorpay_response'));
47
 
48
+ $cb = array($this, 'process_admin_options');
49
+
50
+ if (version_compare(WOOCOMMERCE_VERSION, '2.0.0', '>='))
51
+ {
52
+ add_action("woocommerce_update_options_payment_gateways_{$this->id}", $cb);
53
+ }
54
+ else
55
+ {
56
+ add_action('woocommerce_update_options_payment_gateways', $cb);
57
+ }
58
+
59
+ add_action('woocommerce_receipt_razorpay', array($this, 'receipt_page'));
60
  }
61
 
62
+ function init_form_fields()
63
+ {
64
  $this->form_fields = array(
65
  'enabled' => array(
66
  'title' => __('Enable/Disable', 'razorpay'),
67
  'type' => 'checkbox',
68
  'label' => __('Enable Razorpay Payment Module.', 'razorpay'),
69
+ 'default' => 'yes'
70
+ ),
71
  'title' => array(
72
+ 'title' => __('Title', 'razorpay'),
73
  'type'=> 'text',
74
  'description' => __('This controls the title which the user sees during checkout.', 'razorpay'),
75
+ 'default' => __('Credit Card/Debit Card/NetBanking', 'razorpay')
76
+ ),
77
  'description' => array(
78
+ 'title' => __('Description', 'razorpay'),
79
  'type' => 'textarea',
80
  'description' => __('This controls the description which the user sees during checkout.', 'razorpay'),
81
+ 'default' => __('Pay securely by Credit or Debit card or internet banking through Razorpay.', 'razorpay')
82
+ ),
83
  'key_id' => array(
84
  'title' => __('Key ID', 'razorpay'),
85
  'type' => 'text',
86
+ 'description' => __('The key Id and key secret can be generated from "API Keys" section of Razorpay Dashboard. Use test or live for test or live mode.', 'razorpay')
87
+ ),
88
  'key_secret' => array(
89
  'title' => __('Key Secret', 'razorpay'),
90
  'type' => 'text',
91
+ 'description' => __('The key Id and key secret can be generated from "API Keys" section of Razorpay Dashboard. Use test or live for test or live mode.', 'razorpay')
92
+ ),
93
+ 'payment_action' => array(
94
+ 'title' => __('Payment Action', 'razorpay'),
95
+ 'type' => 'select',
96
+ 'description' => __('Payment action on order compelete', 'razorpay'),
97
+ 'default' => 'capture',
98
+ 'options' => array(
99
+ 'authorize' => 'Authorize',
100
+ 'capture' => 'Authorize and Capture'
101
+ )
102
  )
103
  );
104
  }
105
+ public function admin_options()
106
+ {
107
+ echo '<h3>'.__('Razorpay Payment Gateway', 'razorpay') . '</h3>';
108
+ echo '<p>'.__('Razorpay is an online payment gateway for India with transparent pricing, seamless integration and great support') . '</p>';
109
  echo '<table class="form-table">';
110
+
111
  // Generate the HTML For the settings form.
112
  $this->generate_settings_html();
113
  echo '</table>';
116
  /**
117
  * There are no payment fields, but we want to show the description if set.
118
  **/
119
+ function payment_fields()
120
+ {
121
+ if($this->description)
122
+ {
123
+ echo wpautop(wptexturize($this->description));
124
+ }
125
  }
126
+
127
  /**
128
  * Receipt Page
129
  **/
130
+ function receipt_page($order)
131
+ {
132
  echo '<p>'.__('Thank you for your order, please click the button below to pay with Razorpay.', 'razorpay').'</p>';
133
  echo $this->generate_razorpay_form($order);
134
  }
135
+
136
  /**
137
  * Generate razorpay button link
138
  **/
139
+ public function generate_razorpay_form($order_id)
140
+ {
141
  global $woocommerce;
 
142
  $order = new WC_Order($order_id);
143
+ $redirect_url = get_site_url() . '/?wc-api=' . get_class($this);
 
 
144
  $productinfo = "Order $order_id";
145
+ try
146
+ {
147
+ $api = new Api($this->key_id, $this->key_secret);
148
+ // Calls the helper function to create order data
149
+ $data = $this->get_order_creation_data($order_id);
150
+
151
+ $razorpay_order = $api->order->create($data);
152
+
153
+ $woocommerce->session->set('razorpay_order_id', $razorpay_order['id']);
154
+ $razorpay_args = array(
155
+ 'key' => $this->key_id,
156
+ 'name' => get_bloginfo('name'),
157
+ 'amount' => $order->order_total * 100,
158
+ 'currency' => get_woocommerce_currency(),
159
+ 'description' => $productinfo,
160
+ 'prefill' => array(
161
+ 'name' => $order->billing_first_name." ".$order->billing_last_name,
162
+ 'email' => $order->billing_email,
163
+ 'contact' => $order->billing_phone
164
+ ),
165
+ 'notes' => array(
166
+ 'woocommerce_order_id' => $order_id
167
+ ),
168
+ 'order_id' => $razorpay_order['id']
169
+ );
170
+ $json = json_encode($razorpay_args);
171
+ $html = $this->generate_order_form($redirect_url, $json);
172
+ return $html;
173
+ }
174
+ catch (Exception $e)
175
+ {
176
+ echo "RAZORPAY ERROR: Api could not be reached";
177
+ }
178
+ }
179
 
180
+ /**
181
+ * Creates order data
182
+ **/
183
+ function get_order_creation_data($order_id)
184
+ {
185
+ $order = new WC_Order($order_id);
186
+
187
+ if (!isset($this->payment_action))
188
+ {
189
+ $this->payment_action = 'capture';
190
+ }
191
+
192
+ $data = array(
193
+ 'receipt' => $order_id,
194
+ 'amount' => (int) ($order->order_total * 100),
195
+ 'currency' => get_woocommerce_currency(),
196
  );
197
 
198
+ switch($this->payment_action)
199
+ {
200
+ case 'authorize':
201
+ $data['payment_capture'] = 0;
202
+ break;
203
+
204
+ case 'capture':
205
+ default:
206
+ $data['payment_capture'] = 1;
207
+ break;
208
+ }
209
+ return $data;
210
+ }
211
 
212
+ /**
213
+ * Generates the order form
214
+ **/
215
+ function generate_order_form($redirect_url, $json)
216
+ {
217
  $html = <<<EOT
218
+ <script src="https://checkout.razorpay.com/v1/checkout.js"></script>
219
  <script>
220
  var data = $json;
221
  </script>
222
  <form name='razorpayform' action="$redirect_url" method="POST">
 
223
  <input type="hidden" name="razorpay_payment_id" id="razorpay_payment_id">
224
+ <input type="hidden" name="razorpay_signature" id="razorpay_signature" >
225
  </form>
226
+ <p id="msg-razorpay-success" class="woocommerce-info woocommerce-message" style="display:none">
227
+ Please wait while we are processing your payment.
228
+ </p>
229
+ <p>
230
+ <button id="btn-razorpay">Pay Now</button>
231
+ <button id="btn-razorpay-cancel" onclick="document.razorpayform.submit()">Cancel</button>
232
+ </p>
233
  <script>
234
+ (function(){
235
+ var setDisabled = function(id, state) {
236
+ if (typeof state === 'undefined') {
237
+ state = true;
238
+ }
239
+ var elem = document.getElementById(id);
240
+ if (state === false) {
241
+ elem.removeAttribute('disabled');
242
+ }
243
+ else {
244
+ elem.setAttribute('disabled', state);
245
+ }
246
+ };
247
+ // Payment was closed without handler getting called
248
+ data.modal = {
249
+ ondismiss: function() {
250
+ setDisabled('btn-razorpay', false);
251
+ }
252
+ };
253
  data.handler = function(payment){
254
+ setDisabled('btn-razorpay-cancel');
255
+ var successMsg = document.getElementById('msg-razorpay-success');
256
+ successMsg.style.display = "block";
257
+ document.getElementById('razorpay_payment_id').value = payment.razorpay_payment_id;
258
+ document.getElementById('razorpay_signature').value = payment.razorpay_signature;
259
  document.razorpayform.submit();
260
  };
261
  var razorpayCheckout = new Razorpay(data);
262
+ // global method
263
+ function openCheckout() {
264
+ // Disable the pay button
265
+ setDisabled('btn-razorpay');
266
+ razorpayCheckout.open();
267
+ }
268
+ function addEvent(element, evnt, funct){
269
+ if (element.attachEvent)
270
+ return element.attachEvent('on'+evnt, funct);
271
+ else
272
+ return element.addEventListener(evnt, funct, false);
273
+ }
274
+ // Attach event listener
275
+ addEvent(document.getElementById('btn-razorpay'), 'click', openCheckout);
276
+ openCheckout();
277
+ })();
278
  </script>
 
 
 
 
 
279
  EOT;
280
  return $html;
281
  }
283
  /**
284
  * Process the payment and return the result
285
  **/
286
+ function process_payment($order_id)
287
+ {
288
+ global $woocommerce;
289
  $order = new WC_Order($order_id);
290
+ $woocommerce->session->set(self::SESSION_KEY, $order_id);
291
+ if (version_compare(WOOCOMMERCE_VERSION, '2.0.0', '>='))
292
+ {
293
  return array(
294
  'result' => 'success',
295
  'redirect' => add_query_arg('order', $order->id,
296
  add_query_arg('key', $order->order_key, $order->get_checkout_payment_url(true)))
297
  );
298
  }
299
+ else
300
+ {
301
  return array(
302
  'result' => 'success',
303
  'redirect' => add_query_arg('order', $order->id,
305
  );
306
  }
307
  }
308
+
309
  /**
310
  * Check for valid razorpay server callback
311
  **/
312
+ function check_razorpay_response()
313
+ {
314
  global $woocommerce;
315
+ $order_id = $woocommerce->session->get(self::SESSION_KEY);
316
 
317
+ if ($order_id and !empty($_POST['razorpay_payment_id']))
318
+ {
319
+ $razorpay_payment_id = $_POST['razorpay_payment_id'];
 
 
320
  $order = new WC_Order($order_id);
321
  $key_id = $this->key_id;
322
  $key_secret = $this->key_secret;
323
  $amount = $order->order_total*100;
 
324
  $success = false;
325
  $error = "";
326
+ $api = new Api($key_id, $key_secret);
327
+ $payment = $api->payment->fetch($razorpay_payment_id);
328
 
329
+ try
330
+ {
331
+ if ($this->payment_action === 'authorize' && $payment['amount'] === $amount)
332
+ {
333
+ $success = true;
334
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
 
336
+ else
337
+ {
338
+ $razorpay_order_id = $woocommerce->session->get('razorpay_order_id');
339
+ $razorpay_signature = $_POST['razorpay_signature'];
340
 
341
+ $signature = hash_hmac('sha256', $razorpay_order_id . '|' . $razorpay_payment_id, $key_secret);
342
+ if (hash_equals($signature , $razorpay_signature))
343
+ {
344
+ $success = true;
 
 
 
 
 
345
  }
346
+ else
347
+ {
348
  $success = false;
349
+ $error = "PAYMENT_ERROR: Payment failed";
 
 
 
 
 
 
350
  }
351
  }
 
 
352
  }
353
+ catch (Exception $e)
354
+ {
355
  $success = false;
356
+ $error = 'WOOCOMMERCE_ERROR: Request to Razorpay Failed';
357
  }
358
+ if ($success === true)
359
+ {
360
+ $this->msg['message'] = "Thank you for shopping with us. Your account has been charged and your transaction is successful. We will be processing your order soon. Order Id: $order_id";
361
  $this->msg['class'] = 'success';
362
  $order->payment_complete();
363
+ $order->add_order_note("Razorpay payment successful <br/>Razorpay Id: $razorpay_payment_id");
364
  $order->add_order_note($this->msg['message']);
365
  $woocommerce->cart->empty_cart();
366
  }
367
+ else
368
+ {
369
  $this->msg['class'] = 'error';
370
+ $this->msg['message'] = 'Thank you for shopping with us. However, the payment failed.';
371
+ $order->add_order_note("Transaction Declined: $error<br/>");
372
+ $order->add_order_note("Payment Failed. Please check Razorpay Dashboard. <br/> Razorpay Id: $razorpay_payment_id");
373
  $order->update_status('failed');
374
+ }
375
  }
376
+ // We don't have a proper order id
377
+ else
378
+ {
379
+ if ($order_id !== null)
380
+ {
381
+ $order = new WC_Order($order_id);
382
+ $order->update_status('failed');
383
+ $order->add_order_note('Customer cancelled the payment');
384
+ }
385
  $this->msg['class'] = 'error';
386
+ $this->msg['message'] = "An error occured while processing this payment";
387
  }
388
+ $this->add_notice($this->msg['message'], $this->msg['class']);
389
+ $redirect_url = $this->get_return_url($order);
390
+ wp_redirect( $redirect_url );
391
+ exit;
392
+ }
393
 
394
+ /**
395
+ * Add a woocommerce notification message
396
+ *
397
+ * @param string $message Notification message
398
+ * @param string $type Notification type, default = notice
399
+ */
400
+ protected function add_notice($message, $type = 'notice')
401
+ {
402
+ global $woocommerce;
403
+ $type = in_array($type, array('notice','error','success'), true) ? $type : 'notice';
404
+ // Check for existence of new notification api. Else use previous add_error
405
+ if (function_exists('wc_add_notice'))
406
+ {
407
+ wc_add_notice($message, $type);
408
  }
409
+ else
410
+ {
411
+ // Retrocompatibility WooCommerce < 2.1
412
+ switch ($type)
413
+ {
414
+ case "error" :
415
+ $woocommerce->add_error($message);
416
+ break;
417
+ default :
418
+ $woocommerce->add_message($message);
419
+ break;
420
  }
 
421
  }
 
 
 
 
422
  }
423
  }
424
 
425
  /**
426
  * Add the Gateway to WooCommerce
427
  **/
428
+ function woocommerce_add_razorpay_gateway($methods)
429
+ {
430
  $methods[] = 'WC_Razorpay';
431
  return $methods;
432
  }
433
+
434
  add_filter('woocommerce_payment_gateways', 'woocommerce_add_razorpay_gateway' );
435
  }
razorpay-sdk/Razorpay.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if(class_exists('Requests') === false){
4
+ require_once __DIR__.'/libs/Requests-1.6.1/library/Requests.php';
5
+
6
+ // Register requests autoloader
7
+ Requests::register_autoloader();
8
+ }
9
+
10
+ spl_autoload_register(function ($class)
11
+ {
12
+ // project-specific namespace prefix
13
+ $prefix = 'Razorpay\Api';
14
+
15
+ // base directory for the namespace prefix
16
+ $base_dir = __DIR__ . '/src/';
17
+
18
+ // does the class use the namespace prefix?
19
+ $len = strlen($prefix);
20
+
21
+ if (strncmp($prefix, $class, $len) !== 0)
22
+ {
23
+ // no, move to the next registered autoloader
24
+ return;
25
+ }
26
+
27
+ // get the relative class name
28
+ $relative_class = substr($class, $len);
29
+
30
+ //
31
+ // replace the namespace prefix with the base directory,
32
+ // replace namespace separators with directory separators
33
+ // in the relative class name, append with .php
34
+ //
35
+ $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
36
+
37
+ // if the file exists, require it
38
+ if (file_exists($file))
39
+ {
40
+ require $file;
41
+ }
42
+ });
razorpay-sdk/libs/Requests-1.6.1/LICENSE ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Requests
2
+ ========
3
+
4
+ Copyright (c) 2010-2012 Ryan McCue and contributors
5
+
6
+ Permission to use, copy, modify, and/or distribute this software for any
7
+ purpose with or without fee is hereby granted, provided that the above
8
+ copyright notice and this permission notice appear in all copies.
9
+
10
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
+
18
+
19
+ ComplexPie IRI Parser
20
+ =====================
21
+
22
+ Copyright (c) 2007-2010, Geoffrey Sneddon and Steve Minutillo.
23
+ All rights reserved.
24
+
25
+ Redistribution and use in source and binary forms, with or without
26
+ modification, are permitted provided that the following conditions are met:
27
+
28
+ * Redistributions of source code must retain the above copyright notice,
29
+ this list of conditions and the following disclaimer.
30
+
31
+ * Redistributions in binary form must reproduce the above copyright notice,
32
+ this list of conditions and the following disclaimer in the documentation
33
+ and/or other materials provided with the distribution.
34
+
35
+ * Neither the name of the SimplePie Team nor the names of its contributors
36
+ may be used to endorse or promote products derived from this software
37
+ without specific prior written permission.
38
+
39
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
40
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
42
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE
43
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
44
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
45
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
46
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49
+ POSSIBILITY OF SUCH DAMAGE.
razorpay-sdk/libs/Requests-1.6.1/library/Requests.php ADDED
@@ -0,0 +1,863 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Requests for PHP
4
+ *
5
+ * Inspired by Requests for Python.
6
+ *
7
+ * Based on concepts from SimplePie_File, RequestCore and WP_Http.
8
+ *
9
+ * @package Requests
10
+ */
11
+
12
+ /**
13
+ * Requests for PHP
14
+ *
15
+ * Inspired by Requests for Python.
16
+ *
17
+ * Based on concepts from SimplePie_File, RequestCore and WP_Http.
18
+ *
19
+ * @package Requests
20
+ */
21
+ class Requests {
22
+ /**
23
+ * POST method
24
+ *
25
+ * @var string
26
+ */
27
+ const POST = 'POST';
28
+
29
+ /**
30
+ * PUT method
31
+ *
32
+ * @var string
33
+ */
34
+ const PUT = 'PUT';
35
+
36
+ /**
37
+ * GET method
38
+ *
39
+ * @var string
40
+ */
41
+ const GET = 'GET';
42
+
43
+ /**
44
+ * HEAD method
45
+ *
46
+ * @var string
47
+ */
48
+ const HEAD = 'HEAD';
49
+
50
+ /**
51
+ * DELETE method
52
+ *
53
+ * @var string
54
+ */
55
+ const DELETE = 'DELETE';
56
+
57
+ /**
58
+ * PATCH method
59
+ *
60
+ * @link http://tools.ietf.org/html/rfc5789
61
+ * @var string
62
+ */
63
+ const PATCH = 'PATCH';
64
+
65
+ /**
66
+ * Current version of Requests
67
+ *
68
+ * @var string
69
+ */
70
+ const VERSION = '1.6.1';
71
+
72
+ /**
73
+ * Registered transport classes
74
+ *
75
+ * @var array
76
+ */
77
+ protected static $transports = array();
78
+
79
+ /**
80
+ * Selected transport name
81
+ *
82
+ * Use {@see get_transport()} instead
83
+ *
84
+ * @var string|null
85
+ */
86
+ public static $transport = null;
87
+
88
+ /**
89
+ * This is a static class, do not instantiate it
90
+ *
91
+ * @codeCoverageIgnore
92
+ */
93
+ private function __construct() {}
94
+
95
+ /**
96
+ * Autoloader for Requests
97
+ *
98
+ * Register this with {@see register_autoloader()} if you'd like to avoid
99
+ * having to create your own.
100
+ *
101
+ * (You can also use `spl_autoload_register` directly if you'd prefer.)
102
+ *
103
+ * @codeCoverageIgnore
104
+ *
105
+ * @param string $class Class name to load
106
+ */
107
+ public static function autoloader($class) {
108
+ // Check that the class starts with "Requests"
109
+ if (strpos($class, 'Requests') !== 0) {
110
+ return;
111
+ }
112
+
113
+ $file = str_replace('_', '/', $class);
114
+ if (file_exists(dirname(__FILE__) . '/' . $file . '.php')) {
115
+ require_once(dirname(__FILE__) . '/' . $file . '.php');
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Register the built-in autoloader
121
+ *
122
+ * @codeCoverageIgnore
123
+ */
124
+ public static function register_autoloader() {
125
+ spl_autoload_register(array('Requests', 'autoloader'));
126
+ }
127
+
128
+ /**
129
+ * Register a transport
130
+ *
131
+ * @param string $transport Transport class to add, must support the Requests_Transport interface
132
+ */
133
+ public static function add_transport($transport) {
134
+ if (empty(self::$transports)) {
135
+ self::$transports = array(
136
+ 'Requests_Transport_cURL',
137
+ 'Requests_Transport_fsockopen',
138
+ );
139
+ }
140
+
141
+ self::$transports = array_merge(self::$transports, array($transport));
142
+ }
143
+
144
+ /**
145
+ * Get a working transport
146
+ *
147
+ * @throws Requests_Exception If no valid transport is found (`notransport`)
148
+ * @return Requests_Transport
149
+ */
150
+ protected static function get_transport() {
151
+ // Caching code, don't bother testing coverage
152
+ // @codeCoverageIgnoreStart
153
+ if (self::$transport !== null) {
154
+ return new self::$transport();
155
+ }
156
+ // @codeCoverageIgnoreEnd
157
+
158
+ if (empty(self::$transports)) {
159
+ self::$transports = array(
160
+ 'Requests_Transport_cURL',
161
+ 'Requests_Transport_fsockopen',
162
+ );
163
+ }
164
+
165
+ // Find us a working transport
166
+ foreach (self::$transports as $class) {
167
+ if (!class_exists($class))
168
+ continue;
169
+
170
+ $result = call_user_func(array($class, 'test'));
171
+ if ($result) {
172
+ self::$transport = $class;
173
+ break;
174
+ }
175
+ }
176
+ if (self::$transport === null) {
177
+ throw new Requests_Exception('No working transports found', 'notransport', self::$transports);
178
+ }
179
+
180
+ return new self::$transport();
181
+ }
182
+
183
+ /**#@+
184
+ * @see request()
185
+ * @param string $url
186
+ * @param array $headers
187
+ * @param array $options
188
+ * @return Requests_Response
189
+ */
190
+ /**
191
+ * Send a GET request
192
+ */
193
+ public static function get($url, $headers = array(), $options = array()) {
194
+ return self::request($url, $headers, null, self::GET, $options);
195
+ }
196
+
197
+ /**
198
+ * Send a HEAD request
199
+ */
200
+ public static function head($url, $headers = array(), $options = array()) {
201
+ return self::request($url, $headers, null, self::HEAD, $options);
202
+ }
203
+
204
+ /**
205
+ * Send a DELETE request
206
+ */
207
+ public static function delete($url, $headers = array(), $options = array()) {
208
+ return self::request($url, $headers, null, self::DELETE, $options);
209
+ }
210
+ /**#@-*/
211
+
212
+ /**#@+
213
+ * @see request()
214
+ * @param string $url
215
+ * @param array $headers
216
+ * @param array $data
217
+ * @param array $options
218
+ * @return Requests_Response
219
+ */
220
+ /**
221
+ * Send a POST request
222
+ */
223
+ public static function post($url, $headers = array(), $data = array(), $options = array()) {
224
+ return self::request($url, $headers, $data, self::POST, $options);
225
+ }
226
+ /**
227
+ * Send a PUT request
228
+ */
229
+ public static function put($url, $headers = array(), $data = array(), $options = array()) {
230
+ return self::request($url, $headers, $data, self::PUT, $options);
231
+ }
232
+
233
+ /**
234
+ * Send a PATCH request
235
+ *
236
+ * Note: Unlike {@see post} and {@see put}, `$headers` is required, as the
237
+ * specification recommends that should send an ETag
238
+ *
239
+ * @link http://tools.ietf.org/html/rfc5789
240
+ */
241
+ public static function patch($url, $headers, $data = array(), $options = array()) {
242
+ return self::request($url, $headers, $data, self::PATCH, $options);
243
+ }
244
+ /**#@-*/
245
+
246
+ /**
247
+ * Main interface for HTTP requests
248
+ *
249
+ * This method initiates a request and sends it via a transport before
250
+ * parsing.
251
+ *
252
+ * The `$options` parameter takes an associative array with the following
253
+ * options:
254
+ *
255
+ * - `timeout`: How long should we wait for a response?
256
+ * (integer, seconds, default: 10)
257
+ * - `useragent`: Useragent to send to the server
258
+ * (string, default: php-requests/$version)
259
+ * - `follow_redirects`: Should we follow 3xx redirects?
260
+ * (boolean, default: true)
261
+ * - `redirects`: How many times should we redirect before erroring?
262
+ * (integer, default: 10)
263
+ * - `blocking`: Should we block processing on this request?
264
+ * (boolean, default: true)
265
+ * - `filename`: File to stream the body to instead.
266
+ * (string|boolean, default: false)
267
+ * - `auth`: Authentication handler or array of user/password details to use
268
+ * for Basic authentication
269
+ * (Requests_Auth|array|boolean, default: false)
270
+ * - `proxy`: Proxy details to use for proxy by-passing and authentication
271
+ * (Requests_Proxy|array|boolean, default: false)
272
+ * - `idn`: Enable IDN parsing
273
+ * (boolean, default: true)
274
+ * - `transport`: Custom transport. Either a class name, or a
275
+ * transport object. Defaults to the first working transport from
276
+ * {@see getTransport()}
277
+ * (string|Requests_Transport, default: {@see getTransport()})
278
+ * - `hooks`: Hooks handler.
279
+ * (Requests_Hooker, default: new Requests_Hooks())
280
+ * - `verify`: Should we verify SSL certificates? Allows passing in a custom
281
+ * certificate file as a string. (Using true uses the system-wide root
282
+ * certificate store instead, but this may have different behaviour
283
+ * across transports.)
284
+ * (string|boolean, default: library/Requests/Transport/cacert.pem)
285
+ * - `verifyname`: Should we verify the common name in the SSL certificate?
286
+ * (boolean: default, true)
287
+ *
288
+ * @throws Requests_Exception On invalid URLs (`nonhttp`)
289
+ *
290
+ * @param string $url URL to request
291
+ * @param array $headers Extra headers to send with the request
292
+ * @param array $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
293
+ * @param string $type HTTP request type (use Requests constants)
294
+ * @param array $options Options for the request (see description for more information)
295
+ * @return Requests_Response
296
+ */
297
+ public static function request($url, $headers = array(), $data = array(), $type = self::GET, $options = array()) {
298
+ if (empty($options['type'])) {
299
+ $options['type'] = $type;
300
+ }
301
+ $options = array_merge(self::get_default_options(), $options);
302
+
303
+ self::set_defaults($url, $headers, $data, $type, $options);
304
+
305
+ $options['hooks']->dispatch('requests.before_request', array(&$url, &$headers, &$data, &$type, &$options));
306
+
307
+ if (!empty($options['transport'])) {
308
+ $transport = $options['transport'];
309
+
310
+ if (is_string($options['transport'])) {
311
+ $transport = new $transport();
312
+ }
313
+ }
314
+ else {
315
+ $transport = self::get_transport();
316
+ }
317
+ $response = $transport->request($url, $headers, $data, $options);
318
+
319
+ $options['hooks']->dispatch('requests.before_parse', array(&$response, $url, $headers, $data, $type, $options));
320
+
321
+ return self::parse_response($response, $url, $headers, $data, $options);
322
+ }
323
+
324
+ /**
325
+ * Send multiple HTTP requests simultaneously
326
+ *
327
+ * The `$requests` parameter takes an associative or indexed array of
328
+ * request fields. The key of each request can be used to match up the
329
+ * request with the returned data, or with the request passed into your
330
+ * `multiple.request.complete` callback.
331
+ *
332
+ * The request fields value is an associative array with the following keys:
333
+ *
334
+ * - `url`: Request URL Same as the `$url` parameter to
335
+ * {@see Requests::request}
336
+ * (string, required)
337
+ * - `headers`: Associative array of header fields. Same as the `$headers`
338
+ * parameter to {@see Requests::request}
339
+ * (array, default: `array()`)
340
+ * - `data`: Associative array of data fields or a string. Same as the
341
+ * `$data` parameter to {@see Requests::request}
342
+ * (array|string, default: `array()`)
343
+ * - `type`: HTTP request type (use Requests constants). Same as the `$type`
344
+ * parameter to {@see Requests::request}
345
+ * (string, default: `Requests::GET`)
346
+ * - `data`: Associative array of options. Same as the `$options` parameter
347
+ * to {@see Requests::request}
348
+ * (array, default: see {@see Requests::request})
349
+ * - `cookies`: Associative array of cookie name to value, or cookie jar.
350
+ * (array|Requests_Cookie_Jar)
351
+ *
352
+ * If the `$options` parameter is specified, individual requests will
353
+ * inherit options from it. This can be used to use a single hooking system,
354
+ * or set all the types to `Requests::POST`, for example.
355
+ *
356
+ * In addition, the `$options` parameter takes the following global options:
357
+ *
358
+ * - `complete`: A callback for when a request is complete. Takes two
359
+ * parameters, a Requests_Response/Requests_Exception reference, and the
360
+ * ID from the request array (Note: this can also be overridden on a
361
+ * per-request basis, although that's a little silly)
362
+ * (callback)
363
+ *
364
+ * @param array $requests Requests data (see description for more information)
365
+ * @param array $options Global and default options (see {@see Requests::request})
366
+ * @return array Responses (either Requests_Response or a Requests_Exception object)
367
+ */
368
+ public static function request_multiple($requests, $options = array()) {
369
+ $options = array_merge(self::get_default_options(true), $options);
370
+
371
+ if (!empty($options['hooks'])) {
372
+ $options['hooks']->register('transport.internal.parse_response', array('Requests', 'parse_multiple'));
373
+ if (!empty($options['complete'])) {
374
+ $options['hooks']->register('multiple.request.complete', $options['complete']);
375
+ }
376
+ }
377
+
378
+ foreach ($requests as $id => &$request) {
379
+ if (!isset($request['headers'])) {
380
+ $request['headers'] = array();
381
+ }
382
+ if (!isset($request['data'])) {
383
+ $request['data'] = array();
384
+ }
385
+ if (!isset($request['type'])) {
386
+ $request['type'] = self::GET;
387
+ }
388
+ if (!isset($request['options'])) {
389
+ $request['options'] = $options;
390
+ $request['options']['type'] = $request['type'];
391
+ }
392
+ else {
393
+ if (empty($request['options']['type'])) {
394
+ $request['options']['type'] = $request['type'];
395
+ }
396
+ $request['options'] = array_merge($options, $request['options']);
397
+ }
398
+
399
+ self::set_defaults($request['url'], $request['headers'], $request['data'], $request['type'], $request['options']);
400
+
401
+ // Ensure we only hook in once
402
+ if ($request['options']['hooks'] !== $options['hooks']) {
403
+ $request['options']['hooks']->register('transport.internal.parse_response', array('Requests', 'parse_multiple'));
404
+ if (!empty($request['options']['complete'])) {
405
+ $request['options']['hooks']->register('multiple.request.complete', $request['options']['complete']);
406
+ }
407
+ }
408
+ }
409
+ unset($request);
410
+
411
+ if (!empty($options['transport'])) {
412
+ $transport = $options['transport'];
413
+
414
+ if (is_string($options['transport'])) {
415
+ $transport = new $transport();
416
+ }
417
+ }
418
+ else {
419
+ $transport = self::get_transport();
420
+ }
421
+ $responses = $transport->request_multiple($requests, $options);
422
+
423
+ foreach ($responses as $id => &$response) {
424
+ // If our hook got messed with somehow, ensure we end up with the
425
+ // correct response
426
+ if (is_string($response)) {
427
+ $request = $requests[$id];
428
+ self::parse_multiple($response, $request);
429
+ $request['options']['hooks']->dispatch('multiple.request.complete', array(&$response, $id));
430
+ }
431
+ }
432
+
433
+ return $responses;
434
+ }
435
+
436
+ /**
437
+ * Get the default options
438
+ *
439
+ * @see Requests::request() for values returned by this method
440
+ * @param boolean $multirequest Is this a multirequest?
441
+ * @return array Default option values
442
+ */
443
+ protected static function get_default_options($multirequest = false) {
444
+ $defaults = array(
445
+ 'timeout' => 10,
446
+ 'useragent' => 'php-requests/' . self::VERSION,
447
+ 'redirected' => 0,
448
+ 'redirects' => 10,
449
+ 'follow_redirects' => true,
450
+ 'blocking' => true,
451
+ 'type' => self::GET,
452
+ 'filename' => false,
453
+ 'auth' => false,
454
+ 'proxy' => false,
455
+ 'cookies' => false,
456
+ 'idn' => true,
457
+ 'hooks' => null,
458
+ 'transport' => null,
459
+ 'verify' => dirname( __FILE__ ) . '/Requests/Transport/cacert.pem',
460
+ 'verifyname' => true,
461
+ );
462
+ if ($multirequest !== false) {
463
+ $defaults['complete'] = null;
464
+ }
465
+ return $defaults;
466
+ }
467
+
468
+ /**
469
+ * Set the default values
470
+ *
471
+ * @param string $url URL to request
472
+ * @param array $headers Extra headers to send with the request
473
+ * @param array $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
474
+ * @param string $type HTTP request type
475
+ * @param array $options Options for the request
476
+ * @return array $options
477
+ */
478
+ protected static function set_defaults(&$url, &$headers, &$data, &$type, &$options) {
479
+ if (!preg_match('/^http(s)?:\/\//i', $url)) {
480
+ throw new Requests_Exception('Only HTTP requests are handled.', 'nonhttp', $url);
481
+ }
482
+
483
+ if (empty($options['hooks'])) {
484
+ $options['hooks'] = new Requests_Hooks();
485
+ }
486
+
487
+ if (is_array($options['auth'])) {
488
+ $options['auth'] = new Requests_Auth_Basic($options['auth']);
489
+ }
490
+ if ($options['auth'] !== false) {
491
+ $options['auth']->register($options['hooks']);
492
+ }
493
+
494
+ if (!empty($options['proxy'])) {
495
+ $options['proxy'] = new Requests_Proxy_HTTP($options['proxy']);
496
+ }
497
+ if ($options['proxy'] !== false) {
498
+ $options['proxy']->register($options['hooks']);
499
+ }
500
+
501
+ if (is_array($options['cookies'])) {
502
+ $options['cookies'] = new Requests_Cookie_Jar($options['cookies']);
503
+ }
504
+ elseif (empty($options['cookies'])) {
505
+ $options['cookies'] = new Requests_Cookie_Jar();
506
+ }
507
+ if ($options['cookies'] !== false) {
508
+ $options['cookies']->register($options['hooks']);
509
+ }
510
+
511
+ if ($options['idn'] !== false) {
512
+ $iri = new Requests_IRI($url);
513
+ $iri->host = Requests_IDNAEncoder::encode($iri->ihost);
514
+ $url = $iri->uri;
515
+ }
516
+ }
517
+
518
+ /**
519
+ * HTTP response parser
520
+ *
521
+ * @throws Requests_Exception On missing head/body separator (`requests.no_crlf_separator`)
522
+ * @throws Requests_Exception On missing head/body separator (`noversion`)
523
+ * @throws Requests_Exception On missing head/body separator (`toomanyredirects`)
524
+ *
525
+ * @param string $headers Full response text including headers and body
526
+ * @param string $url Original request URL
527
+ * @param array $req_headers Original $headers array passed to {@link request()}, in case we need to follow redirects
528
+ * @param array $req_data Original $data array passed to {@link request()}, in case we need to follow redirects
529
+ * @param array $options Original $options array passed to {@link request()}, in case we need to follow redirects
530
+ * @return Requests_Response
531
+ */
532
+ protected static function parse_response($headers, $url, $req_headers, $req_data, $options) {
533
+ $return = new Requests_Response();
534
+ if (!$options['blocking']) {
535
+ return $return;
536
+ }
537
+
538
+ $return->raw = $headers;
539
+ $return->url = $url;
540
+
541
+ if (!$options['filename']) {
542
+ if (($pos = strpos($headers, "\r\n\r\n")) === false) {
543
+ // Crap!
544
+ throw new Requests_Exception('Missing header/body separator', 'requests.no_crlf_separator');
545
+ }
546
+
547
+ $headers = substr($return->raw, 0, $pos);
548
+ $return->body = substr($return->raw, $pos + strlen("\n\r\n\r"));
549
+ }
550
+ else {
551
+ $return->body = '';
552
+ }
553
+ // Pretend CRLF = LF for compatibility (RFC 2616, section 19.3)
554
+ $headers = str_replace("\r\n", "\n", $headers);
555
+ // Unfold headers (replace [CRLF] 1*( SP | HT ) with SP) as per RFC 2616 (section 2.2)
556
+ $headers = preg_replace('/\n[ \t]/', ' ', $headers);
557
+ $headers = explode("\n", $headers);
558
+ preg_match('#^HTTP/1\.\d[ \t]+(\d+)#i', array_shift($headers), $matches);
559
+ if (empty($matches)) {
560
+ throw new Requests_Exception('Response could not be parsed', 'noversion', $headers);
561
+ }
562
+ $return->status_code = (int) $matches[1];
563
+ if ($return->status_code >= 200 && $return->status_code < 300) {
564
+ $return->success = true;
565
+ }
566
+
567
+ foreach ($headers as $header) {
568
+ list($key, $value) = explode(':', $header, 2);
569
+ $value = trim($value);
570
+ preg_replace('#(\s+)#i', ' ', $value);
571
+ $return->headers[$key] = $value;
572
+ }
573
+ if (isset($return->headers['transfer-encoding'])) {
574
+ $return->body = self::decode_chunked($return->body);
575
+ unset($return->headers['transfer-encoding']);
576
+ }
577
+ if (isset($return->headers['content-encoding'])) {
578
+ $return->body = self::decompress($return->body);
579
+ }
580
+
581
+ //fsockopen and cURL compatibility
582
+ if (isset($return->headers['connection'])) {
583
+ unset($return->headers['connection']);
584
+ }
585
+
586
+ $options['hooks']->dispatch('requests.before_redirect_check', array(&$return, $req_headers, $req_data, $options));
587
+
588
+ if ((in_array($return->status_code, array(300, 301, 302, 303, 307)) || $return->status_code > 307 && $return->status_code < 400) && $options['follow_redirects'] === true) {
589
+ if (isset($return->headers['location']) && $options['redirected'] < $options['redirects']) {
590
+ if ($return->status_code === 303) {
591
+ $options['type'] = Requests::GET;
592
+ }
593
+ $options['redirected']++;
594
+ $location = $return->headers['location'];
595
+ if (strpos ($location, '/') === 0) {
596
+ // relative redirect, for compatibility make it absolute
597
+ $location = Requests_IRI::absolutize($url, $location);
598
+ $location = $location->uri;
599
+ }
600
+ $redirected = self::request($location, $req_headers, $req_data, false, $options);
601
+ $redirected->history[] = $return;
602
+ return $redirected;
603
+ }
604
+ elseif ($options['redirected'] >= $options['redirects']) {
605
+ throw new Requests_Exception('Too many redirects', 'toomanyredirects', $return);
606
+ }
607
+ }
608
+
609
+ $return->redirects = $options['redirected'];
610
+
611
+ $options['hooks']->dispatch('requests.after_request', array(&$return, $req_headers, $req_data, $options));
612
+ return $return;
613
+ }
614
+
615
+ /**
616
+ * Callback for `transport.internal.parse_response`
617
+ *
618
+ * Internal use only. Converts a raw HTTP response to a Requests_Response
619
+ * while still executing a multiple request.
620
+ *
621
+ * @param string $headers Full response text including headers and body
622
+ * @param array $request Request data as passed into {@see Requests::request_multiple()}
623
+ * @return null `$response` is either set to a Requests_Response instance, or a Requests_Exception object
624
+ */
625
+ public static function parse_multiple(&$response, $request) {
626
+ try {
627
+ $response = self::parse_response($response, $request['url'], $request['headers'], $request['data'], $request['options']);
628
+ }
629
+ catch (Requests_Exception $e) {
630
+ $response = $e;
631
+ }
632
+ }
633
+
634
+ /**
635
+ * Decoded a chunked body as per RFC 2616
636
+ *
637
+ * @see http://tools.ietf.org/html/rfc2616#section-3.6.1
638
+ * @param string $data Chunked body
639
+ * @return string Decoded body
640
+ */
641
+ protected static function decode_chunked($data) {
642
+ if (!preg_match('/^([0-9a-f]+)[^\r\n]*\r\n/i', trim($data))) {
643
+ return $data;
644
+ }
645
+
646
+ $decoded = '';
647
+ $encoded = $data;
648
+
649
+ while (true) {
650
+ $is_chunked = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $encoded, $matches );
651
+ if (!$is_chunked) {
652
+ // Looks like it's not chunked after all
653
+ return $data;
654
+ }
655
+
656
+ $length = hexdec(trim($matches[1]));
657
+ if ($length === 0) {
658
+ // Ignore trailer headers
659
+ return $decoded;
660
+ }
661
+
662
+ $chunk_length = strlen($matches[0]);
663
+ $decoded .= $part = substr($encoded, $chunk_length, $length);
664
+ $encoded = substr($encoded, $chunk_length + $length + 2);
665
+
666
+ if (trim($encoded) === '0' || empty($encoded)) {
667
+ return $decoded;
668
+ }
669
+ }
670
+
671
+ // We'll never actually get down here
672
+ // @codeCoverageIgnoreStart
673
+ }
674
+ // @codeCoverageIgnoreEnd
675
+
676
+ /**
677
+ * Convert a key => value array to a 'key: value' array for headers
678
+ *
679
+ * @param array $array Dictionary of header values
680
+ * @return array List of headers
681
+ */
682
+ public static function flatten($array) {
683
+ $return = array();
684
+ foreach ($array as $key => $value) {
685
+ $return[] = "$key: $value";
686
+ }
687
+ return $return;
688
+ }
689
+
690
+ /**
691
+ * Convert a key => value array to a 'key: value' array for headers
692
+ *
693
+ * @deprecated Misspelling of {@see Requests::flatten}
694
+ * @param array $array Dictionary of header values
695
+ * @return array List of headers
696
+ */
697
+ public static function flattern($array) {
698
+ return self::flatten($array);
699
+ }
700
+
701
+ /**
702
+ * Decompress an encoded body
703
+ *
704
+ * Implements gzip, compress and deflate. Guesses which it is by attempting
705
+ * to decode.
706
+ *
707
+ * @todo Make this smarter by defaulting to whatever the headers say first
708
+ * @param string $data Compressed data in one of the above formats
709
+ * @return string Decompressed string
710
+ */
711
+ public static function decompress($data) {
712
+ if (substr($data, 0, 2) !== "\x1f\x8b" && substr($data, 0, 2) !== "\x78\x9c") {
713
+ // Not actually compressed. Probably cURL ruining this for us.
714
+ return $data;
715
+ }
716
+
717
+ if (function_exists('gzdecode') && ($decoded = @gzdecode($data)) !== false) {
718
+ return $decoded;
719
+ }
720
+ elseif (function_exists('gzinflate') && ($decoded = @gzinflate($data)) !== false) {
721
+ return $decoded;
722
+ }
723
+ elseif (($decoded = self::compatible_gzinflate($data)) !== false) {
724
+ return $decoded;
725
+ }
726
+ elseif (function_exists('gzuncompress') && ($decoded = @gzuncompress($data)) !== false) {
727
+ return $decoded;
728
+ }
729
+
730
+ return $data;
731
+ }
732
+
733
+ /**
734
+ * Decompression of deflated string while staying compatible with the majority of servers.
735
+ *
736
+ * Certain Servers will return deflated data with headers which PHP's gzinflate()
737
+ * function cannot handle out of the box. The following function has been created from
738
+ * various snippets on the gzinflate() PHP documentation.
739
+ *
740
+ * Warning: Magic numbers within. Due to the potential different formats that the compressed
741
+ * data may be returned in, some "magic offsets" are needed to ensure proper decompression
742
+ * takes place. For a simple progmatic way to determine the magic offset in use, see:
743
+ * http://core.trac.wordpress.org/ticket/18273
744
+ *
745
+ * @since 2.8.1
746
+ * @link http://core.trac.wordpress.org/ticket/18273
747
+ * @link http://au2.php.net/manual/en/function.gzinflate.php#70875
748
+ * @link http://au2.php.net/manual/en/function.gzinflate.php#77336
749
+ *
750
+ * @param string $gzData String to decompress.
751
+ * @return string|bool False on failure.
752
+ */
753
+ public static function compatible_gzinflate($gzData) {
754
+ // Compressed data might contain a full zlib header, if so strip it for
755
+ // gzinflate()
756
+ if ( substr($gzData, 0, 3) == "\x1f\x8b\x08" ) {
757
+ $i = 10;
758
+ $flg = ord( substr($gzData, 3, 1) );
759
+ if ( $flg > 0 ) {
760
+ if ( $flg & 4 ) {
761
+ list($xlen) = unpack('v', substr($gzData, $i, 2) );
762
+ $i = $i + 2 + $xlen;
763
+ }
764
+ if ( $flg & 8 )
765
+ $i = strpos($gzData, "\0", $i) + 1;
766
+ if ( $flg & 16 )
767
+ $i = strpos($gzData, "\0", $i) + 1;
768
+ if ( $flg & 2 )
769
+ $i = $i + 2;
770
+ }
771
+ $decompressed = self::compatible_gzinflate( substr( $gzData, $i ) );
772
+ if ( false !== $decompressed ) {
773
+ return $decompressed;
774
+ }
775
+ }
776
+
777
+ // If the data is Huffman Encoded, we must first strip the leading 2
778
+ // byte Huffman marker for gzinflate()
779
+ // The response is Huffman coded by many compressors such as
780
+ // java.util.zip.Deflater, Ruby’s Zlib::Deflate, and .NET's
781
+ // System.IO.Compression.DeflateStream.
782
+ //
783
+ // See http://decompres.blogspot.com/ for a quick explanation of this
784
+ // data type
785
+ $huffman_encoded = false;
786
+
787
+ // low nibble of first byte should be 0x08
788
+ list( , $first_nibble ) = unpack( 'h', $gzData );
789
+
790
+ // First 2 bytes should be divisible by 0x1F
791
+ list( , $first_two_bytes ) = unpack( 'n', $gzData );
792
+
793
+ if ( 0x08 == $first_nibble && 0 == ( $first_two_bytes % 0x1F ) )
794
+ $huffman_encoded = true;
795
+
796
+ if ( $huffman_encoded ) {
797
+ if ( false !== ( $decompressed = @gzinflate( substr( $gzData, 2 ) ) ) )
798
+ return $decompressed;
799
+ }
800
+
801
+ if ( "\x50\x4b\x03\x04" == substr( $gzData, 0, 4 ) ) {
802
+ // ZIP file format header
803
+ // Offset 6: 2 bytes, General-purpose field
804
+ // Offset 26: 2 bytes, filename length
805
+ // Offset 28: 2 bytes, optional field length
806
+ // Offset 30: Filename field, followed by optional field, followed
807
+ // immediately by data
808
+ list( , $general_purpose_flag ) = unpack( 'v', substr( $gzData, 6, 2 ) );
809
+
810
+ // If the file has been compressed on the fly, 0x08 bit is set of
811
+ // the general purpose field. We can use this to differentiate
812
+ // between a compressed document, and a ZIP file
813
+ $zip_compressed_on_the_fly = ( 0x08 == (0x08 & $general_purpose_flag ) );
814
+
815
+ if ( ! $zip_compressed_on_the_fly ) {
816
+ // Don't attempt to decode a compressed zip file
817
+ return $gzData;
818
+ }
819
+
820
+ // Determine the first byte of data, based on the above ZIP header
821
+ // offsets:
822
+ $first_file_start = array_sum( unpack( 'v2', substr( $gzData, 26, 4 ) ) );
823
+ if ( false !== ( $decompressed = @gzinflate( substr( $gzData, 30 + $first_file_start ) ) ) ) {
824
+ return $decompressed;
825
+ }
826
+ return false;
827
+ }
828
+
829
+ // Finally fall back to straight gzinflate
830
+ if ( false !== ( $decompressed = @gzinflate( $gzData ) ) ) {
831
+ return $decompressed;
832
+ }
833
+
834
+ // Fallback for all above failing, not expected, but included for
835
+ // debugging and preventing regressions and to track stats
836
+ if ( false !== ( $decompressed = @gzinflate( substr( $gzData, 2 ) ) ) ) {
837
+ return $decompressed;
838
+ }
839
+
840
+ return false;
841
+ }
842
+
843
+ public static function match_domain($host, $reference) {
844
+ // Check for a direct match
845
+ if ($host === $reference) {
846
+ return true;
847
+ }
848
+
849
+ // Calculate the valid wildcard match if the host is not an IP address
850
+ // Also validates that the host has 3 parts or more, as per Firefox's
851
+ // ruleset.
852
+ $parts = explode('.', $host);
853
+ if (ip2long($host) === false && count($parts) >= 3) {
854
+ $parts[0] = '*';
855
+ $wildcard = implode('.', $parts);
856
+ if ($wildcard === $reference) {
857
+ return true;
858
+ }
859
+ }
860
+
861
+ return false;
862
+ }
863
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Auth.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Authentication provider interface
4
+ *
5
+ * @package Requests
6
+ * @subpackage Authentication
7
+ */
8
+
9
+ /**
10
+ * Authentication provider interface
11
+ *
12
+ * Implement this interface to act as an authentication provider.
13
+ *
14
+ * Parameters should be passed via the constructor where possible, as this
15
+ * makes it much easier for users to use your provider.
16
+ *
17
+ * @see Requests_Hooks
18
+ * @package Requests
19
+ * @subpackage Authentication
20
+ */
21
+ interface Requests_Auth {
22
+ /**
23
+ * Register hooks as needed
24
+ *
25
+ * This method is called in {@see Requests::request} when the user has set
26
+ * an instance as the 'auth' option. Use this callback to register all the
27
+ * hooks you'll need.
28
+ *
29
+ * @see Requests_Hooks::register
30
+ * @param Requests_Hooks $hooks Hook system
31
+ */
32
+ public function register(Requests_Hooks &$hooks);
33
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Auth/Basic.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Basic Authentication provider
4
+ *
5
+ * @package Requests
6
+ * @subpackage Authentication
7
+ */
8
+
9
+ /**
10
+ * Basic Authentication provider
11
+ *
12
+ * Provides a handler for Basic HTTP authentication via the Authorization
13
+ * header.
14
+ *
15
+ * @package Requests
16
+ * @subpackage Authentication
17
+ */
18
+ class Requests_Auth_Basic implements Requests_Auth {
19
+ /**
20
+ * Username
21
+ *
22
+ * @var string
23
+ */
24
+ public $user;
25
+
26
+ /**
27
+ * Password
28
+ *
29
+ * @var string
30
+ */
31
+ public $pass;
32
+
33
+ /**
34
+ * Constructor
35
+ *
36
+ * @throws Requests_Exception On incorrect number of arguments (`authbasicbadargs`)
37
+ * @param array|null $args Array of user and password. Must have exactly two elements
38
+ */
39
+ public function __construct($args = null) {
40
+ if (is_array($args)) {
41
+ if (count($args) !== 2) {
42
+ throw new Requests_Exception('Invalid number of arguments', 'authbasicbadargs');
43
+ }
44
+
45
+ list($this->user, $this->pass) = $args;
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Register the necessary callbacks
51
+ *
52
+ * @see curl_before_send
53
+ * @see fsockopen_header
54
+ * @param Requests_Hooks $hooks Hook system
55
+ */
56
+ public function register(Requests_Hooks &$hooks) {
57
+ $hooks->register('curl.before_send', array(&$this, 'curl_before_send'));
58
+ $hooks->register('fsockopen.after_headers', array(&$this, 'fsockopen_header'));
59
+ }
60
+
61
+ /**
62
+ * Set cURL parameters before the data is sent
63
+ *
64
+ * @param resource $handle cURL resource
65
+ */
66
+ public function curl_before_send(&$handle) {
67
+ curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
68
+ curl_setopt($handle, CURLOPT_USERPWD, $this->getAuthString());
69
+ }
70
+
71
+ /**
72
+ * Add extra headers to the request before sending
73
+ *
74
+ * @param string $out HTTP header string
75
+ */
76
+ public function fsockopen_header(&$out) {
77
+ $out .= "Authorization: Basic " . base64_encode($this->getAuthString()) . "\r\n";
78
+ }
79
+
80
+ /**
81
+ * Get the authentication string (user:pass)
82
+ *
83
+ * @return string
84
+ */
85
+ public function getAuthString() {
86
+ return $this->user . ':' . $this->pass;
87
+ }
88
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Cookie.php ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Cookie storage object
4
+ *
5
+ * @package Requests
6
+ * @subpackage Cookies
7
+ */
8
+
9
+ /**
10
+ * Cookie storage object
11
+ *
12
+ * @package Requests
13
+ * @subpackage Cookies
14
+ */
15
+ class Requests_Cookie {
16
+ /**
17
+ *
18
+ * @var string
19
+ */
20
+ public $name;
21
+
22
+ /**
23
+ * @var string
24
+ */
25
+ public $value;
26
+
27
+ /**
28
+ * Cookie attributes
29
+ *
30
+ * Valid keys are (currently) path, domain, expires, max-age, secure and
31
+ * httponly.
32
+ *
33
+ * @var array
34
+ */
35
+ public $attributes = array();
36
+
37
+ /**
38
+ * Create a new cookie object
39
+ *
40
+ * @param string $name
41
+ * @param string $value
42
+ * @param array $attributes Associative array of attribute data
43
+ */
44
+ public function __construct($name, $value, $attributes = array()) {
45
+ $this->name = $name;
46
+ $this->value = $value;
47
+ $this->attributes = $attributes;
48
+ }
49
+
50
+ /**
51
+ * Format a cookie for a Cookie header
52
+ *
53
+ * This is used when sending cookies to a server.
54
+ *
55
+ * @return string Cookie formatted for Cookie header
56
+ */
57
+ public function formatForHeader() {
58
+ return sprintf('%s=%s', $this->name, $this->value);
59
+ }
60
+
61
+ /**
62
+ * Format a cookie for a Set-Cookie header
63
+ *
64
+ * This is used when sending cookies to clients. This isn't really
65
+ * applicable to client-side usage, but might be handy for debugging.
66
+ *
67
+ * @return string Cookie formatted for Set-Cookie header
68
+ */
69
+ public function formatForSetCookie() {
70
+ $header_value = $this->formatForHeader();
71
+ if (!empty($this->attributes)) {
72
+ $parts = array();
73
+ foreach ($this->attributes as $key => $value) {
74
+ // Ignore non-associative attributes
75
+ if (is_numeric($key)) {
76
+ $parts[] = $value;
77
+ }
78
+ else {
79
+ $parts[] = sprintf('%s=%s', $key, $value);
80
+ }
81
+ }
82
+
83
+ $header_value .= '; ' . implode('; ', $parts);
84
+ }
85
+ return $header_value;
86
+ }
87
+
88
+ /**
89
+ * Get the cookie value
90
+ *
91
+ * Attributes and other data can be accessed via methods.
92
+ */
93
+ public function __toString() {
94
+ return $this->value;
95
+ }
96
+
97
+ /**
98
+ * Parse a cookie string into a cookie object
99
+ *
100
+ * Based on Mozilla's parsing code in Firefox and related projects, which
101
+ * is an intentional deviation from RFC 2109 and RFC 2616. RFC 6265
102
+ * specifies some of this handling, but not in a thorough manner.
103
+ *
104
+ * @param string Cookie header value (from a Set-Cookie header)
105
+ * @return Requests_Cookie Parsed cookie object
106
+ */
107
+ public static function parse($string, $name = '') {
108
+ $parts = explode(';', $string);
109
+ $kvparts = array_shift($parts);
110
+
111
+ if (!empty($name)) {
112
+ $value = $string;
113
+ }
114
+ elseif (strpos($kvparts, '=') === false) {
115
+ // Some sites might only have a value without the equals separator.
116
+ // Deviate from RFC 6265 and pretend it was actually a blank name
117
+ // (`=foo`)
118
+ //
119
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=169091
120
+ $name = '';
121
+ $value = $kvparts;
122
+ }
123
+ else {
124
+ list($name, $value) = explode('=', $kvparts, 2);
125
+ }
126
+ $name = trim($name);
127
+ $value = trim($value);
128
+
129
+ // Attribute key are handled case-insensitively
130
+ $attributes = new Requests_Utility_CaseInsensitiveDictionary();
131
+
132
+ if (!empty($parts)) {
133
+ foreach ($parts as $part) {
134
+ if (strpos($part, '=') === false) {
135
+ $part_key = $part;
136
+ $part_value = true;
137
+ }
138
+ else {
139
+ list($part_key, $part_value) = explode('=', $part, 2);
140
+ $part_value = trim($part_value);
141
+ }
142
+
143
+ $part_key = trim($part_key);
144
+ $attributes[$part_key] = $part_value;
145
+ }
146
+ }
147
+
148
+ return new Requests_Cookie($name, $value, $attributes);
149
+ }
150
+
151
+ /**
152
+ * Parse all Set-Cookie headers from request headers
153
+ *
154
+ * @param Requests_Response_Headers $headers
155
+ * @return array
156
+ */
157
+ public static function parseFromHeaders(Requests_Response_Headers $headers) {
158
+ $cookie_headers = $headers->getValues('Set-Cookie');
159
+ if (empty($cookie_headers)) {
160
+ return array();
161
+ }
162
+
163
+ $cookies = array();
164
+ foreach ($cookie_headers as $header) {
165
+ $parsed = self::parse($header);
166
+ $cookies[$parsed->name] = $parsed;
167
+ }
168
+
169
+ return $cookies;
170
+ }
171
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Cookie/Jar.php ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Cookie holder object
4
+ *
5
+ * @package Requests
6
+ * @subpackage Cookies
7
+ */
8
+
9
+ /**
10
+ * Cookie holder object
11
+ *
12
+ * @package Requests
13
+ * @subpackage Cookies
14
+ */
15
+ class Requests_Cookie_Jar implements ArrayAccess, IteratorAggregate {
16
+ /**
17
+ * Actual item data
18
+ *
19
+ * @var array
20
+ */
21
+ protected $cookies = array();
22
+
23
+ /**
24
+ * Create a new jar
25
+ *
26
+ * @param array $cookies Existing cookie values
27
+ */
28
+ public function __construct($cookies = array()) {
29
+ $this->cookies = $cookies;
30
+ }
31
+
32
+ /**
33
+ * Normalise cookie data into a Requests_Cookie
34
+ *
35
+ * @param string|Requests_Cookie $cookie
36
+ * @return Requests_Cookie
37
+ */
38
+ public function normalizeCookie($cookie, $key = null) {
39
+ if ($cookie instanceof Requests_Cookie) {
40
+ return $cookie;
41
+ }
42
+
43
+ return Requests_Cookie::parse($cookie, $key);
44
+ }
45
+
46
+ /**
47
+ * Check if the given item exists
48
+ *
49
+ * @param string $key Item key
50
+ * @return boolean Does the item exist?
51
+ */
52
+ public function offsetExists($key) {
53
+ return isset($this->cookies[$key]);
54
+ }
55
+
56
+ /**
57
+ * Get the value for the item
58
+ *
59
+ * @param string $key Item key
60
+ * @return string Item value
61
+ */
62
+ public function offsetGet($key) {
63
+ if (!isset($this->cookies[$key]))
64
+ return null;
65
+
66
+ return $this->cookies[$key];
67
+ }
68
+
69
+ /**
70
+ * Set the given item
71
+ *
72
+ * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
73
+ *
74
+ * @param string $key Item name
75
+ * @param string $value Item value
76
+ */
77
+ public function offsetSet($key, $value) {
78
+ if ($key === null) {
79
+ throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
80
+ }
81
+
82
+ $this->cookies[$key] = $value;
83
+ }
84
+
85
+ /**
86
+ * Unset the given header
87
+ *
88
+ * @param string $key
89
+ */
90
+ public function offsetUnset($key) {
91
+ unset($this->cookies[$key]);
92
+ }
93
+
94
+ /**
95
+ * Get an iterator for the data
96
+ *
97
+ * @return ArrayIterator
98
+ */
99
+ public function getIterator() {
100
+ return new ArrayIterator($this->cookies);
101
+ }
102
+
103
+ /**
104
+ * Register the cookie handler with the request's hooking system
105
+ *
106
+ * @param Requests_Hooker $hooks Hooking system
107
+ */
108
+ public function register(Requests_Hooker $hooks) {
109
+ $hooks->register('requests.before_request', array($this, 'before_request'));
110
+ $hooks->register('requests.before_redirect_check', array($this, 'before_redirect_check'));
111
+ }
112
+
113
+ /**
114
+ * Add Cookie header to a request if we have any
115
+ *
116
+ * As per RFC 6265, cookies are separated by '; '
117
+ *
118
+ * @param string $url
119
+ * @param array $headers
120
+ * @param array $data
121
+ * @param string $type
122
+ * @param array $options
123
+ */
124
+ public function before_request(&$url, &$headers, &$data, &$type, &$options) {
125
+ if (!empty($this->cookies)) {
126
+ $cookies = array();
127
+ foreach ($this->cookies as $key => $cookie) {
128
+ $cookie = $this->normalizeCookie($cookie, $key);
129
+ $cookies[] = $cookie->formatForHeader();
130
+ }
131
+
132
+ $headers['Cookie'] = implode('; ', $cookies);
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Parse all cookies from a response and attach them to the response
138
+ *
139
+ * @var Requests_Response $response
140
+ */
141
+ public function before_redirect_check(Requests_Response &$return) {
142
+ $cookies = Requests_Cookie::parseFromHeaders($return->headers);
143
+ $this->cookies = array_merge($this->cookies, $cookies);
144
+ $return->cookies = $this;
145
+ }
146
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for HTTP requests
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for HTTP requests
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception extends Exception {
14
+ /**
15
+ * Type of exception
16
+ *
17
+ * @var string
18
+ */
19
+ protected $type;
20
+
21
+ /**
22
+ * Data associated with the exception
23
+ *
24
+ * @var mixed
25
+ */
26
+ protected $data;
27
+
28
+ /**
29
+ * Create a new exception
30
+ *
31
+ * @param string $message Exception message
32
+ * @param string $type Exception type
33
+ * @param mixed $data Associated data
34
+ * @param integer $code Exception numerical code, if applicable
35
+ */
36
+ public function __construct($message, $type, $data = null, $code = 0) {
37
+ parent::__construct($message, $code);
38
+
39
+ $this->type = $type;
40
+ $this->data = $data;
41
+ }
42
+
43
+ /**
44
+ * Like {@see getCode()}, but a string code.
45
+ *
46
+ * @codeCoverageIgnore
47
+ * @return string
48
+ */
49
+ public function getType() {
50
+ return $this->type;
51
+ }
52
+
53
+ /**
54
+ * Gives any relevant data
55
+ *
56
+ * @codeCoverageIgnore
57
+ * @return mixed
58
+ */
59
+ public function getData() {
60
+ return $this->data;
61
+ }
62
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception based on HTTP response
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception based on HTTP response
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP extends Requests_Exception {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 0;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Unknown';
27
+
28
+ /**
29
+ * Create a new exception
30
+ *
31
+ * There is no mechanism to pass in the status code, as this is set by the
32
+ * subclass used. Reason phrases can vary, however.
33
+ *
34
+ * @param string $reason Reason phrase
35
+ * @param mixed $data Associated data
36
+ */
37
+ public function __construct($reason = null, $data = null) {
38
+ if ($reason !== null) {
39
+ $this->reason = $reason;
40
+ }
41
+
42
+ $message = sprintf('%d %s', $this->code, $this->reason);
43
+ parent::__construct($message, 'httpresponse', $data, $this->code);
44
+ }
45
+
46
+ /**
47
+ * Get the status message
48
+ */
49
+ public function getReason() {
50
+ return $this->reason;
51
+ }
52
+
53
+ /**
54
+ * Get the correct exception class for a given error code
55
+ *
56
+ * @param int $code HTTP status code
57
+ * @return string Exception class name to use
58
+ */
59
+ public static function get_class($code) {
60
+ $class = sprintf('Requests_Exception_HTTP_%d', $code);
61
+ if (class_exists($class)) {
62
+ return $class;
63
+ }
64
+
65
+ return 'Requests_Exception_HTTP_Unknown';
66
+ }
67
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/400.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 400 Bad Request responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 400 Bad Request responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_400 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 400;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Bad Request';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/401.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 401 Unauthorized responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 401 Unauthorized responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_401 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 401;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Unauthorized';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/402.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 402 Payment Required responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 402 Payment Required responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_402 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 402;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Payment Required';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/403.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 403 Forbidden responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 403 Forbidden responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_403 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 403;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Forbidden';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/404.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 404 Not Found responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 404 Not Found responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_404 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 404;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Not Found';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/405.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 405 Method Not Allowed responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 405 Method Not Allowed responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_405 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 405;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Method Not Allowed';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/406.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 406 Not Acceptable responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 406 Not Acceptable responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_406 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 406;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Not Acceptable';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/407.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 407 Proxy Authentication Required responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 407 Proxy Authentication Required responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_407 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 407;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Proxy Authentication Required';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/408.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 408 Request Timeout responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 408 Request Timeout responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_408 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 408;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Request Timeout';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/409.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 409 Conflict responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 409 Conflict responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_409 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 409;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Conflict';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/410.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 410 Gone responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 410 Gone responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_410 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 410;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Gone';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/411.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 411 Length Required responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 411 Length Required responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_411 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 411;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Length Required';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/412.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 412 Precondition Failed responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 412 Precondition Failed responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_412 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 412;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Precondition Failed';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/413.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 413 Request Entity Too Large responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 413 Request Entity Too Large responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_413 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 413;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Request Entity Too Large';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/414.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 414 Request-URI Too Large responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 414 Request-URI Too Large responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_414 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 414;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Request-URI Too Large';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/415.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 415 Unsupported Media Type responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 415 Unsupported Media Type responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_415 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 415;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Unsupported Media Type';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/416.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 416 Requested Range Not Satisfiable responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 416 Requested Range Not Satisfiable responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_416 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 416;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Requested Range Not Satisfiable';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/417.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 417 Expectation Failed responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 417 Expectation Failed responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_417 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 417;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Expectation Failed';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/418.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 418 I'm A Teapot responses
4
+ *
5
+ * @see http://tools.ietf.org/html/rfc2324
6
+ * @package Requests
7
+ */
8
+
9
+ /**
10
+ * Exception for 418 I'm A Teapot responses
11
+ *
12
+ * @see http://tools.ietf.org/html/rfc2324
13
+ * @package Requests
14
+ */
15
+ class Requests_Exception_HTTP_418 extends Requests_Exception_HTTP {
16
+ /**
17
+ * HTTP status code
18
+ *
19
+ * @var integer
20
+ */
21
+ protected $code = 418;
22
+
23
+ /**
24
+ * Reason phrase
25
+ *
26
+ * @var string
27
+ */
28
+ protected $reason = "I'm A Teapot";
29
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/428.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 428 Precondition Required responses
4
+ *
5
+ * @see http://tools.ietf.org/html/rfc6585
6
+ * @package Requests
7
+ */
8
+
9
+ /**
10
+ * Exception for 428 Precondition Required responses
11
+ *
12
+ * @see http://tools.ietf.org/html/rfc6585
13
+ * @package Requests
14
+ */
15
+ class Requests_Exception_HTTP_428 extends Requests_Exception_HTTP {
16
+ /**
17
+ * HTTP status code
18
+ *
19
+ * @var integer
20
+ */
21
+ protected $code = 428;
22
+
23
+ /**
24
+ * Reason phrase
25
+ *
26
+ * @var string
27
+ */
28
+ protected $reason = 'Precondition Required';
29
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/429.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 429 Too Many Requests responses
4
+ *
5
+ * @see http://tools.ietf.org/html/draft-nottingham-http-new-status-04
6
+ * @package Requests
7
+ */
8
+
9
+ /**
10
+ * Exception for 429 Too Many Requests responses
11
+ *
12
+ * @see http://tools.ietf.org/html/draft-nottingham-http-new-status-04
13
+ * @package Requests
14
+ */
15
+ class Requests_Exception_HTTP_429 extends Requests_Exception_HTTP {
16
+ /**
17
+ * HTTP status code
18
+ *
19
+ * @var integer
20
+ */
21
+ protected $code = 429;
22
+
23
+ /**
24
+ * Reason phrase
25
+ *
26
+ * @var string
27
+ */
28
+ protected $reason = 'Too Many Requests';
29
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/431.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 431 Request Header Fields Too Large responses
4
+ *
5
+ * @see http://tools.ietf.org/html/rfc6585
6
+ * @package Requests
7
+ */
8
+
9
+ /**
10
+ * Exception for 431 Request Header Fields Too Large responses
11
+ *
12
+ * @see http://tools.ietf.org/html/rfc6585
13
+ * @package Requests
14
+ */
15
+ class Requests_Exception_HTTP_431 extends Requests_Exception_HTTP {
16
+ /**
17
+ * HTTP status code
18
+ *
19
+ * @var integer
20
+ */
21
+ protected $code = 431;
22
+
23
+ /**
24
+ * Reason phrase
25
+ *
26
+ * @var string
27
+ */
28
+ protected $reason = 'Request Header Fields Too Large';
29
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/500.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 500 Internal Server Error responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 500 Internal Server Error responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_500 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 500;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Internal Server Error';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/501.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 501 Not Implemented responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 501 Not Implemented responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_501 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 501;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Not Implemented';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/502.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 502 Bad Gateway responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 502 Bad Gateway responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_502 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 502;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Bad Gateway';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/503.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 503 Service Unavailable responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 503 Service Unavailable responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_503 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 503;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Service Unavailable';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/504.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 504 Gateway Timeout responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 504 Gateway Timeout responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_504 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 504;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Gateway Timeout';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/505.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 505 HTTP Version Not Supported responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for 505 HTTP Version Not Supported responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_505 extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 505;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'HTTP Version Not Supported';
27
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/511.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for 511 Network Authentication Required responses
4
+ *
5
+ * @see http://tools.ietf.org/html/rfc6585
6
+ * @package Requests
7
+ */
8
+
9
+ /**
10
+ * Exception for 511 Network Authentication Required responses
11
+ *
12
+ * @see http://tools.ietf.org/html/rfc6585
13
+ * @package Requests
14
+ */
15
+ class Requests_Exception_HTTP_511 extends Requests_Exception_HTTP {
16
+ /**
17
+ * HTTP status code
18
+ *
19
+ * @var integer
20
+ */
21
+ protected $code = 511;
22
+
23
+ /**
24
+ * Reason phrase
25
+ *
26
+ * @var string
27
+ */
28
+ protected $reason = 'Network Authentication Required';
29
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Exception/HTTP/Unknown.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception for unknown status responses
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Exception for unknown status responses
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Exception_HTTP_Unknown extends Requests_Exception_HTTP {
14
+ /**
15
+ * HTTP status code
16
+ *
17
+ * @var integer
18
+ */
19
+ protected $code = 0;
20
+
21
+ /**
22
+ * Reason phrase
23
+ *
24
+ * @var string
25
+ */
26
+ protected $reason = 'Unknown';
27
+
28
+ /**
29
+ * Create a new exception
30
+ *
31
+ * If `$data` is an instance of {@see Requests_Response}, uses the status
32
+ * code from it. Otherwise, sets as 0
33
+ *
34
+ * @param string $reason Reason phrase
35
+ * @param mixed $data Associated data
36
+ */
37
+ public function __construct($reason = null, $data = null) {
38
+ if ($data instanceof Requests_Response) {
39
+ $this->code = $data->status_code;
40
+ }
41
+
42
+ parent::__construct($reason, $data);
43
+ }
44
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Hooker.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Event dispatcher
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * Event dispatcher
11
+ *
12
+ * @package Requests
13
+ * @subpackage Utilities
14
+ */
15
+ interface Requests_Hooker {
16
+ /**
17
+ * Register a callback for a hook
18
+ *
19
+ * @param string $hook Hook name
20
+ * @param callback $callback Function/method to call on event
21
+ * @param int $priority Priority number. <0 is executed earlier, >0 is executed later
22
+ */
23
+ public function register($hook, $callback, $priority = 0);
24
+
25
+ /**
26
+ * Dispatch a message
27
+ *
28
+ * @param string $hook Hook name
29
+ * @param array $parameters Parameters to pass to callbacks
30
+ * @return boolean Successfulness
31
+ */
32
+ public function dispatch($hook, $parameters = array());
33
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Hooks.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Handles adding and dispatching events
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * Handles adding and dispatching events
11
+ *
12
+ * @package Requests
13
+ * @subpackage Utilities
14
+ */
15
+ class Requests_Hooks implements Requests_Hooker {
16
+ /**
17
+ * Constructor
18
+ */
19
+ public function __construct() {
20
+ // pass
21
+ }
22
+
23
+ /**
24
+ * Register a callback for a hook
25
+ *
26
+ * @param string $hook Hook name
27
+ * @param callback $callback Function/method to call on event
28
+ * @param int $priority Priority number. <0 is executed earlier, >0 is executed later
29
+ */
30
+ public function register($hook, $callback, $priority = 0) {
31
+ if (!isset($this->hooks[$hook])) {
32
+ $this->hooks[$hook] = array();
33
+ }
34
+ if (!isset($this->hooks[$hook][$priority])) {
35
+ $this->hooks[$hook][$priority] = array();
36
+ }
37
+
38
+ $this->hooks[$hook][$priority][] = $callback;
39
+ }
40
+
41
+ /**
42
+ * Dispatch a message
43
+ *
44
+ * @param string $hook Hook name
45
+ * @param array $parameters Parameters to pass to callbacks
46
+ * @return boolean Successfulness
47
+ */
48
+ public function dispatch($hook, $parameters = array()) {
49
+ if (empty($this->hooks[$hook])) {
50
+ return false;
51
+ }
52
+
53
+ foreach ($this->hooks[$hook] as $priority => $hooked) {
54
+ foreach ($hooked as $callback) {
55
+ call_user_func_array($callback, $parameters);
56
+ }
57
+ }
58
+
59
+ return true;
60
+ }
61
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/IDNAEncoder.php ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * IDNA URL encoder
5
+ *
6
+ * Note: Not fully compliant, as nameprep does nothing yet.
7
+ *
8
+ * @package Requests
9
+ * @subpackage Utilities
10
+ * @see http://tools.ietf.org/html/rfc3490 IDNA specification
11
+ * @see http://tools.ietf.org/html/rfc3492 Punycode/Bootstrap specification
12
+ */
13
+ class Requests_IDNAEncoder {
14
+ /**
15
+ * ACE prefix used for IDNA
16
+ *
17
+ * @see http://tools.ietf.org/html/rfc3490#section-5
18
+ * @var string
19
+ */
20
+ const ACE_PREFIX = 'xn--';
21
+
22
+ /**#@+
23
+ * Bootstrap constant for Punycode
24
+ *
25
+ * @see http://tools.ietf.org/html/rfc3492#section-5
26
+ * @var int
27
+ */
28
+ const BOOTSTRAP_BASE = 36;
29
+ const BOOTSTRAP_TMIN = 1;
30
+ const BOOTSTRAP_TMAX = 26;
31
+ const BOOTSTRAP_SKEW = 38;
32
+ const BOOTSTRAP_DAMP = 700;
33
+ const BOOTSTRAP_INITIAL_BIAS = 72;
34
+ const BOOTSTRAP_INITIAL_N = 128;
35
+ /**#@-*/
36
+
37
+ /**
38
+ * Encode a hostname using Punycode
39
+ *
40
+ * @param string $string Hostname
41
+ * @return string Punycode-encoded hostname
42
+ */
43
+ public static function encode($string) {
44
+ $parts = explode('.', $string);
45
+ foreach ($parts as &$part) {
46
+ $part = self::to_ascii($part);
47
+ }
48
+ return implode('.', $parts);
49
+ }
50
+
51
+ /**
52
+ * Convert a UTF-8 string to an ASCII string using Punycode
53
+ *
54
+ * @throws Requests_Exception Provided string longer than 64 ASCII characters (`idna.provided_too_long`)
55
+ * @throws Requests_Exception Prepared string longer than 64 ASCII characters (`idna.prepared_too_long`)
56
+ * @throws Requests_Exception Provided string already begins with xn-- (`idna.provided_is_prefixed`)
57
+ * @throws Requests_Exception Encoded string longer than 64 ASCII characters (`idna.encoded_too_long`)
58
+ *
59
+ * @param string $string ASCII or UTF-8 string (max length 64 characters)
60
+ * @return string ASCII string
61
+ */
62
+ public static function to_ascii($string) {
63
+ // Step 1: Check if the string is already ASCII
64
+ if (self::is_ascii($string)) {
65
+ // Skip to step 7
66
+ if (strlen($string) < 64) {
67
+ return $string;
68
+ }
69
+
70
+ throw new Requests_Exception('Provided string is too long', 'idna.provided_too_long', $string);
71
+ }
72
+
73
+ // Step 2: nameprep
74
+ $string = self::nameprep($string);
75
+
76
+ // Step 3: UseSTD3ASCIIRules is false, continue
77
+ // Step 4: Check if it's ASCII now
78
+ if (self::is_ascii($string)) {
79
+ // Skip to step 7
80
+ if (strlen($string) < 64) {
81
+ return $string;
82
+ }
83
+
84
+ throw new Requests_Exception('Prepared string is too long', 'idna.prepared_too_long', $string);
85
+ }
86
+
87
+ // Step 5: Check ACE prefix
88
+ if (strpos($string, self::ACE_PREFIX) === 0) {
89
+ throw new Requests_Exception('Provided string begins with ACE prefix', 'idna.provided_is_prefixed', $string);
90
+ }
91
+
92
+ // Step 6: Encode with Punycode
93
+ $string = self::punycode_encode($string);
94
+
95
+ // Step 7: Prepend ACE prefix
96
+ $string = self::ACE_PREFIX . $string;
97
+
98
+ // Step 8: Check size
99
+ if (strlen($string) < 64) {
100
+ return $string;
101
+ }
102
+
103
+ throw new Requests_Exception('Encoded string is too long', 'idna.encoded_too_long', $string);
104
+ }
105
+
106
+ /**
107
+ * Check whether a given string contains only ASCII characters
108
+ *
109
+ * @internal (Testing found regex was the fastest implementation)
110
+ *
111
+ * @param string $string
112
+ * @return bool Is the string ASCII-only?
113
+ */
114
+ protected static function is_ascii($string) {
115
+ return (preg_match('/(?:[^\x00-\x7F])/', $string) !== 1);
116
+ }
117
+
118
+ /**
119
+ * Prepare a string for use as an IDNA name
120
+ *
121
+ * @todo Implement this based on RFC 3491 and the newer 5891
122
+ * @param string $string
123
+ * @return string Prepared string
124
+ */
125
+ protected static function nameprep($string) {
126
+ return $string;
127
+ }
128
+
129
+ /**
130
+ * Convert a UTF-8 string to a UCS-4 codepoint array
131
+ *
132
+ * Based on Requests_IRI::replace_invalid_with_pct_encoding()
133
+ *
134
+ * @throws Requests_Exception Invalid UTF-8 codepoint (`idna.invalidcodepoint`)
135
+ * @param string $input
136
+ * @return array Unicode code points
137
+ */
138
+ protected static function utf8_to_codepoints($input) {
139
+ $codepoints = array();
140
+
141
+ // Get number of bytes
142
+ $strlen = strlen($input);
143
+
144
+ for ($position = 0; $position < $strlen; $position++) {
145
+ $value = ord($input[$position]);
146
+
147
+ // One byte sequence:
148
+ if ((~$value & 0x80) === 0x80) {
149
+ $character = $value;
150
+ $length = 1;
151
+ $remaining = 0;
152
+ }
153
+ // Two byte sequence:
154
+ elseif (($value & 0xE0) === 0xC0) {
155
+ $character = ($value & 0x1F) << 6;
156
+ $length = 2;
157
+ $remaining = 1;
158
+ }
159
+ // Three byte sequence:
160
+ elseif (($value & 0xF0) === 0xE0) {
161
+ $character = ($value & 0x0F) << 12;
162
+ $length = 3;
163
+ $remaining = 2;
164
+ }
165
+ // Four byte sequence:
166
+ elseif (($value & 0xF8) === 0xF0) {
167
+ $character = ($value & 0x07) << 18;
168
+ $length = 4;
169
+ $remaining = 3;
170
+ }
171
+ // Invalid byte:
172
+ else {
173
+ throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $value);
174
+ }
175
+
176
+ if ($remaining > 0) {
177
+ if ($position + $length > $strlen) {
178
+ throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character);
179
+ }
180
+ for ($position++; $remaining > 0; $position++) {
181
+ $value = ord($input[$position]);
182
+
183
+ // If it is invalid, count the sequence as invalid and reprocess the current byte:
184
+ if (($value & 0xC0) !== 0x80) {
185
+ throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character);
186
+ }
187
+
188
+ $character |= ($value & 0x3F) << (--$remaining * 6);
189
+ }
190
+ $position--;
191
+ }
192
+
193
+ if (
194
+ // Non-shortest form sequences are invalid
195
+ $length > 1 && $character <= 0x7F
196
+ || $length > 2 && $character <= 0x7FF
197
+ || $length > 3 && $character <= 0xFFFF
198
+ // Outside of range of ucschar codepoints
199
+ // Noncharacters
200
+ || ($character & 0xFFFE) === 0xFFFE
201
+ || $character >= 0xFDD0 && $character <= 0xFDEF
202
+ || (
203
+ // Everything else not in ucschar
204
+ $character > 0xD7FF && $character < 0xF900
205
+ || $character < 0x20
206
+ || $character > 0x7E && $character < 0xA0
207
+ || $character > 0xEFFFD
208
+ )
209
+ ) {
210
+ throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character);
211
+ }
212
+
213
+ $codepoints[] = $character;
214
+ }
215
+
216
+ return $codepoints;
217
+ }
218
+
219
+ /**
220
+ * RFC3492-compliant encoder
221
+ *
222
+ * @internal Pseudo-code from Section 6.3 is commented with "#" next to relevant code
223
+ * @throws Requests_Exception On character outside of the domain (never happens with Punycode) (`idna.character_outside_domain`)
224
+ *
225
+ * @param string $input UTF-8 encoded string to encode
226
+ * @return string Punycode-encoded string
227
+ */
228
+ public static function punycode_encode($input) {
229
+ $output = '';
230
+ # let n = initial_n
231
+ $n = self::BOOTSTRAP_INITIAL_N;
232
+ # let delta = 0
233
+ $delta = 0;
234
+ # let bias = initial_bias
235
+ $bias = self::BOOTSTRAP_INITIAL_BIAS;
236
+ # let h = b = the number of basic code points in the input
237
+ $h = $b = 0; // see loop
238
+ # copy them to the output in order
239
+ $codepoints = self::utf8_to_codepoints($input);
240
+
241
+ foreach ($codepoints as $char) {
242
+ if ($char < 128) {
243
+ // Character is valid ASCII
244
+ // TODO: this should also check if it's valid for a URL
245
+ $output .= chr($char);
246
+ $h++;
247
+ }
248
+ // Check if the character is non-ASCII, but below initial n
249
+ // This never occurs for Punycode, so ignore in coverage
250
+ // @codeCoverageIgnoreStart
251
+ elseif ($char < $n) {
252
+ throw new Requests_Exception('Invalid character', 'idna.character_outside_domain', $char);
253
+ }
254
+ // @codeCoverageIgnoreEnd
255
+ else {
256
+ $extended[$char] = true;
257
+ }
258
+ }
259
+ $extended = array_keys($extended);
260
+ sort($extended);
261
+ $b = $h;
262
+ # [copy them] followed by a delimiter if b > 0
263
+ if (strlen($output) > 0) {
264
+ $output .= '-';
265
+ }
266
+ # {if the input contains a non-basic code point < n then fail}
267
+ # while h < length(input) do begin
268
+ while ($h < count($codepoints)) {
269
+ # let m = the minimum code point >= n in the input
270
+ $m = array_shift($extended);
271
+ //printf('next code point to insert is %s' . PHP_EOL, dechex($m));
272
+ # let delta = delta + (m - n) * (h + 1), fail on overflow
273
+ $delta += ($m - $n) * ($h + 1);
274
+ # let n = m
275
+ $n = $m;
276
+ # for each code point c in the input (in order) do begin
277
+ for ($num = 0; $num < count($codepoints); $num++) {
278
+ $c = $codepoints[$num];
279
+ # if c < n then increment delta, fail on overflow
280
+ if ($c < $n) {
281
+ $delta++;
282
+ }
283
+ # if c == n then begin
284
+ elseif ($c === $n) {
285
+ # let q = delta
286
+ $q = $delta;
287
+ # for k = base to infinity in steps of base do begin
288
+ for ($k = self::BOOTSTRAP_BASE; ; $k += self::BOOTSTRAP_BASE) {
289
+ # let t = tmin if k <= bias {+ tmin}, or
290
+ # tmax if k >= bias + tmax, or k - bias otherwise
291
+ if ($k <= ($bias + self::BOOTSTRAP_TMIN)) {
292
+ $t = self::BOOTSTRAP_TMIN;
293
+ }
294
+ elseif ($k >= ($bias + self::BOOTSTRAP_TMAX)) {
295
+ $t = self::BOOTSTRAP_TMAX;
296
+ }
297
+ else {
298
+ $t = $k - $bias;
299
+ }
300
+ # if q < t then break
301
+ if ($q < $t) {
302
+ break;
303
+ }
304
+ # output the code point for digit t + ((q - t) mod (base - t))
305
+ $digit = $t + (($q - $t) % (self::BOOTSTRAP_BASE - $t));
306
+ //printf('needed delta is %d, encodes as "%s"' . PHP_EOL, $delta, self::digit_to_char($digit));
307
+ $output .= self::digit_to_char($digit);
308
+ # let q = (q - t) div (base - t)
309
+ $q = floor(($q - $t) / (self::BOOTSTRAP_BASE - $t));
310
+ # end
311
+ }
312
+ # output the code point for digit q
313
+ $output .= self::digit_to_char($q);
314
+ //printf('needed delta is %d, encodes as "%s"' . PHP_EOL, $delta, self::digit_to_char($q));
315
+ # let bias = adapt(delta, h + 1, test h equals b?)
316
+ $bias = self::adapt($delta, $h + 1, $h === $b);
317
+ //printf('bias becomes %d' . PHP_EOL, $bias);
318
+ # let delta = 0
319
+ $delta = 0;
320
+ # increment h
321
+ $h++;
322
+ # end
323
+ }
324
+ # end
325
+ }
326
+ # increment delta and n
327
+ $delta++;
328
+ $n++;
329
+ # end
330
+ }
331
+
332
+ return $output;
333
+ }
334
+
335
+ /**
336
+ * Convert a digit to its respective character
337
+ *
338
+ * @see http://tools.ietf.org/html/rfc3492#section-5
339
+ * @throws Requests_Exception On invalid digit (`idna.invalid_digit`)
340
+ *
341
+ * @param int $digit Digit in the range 0-35
342
+ * @return string Single character corresponding to digit
343
+ */
344
+ protected static function digit_to_char($digit) {
345
+ // @codeCoverageIgnoreStart
346
+ // As far as I know, this never happens, but still good to be sure.
347
+ if ($digit < 0 || $digit > 35) {
348
+ throw new Requests_Exception(sprintf('Invalid digit %d', $digit), 'idna.invalid_digit', $digit);
349
+ }
350
+ // @codeCoverageIgnoreEnd
351
+ $digits = 'abcdefghijklmnopqrstuvwxyz0123456789';
352
+ return substr($digits, $digit, 1);
353
+ }
354
+
355
+ /**
356
+ * Adapt the bias
357
+ *
358
+ * @see http://tools.ietf.org/html/rfc3492#section-6.1
359
+ * @param int $delta
360
+ * @param int $numpoints
361
+ * @param bool $firsttime
362
+ * @return int New bias
363
+ */
364
+ protected static function adapt($delta, $numpoints, $firsttime) {
365
+ # function adapt(delta,numpoints,firsttime):
366
+ # if firsttime then let delta = delta div damp
367
+ if ($firsttime) {
368
+ $delta = floor($delta / self::BOOTSTRAP_DAMP);
369
+ }
370
+ # else let delta = delta div 2
371
+ else {
372
+ $delta = floor($delta / 2);
373
+ }
374
+ # let delta = delta + (delta div numpoints)
375
+ $delta += floor($delta / $numpoints);
376
+ # let k = 0
377
+ $k = 0;
378
+ # while delta > ((base - tmin) * tmax) div 2 do begin
379
+ $max = floor(((self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN) * self::BOOTSTRAP_TMAX) / 2);
380
+ while ($delta > $max) {
381
+ # let delta = delta div (base - tmin)
382
+ $delta = floor($delta / (self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN));
383
+ # let k = k + base
384
+ $k += self::BOOTSTRAP_BASE;
385
+ # end
386
+ }
387
+ # return k + (((base - tmin + 1) * delta) div (delta + skew))
388
+ return $k + floor(((self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN + 1) * $delta) / ($delta + self::BOOTSTRAP_SKEW));
389
+ }
390
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/IPv6.php ADDED
@@ -0,0 +1,221 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class to validate and to work with IPv6 addresses
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * Class to validate and to work with IPv6 addresses
11
+ *
12
+ * This was originally based on the PEAR class of the same name, but has been
13
+ * entirely rewritten.
14
+ *
15
+ * @package Requests
16
+ * @subpackage Utilities
17
+ */
18
+ class Requests_IPv6
19
+ {
20
+ /**
21
+ * Uncompresses an IPv6 address
22
+ *
23
+ * RFC 4291 allows you to compress consecutive zero pieces in an address to
24
+ * '::'. This method expects a valid IPv6 address and expands the '::' to
25
+ * the required number of zero pieces.
26
+ *
27
+ * Example: FF01::101 -> FF01:0:0:0:0:0:0:101
28
+ * ::1 -> 0:0:0:0:0:0:0:1
29
+ *
30
+ * @author Alexander Merz <alexander.merz@web.de>
31
+ * @author elfrink at introweb dot nl
32
+ * @author Josh Peck <jmp at joshpeck dot org>
33
+ * @copyright 2003-2005 The PHP Group
34
+ * @license http://www.opensource.org/licenses/bsd-license.php
35
+ * @param string $ip An IPv6 address
36
+ * @return string The uncompressed IPv6 address
37
+ */
38
+ public static function uncompress($ip)
39
+ {
40
+ $c1 = -1;
41
+ $c2 = -1;
42
+ if (substr_count($ip, '::') === 1)
43
+ {
44
+ list($ip1, $ip2) = explode('::', $ip);
45
+ if ($ip1 === '')
46
+ {
47
+ $c1 = -1;
48
+ }
49
+ else
50
+ {
51
+ $c1 = substr_count($ip1, ':');
52
+ }
53
+ if ($ip2 === '')
54
+ {
55
+ $c2 = -1;
56
+ }
57
+ else
58
+ {
59
+ $c2 = substr_count($ip2, ':');
60
+ }
61
+ if (strpos($ip2, '.') !== false)
62
+ {
63
+ $c2++;
64
+ }
65
+ // ::
66
+ if ($c1 === -1 && $c2 === -1)
67
+ {
68
+ $ip = '0:0:0:0:0:0:0:0';
69
+ }
70
+ // ::xxx
71
+ else if ($c1 === -1)
72
+ {
73
+ $fill = str_repeat('0:', 7 - $c2);
74
+ $ip = str_replace('::', $fill, $ip);
75
+ }
76
+ // xxx::
77
+ else if ($c2 === -1)
78
+ {
79
+ $fill = str_repeat(':0', 7 - $c1);
80
+ $ip = str_replace('::', $fill, $ip);
81
+ }
82
+ // xxx::xxx
83
+ else
84
+ {
85
+ $fill = ':' . str_repeat('0:', 6 - $c2 - $c1);
86
+ $ip = str_replace('::', $fill, $ip);
87
+ }
88
+ }
89
+ return $ip;
90
+ }
91
+
92
+ /**
93
+ * Compresses an IPv6 address
94
+ *
95
+ * RFC 4291 allows you to compress consecutive zero pieces in an address to
96
+ * '::'. This method expects a valid IPv6 address and compresses consecutive
97
+ * zero pieces to '::'.
98
+ *
99
+ * Example: FF01:0:0:0:0:0:0:101 -> FF01::101
100
+ * 0:0:0:0:0:0:0:1 -> ::1
101
+ *
102
+ * @see uncompress()
103
+ * @param string $ip An IPv6 address
104
+ * @return string The compressed IPv6 address
105
+ */
106
+ public static function compress($ip)
107
+ {
108
+ // Prepare the IP to be compressed
109
+ $ip = self::uncompress($ip);
110
+ $ip_parts = self::split_v6_v4($ip);
111
+
112
+ // Replace all leading zeros
113
+ $ip_parts[0] = preg_replace('/(^|:)0+([0-9])/', '\1\2', $ip_parts[0]);
114
+
115
+ // Find bunches of zeros
116
+ if (preg_match_all('/(?:^|:)(?:0(?::|$))+/', $ip_parts[0], $matches, PREG_OFFSET_CAPTURE))
117
+ {
118
+ $max = 0;
119
+ $pos = null;
120
+ foreach ($matches[0] as $match)
121
+ {
122
+ if (strlen($match[0]) > $max)
123
+ {
124
+ $max = strlen($match[0]);
125
+ $pos = $match[1];
126
+ }
127
+ }
128
+
129
+ $ip_parts[0] = substr_replace($ip_parts[0], '::', $pos, $max);
130
+ }
131
+
132
+ if ($ip_parts[1] !== '')
133
+ {
134
+ return implode(':', $ip_parts);
135
+ }
136
+ else
137
+ {
138
+ return $ip_parts[0];
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Splits an IPv6 address into the IPv6 and IPv4 representation parts
144
+ *
145
+ * RFC 4291 allows you to represent the last two parts of an IPv6 address
146
+ * using the standard IPv4 representation
147
+ *
148
+ * Example: 0:0:0:0:0:0:13.1.68.3
149
+ * 0:0:0:0:0:FFFF:129.144.52.38
150
+ *
151
+ * @param string $ip An IPv6 address
152
+ * @return array [0] contains the IPv6 represented part, and [1] the IPv4 represented part
153
+ */
154
+ private static function split_v6_v4($ip)
155
+ {
156
+ if (strpos($ip, '.') !== false)
157
+ {
158
+ $pos = strrpos($ip, ':');
159
+ $ipv6_part = substr($ip, 0, $pos);
160
+ $ipv4_part = substr($ip, $pos + 1);
161
+ return array($ipv6_part, $ipv4_part);
162
+ }
163
+ else
164
+ {
165
+ return array($ip, '');
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Checks an IPv6 address
171
+ *
172
+ * Checks if the given IP is a valid IPv6 address
173
+ *
174
+ * @param string $ip An IPv6 address
175
+ * @return bool true if $ip is a valid IPv6 address
176
+ */
177
+ public static function check_ipv6($ip)
178
+ {
179
+ $ip = self::uncompress($ip);
180
+ list($ipv6, $ipv4) = self::split_v6_v4($ip);
181
+ $ipv6 = explode(':', $ipv6);
182
+ $ipv4 = explode('.', $ipv4);
183
+ if (count($ipv6) === 8 && count($ipv4) === 1 || count($ipv6) === 6 && count($ipv4) === 4)
184
+ {
185
+ foreach ($ipv6 as $ipv6_part)
186
+ {
187
+ // The section can't be empty
188
+ if ($ipv6_part === '')
189
+ return false;
190
+
191
+ // Nor can it be over four characters
192
+ if (strlen($ipv6_part) > 4)
193
+ return false;
194
+
195
+ // Remove leading zeros (this is safe because of the above)
196
+ $ipv6_part = ltrim($ipv6_part, '0');
197
+ if ($ipv6_part === '')
198
+ $ipv6_part = '0';
199
+
200
+ // Check the value is valid
201
+ $value = hexdec($ipv6_part);
202
+ if (dechex($value) !== strtolower($ipv6_part) || $value < 0 || $value > 0xFFFF)
203
+ return false;
204
+ }
205
+ if (count($ipv4) === 4)
206
+ {
207
+ foreach ($ipv4 as $ipv4_part)
208
+ {
209
+ $value = (int) $ipv4_part;
210
+ if ((string) $value !== $ipv4_part || $value < 0 || $value > 0xFF)
211
+ return false;
212
+ }
213
+ }
214
+ return true;
215
+ }
216
+ else
217
+ {
218
+ return false;
219
+ }
220
+ }
221
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/IRI.php ADDED
@@ -0,0 +1,1220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * IRI parser/serialiser/normaliser
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * IRI parser/serialiser/normaliser
11
+ *
12
+ * Copyright (c) 2007-2010, Geoffrey Sneddon and Steve Minutillo.
13
+ * All rights reserved.
14
+ *
15
+ * Redistribution and use in source and binary forms, with or without
16
+ * modification, are permitted provided that the following conditions are met:
17
+ *
18
+ * * Redistributions of source code must retain the above copyright notice,
19
+ * this list of conditions and the following disclaimer.
20
+ *
21
+ * * Redistributions in binary form must reproduce the above copyright notice,
22
+ * this list of conditions and the following disclaimer in the documentation
23
+ * and/or other materials provided with the distribution.
24
+ *
25
+ * * Neither the name of the SimplePie Team nor the names of its contributors
26
+ * may be used to endorse or promote products derived from this software
27
+ * without specific prior written permission.
28
+ *
29
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
30
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE
33
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
34
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
35
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
36
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
37
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
39
+ * POSSIBILITY OF SUCH DAMAGE.
40
+ *
41
+ * @package Requests
42
+ * @subpackage Utilities
43
+ * @author Geoffrey Sneddon
44
+ * @author Steve Minutillo
45
+ * @copyright 2007-2009 Geoffrey Sneddon and Steve Minutillo
46
+ * @license http://www.opensource.org/licenses/bsd-license.php
47
+ * @link http://hg.gsnedders.com/iri/
48
+ */
49
+ class Requests_IRI
50
+ {
51
+ /**
52
+ * Scheme
53
+ *
54
+ * @var string
55
+ */
56
+ protected $scheme = null;
57
+
58
+ /**
59
+ * User Information
60
+ *
61
+ * @var string
62
+ */
63
+ protected $iuserinfo = null;
64
+
65
+ /**
66
+ * ihost
67
+ *
68
+ * @var string
69
+ */
70
+ protected $ihost = null;
71
+
72
+ /**
73
+ * Port
74
+ *
75
+ * @var string
76
+ */
77
+ protected $port = null;
78
+
79
+ /**
80
+ * ipath
81
+ *
82
+ * @var string
83
+ */
84
+ protected $ipath = '';
85
+
86
+ /**
87
+ * iquery
88
+ *
89
+ * @var string
90
+ */
91
+ protected $iquery = null;
92
+
93
+ /**
94
+ * ifragment
95
+ *
96
+ * @var string
97
+ */
98
+ protected $ifragment = null;
99
+
100
+ /**
101
+ * Normalization database
102
+ *
103
+ * Each key is the scheme, each value is an array with each key as the IRI
104
+ * part and value as the default value for that part.
105
+ */
106
+ protected $normalization = array(
107
+ 'acap' => array(
108
+ 'port' => 674
109
+ ),
110
+ 'dict' => array(
111
+ 'port' => 2628
112
+ ),
113
+ 'file' => array(
114
+ 'ihost' => 'localhost'
115
+ ),
116
+ 'http' => array(
117
+ 'port' => 80,
118
+ 'ipath' => '/'
119
+ ),
120
+ 'https' => array(
121
+ 'port' => 443,
122
+ 'ipath' => '/'
123
+ ),
124
+ );
125
+
126
+ /**
127
+ * Return the entire IRI when you try and read the object as a string
128
+ *
129
+ * @return string
130
+ */
131
+ public function __toString()
132
+ {
133
+ return $this->get_iri();
134
+ }
135
+
136
+ /**
137
+ * Overload __set() to provide access via properties
138
+ *
139
+ * @param string $name Property name
140
+ * @param mixed $value Property value
141
+ */
142
+ public function __set($name, $value)
143
+ {
144
+ if (method_exists($this, 'set_' . $name))
145
+ {
146
+ call_user_func(array($this, 'set_' . $name), $value);
147
+ }
148
+ elseif (
149
+ $name === 'iauthority'
150
+ || $name === 'iuserinfo'
151
+ || $name === 'ihost'
152
+ || $name === 'ipath'
153
+ || $name === 'iquery'
154
+ || $name === 'ifragment'
155
+ )
156
+ {
157
+ call_user_func(array($this, 'set_' . substr($name, 1)), $value);
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Overload __get() to provide access via properties
163
+ *
164
+ * @param string $name Property name
165
+ * @return mixed
166
+ */
167
+ public function __get($name)
168
+ {
169
+ // isset() returns false for null, we don't want to do that
170
+ // Also why we use array_key_exists below instead of isset()
171
+ $props = get_object_vars($this);
172
+
173
+ if (
174
+ $name === 'iri' ||
175
+ $name === 'uri' ||
176
+ $name === 'iauthority' ||
177
+ $name === 'authority'
178
+ )
179
+ {
180
+ $return = $this->{"get_$name"}();
181
+ }
182
+ elseif (array_key_exists($name, $props))
183
+ {
184
+ $return = $this->$name;
185
+ }
186
+ // host -> ihost
187
+ elseif (($prop = 'i' . $name) && array_key_exists($prop, $props))
188
+ {
189
+ $name = $prop;
190
+ $return = $this->$prop;
191
+ }
192
+ // ischeme -> scheme
193
+ elseif (($prop = substr($name, 1)) && array_key_exists($prop, $props))
194
+ {
195
+ $name = $prop;
196
+ $return = $this->$prop;
197
+ }
198
+ else
199
+ {
200
+ trigger_error('Undefined property: ' . get_class($this) . '::' . $name, E_USER_NOTICE);
201
+ $return = null;
202
+ }
203
+
204
+ if ($return === null && isset($this->normalization[$this->scheme][$name]))
205
+ {
206
+ return $this->normalization[$this->scheme][$name];
207
+ }
208
+ else
209
+ {
210
+ return $return;
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Overload __isset() to provide access via properties
216
+ *
217
+ * @param string $name Property name
218
+ * @return bool
219
+ */
220
+ public function __isset($name)
221
+ {
222
+ if (method_exists($this, 'get_' . $name) || isset($this->$name))
223
+ {
224
+ return true;
225
+ }
226
+ else
227
+ {
228
+ return false;
229
+ }
230
+ }
231
+
232
+ /**
233
+ * Overload __unset() to provide access via properties
234
+ *
235
+ * @param string $name Property name
236
+ */
237
+ public function __unset($name)
238
+ {
239
+ if (method_exists($this, 'set_' . $name))
240
+ {
241
+ call_user_func(array($this, 'set_' . $name), '');
242
+ }
243
+ }
244
+
245
+ /**
246
+ * Create a new IRI object, from a specified string
247
+ *
248
+ * @param string $iri
249
+ */
250
+ public function __construct($iri = null)
251
+ {
252
+ $this->set_iri($iri);
253
+ }
254
+
255
+ /**
256
+ * Create a new IRI object by resolving a relative IRI
257
+ *
258
+ * Returns false if $base is not absolute, otherwise an IRI.
259
+ *
260
+ * @param IRI|string $base (Absolute) Base IRI
261
+ * @param IRI|string $relative Relative IRI
262
+ * @return IRI|false
263
+ */
264
+ public static function absolutize($base, $relative)
265
+ {
266
+ if (!($relative instanceof Requests_IRI))
267
+ {
268
+ $relative = new Requests_IRI($relative);
269
+ }
270
+ if (!$relative->is_valid())
271
+ {
272
+ return false;
273
+ }
274
+ elseif ($relative->scheme !== null)
275
+ {
276
+ return clone $relative;
277
+ }
278
+ else
279
+ {
280
+ if (!($base instanceof Requests_IRI))
281
+ {
282
+ $base = new Requests_IRI($base);
283
+ }
284
+ if ($base->scheme !== null && $base->is_valid())
285
+ {
286
+ if ($relative->get_iri() !== '')
287
+ {
288
+ if ($relative->iuserinfo !== null || $relative->ihost !== null || $relative->port !== null)
289
+ {
290
+ $target = clone $relative;
291
+ $target->scheme = $base->scheme;
292
+ }
293
+ else
294
+ {
295
+ $target = new Requests_IRI;
296
+ $target->scheme = $base->scheme;
297
+ $target->iuserinfo = $base->iuserinfo;
298
+ $target->ihost = $base->ihost;
299
+ $target->port = $base->port;
300
+ if ($relative->ipath !== '')
301
+ {
302
+ if ($relative->ipath[0] === '/')
303
+ {
304
+ $target->ipath = $relative->ipath;
305
+ }
306
+ elseif (($base->iuserinfo !== null || $base->ihost !== null || $base->port !== null) && $base->ipath === '')
307
+ {
308
+ $target->ipath = '/' . $relative->ipath;
309
+ }
310
+ elseif (($last_segment = strrpos($base->ipath, '/')) !== false)
311
+ {
312
+ $target->ipath = substr($base->ipath, 0, $last_segment + 1) . $relative->ipath;
313
+ }
314
+ else
315
+ {
316
+ $target->ipath = $relative->ipath;
317
+ }
318
+ $target->ipath = $target->remove_dot_segments($target->ipath);
319
+ $target->iquery = $relative->iquery;
320
+ }
321
+ else
322
+ {
323
+ $target->ipath = $base->ipath;
324
+ if ($relative->iquery !== null)
325
+ {
326
+ $target->iquery = $relative->iquery;
327
+ }
328
+ elseif ($base->iquery !== null)
329
+ {
330
+ $target->iquery = $base->iquery;
331
+ }
332
+ }
333
+ $target->ifragment = $relative->ifragment;
334
+ }
335
+ }
336
+ else
337
+ {
338
+ $target = clone $base;
339
+ $target->ifragment = null;
340
+ }
341
+ $target->scheme_normalization();
342
+ return $target;
343
+ }
344
+ else
345
+ {
346
+ return false;
347
+ }
348
+ }
349
+ }
350
+
351
+ /**
352
+ * Parse an IRI into scheme/authority/path/query/fragment segments
353
+ *
354
+ * @param string $iri
355
+ * @return array
356
+ */
357
+ protected function parse_iri($iri)
358
+ {
359
+ $iri = trim($iri, "\x20\x09\x0A\x0C\x0D");
360
+ if (preg_match('/^((?P<scheme>[^:\/?#]+):)?(\/\/(?P<authority>[^\/?#]*))?(?P<path>[^?#]*)(\?(?P<query>[^#]*))?(#(?P<fragment>.*))?$/', $iri, $match))
361
+ {
362
+ if ($match[1] === '')
363
+ {
364
+ $match['scheme'] = null;
365
+ }
366
+ if (!isset($match[3]) || $match[3] === '')
367
+ {
368
+ $match['authority'] = null;
369
+ }
370
+ if (!isset($match[5]))
371
+ {
372
+ $match['path'] = '';
373
+ }
374
+ if (!isset($match[6]) || $match[6] === '')
375
+ {
376
+ $match['query'] = null;
377
+ }
378
+ if (!isset($match[8]) || $match[8] === '')
379
+ {
380
+ $match['fragment'] = null;
381
+ }
382
+ return $match;
383
+ }
384
+ else
385
+ {
386
+ trigger_error('This should never happen', E_USER_ERROR);
387
+ die;
388
+ }
389
+ }
390
+
391
+ /**
392
+ * Remove dot segments from a path
393
+ *
394
+ * @param string $input
395
+ * @return string
396
+ */
397
+ protected function remove_dot_segments($input)
398
+ {
399
+ $output = '';
400
+ while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..')
401
+ {
402
+ // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise,
403
+ if (strpos($input, '../') === 0)
404
+ {
405
+ $input = substr($input, 3);
406
+ }
407
+ elseif (strpos($input, './') === 0)
408
+ {
409
+ $input = substr($input, 2);
410
+ }
411
+ // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise,
412
+ elseif (strpos($input, '/./') === 0)
413
+ {
414
+ $input = substr($input, 2);
415
+ }
416
+ elseif ($input === '/.')
417
+ {
418
+ $input = '/';
419
+ }
420
+ // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise,
421
+ elseif (strpos($input, '/../') === 0)
422
+ {
423
+ $input = substr($input, 3);
424
+ $output = substr_replace($output, '', strrpos($output, '/'));
425
+ }
426
+ elseif ($input === '/..')
427
+ {
428
+ $input = '/';
429
+ $output = substr_replace($output, '', strrpos($output, '/'));
430
+ }
431
+ // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise,
432
+ elseif ($input === '.' || $input === '..')
433
+ {
434
+ $input = '';
435
+ }
436
+ // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer
437
+ elseif (($pos = strpos($input, '/', 1)) !== false)
438
+ {
439
+ $output .= substr($input, 0, $pos);
440
+ $input = substr_replace($input, '', 0, $pos);
441
+ }
442
+ else
443
+ {
444
+ $output .= $input;
445
+ $input = '';
446
+ }
447
+ }
448
+ return $output . $input;
449
+ }
450
+
451
+ /**
452
+ * Replace invalid character with percent encoding
453
+ *
454
+ * @param string $string Input string
455
+ * @param string $extra_chars Valid characters not in iunreserved or
456
+ * iprivate (this is ASCII-only)
457
+ * @param bool $iprivate Allow iprivate
458
+ * @return string
459
+ */
460
+ protected function replace_invalid_with_pct_encoding($string, $extra_chars, $iprivate = false)
461
+ {
462
+ // Normalize as many pct-encoded sections as possible
463
+ $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array(&$this, 'remove_iunreserved_percent_encoded'), $string);
464
+
465
+ // Replace invalid percent characters
466
+ $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
467
+
468
+ // Add unreserved and % to $extra_chars (the latter is safe because all
469
+ // pct-encoded sections are now valid).
470
+ $extra_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
471
+
472
+ // Now replace any bytes that aren't allowed with their pct-encoded versions
473
+ $position = 0;
474
+ $strlen = strlen($string);
475
+ while (($position += strspn($string, $extra_chars, $position)) < $strlen)
476
+ {
477
+ $value = ord($string[$position]);
478
+
479
+ // Start position
480
+ $start = $position;
481
+
482
+ // By default we are valid
483
+ $valid = true;
484
+
485
+ // No one byte sequences are valid due to the while.
486
+ // Two byte sequence:
487
+ if (($value & 0xE0) === 0xC0)
488
+ {
489
+ $character = ($value & 0x1F) << 6;
490
+ $length = 2;
491
+ $remaining = 1;
492
+ }
493
+ // Three byte sequence:
494
+ elseif (($value & 0xF0) === 0xE0)
495
+ {
496
+ $character = ($value & 0x0F) << 12;
497
+ $length = 3;
498
+ $remaining = 2;
499
+ }
500
+ // Four byte sequence:
501
+ elseif (($value & 0xF8) === 0xF0)
502
+ {
503
+ $character = ($value & 0x07) << 18;
504
+ $length = 4;
505
+ $remaining = 3;
506
+ }
507
+ // Invalid byte:
508
+ else
509
+ {
510
+ $valid = false;
511
+ $length = 1;
512
+ $remaining = 0;
513
+ }
514
+
515
+ if ($remaining)
516
+ {
517
+ if ($position + $length <= $strlen)
518
+ {
519
+ for ($position++; $remaining; $position++)
520
+ {
521
+ $value = ord($string[$position]);
522
+
523
+ // Check that the byte is valid, then add it to the character:
524
+ if (($value & 0xC0) === 0x80)
525
+ {
526
+ $character |= ($value & 0x3F) << (--$remaining * 6);
527
+ }
528
+ // If it is invalid, count the sequence as invalid and reprocess the current byte:
529
+ else
530
+ {
531
+ $valid = false;
532
+ $position--;
533
+ break;
534
+ }
535
+ }
536
+ }
537
+ else
538
+ {
539
+ $position = $strlen - 1;
540
+ $valid = false;
541
+ }
542
+ }
543
+
544
+ // Percent encode anything invalid or not in ucschar
545
+ if (
546
+ // Invalid sequences
547
+ !$valid
548
+ // Non-shortest form sequences are invalid
549
+ || $length > 1 && $character <= 0x7F
550
+ || $length > 2 && $character <= 0x7FF
551
+ || $length > 3 && $character <= 0xFFFF
552
+ // Outside of range of ucschar codepoints
553
+ // Noncharacters
554
+ || ($character & 0xFFFE) === 0xFFFE
555
+ || $character >= 0xFDD0 && $character <= 0xFDEF
556
+ || (
557
+ // Everything else not in ucschar
558
+ $character > 0xD7FF && $character < 0xF900
559
+ || $character < 0xA0
560
+ || $character > 0xEFFFD
561
+ )
562
+ && (
563
+ // Everything not in iprivate, if it applies
564
+ !$iprivate
565
+ || $character < 0xE000
566
+ || $character > 0x10FFFD
567
+ )
568
+ )
569
+ {
570
+ // If we were a character, pretend we weren't, but rather an error.
571
+ if ($valid)
572
+ $position--;
573
+
574
+ for ($j = $start; $j <= $position; $j++)
575
+ {
576
+ $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
577
+ $j += 2;
578
+ $position += 2;
579
+ $strlen += 2;
580
+ }
581
+ }
582
+ }
583
+
584
+ return $string;
585
+ }
586
+
587
+ /**
588
+ * Callback function for preg_replace_callback.
589
+ *
590
+ * Removes sequences of percent encoded bytes that represent UTF-8
591
+ * encoded characters in iunreserved
592
+ *
593
+ * @param array $match PCRE match
594
+ * @return string Replacement
595
+ */
596
+ protected function remove_iunreserved_percent_encoded($match)
597
+ {
598
+ // As we just have valid percent encoded sequences we can just explode
599
+ // and ignore the first member of the returned array (an empty string).
600
+ $bytes = explode('%', $match[0]);
601
+
602
+ // Initialize the new string (this is what will be returned) and that
603
+ // there are no bytes remaining in the current sequence (unsurprising
604
+ // at the first byte!).
605
+ $string = '';
606
+ $remaining = 0;
607
+
608
+ // Loop over each and every byte, and set $value to its value
609
+ for ($i = 1, $len = count($bytes); $i < $len; $i++)
610
+ {
611
+ $value = hexdec($bytes[$i]);
612
+
613
+ // If we're the first byte of sequence:
614
+ if (!$remaining)
615
+ {
616
+ // Start position
617
+ $start = $i;
618
+
619
+ // By default we are valid
620
+ $valid = true;
621
+
622
+ // One byte sequence:
623
+ if ($value <= 0x7F)
624
+ {
625
+ $character = $value;
626
+ $length = 1;
627
+ }
628
+ // Two byte sequence:
629
+ elseif (($value & 0xE0) === 0xC0)
630
+ {
631
+ $character = ($value & 0x1F) << 6;
632
+ $length = 2;
633
+ $remaining = 1;
634
+ }
635
+ // Three byte sequence:
636
+ elseif (($value & 0xF0) === 0xE0)
637
+ {
638
+ $character = ($value & 0x0F) << 12;
639
+ $length = 3;
640
+ $remaining = 2;
641
+ }
642
+ // Four byte sequence:
643
+ elseif (($value & 0xF8) === 0xF0)
644
+ {
645
+ $character = ($value & 0x07) << 18;
646
+ $length = 4;
647
+ $remaining = 3;
648
+ }
649
+ // Invalid byte:
650
+ else
651
+ {
652
+ $valid = false;
653
+ $remaining = 0;
654
+ }
655
+ }
656
+ // Continuation byte:
657
+ else
658
+ {
659
+ // Check that the byte is valid, then add it to the character:
660
+ if (($value & 0xC0) === 0x80)
661
+ {
662
+ $remaining--;
663
+ $character |= ($value & 0x3F) << ($remaining * 6);
664
+ }
665
+ // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
666
+ else
667
+ {
668
+ $valid = false;
669
+ $remaining = 0;
670
+ $i--;
671
+ }
672
+ }
673
+
674
+ // If we've reached the end of the current byte sequence, append it to Unicode::$data
675
+ if (!$remaining)
676
+ {
677
+ // Percent encode anything invalid or not in iunreserved
678
+ if (
679
+ // Invalid sequences
680
+ !$valid
681
+ // Non-shortest form sequences are invalid
682
+ || $length > 1 && $character <= 0x7F
683
+ || $length > 2 && $character <= 0x7FF
684
+ || $length > 3 && $character <= 0xFFFF
685
+ // Outside of range of iunreserved codepoints
686
+ || $character < 0x2D
687
+ || $character > 0xEFFFD
688
+ // Noncharacters
689
+ || ($character & 0xFFFE) === 0xFFFE
690
+ || $character >= 0xFDD0 && $character <= 0xFDEF
691
+ // Everything else not in iunreserved (this is all BMP)
692
+ || $character === 0x2F
693
+ || $character > 0x39 && $character < 0x41
694
+ || $character > 0x5A && $character < 0x61
695
+ || $character > 0x7A && $character < 0x7E
696
+ || $character > 0x7E && $character < 0xA0
697
+ || $character > 0xD7FF && $character < 0xF900
698
+ )
699
+ {
700
+ for ($j = $start; $j <= $i; $j++)
701
+ {
702
+ $string .= '%' . strtoupper($bytes[$j]);
703
+ }
704
+ }
705
+ else
706
+ {
707
+ for ($j = $start; $j <= $i; $j++)
708
+ {
709
+ $string .= chr(hexdec($bytes[$j]));
710
+ }
711
+ }
712
+ }
713
+ }
714
+
715
+ // If we have any bytes left over they are invalid (i.e., we are
716
+ // mid-way through a multi-byte sequence)
717
+ if ($remaining)
718
+ {
719
+ for ($j = $start; $j < $len; $j++)
720
+ {
721
+ $string .= '%' . strtoupper($bytes[$j]);
722
+ }
723
+ }
724
+
725
+ return $string;
726
+ }
727
+
728
+ protected function scheme_normalization()
729
+ {
730
+ if (isset($this->normalization[$this->scheme]['iuserinfo']) && $this->iuserinfo === $this->normalization[$this->scheme]['iuserinfo'])
731
+ {
732
+ $this->iuserinfo = null;
733
+ }
734
+ if (isset($this->normalization[$this->scheme]['ihost']) && $this->ihost === $this->normalization[$this->scheme]['ihost'])
735
+ {
736
+ $this->ihost = null;
737
+ }
738
+ if (isset($this->normalization[$this->scheme]['port']) && $this->port === $this->normalization[$this->scheme]['port'])
739
+ {
740
+ $this->port = null;
741
+ }
742
+ if (isset($this->normalization[$this->scheme]['ipath']) && $this->ipath === $this->normalization[$this->scheme]['ipath'])
743
+ {
744
+ $this->ipath = '';
745
+ }
746
+ if (isset($this->normalization[$this->scheme]['iquery']) && $this->iquery === $this->normalization[$this->scheme]['iquery'])
747
+ {
748
+ $this->iquery = null;
749
+ }
750
+ if (isset($this->normalization[$this->scheme]['ifragment']) && $this->ifragment === $this->normalization[$this->scheme]['ifragment'])
751
+ {
752
+ $this->ifragment = null;
753
+ }
754
+ }
755
+
756
+ /**
757
+ * Check if the object represents a valid IRI. This needs to be done on each
758
+ * call as some things change depending on another part of the IRI.
759
+ *
760
+ * @return bool
761
+ */
762
+ public function is_valid()
763
+ {
764
+ $isauthority = $this->iuserinfo !== null || $this->ihost !== null || $this->port !== null;
765
+ if ($this->ipath !== '' &&
766
+ (
767
+ $isauthority && (
768
+ $this->ipath[0] !== '/' ||
769
+ substr($this->ipath, 0, 2) === '//'
770
+ ) ||
771
+ (
772
+ $this->scheme === null &&
773
+ !$isauthority &&
774
+ strpos($this->ipath, ':') !== false &&
775
+ (strpos($this->ipath, '/') === false ? true : strpos($this->ipath, ':') < strpos($this->ipath, '/'))
776
+ )
777
+ )
778
+ )
779
+ {
780
+ return false;
781
+ }
782
+
783
+ return true;
784
+ }
785
+
786
+ /**
787
+ * Set the entire IRI. Returns true on success, false on failure (if there
788
+ * are any invalid characters).
789
+ *
790
+ * @param string $iri
791
+ * @return bool
792
+ */
793
+ protected function set_iri($iri)
794
+ {
795
+ static $cache;
796
+ if (!$cache)
797
+ {
798
+ $cache = array();
799
+ }
800
+
801
+ if ($iri === null)
802
+ {
803
+ return true;
804
+ }
805
+ elseif (isset($cache[$iri]))
806
+ {
807
+ list($this->scheme,
808
+ $this->iuserinfo,
809
+ $this->ihost,
810
+ $this->port,
811
+ $this->ipath,
812
+ $this->iquery,
813
+ $this->ifragment,
814
+ $return) = $cache[$iri];
815
+ return $return;
816
+ }
817
+ else
818
+ {
819
+ $parsed = $this->parse_iri((string) $iri);
820
+
821
+ $return = $this->set_scheme($parsed['scheme'])
822
+ && $this->set_authority($parsed['authority'])
823
+ && $this->set_path($parsed['path'])
824
+ && $this->set_query($parsed['query'])
825
+ && $this->set_fragment($parsed['fragment']);
826
+
827
+ $cache[$iri] = array($this->scheme,
828
+ $this->iuserinfo,
829
+ $this->ihost,
830
+ $this->port,
831
+ $this->ipath,
832
+ $this->iquery,
833
+ $this->ifragment,
834
+ $return);
835
+ return $return;
836
+ }
837
+ }
838
+
839
+ /**
840
+ * Set the scheme. Returns true on success, false on failure (if there are
841
+ * any invalid characters).
842
+ *
843
+ * @param string $scheme
844
+ * @return bool
845
+ */
846
+ protected function set_scheme($scheme)
847
+ {
848
+ if ($scheme === null)
849
+ {
850
+ $this->scheme = null;
851
+ }
852
+ elseif (!preg_match('/^[A-Za-z][0-9A-Za-z+\-.]*$/', $scheme))
853
+ {
854
+ $this->scheme = null;
855
+ return false;
856
+ }
857
+ else
858
+ {
859
+ $this->scheme = strtolower($scheme);
860
+ }
861
+ return true;
862
+ }
863
+
864
+ /**
865
+ * Set the authority. Returns true on success, false on failure (if there are
866
+ * any invalid characters).
867
+ *
868
+ * @param string $authority
869
+ * @return bool
870
+ */
871
+ protected function set_authority($authority)
872
+ {
873
+ static $cache;
874
+ if (!$cache)
875
+ $cache = array();
876
+
877
+ if ($authority === null)
878
+ {
879
+ $this->iuserinfo = null;
880
+ $this->ihost = null;
881
+ $this->port = null;
882
+ return true;
883
+ }
884
+ elseif (isset($cache[$authority]))
885
+ {
886
+ list($this->iuserinfo,
887
+ $this->ihost,
888
+ $this->port,
889
+ $return) = $cache[$authority];
890
+
891
+ return $return;
892
+ }
893
+ else
894
+ {
895
+ $remaining = $authority;
896
+ if (($iuserinfo_end = strrpos($remaining, '@')) !== false)
897
+ {
898
+ $iuserinfo = substr($remaining, 0, $iuserinfo_end);
899
+ $remaining = substr($remaining, $iuserinfo_end + 1);
900
+ }
901
+ else
902
+ {
903
+ $iuserinfo = null;
904
+ }
905
+ if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false)
906
+ {
907
+ if (($port = substr($remaining, $port_start + 1)) === false)
908
+ {
909
+ $port = null;
910
+ }
911
+ $remaining = substr($remaining, 0, $port_start);
912
+ }
913
+ else
914
+ {
915
+ $port = null;
916
+ }
917
+
918
+ $return = $this->set_userinfo($iuserinfo) &&
919
+ $this->set_host($remaining) &&
920
+ $this->set_port($port);
921
+
922
+ $cache[$authority] = array($this->iuserinfo,
923
+ $this->ihost,
924
+ $this->port,
925
+ $return);
926
+
927
+ return $return;
928
+ }
929
+ }
930
+
931
+ /**
932
+ * Set the iuserinfo.
933
+ *
934
+ * @param string $iuserinfo
935
+ * @return bool
936
+ */
937
+ protected function set_userinfo($iuserinfo)
938
+ {
939
+ if ($iuserinfo === null)
940
+ {
941
+ $this->iuserinfo = null;
942
+ }
943
+ else
944
+ {
945
+ $this->iuserinfo = $this->replace_invalid_with_pct_encoding($iuserinfo, '!$&\'()*+,;=:');
946
+ $this->scheme_normalization();
947
+ }
948
+
949
+ return true;
950
+ }
951
+
952
+ /**
953
+ * Set the ihost. Returns true on success, false on failure (if there are
954
+ * any invalid characters).
955
+ *
956
+ * @param string $ihost
957
+ * @return bool
958
+ */
959
+ protected function set_host($ihost)
960
+ {
961
+ if ($ihost === null)
962
+ {
963
+ $this->ihost = null;
964
+ return true;
965
+ }
966
+ elseif (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']')
967
+ {
968
+ if (Requests_IPv6::check_ipv6(substr($ihost, 1, -1)))
969
+ {
970
+ $this->ihost = '[' . Requests_IPv6::compress(substr($ihost, 1, -1)) . ']';
971
+ }
972
+ else
973
+ {
974
+ $this->ihost = null;
975
+ return false;
976
+ }
977
+ }
978
+ else
979
+ {
980
+ $ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;=');
981
+
982
+ // Lowercase, but ignore pct-encoded sections (as they should
983
+ // remain uppercase). This must be done after the previous step
984
+ // as that can add unescaped characters.
985
+ $position = 0;
986
+ $strlen = strlen($ihost);
987
+ while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen)
988
+ {
989
+ if ($ihost[$position] === '%')
990
+ {
991
+ $position += 3;
992
+ }
993
+ else
994
+ {
995
+ $ihost[$position] = strtolower($ihost[$position]);
996
+ $position++;
997
+ }
998
+ }
999
+
1000
+ $this->ihost = $ihost;
1001
+ }
1002
+
1003
+ $this->scheme_normalization();
1004
+
1005
+ return true;
1006
+ }
1007
+
1008
+ /**
1009
+ * Set the port. Returns true on success, false on failure (if there are
1010
+ * any invalid characters).
1011
+ *
1012
+ * @param string $port
1013
+ * @return bool
1014
+ */
1015
+ protected function set_port($port)
1016
+ {
1017
+ if ($port === null)
1018
+ {
1019
+ $this->port = null;
1020
+ return true;
1021
+ }
1022
+ elseif (strspn($port, '0123456789') === strlen($port))
1023
+ {
1024
+ $this->port = (int) $port;
1025
+ $this->scheme_normalization();
1026
+ return true;
1027
+ }
1028
+ else
1029
+ {
1030
+ $this->port = null;
1031
+ return false;
1032
+ }
1033
+ }
1034
+
1035
+ /**
1036
+ * Set the ipath.
1037
+ *
1038
+ * @param string $ipath
1039
+ * @return bool
1040
+ */
1041
+ protected function set_path($ipath)
1042
+ {
1043
+ static $cache;
1044
+ if (!$cache)
1045
+ {
1046
+ $cache = array();
1047
+ }
1048
+
1049
+ $ipath = (string) $ipath;
1050
+
1051
+ if (isset($cache[$ipath]))
1052
+ {
1053
+ $this->ipath = $cache[$ipath][(int) ($this->scheme !== null)];
1054
+ }
1055
+ else
1056
+ {
1057
+ $valid = $this->replace_invalid_with_pct_encoding($ipath, '!$&\'()*+,;=@:/');
1058
+ $removed = $this->remove_dot_segments($valid);
1059
+
1060
+ $cache[$ipath] = array($valid, $removed);
1061
+ $this->ipath = ($this->scheme !== null) ? $removed : $valid;
1062
+ }
1063
+
1064
+ $this->scheme_normalization();
1065
+ return true;
1066
+ }
1067
+
1068
+ /**
1069
+ * Set the iquery.
1070
+ *
1071
+ * @param string $iquery
1072
+ * @return bool
1073
+ */
1074
+ protected function set_query($iquery)
1075
+ {
1076
+ if ($iquery === null)
1077
+ {
1078
+ $this->iquery = null;
1079
+ }
1080
+ else
1081
+ {
1082
+ $this->iquery = $this->replace_invalid_with_pct_encoding($iquery, '!$&\'()*+,;=:@/?', true);
1083
+ $this->scheme_normalization();
1084
+ }
1085
+ return true;
1086
+ }
1087
+
1088
+ /**
1089
+ * Set the ifragment.
1090
+ *
1091
+ * @param string $ifragment
1092
+ * @return bool
1093
+ */
1094
+ protected function set_fragment($ifragment)
1095
+ {
1096
+ if ($ifragment === null)
1097
+ {
1098
+ $this->ifragment = null;
1099
+ }
1100
+ else
1101
+ {
1102
+ $this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?');
1103
+ $this->scheme_normalization();
1104
+ }
1105
+ return true;
1106
+ }
1107
+
1108
+ /**
1109
+ * Convert an IRI to a URI (or parts thereof)
1110
+ *
1111
+ * @return string
1112
+ */
1113
+ protected function to_uri($string)
1114
+ {
1115
+ static $non_ascii;
1116
+ if (!$non_ascii)
1117
+ {
1118
+ $non_ascii = implode('', range("\x80", "\xFF"));
1119
+ }
1120
+
1121
+ $position = 0;
1122
+ $strlen = strlen($string);
1123
+ while (($position += strcspn($string, $non_ascii, $position)) < $strlen)
1124
+ {
1125
+ $string = substr_replace($string, sprintf('%%%02X', ord($string[$position])), $position, 1);
1126
+ $position += 3;
1127
+ $strlen += 2;
1128
+ }
1129
+
1130
+ return $string;
1131
+ }
1132
+
1133
+ /**
1134
+ * Get the complete IRI
1135
+ *
1136
+ * @return string
1137
+ */
1138
+ protected function get_iri()
1139
+ {
1140
+ if (!$this->is_valid())
1141
+ {
1142
+ return false;
1143
+ }
1144
+
1145
+ $iri = '';
1146
+ if ($this->scheme !== null)
1147
+ {
1148
+ $iri .= $this->scheme . ':';
1149
+ }
1150
+ if (($iauthority = $this->get_iauthority()) !== null)
1151
+ {
1152
+ $iri .= '//' . $iauthority;
1153
+ }
1154
+ $iri .= $this->ipath;
1155
+ if ($this->iquery !== null)
1156
+ {
1157
+ $iri .= '?' . $this->iquery;
1158
+ }
1159
+ if ($this->ifragment !== null)
1160
+ {
1161
+ $iri .= '#' . $this->ifragment;
1162
+ }
1163
+
1164
+ return $iri;
1165
+ }
1166
+
1167
+ /**
1168
+ * Get the complete URI
1169
+ *
1170
+ * @return string
1171
+ */
1172
+ protected function get_uri()
1173
+ {
1174
+ return $this->to_uri($this->get_iri());
1175
+ }
1176
+
1177
+ /**
1178
+ * Get the complete iauthority
1179
+ *
1180
+ * @return string
1181
+ */
1182
+ protected function get_iauthority()
1183
+ {
1184
+ if ($this->iuserinfo !== null || $this->ihost !== null || $this->port !== null)
1185
+ {
1186
+ $iauthority = '';
1187
+ if ($this->iuserinfo !== null)
1188
+ {
1189
+ $iauthority .= $this->iuserinfo . '@';
1190
+ }
1191
+ if ($this->ihost !== null)
1192
+ {
1193
+ $iauthority .= $this->ihost;
1194
+ }
1195
+ if ($this->port !== null)
1196
+ {
1197
+ $iauthority .= ':' . $this->port;
1198
+ }
1199
+ return $iauthority;
1200
+ }
1201
+ else
1202
+ {
1203
+ return null;
1204
+ }
1205
+ }
1206
+
1207
+ /**
1208
+ * Get the complete authority
1209
+ *
1210
+ * @return string
1211
+ */
1212
+ protected function get_authority()
1213
+ {
1214
+ $iauthority = $this->get_iauthority();
1215
+ if (is_string($iauthority))
1216
+ return $this->to_uri($iauthority);
1217
+ else
1218
+ return $iauthority;
1219
+ }
1220
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Proxy.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Proxy connection interface
4
+ *
5
+ * @package Requests
6
+ * @subpackage Proxy
7
+ * @since 1.6
8
+ */
9
+
10
+ /**
11
+ * Proxy connection interface
12
+ *
13
+ * Implement this interface to handle proxy settings and authentication
14
+ *
15
+ * Parameters should be passed via the constructor where possible, as this
16
+ * makes it much easier for users to use your provider.
17
+ *
18
+ * @see Requests_Hooks
19
+ * @package Requests
20
+ * @subpackage Proxy
21
+ * @since 1.6
22
+ */
23
+ interface Requests_Proxy {
24
+ /**
25
+ * Register hooks as needed
26
+ *
27
+ * This method is called in {@see Requests::request} when the user has set
28
+ * an instance as the 'auth' option. Use this callback to register all the
29
+ * hooks you'll need.
30
+ *
31
+ * @see Requests_Hooks::register
32
+ * @param Requests_Hooks $hooks Hook system
33
+ */
34
+ public function register(Requests_Hooks &$hooks);
35
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Proxy/HTTP.php ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * HTTP Proxy connection interface
4
+ *
5
+ * @package Requests
6
+ * @subpackage Proxy
7
+ * @since 1.6
8
+ */
9
+
10
+ /**
11
+ * HTTP Proxy connection interface
12
+ *
13
+ * Provides a handler for connection via an HTTP proxy
14
+ *
15
+ * @package Requests
16
+ * @subpackage Proxy
17
+ * @since 1.6
18
+ */
19
+ class Requests_Proxy_HTTP implements Requests_Proxy {
20
+ /**
21
+ * Proxy host and port
22
+ *
23
+ * Notation: "host:port" (eg 127.0.0.1:8080 or someproxy.com:3128)
24
+ *
25
+ * @var string
26
+ */
27
+ public $proxy;
28
+
29
+ /**
30
+ * Username
31
+ *
32
+ * @var string
33
+ */
34
+ public $user;
35
+
36
+ /**
37
+ * Password
38
+ *
39
+ * @var string
40
+ */
41
+ public $pass;
42
+
43
+ /**
44
+ * Do we need to authenticate? (ie username & password have been provided)
45
+ *
46
+ * @var boolean
47
+ */
48
+ public $use_authentication;
49
+
50
+ /**
51
+ * Constructor
52
+ *
53
+ * @since 1.6
54
+ * @throws Requests_Exception On incorrect number of arguments (`authbasicbadargs`)
55
+ * @param array|null $args Array of user and password. Must have exactly two elements
56
+ */
57
+ public function __construct($args = null) {
58
+ if (is_string($args)) {
59
+ $this->proxy = $args;
60
+ }
61
+ elseif (is_array($args)) {
62
+ if (count($args) == 1) {
63
+ list($this->proxy) = $args;
64
+ }
65
+ elseif (count($args) == 3) {
66
+ list($this->proxy, $this->user, $this->pass) = $args;
67
+ $this->use_authentication = true;
68
+ }
69
+ else {
70
+ throw new Requests_Exception( 'Invalid number of arguments', 'proxyhttpbadargs');
71
+ }
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Register the necessary callbacks
77
+ *
78
+ * @since 1.6
79
+ * @see curl_before_send
80
+ * @see fsockopen_remote_socket
81
+ * @see fsockopen_remote_host_path
82
+ * @see fsockopen_header
83
+ * @param Requests_Hooks $hooks Hook system
84
+ */
85
+ public function register(Requests_Hooks &$hooks) {
86
+ $hooks->register('curl.before_send', array(&$this, 'curl_before_send'));
87
+
88
+ $hooks->register('fsockopen.remote_socket', array(&$this, 'fsockopen_remote_socket'));
89
+ $hooks->register('fsockopen.remote_host_path', array(&$this, 'fsockopen_remote_host_path'));
90
+ if( $this->use_authentication ) {
91
+ $hooks->register('fsockopen.after_headers', array(&$this, 'fsockopen_header'));
92
+ }
93
+ }
94
+
95
+ /**
96
+ * Set cURL parameters before the data is sent
97
+ *
98
+ * @since 1.6
99
+ * @param resource $handle cURL resource
100
+ */
101
+ public function curl_before_send(&$handle) {
102
+ curl_setopt($handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
103
+ curl_setopt($handle, CURLOPT_PROXY, $this->proxy);
104
+
105
+ if ($this->use_authentication) {
106
+ curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
107
+ curl_setopt($handle, CURLOPT_PROXYUSERPWD, $this->get_auth_string());
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Alter remote socket information before opening socket connection
113
+ *
114
+ * @since 1.6
115
+ * @param string $out HTTP header string
116
+ */
117
+ public function fsockopen_remote_socket( &$remote_socket ) {
118
+ $remote_socket = $this->proxy;
119
+ }
120
+
121
+ /**
122
+ * Alter remote path before getting stream data
123
+ *
124
+ * @since 1.6
125
+ * @param string $out HTTP header string
126
+ */
127
+ public function fsockopen_remote_host_path( &$path, $url ) {
128
+ $path = $url;
129
+ }
130
+
131
+ /**
132
+ * Add extra headers to the request before sending
133
+ *
134
+ * @since 1.6
135
+ * @param string $out HTTP header string
136
+ */
137
+ public function fsockopen_header( &$out ) {
138
+ $out .= "Proxy-Authorization: Basic " . base64_encode($this->get_auth_string()) . "\r\n";
139
+ }
140
+
141
+ /**
142
+ * Get the authentication string (user:pass)
143
+ *
144
+ * @since 1.6
145
+ * @return string
146
+ */
147
+ public function get_auth_string() {
148
+ return $this->user . ':' . $this->pass;
149
+ }
150
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Response.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * HTTP response class
4
+ *
5
+ * Contains a response from Requests::request()
6
+ * @package Requests
7
+ */
8
+
9
+ /**
10
+ * HTTP response class
11
+ *
12
+ * Contains a response from Requests::request()
13
+ * @package Requests
14
+ */
15
+ class Requests_Response {
16
+ /**
17
+ * Constructor
18
+ */
19
+ public function __construct() {
20
+ $this->headers = new Requests_Response_Headers();
21
+ }
22
+
23
+ /**
24
+ * Response body
25
+ * @var string
26
+ */
27
+ public $body = '';
28
+
29
+ /**
30
+ * Raw HTTP data from the transport
31
+ * @var string
32
+ */
33
+ public $raw = '';
34
+
35
+ /**
36
+ * Headers, as an associative array
37
+ * @var array
38
+ */
39
+ public $headers = array();
40
+
41
+ /**
42
+ * Status code, false if non-blocking
43
+ * @var integer|boolean
44
+ */
45
+ public $status_code = false;
46
+
47
+ /**
48
+ * Whether the request succeeded or not
49
+ * @var boolean
50
+ */
51
+ public $success = false;
52
+
53
+ /**
54
+ * Number of redirects the request used
55
+ * @var integer
56
+ */
57
+ public $redirects = 0;
58
+
59
+ /**
60
+ * URL requested
61
+ * @var string
62
+ */
63
+ public $url = '';
64
+
65
+ /**
66
+ * Previous requests (from redirects)
67
+ * @var array Array of Requests_Response objects
68
+ */
69
+ public $history = array();
70
+
71
+ /**
72
+ * Cookies from the request
73
+ */
74
+ public $cookies = array();
75
+
76
+ /**
77
+ * Throws an exception if the request was not successful
78
+ *
79
+ * @throws Requests_Exception If `$allow_redirects` is false, and code is 3xx (`response.no_redirects`)
80
+ * @throws Requests_Exception_HTTP On non-successful status code. Exception class corresponds to code (e.g. {@see Requests_Exception_HTTP_404})
81
+ * @param boolean $allow_redirects Set to false to throw on a 3xx as well
82
+ */
83
+ public function throw_for_status($allow_redirects = true) {
84
+ if ($this->status_code >= 300 && $this->status_code < 400) {
85
+ if (!$allow_redirects) {
86
+ throw new Requests_Exception('Redirection not allowed', 'response.no_redirects', $this);
87
+ }
88
+ }
89
+
90
+ elseif (!$this->success) {
91
+ $exception = Requests_Exception_HTTP::get_class($this->status_code);
92
+ throw new $exception(null, $this);
93
+ }
94
+ }
95
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Response/Headers.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Case-insensitive dictionary, suitable for HTTP headers
4
+ *
5
+ * @package Requests
6
+ */
7
+
8
+ /**
9
+ * Case-insensitive dictionary, suitable for HTTP headers
10
+ *
11
+ * @package Requests
12
+ */
13
+ class Requests_Response_Headers extends Requests_Utility_CaseInsensitiveDictionary {
14
+ /**
15
+ * Get the given header
16
+ *
17
+ * Unlike {@see self::getValues()}, this returns a string. If there are
18
+ * multiple values, it concatenates them with a comma as per RFC2616.
19
+ *
20
+ * Avoid using this where commas may be used unquoted in values, such as
21
+ * Set-Cookie headers.
22
+ *
23
+ * @param string $key
24
+ * @return string Header value
25
+ */
26
+ public function offsetGet($key) {
27
+ $key = strtolower($key);
28
+ if (!isset($this->data[$key]))
29
+ return null;
30
+
31
+ return $this->flatten($this->data[$key]);
32
+ }
33
+
34
+ /**
35
+ * Set the given item
36
+ *
37
+ * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
38
+ *
39
+ * @param string $key Item name
40
+ * @param string $value Item value
41
+ */
42
+ public function offsetSet($key, $value) {
43
+ if ($key === null) {
44
+ throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
45
+ }
46
+
47
+ $key = strtolower($key);
48
+
49
+ if (!isset($this->data[$key])) {
50
+ $this->data[$key] = array();
51
+ }
52
+
53
+ $this->data[$key][] = $value;
54
+ }
55
+
56
+ /**
57
+ * Get all values for a given header
58
+ *
59
+ * @param string $key
60
+ * @return array Header values
61
+ */
62
+ public function getValues($key) {
63
+ $key = strtolower($key);
64
+ if (!isset($this->data[$key]))
65
+ return null;
66
+
67
+ return $this->data[$key];
68
+ }
69
+
70
+ /**
71
+ * Flattens a value into a string
72
+ *
73
+ * Converts an array into a string by imploding values with a comma, as per
74
+ * RFC2616's rules for folding headers.
75
+ *
76
+ * @param string|array $value Value to flatten
77
+ * @return string Flattened value
78
+ */
79
+ public function flatten($value) {
80
+ if (is_array($value))
81
+ $value = implode(',', $value);
82
+
83
+ return $value;
84
+ }
85
+
86
+ /**
87
+ * Get an iterator for the data
88
+ *
89
+ * Converts the internal
90
+ * @return ArrayIterator
91
+ */
92
+ public function getIterator() {
93
+ return new Requests_Utility_FilteredIterator($this->data, array($this, 'flatten'));
94
+ }
95
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/SSL.php ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * SSL utilities for Requests
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * SSL utilities for Requests
11
+ *
12
+ * Collection of utilities for working with and verifying SSL certificates.
13
+ *
14
+ * @package Requests
15
+ * @subpackage Utilities
16
+ */
17
+ class Requests_SSL {
18
+ /**
19
+ * Verify the certificate against common name and subject alternative names
20
+ *
21
+ * Unfortunately, PHP doesn't check the certificate against the alternative
22
+ * names, leading things like 'https://www.github.com/' to be invalid.
23
+ * Instead
24
+ *
25
+ * @see http://tools.ietf.org/html/rfc2818#section-3.1 RFC2818, Section 3.1
26
+ *
27
+ * @throws Requests_Exception On not obtaining a match for the host (`fsockopen.ssl.no_match`)
28
+ * @param string $host Host name to verify against
29
+ * @param resource $context Stream context
30
+ * @return bool
31
+ */
32
+ public static function verify_certificate($host, $cert) {
33
+ // Calculate the valid wildcard match if the host is not an IP address
34
+ $parts = explode('.', $host);
35
+ if (ip2long($host) === false) {
36
+ $parts[0] = '*';
37
+ }
38
+ $wildcard = implode('.', $parts);
39
+
40
+ $has_dns_alt = false;
41
+
42
+ // Check the subjectAltName
43
+ if (!empty($cert['extensions']) && !empty($cert['extensions']['subjectAltName'])) {
44
+ $altnames = explode(',', $cert['extensions']['subjectAltName']);
45
+ foreach ($altnames as $altname) {
46
+ $altname = trim($altname);
47
+ if (strpos($altname, 'DNS:') !== 0)
48
+ continue;
49
+
50
+ $has_dns_alt = true;
51
+
52
+ // Strip the 'DNS:' prefix and trim whitespace
53
+ $altname = trim(substr($altname, 4));
54
+
55
+ // Check for a match
56
+ if (self::match_domain($host, $altname) === true) {
57
+ return true;
58
+ }
59
+ }
60
+ }
61
+
62
+ // Fall back to checking the common name if we didn't get any dNSName
63
+ // alt names, as per RFC2818
64
+ if (!$has_dns_alt && !empty($cert['subject']['CN'])) {
65
+ // Check for a match
66
+ if (self::match_domain($host, $cert['subject']['CN']) === true) {
67
+ return true;
68
+ }
69
+ }
70
+
71
+ return false;
72
+ }
73
+
74
+ /**
75
+ * Verify that a reference name is valid
76
+ *
77
+ * Verifies a dNSName for HTTPS usage, (almost) as per Firefox's rules:
78
+ * - Wildcards can only occur in a name with more than 3 components
79
+ * - Wildcards can only occur as the last character in the first
80
+ * component
81
+ * - Wildcards may be preceded by additional characters
82
+ *
83
+ * We modify these rules to be a bit stricter and only allow the wildcard
84
+ * character to be the full first component; that is, with the exclusion of
85
+ * the third rule.
86
+ *
87
+ * @param string $reference Reference dNSName
88
+ * @return boolean Is the name valid?
89
+ */
90
+ public static function verify_reference_name($reference) {
91
+ $parts = explode('.', $reference);
92
+
93
+ // Check the first part of the name
94
+ $first = array_shift($parts);
95
+
96
+ if (strpos($first, '*') !== false) {
97
+ // Check that the wildcard is the full part
98
+ if ($first !== '*') {
99
+ return false;
100
+ }
101
+
102
+ // Check that we have at least 3 components (including first)
103
+ if (count($parts) < 2) {
104
+ return false;
105
+ }
106
+ }
107
+
108
+ // Check the remaining parts
109
+ foreach ($parts as $part) {
110
+ if (strpos($part, '*') !== false) {
111
+ return false;
112
+ }
113
+ }
114
+
115
+ // Nothing found, verified!
116
+ return true;
117
+ }
118
+
119
+ /**
120
+ * Match a hostname against a dNSName reference
121
+ *
122
+ * @param string $host Requested host
123
+ * @param string $reference dNSName to match against
124
+ * @return boolean Does the domain match?
125
+ */
126
+ public static function match_domain($host, $reference) {
127
+ // Check if the reference is blacklisted first
128
+ if (self::verify_reference_name($reference) !== true) {
129
+ return false;
130
+ }
131
+
132
+ // Check for a direct match
133
+ if ($host === $reference) {
134
+ return true;
135
+ }
136
+
137
+ // Calculate the valid wildcard match if the host is not an IP address
138
+ // Also validates that the host has 3 parts or more, as per Firefox's
139
+ // ruleset.
140
+ if (ip2long($host) === false) {
141
+ $parts = explode('.', $host);
142
+ $parts[0] = '*';
143
+ $wildcard = implode('.', $parts);
144
+ if ($wildcard === $reference) {
145
+ return true;
146
+ }
147
+ }
148
+
149
+ return false;
150
+ }
151
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Session.php ADDED
@@ -0,0 +1,253 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Session handler for persistent requests and default parameters
4
+ *
5
+ * @package Requests
6
+ * @subpackage Session Handler
7
+ */
8
+
9
+ /**
10
+ * Session handler for persistent requests and default parameters
11
+ *
12
+ * Allows various options to be set as default values, and merges both the
13
+ * options and URL properties together. A base URL can be set for all requests,
14
+ * with all subrequests resolved from this. Base options can be set (including
15
+ * a shared cookie jar), then overridden for individual requests.
16
+ *
17
+ * @package Requests
18
+ * @subpackage Session Handler
19
+ */
20
+ class Requests_Session {
21
+ /**
22
+ * Base URL for requests
23
+ *
24
+ * URLs will be made absolute using this as the base
25
+ * @var string|null
26
+ */
27
+ public $url = null;
28
+
29
+ /**
30
+ * Base headers for requests
31
+ * @var array
32
+ */
33
+ public $headers = array();
34
+
35
+ /**
36
+ * Base data for requests
37
+ *
38
+ * If both the base data and the per-request data are arrays, the data will
39
+ * be merged before sending the request.
40
+ *
41
+ * @var array
42
+ */
43
+ public $data = array();
44
+
45
+ /**
46
+ * Base options for requests
47
+ *
48
+ * The base options are merged with the per-request data for each request.
49
+ * The only default option is a shared cookie jar between requests.
50
+ *
51
+ * Values here can also be set directly via properties on the Session
52
+ * object, e.g. `$session->useragent = 'X';`
53
+ *
54
+ * @var array
55
+ */
56
+ public $options = array();
57
+
58
+ /**
59
+ * Create a new session
60
+ *
61
+ * @param string|null $url Base URL for requests
62
+ * @param array $headers Default headers for requests
63
+ * @param array $data Default data for requests
64
+ * @param array $options Default options for requests
65
+ */
66
+ public function __construct($url = null, $headers = array(), $data = array(), $options = array()) {
67
+ $this->url = $url;
68
+ $this->headers = $headers;
69
+ $this->data = $data;
70
+ $this->options = $options;
71
+
72
+ if (empty($this->options['cookies'])) {
73
+ $this->options['cookies'] = new Requests_Cookie_Jar();
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Get a property's value
79
+ *
80
+ * @param string $key Property key
81
+ * @return mixed|null Property value, null if none found
82
+ */
83
+ public function __get($key) {
84
+ if (isset($this->options[$key]))
85
+ return $this->options[$key];
86
+
87
+ return null;
88
+ }
89
+
90
+ /**
91
+ * Set a property's value
92
+ *
93
+ * @param string $key Property key
94
+ * @param mixed $value Property value
95
+ */
96
+ public function __set($key, $value) {
97
+ $this->options[$key] = $value;
98
+ }
99
+
100
+ /**
101
+ * Remove a property's value
102
+ *
103
+ * @param string $key Property key
104
+ */
105
+ public function __isset($key) {
106
+ return isset($this->options[$key]);
107
+ }
108
+
109
+ /**
110
+ * Remove a property's value
111
+ *
112
+ * @param string $key Property key
113
+ */
114
+ public function __unset($key) {
115
+ $this->options[$key] = null;
116
+ }
117
+
118
+ /**#@+
119
+ * @see request()
120
+ * @param string $url
121
+ * @param array $headers
122
+ * @param array $options
123
+ * @return Requests_Response
124
+ */
125
+ /**
126
+ * Send a GET request
127
+ */
128
+ public function get($url, $headers = array(), $options = array()) {
129
+ return $this->request($url, $headers, null, Requests::GET, $options);
130
+ }
131
+
132
+ /**
133
+ * Send a HEAD request
134
+ */
135
+ public function head($url, $headers = array(), $options = array()) {
136
+ return $this->request($url, $headers, null, Requests::HEAD, $options);
137
+ }
138
+
139
+ /**
140
+ * Send a DELETE request
141
+ */
142
+ public function delete($url, $headers = array(), $options = array()) {
143
+ return $this->request($url, $headers, null, Requests::DELETE, $options);
144
+ }
145
+ /**#@-*/
146
+
147
+ /**#@+
148
+ * @see request()
149
+ * @param string $url
150
+ * @param array $headers
151
+ * @param array $data
152
+ * @param array $options
153
+ * @return Requests_Response
154
+ */
155
+ /**
156
+ * Send a POST request
157
+ */
158
+ public function post($url, $headers = array(), $data = array(), $options = array()) {
159
+ return $this->request($url, $headers, $data, Requests::POST, $options);
160
+ }
161
+
162
+ /**
163
+ * Send a PUT request
164
+ */
165
+ public function put($url, $headers = array(), $data = array(), $options = array()) {
166
+ return $this->request($url, $headers, $data, Requests::PUT, $options);
167
+ }
168
+
169
+ /**
170
+ * Send a PATCH request
171
+ *
172
+ * Note: Unlike {@see post} and {@see put}, `$headers` is required, as the
173
+ * specification recommends that should send an ETag
174
+ *
175
+ * @link http://tools.ietf.org/html/rfc5789
176
+ */
177
+ public function patch($url, $headers, $data = array(), $options = array()) {
178
+ return $this->request($url, $headers, $data, Requests::PATCH, $options);
179
+ }
180
+ /**#@-*/
181
+
182
+ /**
183
+ * Main interface for HTTP requests
184
+ *
185
+ * This method initiates a request and sends it via a transport before
186
+ * parsing.
187
+ *
188
+ * @see Requests::request()
189
+ *
190
+ * @throws Requests_Exception On invalid URLs (`nonhttp`)
191
+ *
192
+ * @param string $url URL to request
193
+ * @param array $headers Extra headers to send with the request
194
+ * @param array $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
195
+ * @param string $type HTTP request type (use Requests constants)
196
+ * @param array $options Options for the request (see {@see Requests::request})
197
+ * @return Requests_Response
198
+ */
199
+ public function request($url, $headers = array(), $data = array(), $type = Requests::GET, $options = array()) {
200
+ $request = $this->merge_request(compact('url', 'headers', 'data', 'options'));
201
+
202
+ return Requests::request($request['url'], $request['headers'], $request['data'], $type, $request['options']);
203
+ }
204
+
205
+ /**
206
+ * Send multiple HTTP requests simultaneously
207
+ *
208
+ * @see Requests::request_multiple()
209
+ *
210
+ * @param array $requests Requests data (see {@see Requests::request_multiple})
211
+ * @param array $options Global and default options (see {@see Requests::request})
212
+ * @return array Responses (either Requests_Response or a Requests_Exception object)
213
+ */
214
+ public function request_multiple($requests, $options = array()) {
215
+ foreach ($requests as $key => $request) {
216
+ $requests[$key] = $this->merge_request($request, false);
217
+ }
218
+
219
+ $options = array_merge($this->options, $options);
220
+
221
+ // Disallow forcing the type, as that's a per request setting
222
+ unset($options['type']);
223
+
224
+ return Requests::request_multiple($requests, $options);
225
+ }
226
+
227
+ /**
228
+ * Merge a request's data with the default data
229
+ *
230
+ * @param array $request Request data (same form as {@see request_multiple})
231
+ * @param boolean $merge_options Should we merge options as well?
232
+ * @return array Request data
233
+ */
234
+ protected function merge_request($request, $merge_options = true) {
235
+ if ($this->url !== null) {
236
+ $request['url'] = Requests_IRI::absolutize($this->url, $request['url']);
237
+ $request['url'] = $request['url']->uri;
238
+ }
239
+ $request['headers'] = array_merge($this->headers, $request['headers']);
240
+
241
+ if (is_array($request['data']) && is_array($this->data)) {
242
+ $request['data'] = array_merge($this->data, $request['data']);
243
+ }
244
+
245
+ if ($merge_options !== false) {
246
+ $request['options'] = array_merge($this->options, $request['options']);
247
+
248
+ // Disallow forcing the type, as that's a per request setting
249
+ unset($request['options']['type']);
250
+ }
251
+ return $request;
252
+ }
253
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Base HTTP transport
4
+ *
5
+ * @package Requests
6
+ * @subpackage Transport
7
+ */
8
+
9
+ /**
10
+ * Base HTTP transport
11
+ *
12
+ * @package Requests
13
+ * @subpackage Transport
14
+ */
15
+ interface Requests_Transport {
16
+ /**
17
+ * Perform a request
18
+ *
19
+ * @param string $url URL to request
20
+ * @param array $headers Associative array of request headers
21
+ * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
22
+ * @param array $options Request options, see {@see Requests::response()} for documentation
23
+ * @return string Raw HTTP result
24
+ */
25
+ public function request($url, $headers = array(), $data = array(), $options = array());
26
+
27
+ /**
28
+ * Send multiple requests simultaneously
29
+ *
30
+ * @param array $requests Request data (array of 'url', 'headers', 'data', 'options') as per {@see Requests_Transport::request}
31
+ * @param array $options Global options, see {@see Requests::response()} for documentation
32
+ * @return array Array of Requests_Response objects (may contain Requests_Exception or string responses as well)
33
+ */
34
+ public function request_multiple($requests, $options);
35
+
36
+ /**
37
+ * Self-test whether the transport can be used
38
+ * @return bool
39
+ */
40
+ public static function test();
41
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport/cURL.php ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * cURL HTTP transport
4
+ *
5
+ * @package Requests
6
+ * @subpackage Transport
7
+ */
8
+
9
+ /**
10
+ * cURL HTTP transport
11
+ *
12
+ * @package Requests
13
+ * @subpackage Transport
14
+ */
15
+ class Requests_Transport_cURL implements Requests_Transport {
16
+ /**
17
+ * Raw HTTP data
18
+ *
19
+ * @var string
20
+ */
21
+ public $headers = '';
22
+
23
+ /**
24
+ * Information on the current request
25
+ *
26
+ * @var array cURL information array, see {@see http://php.net/curl_getinfo}
27
+ */
28
+ public $info;
29
+
30
+ /**
31
+ * Version string
32
+ *
33
+ * @var string
34
+ */
35
+ public $version;
36
+
37
+ /**
38
+ * cURL handle
39
+ *
40
+ * @var resource
41
+ */
42
+ protected $fp;
43
+
44
+ /**
45
+ * Have we finished the headers yet?
46
+ *
47
+ * @var boolean
48
+ */
49
+ protected $done_headers = false;
50
+
51
+ /**
52
+ * If streaming to a file, keep the file pointer
53
+ *
54
+ * @var resource
55
+ */
56
+ protected $stream_handle;
57
+
58
+ /**
59
+ * Constructor
60
+ */
61
+ public function __construct() {
62
+ $curl = curl_version();
63
+ $this->version = $curl['version'];
64
+ $this->fp = curl_init();
65
+
66
+ curl_setopt($this->fp, CURLOPT_HEADER, false);
67
+ curl_setopt($this->fp, CURLOPT_RETURNTRANSFER, 1);
68
+ if (version_compare($this->version, '7.10.5', '>=')) {
69
+ curl_setopt($this->fp, CURLOPT_ENCODING, '');
70
+ }
71
+ if (defined('CURLOPT_PROTOCOLS')) {
72
+ curl_setopt($this->fp, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
73
+ }
74
+ if (defined('CURLOPT_REDIR_PROTOCOLS')) {
75
+ curl_setopt($this->fp, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Perform a request
81
+ *
82
+ * @throws Requests_Exception On a cURL error (`curlerror`)
83
+ *
84
+ * @param string $url URL to request
85
+ * @param array $headers Associative array of request headers
86
+ * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
87
+ * @param array $options Request options, see {@see Requests::response()} for documentation
88
+ * @return string Raw HTTP result
89
+ */
90
+ public function request($url, $headers = array(), $data = array(), $options = array()) {
91
+ $this->setup_handle($url, $headers, $data, $options);
92
+
93
+ $options['hooks']->dispatch('curl.before_send', array(&$this->fp));
94
+
95
+ if ($options['filename'] !== false) {
96
+ $this->stream_handle = fopen($options['filename'], 'wb');
97
+ curl_setopt($this->fp, CURLOPT_FILE, $this->stream_handle);
98
+ }
99
+
100
+ if (isset($options['verify'])) {
101
+ if ($options['verify'] === false) {
102
+ curl_setopt($this->fp, CURLOPT_SSL_VERIFYHOST, 0);
103
+ curl_setopt($this->fp, CURLOPT_SSL_VERIFYPEER, 0);
104
+
105
+ } elseif (is_string($options['verify'])) {
106
+ curl_setopt($this->fp, CURLOPT_CAINFO, $options['verify']);
107
+ }
108
+ }
109
+
110
+ if (isset($options['verifyname']) && $options['verifyname'] === false) {
111
+ curl_setopt($this->fp, CURLOPT_SSL_VERIFYHOST, 0);
112
+ }
113
+
114
+ $response = curl_exec($this->fp);
115
+
116
+ $options['hooks']->dispatch('curl.after_send', array(&$fake_headers));
117
+
118
+ if (curl_errno($this->fp) === 23 || curl_errno($this->fp) === 61) {
119
+ curl_setopt($this->fp, CURLOPT_ENCODING, 'none');
120
+ $response = curl_exec($this->fp);
121
+ }
122
+
123
+ $this->process_response($response, $options);
124
+ curl_close($this->fp);
125
+ return $this->headers;
126
+ }
127
+
128
+ /**
129
+ * Send multiple requests simultaneously
130
+ *
131
+ * @param array $requests Request data
132
+ * @param array $options Global options
133
+ * @return array Array of Requests_Response objects (may contain Requests_Exception or string responses as well)
134
+ */
135
+ public function request_multiple($requests, $options) {
136
+ $multihandle = curl_multi_init();
137
+ $subrequests = array();
138
+ $subhandles = array();
139
+
140
+ $class = get_class($this);
141
+ foreach ($requests as $id => $request) {
142
+ $subrequests[$id] = new $class();
143
+ $subhandles[$id] = $subrequests[$id]->get_subrequest_handle($request['url'], $request['headers'], $request['data'], $request['options']);
144
+ $request['options']['hooks']->dispatch('curl.before_multi_add', array(&$subhandles[$id]));
145
+ curl_multi_add_handle($multihandle, $subhandles[$id]);
146
+ }
147
+
148
+ $completed = 0;
149
+ $responses = array();
150
+
151
+ $request['options']['hooks']->dispatch('curl.before_multi_exec', array(&$multihandle));
152
+
153
+ do {
154
+ $active = false;
155
+
156
+ do {
157
+ $status = curl_multi_exec($multihandle, $active);
158
+ }
159
+ while ($status === CURLM_CALL_MULTI_PERFORM);
160
+
161
+ $to_process = array();
162
+
163
+ // Read the information as needed
164
+ while ($done = curl_multi_info_read($multihandle)) {
165
+ $key = array_search($done['handle'], $subhandles, true);
166
+ if (!isset($to_process[$key])) {
167
+ $to_process[$key] = $done;
168
+ }
169
+ }
170
+
171
+ // Parse the finished requests before we start getting the new ones
172
+ foreach ($to_process as $key => $done) {
173
+ $options = $requests[$key]['options'];
174
+ $responses[$key] = $subrequests[$key]->process_response(curl_multi_getcontent($done['handle']), $options);
175
+
176
+ $options['hooks']->dispatch('transport.internal.parse_response', array(&$responses[$key], $requests[$key]));
177
+
178
+ curl_multi_remove_handle($multihandle, $done['handle']);
179
+ curl_close($done['handle']);
180
+
181
+ if (!is_string($responses[$key])) {
182
+ $options['hooks']->dispatch('multiple.request.complete', array(&$responses[$key], $key));
183
+ }
184
+ $completed++;
185
+ }
186
+ }
187
+ while ($active || $completed < count($subrequests));
188
+
189
+ $request['options']['hooks']->dispatch('curl.after_multi_exec', array(&$multihandle));
190
+
191
+ curl_multi_close($multihandle);
192
+
193
+ return $responses;
194
+ }
195
+
196
+ /**
197
+ * Get the cURL handle for use in a multi-request
198
+ *
199
+ * @param string $url URL to request
200
+ * @param array $headers Associative array of request headers
201
+ * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
202
+ * @param array $options Request options, see {@see Requests::response()} for documentation
203
+ * @return resource Subrequest's cURL handle
204
+ */
205
+ public function &get_subrequest_handle($url, $headers, $data, $options) {
206
+ $this->setup_handle($url, $headers, $data, $options);
207
+
208
+ if ($options['filename'] !== false) {
209
+ $this->stream_handle = fopen($options['filename'], 'wb');
210
+ curl_setopt($this->fp, CURLOPT_FILE, $this->stream_handle);
211
+ }
212
+
213
+ return $this->fp;
214
+ }
215
+
216
+ /**
217
+ * Setup the cURL handle for the given data
218
+ *
219
+ * @param string $url URL to request
220
+ * @param array $headers Associative array of request headers
221
+ * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
222
+ * @param array $options Request options, see {@see Requests::response()} for documentation
223
+ */
224
+ protected function setup_handle($url, $headers, $data, $options) {
225
+ $options['hooks']->dispatch('curl.before_request', array(&$this->fp));
226
+
227
+ $headers = Requests::flatten($headers);
228
+ if (in_array($options['type'], array(Requests::HEAD, Requests::GET, Requests::DELETE)) & !empty($data)) {
229
+ $url = self::format_get($url, $data);
230
+ }
231
+ elseif (!empty($data) && !is_string($data)) {
232
+ $data = http_build_query($data, null, '&');
233
+ }
234
+
235
+ switch ($options['type']) {
236
+ case Requests::POST:
237
+ curl_setopt($this->fp, CURLOPT_POST, true);
238
+ curl_setopt($this->fp, CURLOPT_POSTFIELDS, $data);
239
+ break;
240
+ case Requests::PATCH:
241
+ case Requests::PUT:
242
+ curl_setopt($this->fp, CURLOPT_CUSTOMREQUEST, $options['type']);
243
+ curl_setopt($this->fp, CURLOPT_POSTFIELDS, $data);
244
+ break;
245
+ case Requests::DELETE:
246
+ curl_setopt($this->fp, CURLOPT_CUSTOMREQUEST, 'DELETE');
247
+ break;
248
+ case Requests::HEAD:
249
+ curl_setopt($this->fp, CURLOPT_NOBODY, true);
250
+ break;
251
+ }
252
+
253
+ curl_setopt($this->fp, CURLOPT_URL, $url);
254
+ curl_setopt($this->fp, CURLOPT_TIMEOUT, $options['timeout']);
255
+ curl_setopt($this->fp, CURLOPT_CONNECTTIMEOUT, $options['timeout']);
256
+ curl_setopt($this->fp, CURLOPT_REFERER, $url);
257
+ curl_setopt($this->fp, CURLOPT_USERAGENT, $options['useragent']);
258
+ curl_setopt($this->fp, CURLOPT_HTTPHEADER, $headers);
259
+
260
+ if (true === $options['blocking']) {
261
+ curl_setopt($this->fp, CURLOPT_HEADERFUNCTION, array(&$this, 'stream_headers'));
262
+ }
263
+ }
264
+
265
+ public function process_response($response, $options) {
266
+ if ($options['blocking'] === false) {
267
+ $fake_headers = '';
268
+ $options['hooks']->dispatch('curl.after_request', array(&$fake_headers));
269
+ return false;
270
+ }
271
+ if ($options['filename'] !== false) {
272
+ fclose($this->stream_handle);
273
+ $this->headers = trim($this->headers);
274
+ }
275
+ else {
276
+ $this->headers .= $response;
277
+ }
278
+
279
+ if (curl_errno($this->fp)) {
280
+ throw new Requests_Exception('cURL error ' . curl_errno($this->fp) . ': ' . curl_error($this->fp), 'curlerror', $this->fp);
281
+ return;
282
+ }
283
+ $this->info = curl_getinfo($this->fp);
284
+
285
+ $options['hooks']->dispatch('curl.after_request', array(&$this->headers));
286
+ return $this->headers;
287
+ }
288
+
289
+ /**
290
+ * Collect the headers as they are received
291
+ *
292
+ * @param resource $handle cURL resource
293
+ * @param string $headers Header string
294
+ * @return integer Length of provided header
295
+ */
296
+ protected function stream_headers($handle, $headers) {
297
+ // Why do we do this? cURL will send both the final response and any
298
+ // interim responses, such as a 100 Continue. We don't need that.
299
+ // (We may want to keep this somewhere just in case)
300
+ if ($this->done_headers) {
301
+ $this->headers = '';
302
+ $this->done_headers = false;
303
+ }
304
+ $this->headers .= $headers;
305
+
306
+ if ($headers === "\r\n") {
307
+ $this->done_headers = true;
308
+ }
309
+ return strlen($headers);
310
+ }
311
+
312
+ /**
313
+ * Format a URL given GET data
314
+ *
315
+ * @param string $url
316
+ * @param array|object $data Data to build query using, see {@see http://php.net/http_build_query}
317
+ * @return string URL with data
318
+ */
319
+ protected static function format_get($url, $data) {
320
+ if (!empty($data)) {
321
+ $url_parts = parse_url($url);
322
+ if (empty($url_parts['query'])) {
323
+ $query = $url_parts['query'] = '';
324
+ }
325
+ else {
326
+ $query = $url_parts['query'];
327
+ }
328
+
329
+ $query .= '&' . http_build_query($data, null, '&');
330
+ $query = trim($query, '&');
331
+
332
+ if (empty($url_parts['query'])) {
333
+ $url .= '?' . $query;
334
+ }
335
+ else {
336
+ $url = str_replace($url_parts['query'], $query, $url);
337
+ }
338
+ }
339
+ return $url;
340
+ }
341
+
342
+ /**
343
+ * Whether this transport is valid
344
+ *
345
+ * @codeCoverageIgnore
346
+ * @return boolean True if the transport is valid, false otherwise.
347
+ */
348
+ public static function test() {
349
+ return (function_exists('curl_init') && function_exists('curl_exec'));
350
+ }
351
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport/cacert.pem ADDED
@@ -0,0 +1,3554 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##
2
+ ## ca-bundle.crt -- Bundle of CA Root Certificates
3
+ ##
4
+ ## Certificate data from Mozilla as of: Sat Dec 29 20:03:40 2012
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
+ ## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
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
+ # @(#) $RCSfile: certdata.txt,v $ $Revision: 1.87 $ $Date: 2012/12/29 16:32:45 $
18
+
19
+ EE Certification Centre Root CA
20
+ ===============================
21
+ -----BEGIN CERTIFICATE-----
22
+ MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
23
+ EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
24
+ dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
25
+ MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
26
+ UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
27
+ ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
28
+ DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
29
+ TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
30
+ rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
31
+ 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
32
+ P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
33
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
34
+ MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
35
+ BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
36
+ xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
37
+ lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
38
+ uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
39
+ 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
40
+ dcGWxZ0=
41
+ -----END CERTIFICATE-----
42
+
43
+ GTE CyberTrust Global Root
44
+ ==========================
45
+ -----BEGIN CERTIFICATE-----
46
+ MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
47
+ Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
48
+ A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
49
+ MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
50
+ Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
51
+ IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
52
+ sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
53
+ HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
54
+ AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
55
+ M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
56
+ NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
57
+ -----END CERTIFICATE-----
58
+
59
+ Thawte Server CA
60
+ ================
61
+ -----BEGIN CERTIFICATE-----
62
+ MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
63
+ DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
64
+ dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
65
+ AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
66
+ b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
67
+ BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
68
+ c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
69
+ A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
70
+ ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
71
+ /Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
72
+ 1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
73
+ MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
74
+ GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
75
+ GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
76
+ -----END CERTIFICATE-----
77
+
78
+ Thawte Premium Server CA
79
+ ========================
80
+ -----BEGIN CERTIFICATE-----
81
+ MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
82
+ DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
83
+ dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
84
+ AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
85
+ ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
86
+ AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
87
+ VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
88
+ aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
89
+ cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
90
+ aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
91
+ Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
92
+ qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
93
+ SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
94
+ 8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
95
+ UCemDaYj+bvLpgcUQg==
96
+ -----END CERTIFICATE-----
97
+
98
+ Equifax Secure CA
99
+ =================
100
+ -----BEGIN CERTIFICATE-----
101
+ MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
102
+ ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
103
+ MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
104
+ B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
105
+ nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
106
+ fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
107
+ 8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
108
+ A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
109
+ CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
110
+ A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
111
+ spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
112
+ Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
113
+ zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
114
+ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
115
+ 70+sB3c4
116
+ -----END CERTIFICATE-----
117
+
118
+ Digital Signature Trust Co. Global CA 1
119
+ =======================================
120
+ -----BEGIN CERTIFICATE-----
121
+ MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
122
+ ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
123
+ MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
124
+ IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
125
+ A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
126
+ NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
127
+ o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
128
+ BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
129
+ dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
130
+ IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
131
+ MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
132
+ BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
133
+ ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
134
+ kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
135
+ RbyhkwS7hp86W0N6w4pl
136
+ -----END CERTIFICATE-----
137
+
138
+ Digital Signature Trust Co. Global CA 3
139
+ =======================================
140
+ -----BEGIN CERTIFICATE-----
141
+ MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
142
+ ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
143
+ MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
144
+ IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
145
+ A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
146
+ VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
147
+ xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
148
+ BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
149
+ dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
150
+ IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
151
+ MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
152
+ BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
153
+ AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
154
+ up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
155
+ mPnHfxsb1gYgAlihw6ID
156
+ -----END CERTIFICATE-----
157
+
158
+ Verisign Class 3 Public Primary Certification Authority
159
+ =======================================================
160
+ -----BEGIN CERTIFICATE-----
161
+ MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
162
+ FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
163
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
164
+ XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
165
+ IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
166
+ A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
167
+ f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
168
+ hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
169
+ TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
170
+ WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
171
+ Tqj/ZA1k
172
+ -----END CERTIFICATE-----
173
+
174
+ Verisign Class 3 Public Primary Certification Authority - G2
175
+ ============================================================
176
+ -----BEGIN CERTIFICATE-----
177
+ MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
178
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
179
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
180
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
181
+ dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
182
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
183
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
184
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
185
+ dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
186
+ FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
187
+ lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
188
+ MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
189
+ 1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
190
+ Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
191
+ -----END CERTIFICATE-----
192
+
193
+ GlobalSign Root CA
194
+ ==================
195
+ -----BEGIN CERTIFICATE-----
196
+ MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
197
+ GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
198
+ b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
199
+ BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
200
+ VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
201
+ DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
202
+ THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
203
+ Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
204
+ c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
205
+ gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
206
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
207
+ AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
208
+ Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
209
+ j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
210
+ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
211
+ X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
212
+ -----END CERTIFICATE-----
213
+
214
+ GlobalSign Root CA - R2
215
+ =======================
216
+ -----BEGIN CERTIFICATE-----
217
+ MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
218
+ YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
219
+ bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
220
+ aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
221
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
222
+ ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
223
+ s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
224
+ S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
225
+ TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
226
+ ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
227
+ FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
228
+ YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
229
+ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
230
+ 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
231
+ 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
232
+ 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
233
+ TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
234
+ -----END CERTIFICATE-----
235
+
236
+ ValiCert Class 1 VA
237
+ ===================
238
+ -----BEGIN CERTIFICATE-----
239
+ MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
240
+ b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
241
+ YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
242
+ bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
243
+ MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
244
+ d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
245
+ UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
246
+ LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
247
+ A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
248
+ GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
249
+ DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
250
+ lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
251
+ icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
252
+ Orf1LXLI
253
+ -----END CERTIFICATE-----
254
+
255
+ ValiCert Class 2 VA
256
+ ===================
257
+ -----BEGIN CERTIFICATE-----
258
+ MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
259
+ b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
260
+ YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
261
+ bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
262
+ MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
263
+ d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
264
+ UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
265
+ LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
266
+ A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
267
+ CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
268
+ ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
269
+ SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
270
+ UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
271
+ W9ViH0Pd
272
+ -----END CERTIFICATE-----
273
+
274
+ RSA Root Certificate 1
275
+ ======================
276
+ -----BEGIN CERTIFICATE-----
277
+ MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
278
+ b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
279
+ YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
280
+ bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
281
+ MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
282
+ d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
283
+ UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
284
+ LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
285
+ A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
286
+ 3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
287
+ BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
288
+ 3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
289
+ V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
290
+ on+jjBXu
291
+ -----END CERTIFICATE-----
292
+
293
+ Verisign Class 3 Public Primary Certification Authority - G3
294
+ ============================================================
295
+ -----BEGIN CERTIFICATE-----
296
+ MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
297
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
298
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
299
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
300
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
301
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
302
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
303
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
304
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
305
+ ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
306
+ EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
307
+ cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
308
+ EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
309
+ 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
310
+ ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
311
+ j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
312
+ /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
313
+ xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
314
+ t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
315
+ -----END CERTIFICATE-----
316
+
317
+ Verisign Class 4 Public Primary Certification Authority - G3
318
+ ============================================================
319
+ -----BEGIN CERTIFICATE-----
320
+ MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
321
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
322
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
323
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
324
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
325
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
326
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
327
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
328
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
329
+ ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
330
+ tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
331
+ 8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
332
+ Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
333
+ Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
334
+ j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
335
+ mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
336
+ fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
337
+ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
338
+ UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
339
+ -----END CERTIFICATE-----
340
+
341
+ Entrust.net Secure Server CA
342
+ ============================
343
+ -----BEGIN CERTIFICATE-----
344
+ MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
345
+ BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
346
+ cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
347
+ ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
348
+ cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
349
+ A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
350
+ eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
351
+ dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
352
+ aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
353
+ aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
354
+ gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
355
+ ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
356
+ CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
357
+ dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
358
+ bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
359
+ cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
360
+ dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
361
+ NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
362
+ HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
363
+ BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
364
+ Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
365
+ n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
366
+ -----END CERTIFICATE-----
367
+
368
+ Entrust.net Premium 2048 Secure Server CA
369
+ =========================================
370
+ -----BEGIN CERTIFICATE-----
371
+ MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
372
+ ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
373
+ bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
374
+ BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
375
+ NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
376
+ d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
377
+ MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
378
+ ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
379
+ MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
380
+ Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
381
+ hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
382
+ nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
383
+ VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
384
+ AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
385
+ gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
386
+ AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
387
+ oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
388
+ o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
389
+ 2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
390
+ OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
391
+ -----END CERTIFICATE-----
392
+
393
+ Baltimore CyberTrust Root
394
+ =========================
395
+ -----BEGIN CERTIFICATE-----
396
+ MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
397
+ ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
398
+ ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
399
+ SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
400
+ dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
401
+ uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
402
+ UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
403
+ G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
404
+ XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
405
+ l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
406
+ VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
407
+ BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
408
+ cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
409
+ hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
410
+ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
411
+ RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
412
+ -----END CERTIFICATE-----
413
+
414
+ Equifax Secure Global eBusiness CA
415
+ ==================================
416
+ -----BEGIN CERTIFICATE-----
417
+ MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
418
+ RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
419
+ bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
420
+ HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
421
+ b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
422
+ PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
423
+ qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
424
+ hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
425
+ BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
426
+ MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
427
+ I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
428
+ NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
429
+ -----END CERTIFICATE-----
430
+
431
+ Equifax Secure eBusiness CA 1
432
+ =============================
433
+ -----BEGIN CERTIFICATE-----
434
+ MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
435
+ RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
436
+ LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
437
+ ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
438
+ IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
439
+ 1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
440
+ IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
441
+ MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
442
+ Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
443
+ AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
444
+ lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
445
+ KpYrtWKmpj29f5JZzVoqgrI3eQ==
446
+ -----END CERTIFICATE-----
447
+
448
+ Equifax Secure eBusiness CA 2
449
+ =============================
450
+ -----BEGIN CERTIFICATE-----
451
+ MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
452
+ ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
453
+ MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
454
+ DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
455
+ nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
456
+ 2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
457
+ BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
458
+ A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
459
+ JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
460
+ A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
461
+ uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
462
+ Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
463
+ jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
464
+ 78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
465
+ V+GRMOrN
466
+ -----END CERTIFICATE-----
467
+
468
+ AddTrust Low-Value Services Root
469
+ ================================
470
+ -----BEGIN CERTIFICATE-----
471
+ MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
472
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
473
+ cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
474
+ CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
475
+ ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
476
+ AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
477
+ 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
478
+ oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
479
+ Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
480
+ GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
481
+ HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
482
+ AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
483
+ RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
484
+ HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
485
+ ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
486
+ iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
487
+ eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
488
+ mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
489
+ ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
490
+ -----END CERTIFICATE-----
491
+
492
+ AddTrust External Root
493
+ ======================
494
+ -----BEGIN CERTIFICATE-----
495
+ MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
496
+ QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
497
+ VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
498
+ NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
499
+ cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
500
+ Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
501
+ +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
502
+ Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
503
+ aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
504
+ 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
505
+ 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
506
+ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
507
+ VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
508
+ VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
509
+ IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
510
+ j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
511
+ 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
512
+ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
513
+ G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
514
+ -----END CERTIFICATE-----
515
+
516
+ AddTrust Public Services Root
517
+ =============================
518
+ -----BEGIN CERTIFICATE-----
519
+ MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
520
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
521
+ cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
522
+ BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
523
+ dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
524
+ AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
525
+ nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
526
+ d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
527
+ Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
528
+ HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
529
+ A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
530
+ /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
531
+ FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
532
+ A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
533
+ JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
534
+ +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
535
+ GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
536
+ Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
537
+ EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
538
+ -----END CERTIFICATE-----
539
+
540
+ AddTrust Qualified Certificates Root
541
+ ====================================
542
+ -----BEGIN CERTIFICATE-----
543
+ MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
544
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
545
+ cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
546
+ CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
547
+ IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
548
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
549
+ 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
550
+ KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
551
+ L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
552
+ wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
553
+ MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
554
+ BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
555
+ BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
556
+ azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
557
+ ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
558
+ GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
559
+ dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
560
+ RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
561
+ iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
562
+ -----END CERTIFICATE-----
563
+
564
+ Entrust Root Certification Authority
565
+ ====================================
566
+ -----BEGIN CERTIFICATE-----
567
+ MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
568
+ BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
569
+ b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
570
+ A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
571
+ MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
572
+ MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
573
+ Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
574
+ dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
575
+ ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
576
+ A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
577
+ Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
578
+ j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
579
+ rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
580
+ DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
581
+ MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
582
+ hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
583
+ A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
584
+ Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
585
+ v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
586
+ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
587
+ tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
588
+ -----END CERTIFICATE-----
589
+
590
+ RSA Security 2048 v3
591
+ ====================
592
+ -----BEGIN CERTIFICATE-----
593
+ MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
594
+ ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
595
+ MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
596
+ BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
597
+ AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
598
+ Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
599
+ WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
600
+ KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
601
+ +Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
602
+ MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
603
+ FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
604
+ v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
605
+ 0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
606
+ VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
607
+ nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
608
+ pKnXwiJPZ9d37CAFYd4=
609
+ -----END CERTIFICATE-----
610
+
611
+ GeoTrust Global CA
612
+ ==================
613
+ -----BEGIN CERTIFICATE-----
614
+ MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
615
+ Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
616
+ MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
617
+ LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
618
+ CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
619
+ BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
620
+ 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
621
+ T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
622
+ vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
623
+ AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
624
+ DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
625
+ zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
626
+ d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
627
+ mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
628
+ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
629
+ Mw==
630
+ -----END CERTIFICATE-----
631
+
632
+ GeoTrust Global CA 2
633
+ ====================
634
+ -----BEGIN CERTIFICATE-----
635
+ MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
636
+ R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
637
+ MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
638
+ LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
639
+ ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
640
+ NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
641
+ LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
642
+ Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
643
+ HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
644
+ MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
645
+ K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
646
+ srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
647
+ ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
648
+ OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
649
+ x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
650
+ H4z1Ir+rzoPz4iIprn2DQKi6bA==
651
+ -----END CERTIFICATE-----
652
+
653
+ GeoTrust Universal CA
654
+ =====================
655
+ -----BEGIN CERTIFICATE-----
656
+ MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
657
+ R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
658
+ MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
659
+ Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
660
+ ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
661
+ JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
662
+ RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
663
+ 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
664
+ 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
665
+ qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
666
+ Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
667
+ Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
668
+ KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
669
+ ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
670
+ XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
671
+ hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
672
+ aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
673
+ qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
674
+ oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
675
+ xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
676
+ KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
677
+ DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
678
+ xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
679
+ p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
680
+ P/rmMuGNG2+k5o7Y+SlIis5z/iw=
681
+ -----END CERTIFICATE-----
682
+
683
+ GeoTrust Universal CA 2
684
+ =======================
685
+ -----BEGIN CERTIFICATE-----
686
+ MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
687
+ R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
688
+ MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
689
+ SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
690
+ A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
691
+ DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
692
+ j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
693
+ JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
694
+ QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
695
+ WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
696
+ 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
697
+ ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
698
+ SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
699
+ 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
700
+ +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
701
+ BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
702
+ dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
703
+ 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
704
+ mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
705
+ A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
706
+ Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
707
+ pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
708
+ FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
709
+ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
710
+ X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
711
+ -----END CERTIFICATE-----
712
+
713
+ America Online Root Certification Authority 1
714
+ =============================================
715
+ -----BEGIN CERTIFICATE-----
716
+ MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
717
+ QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
718
+ Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
719
+ A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
720
+ T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
721
+ ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
722
+ v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
723
+ DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
724
+ sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
725
+ 8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
726
+ AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
727
+ o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
728
+ GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
729
+ VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
730
+ 3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
731
+ Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
732
+ sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
733
+ -----END CERTIFICATE-----
734
+
735
+ America Online Root Certification Authority 2
736
+ =============================================
737
+ -----BEGIN CERTIFICATE-----
738
+ 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
763
+ cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
764
+ -----END CERTIFICATE-----
765
+
766
+ Visa eCommerce Root
767
+ ===================
768
+ -----BEGIN CERTIFICATE-----
769
+ MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
770
+ EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
771
+ QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
772
+ WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
773
+ VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
774
+ bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
775
+ F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
776
+ RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
777
+ TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
778
+ /k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
779
+ GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
780
+ MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
781
+ CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
782
+ YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
783
+ zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
784
+ YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
785
+ 398znM/jra6O1I7mT1GvFpLgXPYHDw==
786
+ -----END CERTIFICATE-----
787
+
788
+ Certum Root CA
789
+ ==============
790
+ -----BEGIN CERTIFICATE-----
791
+ MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
792
+ ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
793
+ Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
794
+ by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
795
+ wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
796
+ kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
797
+ 89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
798
+ Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
799
+ NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
800
+ hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
801
+ GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
802
+ GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
803
+ 0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
804
+ qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
805
+ -----END CERTIFICATE-----
806
+
807
+ Comodo AAA Services root
808
+ ========================
809
+ -----BEGIN CERTIFICATE-----
810
+ MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
811
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
812
+ TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
813
+ MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
814
+ c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
815
+ BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
816
+ ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
817
+ C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
818
+ i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
819
+ Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
820
+ Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
821
+ Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
822
+ BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
823
+ cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
824
+ LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
825
+ 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
826
+ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
827
+ 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
828
+ 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
829
+ -----END CERTIFICATE-----
830
+
831
+ Comodo Secure Services root
832
+ ===========================
833
+ -----BEGIN CERTIFICATE-----
834
+ MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
835
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
836
+ TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
837
+ MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
838
+ Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
839
+ BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
840
+ ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
841
+ 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
842
+ rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
843
+ oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
844
+ p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
845
+ FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
846
+ gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
847
+ YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
848
+ aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
849
+ 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
850
+ Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
851
+ DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
852
+ pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
853
+ RR3B7Hzs/Sk=
854
+ -----END CERTIFICATE-----
855
+
856
+ Comodo Trusted Services root
857
+ ============================
858
+ -----BEGIN CERTIFICATE-----
859
+ MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
860
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
861
+ TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
862
+ MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
863
+ bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
864
+ IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
865
+ AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
866
+ 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
867
+ /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
868
+ juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
869
+ ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
870
+ DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
871
+ /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
872
+ ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
873
+ cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
874
+ uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
875
+ pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
876
+ BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
877
+ R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
878
+ 9y5Xt5hwXsjEeLBi
879
+ -----END CERTIFICATE-----
880
+
881
+ QuoVadis Root CA
882
+ ================
883
+ -----BEGIN CERTIFICATE-----
884
+ MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
885
+ ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
886
+ eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
887
+ MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
888
+ cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
889
+ EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
890
+ AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
891
+ J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
892
+ F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
893
+ YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
894
+ AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
895
+ PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
896
+ ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
897
+ MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
898
+ YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
899
+ ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
900
+ Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
901
+ Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
902
+ BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
903
+ FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
904
+ aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
905
+ tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
906
+ fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
907
+ LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
908
+ gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
909
+ 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
910
+ 5nrQNiOKSnQ2+Q==
911
+ -----END CERTIFICATE-----
912
+
913
+ QuoVadis Root CA 2
914
+ ==================
915
+ -----BEGIN CERTIFICATE-----
916
+ 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
942
+ -----END CERTIFICATE-----
943
+
944
+ QuoVadis Root CA 3
945
+ ==================
946
+ -----BEGIN CERTIFICATE-----
947
+ MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
948
+ EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
949
+ OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
950
+ aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
951
+ DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
952
+ DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
953
+ KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
954
+ DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
955
+ BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
956
+ p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
957
+ nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
958
+ MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
959
+ Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
960
+ uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
961
+ BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
962
+ YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
963
+ aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
964
+ BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
965
+ VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
966
+ ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
967
+ AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
968
+ qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
969
+ hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
970
+ POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
971
+ Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
972
+ 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
973
+ bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
974
+ g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
975
+ vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
976
+ qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
977
+ -----END CERTIFICATE-----
978
+
979
+ Security Communication Root CA
980
+ ==============================
981
+ -----BEGIN CERTIFICATE-----
982
+ MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
983
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
984
+ HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
985
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
986
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
987
+ 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
988
+ DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
989
+ 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
990
+ DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
991
+ JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
992
+ DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
993
+ 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
994
+ mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
995
+ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
996
+ 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
997
+ FL39vmwLAw==
998
+ -----END CERTIFICATE-----
999
+
1000
+ Sonera Class 2 Root CA
1001
+ ======================
1002
+ -----BEGIN CERTIFICATE-----
1003
+ MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
1004
+ U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
1005
+ NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
1006
+ IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
1007
+ /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
1008
+ dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
1009
+ f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
1010
+ tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
1011
+ nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
1012
+ XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
1013
+ 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
1014
+ cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
1015
+ Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
1016
+ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
1017
+ llpwrN9M
1018
+ -----END CERTIFICATE-----
1019
+
1020
+ Staat der Nederlanden Root CA
1021
+ =============================
1022
+ -----BEGIN CERTIFICATE-----
1023
+ MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
1024
+ ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
1025
+ Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
1026
+ HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
1027
+ bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
1028
+ vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
1029
+ jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
1030
+ C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
1031
+ vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
1032
+ 22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
1033
+ HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
1034
+ dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
1035
+ BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
1036
+ EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
1037
+ MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
1038
+ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
1039
+ iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
1040
+ -----END CERTIFICATE-----
1041
+
1042
+ TDC Internet Root CA
1043
+ ====================
1044
+ -----BEGIN CERTIFICATE-----
1045
+ MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
1046
+ ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
1047
+ NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
1048
+ ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1049
+ MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
1050
+ xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
1051
+ znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
1052
+ 5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
1053
+ otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
1054
+ AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
1055
+ VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
1056
+ MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
1057
+ AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
1058
+ UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
1059
+ CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
1060
+ gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
1061
+ 2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
1062
+ O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
1063
+ Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
1064
+ -----END CERTIFICATE-----
1065
+
1066
+ UTN DATACorp SGC Root CA
1067
+ ========================
1068
+ -----BEGIN CERTIFICATE-----
1069
+ MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
1070
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1071
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
1072
+ BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
1073
+ MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
1074
+ HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
1075
+ dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
1076
+ AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
1077
+ raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
1078
+ wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
1079
+ 9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
1080
+ 33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
1081
+ DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
1082
+ BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
1083
+ LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
1084
+ DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
1085
+ Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
1086
+ I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
1087
+ EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
1088
+ DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
1089
+ -----END CERTIFICATE-----
1090
+
1091
+ UTN USERFirst Hardware Root CA
1092
+ ==============================
1093
+ -----BEGIN CERTIFICATE-----
1094
+ MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
1095
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1096
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
1097
+ BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
1098
+ OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
1099
+ eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
1100
+ ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
1101
+ DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
1102
+ wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
1103
+ tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
1104
+ i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
1105
+ Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
1106
+ gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
1107
+ lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
1108
+ UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
1109
+ BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
1110
+ //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
1111
+ XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
1112
+ lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
1113
+ iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
1114
+ nfhmqA==
1115
+ -----END CERTIFICATE-----
1116
+
1117
+ Camerfirma Chambers of Commerce Root
1118
+ ====================================
1119
+ -----BEGIN CERTIFICATE-----
1120
+ MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
1121
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
1122
+ ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
1123
+ NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
1124
+ cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
1125
+ MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
1126
+ AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
1127
+ xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
1128
+ NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
1129
+ DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
1130
+ d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
1131
+ EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
1132
+ cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
1133
+ AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
1134
+ bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
1135
+ VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
1136
+ aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
1137
+ fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
1138
+ L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
1139
+ UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
1140
+ ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
1141
+ erfutGWaIZDgqtCYvDi1czyL+Nw=
1142
+ -----END CERTIFICATE-----
1143
+
1144
+ Camerfirma Global Chambersign Root
1145
+ ==================================
1146
+ -----BEGIN CERTIFICATE-----
1147
+ MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
1148
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
1149
+ ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
1150
+ NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
1151
+ YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
1152
+ MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
1153
+ ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
1154
+ 1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
1155
+ by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
1156
+ 6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
1157
+ 8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
1158
+ BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
1159
+ aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
1160
+ Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
1161
+ aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
1162
+ ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
1163
+ bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
1164
+ PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
1165
+ gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
1166
+ PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
1167
+ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
1168
+ t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
1169
+ -----END CERTIFICATE-----
1170
+
1171
+ NetLock Notary (Class A) Root
1172
+ =============================
1173
+ -----BEGIN CERTIFICATE-----
1174
+ MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
1175
+ EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
1176
+ dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
1177
+ ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
1178
+ DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
1179
+ EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
1180
+ VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
1181
+ cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
1182
+ D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
1183
+ z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
1184
+ /tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
1185
+ tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
1186
+ 4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
1187
+ A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
1188
+ Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
1189
+ bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
1190
+ IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
1191
+ LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
1192
+ ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
1193
+ IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
1194
+ IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
1195
+ b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
1196
+ bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
1197
+ Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
1198
+ bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
1199
+ ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
1200
+ ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
1201
+ CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
1202
+ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
1203
+ 8CgHrTwXZoi1/baI
1204
+ -----END CERTIFICATE-----
1205
+
1206
+ NetLock Business (Class B) Root
1207
+ ===============================
1208
+ -----BEGIN CERTIFICATE-----
1209
+ MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1210
+ CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1211
+ BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
1212
+ VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
1213
+ VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
1214
+ bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
1215
+ VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
1216
+ iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
1217
+ o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
1218
+ 1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
1219
+ HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
1220
+ RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
1221
+ dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
1222
+ ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
1223
+ c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
1224
+ YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
1225
+ c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
1226
+ Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
1227
+ bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
1228
+ IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
1229
+ YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
1230
+ cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
1231
+ 43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
1232
+ stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
1233
+ -----END CERTIFICATE-----
1234
+
1235
+ NetLock Express (Class C) Root
1236
+ ==============================
1237
+ -----BEGIN CERTIFICATE-----
1238
+ MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1239
+ CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1240
+ BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
1241
+ KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
1242
+ BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
1243
+ dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
1244
+ ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
1245
+ jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
1246
+ W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
1247
+ euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
1248
+ DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
1249
+ RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
1250
+ YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
1251
+ IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
1252
+ aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
1253
+ ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
1254
+ ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
1255
+ dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
1256
+ emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
1257
+ IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
1258
+ UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
1259
+ YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
1260
+ xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
1261
+ gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
1262
+ -----END CERTIFICATE-----
1263
+
1264
+ XRamp Global CA Root
1265
+ ====================
1266
+ -----BEGIN CERTIFICATE-----
1267
+ MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
1268
+ BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
1269
+ dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
1270
+ dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
1271
+ HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
1272
+ U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
1273
+ dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
1274
+ IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
1275
+ foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
1276
+ zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
1277
+ AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
1278
+ xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1279
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
1280
+ oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
1281
+ AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
1282
+ /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
1283
+ qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
1284
+ nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
1285
+ 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
1286
+ -----END CERTIFICATE-----
1287
+
1288
+ Go Daddy Class 2 CA
1289
+ ===================
1290
+ -----BEGIN CERTIFICATE-----
1291
+ MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
1292
+ VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
1293
+ ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
1294
+ A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
1295
+ RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
1296
+ ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
1297
+ 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
1298
+ qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
1299
+ YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
1300
+ vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
1301
+ BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
1302
+ atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
1303
+ MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
1304
+ A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
1305
+ PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
1306
+ I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
1307
+ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
1308
+ Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
1309
+ vZ8=
1310
+ -----END CERTIFICATE-----
1311
+
1312
+ Starfield Class 2 CA
1313
+ ====================
1314
+ -----BEGIN CERTIFICATE-----
1315
+ MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
1316
+ U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
1317
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
1318
+ MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
1319
+ A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
1320
+ SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
1321
+ bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
1322
+ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
1323
+ epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
1324
+ F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
1325
+ MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
1326
+ hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
1327
+ bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
1328
+ QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
1329
+ afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
1330
+ PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
1331
+ xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
1332
+ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
1333
+ QBFGmh95DmK/D5fs4C8fF5Q=
1334
+ -----END CERTIFICATE-----
1335
+
1336
+ StartCom Certification Authority
1337
+ ================================
1338
+ -----BEGIN CERTIFICATE-----
1339
+ MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
1340
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
1341
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
1342
+ NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
1343
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
1344
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
1345
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
1346
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
1347
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
1348
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
1349
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
1350
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
1351
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
1352
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
1353
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
1354
+ 37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
1355
+ FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
1356
+ Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
1357
+ YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
1358
+ AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
1359
+ Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
1360
+ U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
1361
+ LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
1362
+ cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
1363
+ cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
1364
+ dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
1365
+ AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
1366
+ 3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
1367
+ vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
1368
+ fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
1369
+ fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
1370
+ EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
1371
+ yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
1372
+ 1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
1373
+ lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
1374
+ g14=
1375
+ -----END CERTIFICATE-----
1376
+
1377
+ Taiwan GRCA
1378
+ ===========
1379
+ -----BEGIN CERTIFICATE-----
1380
+ MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
1381
+ EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
1382
+ DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
1383
+ dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
1384
+ ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
1385
+ w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
1386
+ BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
1387
+ 1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
1388
+ htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
1389
+ J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
1390
+ Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
1391
+ B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
1392
+ O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
1393
+ lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
1394
+ HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
1395
+ 09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
1396
+ TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
1397
+ Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
1398
+ Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
1399
+ D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
1400
+ DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
1401
+ Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
1402
+ 7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
1403
+ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
1404
+ +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
1405
+ -----END CERTIFICATE-----
1406
+
1407
+ Firmaprofesional Root CA
1408
+ ========================
1409
+ -----BEGIN CERTIFICATE-----
1410
+ MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
1411
+ GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
1412
+ Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
1413
+ ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
1414
+ MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
1415
+ OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
1416
+ ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
1417
+ AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
1418
+ j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
1419
+ lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
1420
+ 3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
1421
+ NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
1422
+ KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
1423
+ AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
1424
+ DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
1425
+ ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
1426
+ u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
1427
+ wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
1428
+ 7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
1429
+ VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
1430
+ -----END CERTIFICATE-----
1431
+
1432
+ Wells Fargo Root CA
1433
+ ===================
1434
+ -----BEGIN CERTIFICATE-----
1435
+ MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
1436
+ BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
1437
+ cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1438
+ MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
1439
+ bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
1440
+ MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
1441
+ SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
1442
+ x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
1443
+ E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
1444
+ OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
1445
+ sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
1446
+ YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
1447
+ BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
1448
+ ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
1449
+ m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
1450
+ OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
1451
+ x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
1452
+ tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
1453
+ -----END CERTIFICATE-----
1454
+
1455
+ Swisscom Root CA 1
1456
+ ==================
1457
+ -----BEGIN CERTIFICATE-----
1458
+ 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
1484
+ NY6E0F/6MBr1mmz0DlP5OlvRHA==
1485
+ -----END CERTIFICATE-----
1486
+
1487
+ DigiCert Assured ID Root CA
1488
+ ===========================
1489
+ -----BEGIN CERTIFICATE-----
1490
+ MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
1491
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
1492
+ IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
1493
+ MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
1494
+ ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
1495
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
1496
+ 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
1497
+ UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
1498
+ /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
1499
+ oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
1500
+ GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
1501
+ 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
1502
+ hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
1503
+ EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
1504
+ SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
1505
+ 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
1506
+ +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
1507
+ -----END CERTIFICATE-----
1508
+
1509
+ DigiCert Global Root CA
1510
+ =======================
1511
+ -----BEGIN CERTIFICATE-----
1512
+ MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
1513
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
1514
+ HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
1515
+ MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
1516
+ dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
1517
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
1518
+ TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
1519
+ BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
1520
+ 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
1521
+ 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
1522
+ o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
1523
+ 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
1524
+ BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
1525
+ EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
1526
+ tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
1527
+ UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
1528
+ CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
1529
+ -----END CERTIFICATE-----
1530
+
1531
+ DigiCert High Assurance EV Root CA
1532
+ ==================================
1533
+ -----BEGIN CERTIFICATE-----
1534
+ MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
1535
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
1536
+ KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
1537
+ MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
1538
+ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
1539
+ Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
1540
+ Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
1541
+ OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
1542
+ MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
1543
+ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
1544
+ h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
1545
+ Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
1546
+ JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
1547
+ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
1548
+ myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
1549
+ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
1550
+ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
1551
+ -----END CERTIFICATE-----
1552
+
1553
+ Certplus Class 2 Primary CA
1554
+ ===========================
1555
+ -----BEGIN CERTIFICATE-----
1556
+ MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
1557
+ BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
1558
+ OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
1559
+ dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
1560
+ ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
1561
+ 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
1562
+ Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
1563
+ YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
1564
+ e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
1565
+ CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
1566
+ YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
1567
+ L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
1568
+ P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
1569
+ TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
1570
+ 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
1571
+ //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
1572
+ l7+ijrRU
1573
+ -----END CERTIFICATE-----
1574
+
1575
+ DST Root CA X3
1576
+ ==============
1577
+ -----BEGIN CERTIFICATE-----
1578
+ MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
1579
+ ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
1580
+ DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
1581
+ cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
1582
+ ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
1583
+ rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
1584
+ UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
1585
+ xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
1586
+ utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
1587
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
1588
+ MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
1589
+ dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
1590
+ GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
1591
+ RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
1592
+ fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
1593
+ -----END CERTIFICATE-----
1594
+
1595
+ DST ACES CA X6
1596
+ ==============
1597
+ -----BEGIN CERTIFICATE-----
1598
+ MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
1599
+ EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
1600
+ MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
1601
+ MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
1602
+ CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
1603
+ AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
1604
+ DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
1605
+ pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
1606
+ GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
1607
+ MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
1608
+ EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
1609
+ Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
1610
+ dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
1611
+ CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
1612
+ 5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
1613
+ Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
1614
+ nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
1615
+ vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
1616
+ oKfN5XozNmr6mis=
1617
+ -----END CERTIFICATE-----
1618
+
1619
+ TURKTRUST Certificate Services Provider Root 1
1620
+ ==============================================
1621
+ -----BEGIN CERTIFICATE-----
1622
+ MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1623
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
1624
+ MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
1625
+ acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
1626
+ MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
1627
+ U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
1628
+ TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
1629
+ aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
1630
+ AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
1631
+ yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
1632
+ Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
1633
+ 8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
1634
+ W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
1635
+ BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
1636
+ sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
1637
+ q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
1638
+ B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
1639
+ nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
1640
+ -----END CERTIFICATE-----
1641
+
1642
+ TURKTRUST Certificate Services Provider Root 2
1643
+ ==============================================
1644
+ -----BEGIN CERTIFICATE-----
1645
+ MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1646
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
1647
+ MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
1648
+ QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
1649
+ MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
1650
+ dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
1651
+ A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
1652
+ acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
1653
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
1654
+ LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
1655
+ x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
1656
+ QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
1657
+ 5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
1658
+ AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
1659
+ A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
1660
+ Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
1661
+ Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
1662
+ hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
1663
+ 9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
1664
+ UrbnBEI=
1665
+ -----END CERTIFICATE-----
1666
+
1667
+ SwissSign Gold CA - G2
1668
+ ======================
1669
+ -----BEGIN CERTIFICATE-----
1670
+ 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
1696
+ -----END CERTIFICATE-----
1697
+
1698
+ SwissSign Silver CA - G2
1699
+ ========================
1700
+ -----BEGIN CERTIFICATE-----
1701
+ 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
1727
+ -----END CERTIFICATE-----
1728
+
1729
+ GeoTrust Primary Certification Authority
1730
+ ========================================
1731
+ -----BEGIN CERTIFICATE-----
1732
+ MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
1733
+ EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
1734
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
1735
+ CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
1736
+ cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1737
+ CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
1738
+ b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
1739
+ nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
1740
+ RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
1741
+ tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
1742
+ AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
1743
+ hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
1744
+ Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
1745
+ NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
1746
+ Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
1747
+ 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
1748
+ -----END CERTIFICATE-----
1749
+
1750
+ thawte Primary Root CA
1751
+ ======================
1752
+ -----BEGIN CERTIFICATE-----
1753
+ MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
1754
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
1755
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
1756
+ cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
1757
+ MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
1758
+ SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
1759
+ KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
1760
+ FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
1761
+ oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
1762
+ 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
1763
+ q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
1764
+ aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
1765
+ afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
1766
+ VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
1767
+ AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
1768
+ uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1769
+ xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
1770
+ jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
1771
+ z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
1772
+ -----END CERTIFICATE-----
1773
+
1774
+ VeriSign Class 3 Public Primary Certification Authority - G5
1775
+ ============================================================
1776
+ -----BEGIN CERTIFICATE-----
1777
+ MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
1778
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
1779
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
1780
+ IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
1781
+ ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
1782
+ yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
1783
+ biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
1784
+ dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
1785
+ YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
1786
+ ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
1787
+ j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
1788
+ Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
1789
+ Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
1790
+ fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
1791
+ BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
1792
+ Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
1793
+ aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
1794
+ SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
1795
+ X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
1796
+ KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
1797
+ Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
1798
+ ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
1799
+ -----END CERTIFICATE-----
1800
+
1801
+ SecureTrust CA
1802
+ ==============
1803
+ -----BEGIN CERTIFICATE-----
1804
+ MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
1805
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
1806
+ dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
1807
+ BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
1808
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
1809
+ OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
1810
+ DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
1811
+ GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
1812
+ 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
1813
+ ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
1814
+ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
1815
+ aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1816
+ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
1817
+ SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
1818
+ mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
1819
+ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
1820
+ 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
1821
+ -----END CERTIFICATE-----
1822
+
1823
+ Secure Global CA
1824
+ ================
1825
+ -----BEGIN CERTIFICATE-----
1826
+ MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
1827
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
1828
+ bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
1829
+ MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
1830
+ Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
1831
+ YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
1832
+ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
1833
+ 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
1834
+ HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
1835
+ 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1836
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
1837
+ oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
1838
+ MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
1839
+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
1840
+ CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
1841
+ 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
1842
+ f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
1843
+ -----END CERTIFICATE-----
1844
+
1845
+ COMODO Certification Authority
1846
+ ==============================
1847
+ -----BEGIN CERTIFICATE-----
1848
+ MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
1849
+ BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
1850
+ A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
1851
+ dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
1852
+ MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
1853
+ T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1854
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
1855
+ +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
1856
+ xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
1857
+ 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
1858
+ 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
1859
+ rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
1860
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
1861
+ b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
1862
+ AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
1863
+ OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
1864
+ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
1865
+ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
1866
+ +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
1867
+ -----END CERTIFICATE-----
1868
+
1869
+ Network Solutions Certificate Authority
1870
+ =======================================
1871
+ -----BEGIN CERTIFICATE-----
1872
+ MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
1873
+ EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
1874
+ IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
1875
+ MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
1876
+ MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1877
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
1878
+ jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
1879
+ aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
1880
+ crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
1881
+ /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
1882
+ AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
1883
+ BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
1884
+ bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
1885
+ A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
1886
+ 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
1887
+ GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
1888
+ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
1889
+ ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1890
+ -----END CERTIFICATE-----
1891
+
1892
+ WellsSecure Public Root Certificate Authority
1893
+ =============================================
1894
+ -----BEGIN CERTIFICATE-----
1895
+ MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
1896
+ F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
1897
+ NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1898
+ MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
1899
+ bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
1900
+ VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1901
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
1902
+ iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
1903
+ i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
1904
+ bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
1905
+ K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
1906
+ AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
1907
+ cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
1908
+ lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
1909
+ i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
1910
+ GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
1911
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
1912
+ K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
1913
+ bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
1914
+ qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
1915
+ E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
1916
+ tylv2G0xffX8oRAHh84vWdw+WNs=
1917
+ -----END CERTIFICATE-----
1918
+
1919
+ COMODO ECC Certification Authority
1920
+ ==================================
1921
+ -----BEGIN CERTIFICATE-----
1922
+ MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
1923
+ R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
1924
+ ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
1925
+ dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
1926
+ GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
1927
+ Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
1928
+ b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
1929
+ 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
1930
+ wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
1931
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
1932
+ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
1933
+ U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
1934
+ -----END CERTIFICATE-----
1935
+
1936
+ IGC/A
1937
+ =====
1938
+ -----BEGIN CERTIFICATE-----
1939
+ MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
1940
+ VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
1941
+ Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
1942
+ MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
1943
+ EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
1944
+ STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
1945
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
1946
+ TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
1947
+ So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
1948
+ HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
1949
+ frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
1950
+ tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
1951
+ egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
1952
+ iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
1953
+ q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
1954
+ MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
1955
+ Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
1956
+ lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
1957
+ 0mBWWg==
1958
+ -----END CERTIFICATE-----
1959
+
1960
+ Security Communication EV RootCA1
1961
+ =================================
1962
+ -----BEGIN CERTIFICATE-----
1963
+ MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
1964
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
1965
+ dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
1966
+ BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
1967
+ Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
1968
+ AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
1969
+ /VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
1970
+ WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
1971
+ ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
1972
+ bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
1973
+ 9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
1974
+ SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
1975
+ iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
1976
+ Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
1977
+ mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
1978
+ T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
1979
+ -----END CERTIFICATE-----
1980
+
1981
+ OISTE WISeKey Global Root GA CA
1982
+ ===============================
1983
+ -----BEGIN CERTIFICATE-----
1984
+ MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
1985
+ BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
1986
+ A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
1987
+ bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
1988
+ VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
1989
+ IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
1990
+ IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
1991
+ Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
1992
+ Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
1993
+ d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
1994
+ /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
1995
+ LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
1996
+ AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1997
+ KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
1998
+ MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
1999
+ +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
2000
+ hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
2001
+ okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
2002
+ -----END CERTIFICATE-----
2003
+
2004
+ Microsec e-Szigno Root CA
2005
+ =========================
2006
+ -----BEGIN CERTIFICATE-----
2007
+ MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
2008
+ BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
2009
+ EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
2010
+ MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
2011
+ dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
2012
+ GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
2013
+ AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
2014
+ d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
2015
+ oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
2016
+ QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
2017
+ PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
2018
+ MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
2019
+ IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
2020
+ VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
2021
+ LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
2022
+ dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
2023
+ AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
2024
+ 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
2025
+ AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
2026
+ egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
2027
+ Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
2028
+ PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
2029
+ c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
2030
+ cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
2031
+ IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
2032
+ WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
2033
+ MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
2034
+ MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
2035
+ Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
2036
+ HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
2037
+ nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
2038
+ aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
2039
+ 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
2040
+ yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
2041
+ S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
2042
+ -----END CERTIFICATE-----
2043
+
2044
+ Certigna
2045
+ ========
2046
+ -----BEGIN CERTIFICATE-----
2047
+ MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
2048
+ EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
2049
+ MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
2050
+ Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
2051
+ XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
2052
+ GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
2053
+ ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
2054
+ DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
2055
+ Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
2056
+ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
2057
+ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
2058
+ SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
2059
+ hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
2060
+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
2061
+ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
2062
+ 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
2063
+ WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
2064
+ -----END CERTIFICATE-----
2065
+
2066
+ AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
2067
+ ======================================
2068
+ -----BEGIN CERTIFICATE-----
2069
+ MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
2070
+ AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
2071
+ LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
2072
+ HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
2073
+ U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
2074
+ IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
2075
+ AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
2076
+ yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
2077
+ 2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
2078
+ 4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
2079
+ 2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
2080
+ 8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
2081
+ HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
2082
+ Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
2083
+ 5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
2084
+ czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
2085
+ AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
2086
+ ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
2087
+ BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
2088
+ cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
2089
+ AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
2090
+ EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
2091
+ /zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
2092
+ MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
2093
+ 3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
2094
+ eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
2095
+ /RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
2096
+ RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
2097
+ Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
2098
+ -----END CERTIFICATE-----
2099
+
2100
+ TC TrustCenter Class 2 CA II
2101
+ ============================
2102
+ -----BEGIN CERTIFICATE-----
2103
+ MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2104
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2105
+ IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
2106
+ MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2107
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
2108
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2109
+ AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
2110
+ IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
2111
+ xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
2112
+ Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
2113
+ SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
2114
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
2115
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2116
+ Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2117
+ cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2118
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2119
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
2120
+ dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
2121
+ KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
2122
+ TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
2123
+ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
2124
+ vQ==
2125
+ -----END CERTIFICATE-----
2126
+
2127
+ TC TrustCenter Class 3 CA II
2128
+ ============================
2129
+ -----BEGIN CERTIFICATE-----
2130
+ MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2131
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2132
+ IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
2133
+ MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2134
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
2135
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2136
+ AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
2137
+ yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
2138
+ 6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
2139
+ uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
2140
+ 2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
2141
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
2142
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2143
+ Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2144
+ cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2145
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2146
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
2147
+ O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
2148
+ yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
2149
+ IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
2150
+ 092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
2151
+ 5A==
2152
+ -----END CERTIFICATE-----
2153
+
2154
+ TC TrustCenter Universal CA I
2155
+ =============================
2156
+ -----BEGIN CERTIFICATE-----
2157
+ MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
2158
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
2159
+ IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
2160
+ MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
2161
+ VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
2162
+ JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
2163
+ ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
2164
+ qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
2165
+ xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
2166
+ ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
2167
+ gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
2168
+ BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2169
+ AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
2170
+ 1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
2171
+ vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
2172
+ ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
2173
+ ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
2174
+ 7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
2175
+ -----END CERTIFICATE-----
2176
+
2177
+ Deutsche Telekom Root CA 2
2178
+ ==========================
2179
+ -----BEGIN CERTIFICATE-----
2180
+ MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
2181
+ RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
2182
+ A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
2183
+ MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
2184
+ A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
2185
+ b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
2186
+ bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
2187
+ KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
2188
+ AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
2189
+ Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
2190
+ jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
2191
+ HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
2192
+ E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
2193
+ zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
2194
+ rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
2195
+ dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
2196
+ Cm26OWMohpLzGITY+9HPBVZkVw==
2197
+ -----END CERTIFICATE-----
2198
+
2199
+ ComSign Secured CA
2200
+ ==================
2201
+ -----BEGIN CERTIFICATE-----
2202
+ MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
2203
+ AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
2204
+ NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
2205
+ QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
2206
+ ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
2207
+ 49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
2208
+ 7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
2209
+ kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
2210
+ 9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
2211
+ AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
2212
+ U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
2213
+ j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
2214
+ AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
2215
+ BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
2216
+ FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
2217
+ 51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
2218
+ OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
2219
+ -----END CERTIFICATE-----
2220
+
2221
+ Cybertrust Global Root
2222
+ ======================
2223
+ -----BEGIN CERTIFICATE-----
2224
+ MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
2225
+ ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
2226
+ MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
2227
+ ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
2228
+ +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
2229
+ 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
2230
+ AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
2231
+ 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
2232
+ 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
2233
+ BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
2234
+ MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
2235
+ A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
2236
+ lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
2237
+ 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
2238
+ hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
2239
+ X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
2240
+ WL1WMRJOEcgh4LMRkWXbtKaIOM5V
2241
+ -----END CERTIFICATE-----
2242
+
2243
+ ePKI Root Certification Authority
2244
+ =================================
2245
+ -----BEGIN CERTIFICATE-----
2246
+ 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
2272
+ -----END CERTIFICATE-----
2273
+
2274
+ T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
2275
+ =============================================================================================================================
2276
+ -----BEGIN CERTIFICATE-----
2277
+ MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
2278
+ DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
2279
+ aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
2280
+ b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
2281
+ BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
2282
+ S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
2283
+ MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
2284
+ IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
2285
+ n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
2286
+ IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
2287
+ dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
2288
+ cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
2289
+ AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
2290
+ Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
2291
+ xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
2292
+ 6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
2293
+ hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
2294
+ BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
2295
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
2296
+ N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
2297
+ y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
2298
+ LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
2299
+ dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
2300
+ -----END CERTIFICATE-----
2301
+
2302
+ Buypass Class 2 CA 1
2303
+ ====================
2304
+ -----BEGIN CERTIFICATE-----
2305
+ MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2306
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
2307
+ MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2308
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
2309
+ hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
2310
+ cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
2311
+ 0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
2312
+ 0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
2313
+ uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
2314
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
2315
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
2316
+ 1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
2317
+ 7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
2318
+ fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
2319
+ wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
2320
+ -----END CERTIFICATE-----
2321
+
2322
+ Buypass Class 3 CA 1
2323
+ ====================
2324
+ -----BEGIN CERTIFICATE-----
2325
+ MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2326
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
2327
+ MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2328
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
2329
+ hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
2330
+ ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
2331
+ n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
2332
+ AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
2333
+ 1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
2334
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
2335
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
2336
+ pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
2337
+ EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
2338
+ htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
2339
+ el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
2340
+ -----END CERTIFICATE-----
2341
+
2342
+ EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
2343
+ ==========================================================================
2344
+ -----BEGIN CERTIFICATE-----
2345
+ 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
2372
+ -----END CERTIFICATE-----
2373
+
2374
+ certSIGN ROOT CA
2375
+ ================
2376
+ -----BEGIN CERTIFICATE-----
2377
+ MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
2378
+ VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
2379
+ Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
2380
+ CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
2381
+ JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
2382
+ rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
2383
+ ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
2384
+ 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
2385
+ AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
2386
+ Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
2387
+ AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
2388
+ SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
2389
+ x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
2390
+ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
2391
+ TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
2392
+ -----END CERTIFICATE-----
2393
+
2394
+ CNNIC ROOT
2395
+ ==========
2396
+ -----BEGIN CERTIFICATE-----
2397
+ MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
2398
+ ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
2399
+ OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
2400
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
2401
+ o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
2402
+ VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
2403
+ VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
2404
+ czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
2405
+ y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
2406
+ wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
2407
+ lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
2408
+ Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
2409
+ O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
2410
+ BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
2411
+ G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
2412
+ mxE=
2413
+ -----END CERTIFICATE-----
2414
+
2415
+ ApplicationCA - Japanese Government
2416
+ ===================================
2417
+ -----BEGIN CERTIFICATE-----
2418
+ MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
2419
+ SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
2420
+ MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
2421
+ cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
2422
+ CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
2423
+ fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
2424
+ wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
2425
+ jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
2426
+ nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
2427
+ WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
2428
+ BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
2429
+ vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
2430
+ o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
2431
+ /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
2432
+ io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
2433
+ dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
2434
+ rosot4LKGAfmt1t06SAZf7IbiVQ=
2435
+ -----END CERTIFICATE-----
2436
+
2437
+ GeoTrust Primary Certification Authority - G3
2438
+ =============================================
2439
+ -----BEGIN CERTIFICATE-----
2440
+ MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
2441
+ BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
2442
+ IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
2443
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
2444
+ NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
2445
+ YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
2446
+ LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
2447
+ hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
2448
+ K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
2449
+ c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
2450
+ IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
2451
+ dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
2452
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
2453
+ 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
2454
+ cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
2455
+ Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
2456
+ AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
2457
+ t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
2458
+ -----END CERTIFICATE-----
2459
+
2460
+ thawte Primary Root CA - G2
2461
+ ===========================
2462
+ -----BEGIN CERTIFICATE-----
2463
+ MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
2464
+ VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
2465
+ IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
2466
+ Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
2467
+ MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
2468
+ b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
2469
+ IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
2470
+ LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
2471
+ 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
2472
+ mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
2473
+ G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
2474
+ rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
2475
+ -----END CERTIFICATE-----
2476
+
2477
+ thawte Primary Root CA - G3
2478
+ ===========================
2479
+ -----BEGIN CERTIFICATE-----
2480
+ MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
2481
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
2482
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
2483
+ cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
2484
+ ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
2485
+ d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
2486
+ VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
2487
+ A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2488
+ MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
2489
+ P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
2490
+ +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
2491
+ 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
2492
+ vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
2493
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
2494
+ KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
2495
+ A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
2496
+ t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
2497
+ 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
2498
+ er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
2499
+ -----END CERTIFICATE-----
2500
+
2501
+ GeoTrust Primary Certification Authority - G2
2502
+ =============================================
2503
+ -----BEGIN CERTIFICATE-----
2504
+ MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
2505
+ VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
2506
+ Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
2507
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
2508
+ OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
2509
+ MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
2510
+ b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
2511
+ BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
2512
+ KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
2513
+ VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
2514
+ EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
2515
+ ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
2516
+ npaqBA+K
2517
+ -----END CERTIFICATE-----
2518
+
2519
+ VeriSign Universal Root Certification Authority
2520
+ ===============================================
2521
+ -----BEGIN CERTIFICATE-----
2522
+ MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
2523
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
2524
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
2525
+ IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
2526
+ IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
2527
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
2528
+ cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
2529
+ IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
2530
+ aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
2531
+ 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
2532
+ MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
2533
+ 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
2534
+ AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
2535
+ tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
2536
+ CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
2537
+ a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
2538
+ DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
2539
+ Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
2540
+ Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
2541
+ P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
2542
+ wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
2543
+ mJO37M2CYfE45k+XmCpajQ==
2544
+ -----END CERTIFICATE-----
2545
+
2546
+ VeriSign Class 3 Public Primary Certification Authority - G4
2547
+ ============================================================
2548
+ -----BEGIN CERTIFICATE-----
2549
+ MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
2550
+ VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
2551
+ b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
2552
+ ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
2553
+ YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
2554
+ MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
2555
+ cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
2556
+ b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
2557
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
2558
+ Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
2559
+ rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
2560
+ /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
2561
+ HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
2562
+ Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
2563
+ A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
2564
+ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
2565
+ -----END CERTIFICATE-----
2566
+
2567
+ NetLock Arany (Class Gold) Főtanúsítvány
2568
+ ============================================
2569
+ -----BEGIN CERTIFICATE-----
2570
+ MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
2571
+ A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
2572
+ dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
2573
+ cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
2574
+ MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
2575
+ ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
2576
+ biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
2577
+ c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
2578
+ 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
2579
+ /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
2580
+ H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
2581
+ fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
2582
+ neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
2583
+ BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
2584
+ qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
2585
+ YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
2586
+ bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
2587
+ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
2588
+ dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
2589
+ -----END CERTIFICATE-----
2590
+
2591
+ Staat der Nederlanden Root CA - G2
2592
+ ==================================
2593
+ -----BEGIN CERTIFICATE-----
2594
+ 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
2620
+ 66+KAQ==
2621
+ -----END CERTIFICATE-----
2622
+
2623
+ CA Disig
2624
+ ========
2625
+ -----BEGIN CERTIFICATE-----
2626
+ MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
2627
+ QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
2628
+ MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
2629
+ bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
2630
+ DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
2631
+ GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
2632
+ Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
2633
+ hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
2634
+ ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
2635
+ gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
2636
+ AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
2637
+ aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
2638
+ ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
2639
+ BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
2640
+ WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
2641
+ mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
2642
+ CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
2643
+ ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
2644
+ 4Z7CRneC9VkGjCFMhwnN5ag=
2645
+ -----END CERTIFICATE-----
2646
+
2647
+ Juur-SK
2648
+ =======
2649
+ -----BEGIN CERTIFICATE-----
2650
+ MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
2651
+ c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
2652
+ DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
2653
+ SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
2654
+ aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
2655
+ ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
2656
+ TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
2657
+ +Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
2658
+ UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
2659
+ Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
2660
+ MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
2661
+ HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
2662
+ AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
2663
+ cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
2664
+ AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
2665
+ cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
2666
+ FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
2667
+ A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
2668
+ ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
2669
+ abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
2670
+ IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
2671
+ Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
2672
+ yyqcjg==
2673
+ -----END CERTIFICATE-----
2674
+
2675
+ Hongkong Post Root CA 1
2676
+ =======================
2677
+ -----BEGIN CERTIFICATE-----
2678
+ MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
2679
+ DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
2680
+ NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
2681
+ IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
2682
+ AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
2683
+ ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
2684
+ auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
2685
+ qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
2686
+ V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
2687
+ HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
2688
+ h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
2689
+ l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
2690
+ IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
2691
+ T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
2692
+ c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
2693
+ -----END CERTIFICATE-----
2694
+
2695
+ SecureSign RootCA11
2696
+ ===================
2697
+ -----BEGIN CERTIFICATE-----
2698
+ MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
2699
+ SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
2700
+ b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
2701
+ KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
2702
+ cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
2703
+ TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
2704
+ wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
2705
+ g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
2706
+ O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
2707
+ bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
2708
+ t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
2709
+ OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
2710
+ bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
2711
+ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
2712
+ y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
2713
+ lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
2714
+ -----END CERTIFICATE-----
2715
+
2716
+ ACEDICOM Root
2717
+ =============
2718
+ -----BEGIN CERTIFICATE-----
2719
+ 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
2745
+ -----END CERTIFICATE-----
2746
+
2747
+ Verisign Class 3 Public Primary Certification Authority
2748
+ =======================================================
2749
+ -----BEGIN CERTIFICATE-----
2750
+ MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
2751
+ FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
2752
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
2753
+ XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
2754
+ IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
2755
+ A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
2756
+ f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
2757
+ hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
2758
+ CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
2759
+ bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
2760
+ D/xwzoiQ
2761
+ -----END CERTIFICATE-----
2762
+
2763
+ Microsec e-Szigno Root CA 2009
2764
+ ==============================
2765
+ -----BEGIN CERTIFICATE-----
2766
+ MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
2767
+ MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
2768
+ c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
2769
+ dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
2770
+ BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
2771
+ U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
2772
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
2773
+ fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
2774
+ 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
2775
+ pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
2776
+ 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
2777
+ AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
2778
+ QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
2779
+ FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
2780
+ lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
2781
+ I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
2782
+ tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
2783
+ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
2784
+ LXpUq3DDfSJlgnCW
2785
+ -----END CERTIFICATE-----
2786
+
2787
+ E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
2788
+ ===================================================
2789
+ -----BEGIN CERTIFICATE-----
2790
+ MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
2791
+ EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
2792
+ ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
2793
+ MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
2794
+ cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
2795
+ aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2796
+ AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
2797
+ 8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
2798
+ jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
2799
+ JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
2800
+ 9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
2801
+ AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
2802
+ SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
2803
+ F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
2804
+ D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
2805
+ Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
2806
+ fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
2807
+ -----END CERTIFICATE-----
2808
+
2809
+ GlobalSign Root CA - R3
2810
+ =======================
2811
+ -----BEGIN CERTIFICATE-----
2812
+ MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
2813
+ YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
2814
+ bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
2815
+ aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
2816
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
2817
+ iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
2818
+ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
2819
+ rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
2820
+ OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
2821
+ xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
2822
+ FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
2823
+ lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
2824
+ EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
2825
+ bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
2826
+ YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
2827
+ kpeDMdmztcpHWD9f
2828
+ -----END CERTIFICATE-----
2829
+
2830
+ TC TrustCenter Universal CA III
2831
+ ===============================
2832
+ -----BEGIN CERTIFICATE-----
2833
+ MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
2834
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
2835
+ IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
2836
+ Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
2837
+ QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
2838
+ KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
2839
+ AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
2840
+ QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
2841
+ juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
2842
+ CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
2843
+ M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
2844
+ A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
2845
+ BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
2846
+ g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
2847
+ KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
2848
+ BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
2849
+ CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
2850
+ woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
2851
+ -----END CERTIFICATE-----
2852
+
2853
+ Autoridad de Certificacion Firmaprofesional CIF A62634068
2854
+ =========================================================
2855
+ -----BEGIN CERTIFICATE-----
2856
+ MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
2857
+ BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
2858
+ MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
2859
+ QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
2860
+ NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
2861
+ Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
2862
+ B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
2863
+ 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
2864
+ ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
2865
+ plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
2866
+ MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
2867
+ LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
2868
+ bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
2869
+ vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
2870
+ EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
2871
+ DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
2872
+ cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
2873
+ bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
2874
+ ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
2875
+ 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
2876
+ R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
2877
+ T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
2878
+ Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
2879
+ osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
2880
+ crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
2881
+ saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
2882
+ KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
2883
+ 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
2884
+ -----END CERTIFICATE-----
2885
+
2886
+ Izenpe.com
2887
+ ==========
2888
+ -----BEGIN CERTIFICATE-----
2889
+ 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
2916
+ -----END CERTIFICATE-----
2917
+
2918
+ Chambers of Commerce Root - 2008
2919
+ ================================
2920
+ -----BEGIN CERTIFICATE-----
2921
+ MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
2922
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2923
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2924
+ QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
2925
+ Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
2926
+ ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
2927
+ EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
2928
+ cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
2929
+ AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
2930
+ XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
2931
+ h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
2932
+ ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
2933
+ NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
2934
+ D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
2935
+ lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
2936
+ 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
2937
+ ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
2938
+ EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
2939
+ G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
2940
+ BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
2941
+ bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
2942
+ bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
2943
+ CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
2944
+ AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
2945
+ wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
2946
+ 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
2947
+ RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
2948
+ M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
2949
+ YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
2950
+ 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
2951
+ zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
2952
+ nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
2953
+ OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
2954
+ -----END CERTIFICATE-----
2955
+
2956
+ Global Chambersign Root - 2008
2957
+ ==============================
2958
+ -----BEGIN CERTIFICATE-----
2959
+ MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
2960
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2961
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2962
+ QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
2963
+ NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
2964
+ Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
2965
+ QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
2966
+ aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
2967
+ VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
2968
+ XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
2969
+ ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
2970
+ /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
2971
+ TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
2972
+ H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
2973
+ Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
2974
+ HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
2975
+ wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
2976
+ AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
2977
+ BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
2978
+ BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
2979
+ aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
2980
+ aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
2981
+ 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
2982
+ dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
2983
+ /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
2984
+ ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
2985
+ dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
2986
+ 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
2987
+ foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
2988
+ qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
2989
+ P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
2990
+ c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
2991
+ 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
2992
+ -----END CERTIFICATE-----
2993
+
2994
+ Go Daddy Root Certificate Authority - G2
2995
+ ========================================
2996
+ -----BEGIN CERTIFICATE-----
2997
+ MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2998
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
2999
+ MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
3000
+ MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
3001
+ b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
3002
+ A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
3003
+ hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
3004
+ 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
3005
+ +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
3006
+ fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
3007
+ NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
3008
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
3009
+ BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
3010
+ vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
3011
+ 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
3012
+ N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
3013
+ LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
3014
+ -----END CERTIFICATE-----
3015
+
3016
+ Starfield Root Certificate Authority - G2
3017
+ =========================================
3018
+ -----BEGIN CERTIFICATE-----
3019
+ MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3020
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
3021
+ b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
3022
+ eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
3023
+ DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
3024
+ VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
3025
+ dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
3026
+ W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
3027
+ bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
3028
+ N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
3029
+ ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
3030
+ JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3031
+ AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
3032
+ TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
3033
+ 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
3034
+ F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
3035
+ pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
3036
+ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
3037
+ -----END CERTIFICATE-----
3038
+
3039
+ Starfield Services Root Certificate Authority - G2
3040
+ ==================================================
3041
+ -----BEGIN CERTIFICATE-----
3042
+ MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3043
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
3044
+ b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
3045
+ IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
3046
+ BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
3047
+ dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
3048
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
3049
+ AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
3050
+ h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
3051
+ hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
3052
+ LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
3053
+ rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
3054
+ AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
3055
+ SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
3056
+ E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
3057
+ xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
3058
+ iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
3059
+ YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
3060
+ -----END CERTIFICATE-----
3061
+
3062
+ AffirmTrust Commercial
3063
+ ======================
3064
+ -----BEGIN CERTIFICATE-----
3065
+ MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
3066
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
3067
+ MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
3068
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
3069
+ AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
3070
+ DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
3071
+ C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
3072
+ BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
3073
+ MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
3074
+ HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3075
+ AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
3076
+ hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
3077
+ qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
3078
+ 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
3079
+ sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
3080
+ -----END CERTIFICATE-----
3081
+
3082
+ AffirmTrust Networking
3083
+ ======================
3084
+ -----BEGIN CERTIFICATE-----
3085
+ MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
3086
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
3087
+ MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
3088
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
3089
+ AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
3090
+ Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
3091
+ dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
3092
+ /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
3093
+ h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
3094
+ HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3095
+ AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
3096
+ UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
3097
+ 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
3098
+ WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
3099
+ /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
3100
+ -----END CERTIFICATE-----
3101
+
3102
+ AffirmTrust Premium
3103
+ ===================
3104
+ -----BEGIN CERTIFICATE-----
3105
+ MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
3106
+ BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
3107
+ OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
3108
+ dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3109
+ MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
3110
+ BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
3111
+ 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
3112
+ +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
3113
+ GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
3114
+ p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
3115
+ S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
3116
+ 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
3117
+ /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
3118
+ +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
3119
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
3120
+ MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
3121
+ Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
3122
+ 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
3123
+ L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
3124
+ +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
3125
+ BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
3126
+ IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
3127
+ g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
3128
+ zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
3129
+ -----END CERTIFICATE-----
3130
+
3131
+ AffirmTrust Premium ECC
3132
+ =======================
3133
+ -----BEGIN CERTIFICATE-----
3134
+ MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
3135
+ BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
3136
+ MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
3137
+ cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
3138
+ IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
3139
+ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
3140
+ BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
3141
+ BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
3142
+ 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
3143
+ eQ==
3144
+ -----END CERTIFICATE-----
3145
+
3146
+ Certum Trusted Network CA
3147
+ =========================
3148
+ -----BEGIN CERTIFICATE-----
3149
+ MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
3150
+ ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
3151
+ biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
3152
+ MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
3153
+ ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
3154
+ MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
3155
+ AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
3156
+ l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
3157
+ J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
3158
+ fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
3159
+ cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
3160
+ Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
3161
+ DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
3162
+ jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
3163
+ mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
3164
+ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
3165
+ 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
3166
+ -----END CERTIFICATE-----
3167
+
3168
+ Certinomis - Autorité Racine
3169
+ =============================
3170
+ -----BEGIN CERTIFICATE-----
3171
+ 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
3196
+ vgt2Fl43N+bYdJeimUV5
3197
+ -----END CERTIFICATE-----
3198
+
3199
+ Root CA Generalitat Valenciana
3200
+ ==============================
3201
+ -----BEGIN CERTIFICATE-----
3202
+ MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
3203
+ ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
3204
+ IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
3205
+ WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
3206
+ CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
3207
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
3208
+ F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
3209
+ ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
3210
+ D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
3211
+ JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
3212
+ AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
3213
+ dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
3214
+ ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
3215
+ AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
3216
+ YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
3217
+ AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
3218
+ aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
3219
+ AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
3220
+ YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
3221
+ AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
3222
+ OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
3223
+ dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
3224
+ BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
3225
+ A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
3226
+ b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
3227
+ TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
3228
+ Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
3229
+ NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
3230
+ iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
3231
+ +GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
3232
+ -----END CERTIFICATE-----
3233
+
3234
+ A-Trust-nQual-03
3235
+ ================
3236
+ -----BEGIN CERTIFICATE-----
3237
+ MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
3238
+ Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
3239
+ a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
3240
+ dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
3241
+ RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
3242
+ ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
3243
+ c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
3244
+ zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
3245
+ yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
3246
+ SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
3247
+ iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
3248
+ cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
3249
+ eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
3250
+ ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
3251
+ sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
3252
+ JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
3253
+ mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
3254
+ ahq97BvIxYSazQ==
3255
+ -----END CERTIFICATE-----
3256
+
3257
+ TWCA Root Certification Authority
3258
+ =================================
3259
+ -----BEGIN CERTIFICATE-----
3260
+ MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
3261
+ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
3262
+ dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
3263
+ EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
3264
+ IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
3265
+ AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
3266
+ QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
3267
+ oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
3268
+ 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
3269
+ y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
3270
+ BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
3271
+ 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
3272
+ mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
3273
+ QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
3274
+ T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
3275
+ Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
3276
+ -----END CERTIFICATE-----
3277
+
3278
+ Security Communication RootCA2
3279
+ ==============================
3280
+ -----BEGIN CERTIFICATE-----
3281
+ MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
3282
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
3283
+ dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
3284
+ SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
3285
+ aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
3286
+ ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
3287
+ +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
3288
+ 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
3289
+ spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
3290
+ EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
3291
+ QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
3292
+ CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
3293
+ u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
3294
+ 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
3295
+ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
3296
+ mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
3297
+ -----END CERTIFICATE-----
3298
+
3299
+ EC-ACC
3300
+ ======
3301
+ -----BEGIN CERTIFICATE-----
3302
+ MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
3303
+ BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
3304
+ ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
3305
+ VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
3306
+ CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
3307
+ BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
3308
+ MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
3309
+ SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
3310
+ Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
3311
+ cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
3312
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
3313
+ w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
3314
+ ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
3315
+ HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
3316
+ E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
3317
+ 0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
3318
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
3319
+ VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
3320
+ Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
3321
+ dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
3322
+ lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
3323
+ Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
3324
+ l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
3325
+ E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
3326
+ 5EI=
3327
+ -----END CERTIFICATE-----
3328
+
3329
+ Hellenic Academic and Research Institutions RootCA 2011
3330
+ =======================================================
3331
+ -----BEGIN CERTIFICATE-----
3332
+ MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
3333
+ O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
3334
+ aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
3335
+ IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
3336
+ AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
3337
+ IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
3338
+ IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
3339
+ AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
3340
+ 1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
3341
+ 71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
3342
+ 8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
3343
+ 3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
3344
+ MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
3345
+ MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
3346
+ b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
3347
+ XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
3348
+ TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
3349
+ /md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
3350
+ 7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
3351
+ -----END CERTIFICATE-----
3352
+
3353
+ Actalis Authentication Root CA
3354
+ ==============================
3355
+ -----BEGIN CERTIFICATE-----
3356
+ MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
3357
+ BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
3358
+ AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
3359
+ MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
3360
+ IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
3361
+ IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
3362
+ wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
3363
+ by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
3364
+ zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
3365
+ YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
3366
+ oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
3367
+ EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
3368
+ hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
3369
+ EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
3370
+ jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
3371
+ iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
3372
+ ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
3373
+ WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
3374
+ JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
3375
+ K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
3376
+ Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
3377
+ 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
3378
+ 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
3379
+ lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
3380
+ OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
3381
+ vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
3382
+ -----END CERTIFICATE-----
3383
+
3384
+ Trustis FPS Root CA
3385
+ ===================
3386
+ -----BEGIN CERTIFICATE-----
3387
+ MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
3388
+ EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
3389
+ IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
3390
+ BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
3391
+ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
3392
+ RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
3393
+ H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
3394
+ cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
3395
+ o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
3396
+ AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
3397
+ BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
3398
+ GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
3399
+ yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
3400
+ 8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
3401
+ l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
3402
+ iB6XzCGcKQENZetX2fNXlrtIzYE=
3403
+ -----END CERTIFICATE-----
3404
+
3405
+ StartCom Certification Authority
3406
+ ================================
3407
+ -----BEGIN CERTIFICATE-----
3408
+ MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
3409
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
3410
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
3411
+ NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
3412
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
3413
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
3414
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
3415
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
3416
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
3417
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
3418
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
3419
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
3420
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
3421
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
3422
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
3423
+ 37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
3424
+ VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
3425
+ Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
3426
+ dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
3427
+ c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
3428
+ bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
3429
+ aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
3430
+ aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
3431
+ L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
3432
+ cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
3433
+ fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
3434
+ N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
3435
+ Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
3436
+ tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
3437
+ e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
3438
+ 2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
3439
+ HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
3440
+ JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
3441
+ D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
3442
+ -----END CERTIFICATE-----
3443
+
3444
+ StartCom Certification Authority G2
3445
+ ===================================
3446
+ -----BEGIN CERTIFICATE-----
3447
+ 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
3471
+ obp573PYtlNXLfbQ4ddI
3472
+ -----END CERTIFICATE-----
3473
+
3474
+ Buypass Class 2 Root CA
3475
+ =======================
3476
+ -----BEGIN CERTIFICATE-----
3477
+ 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
3501
+ rJgWVqA=
3502
+ -----END CERTIFICATE-----
3503
+
3504
+ Buypass Class 3 Root CA
3505
+ =======================
3506
+ -----BEGIN CERTIFICATE-----
3507
+ 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
3531
+ Cp/HuZc=
3532
+ -----END CERTIFICATE-----
3533
+
3534
+ T-TeleSec GlobalRoot Class 3
3535
+ ============================
3536
+ -----BEGIN CERTIFICATE-----
3537
+ MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
3538
+ IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
3539
+ cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
3540
+ MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
3541
+ dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
3542
+ ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
3543
+ DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
3544
+ 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
3545
+ NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
3546
+ iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
3547
+ 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
3548
+ MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
3549
+ AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
3550
+ fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
3551
+ ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
3552
+ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
3553
+ e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
3554
+ -----END CERTIFICATE-----
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Transport/fsockopen.php ADDED
@@ -0,0 +1,394 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * fsockopen HTTP transport
4
+ *
5
+ * @package Requests
6
+ * @subpackage Transport
7
+ */
8
+
9
+ /**
10
+ * fsockopen HTTP transport
11
+ *
12
+ * @package Requests
13
+ * @subpackage Transport
14
+ */
15
+ class Requests_Transport_fsockopen implements Requests_Transport {
16
+ /**
17
+ * Raw HTTP data
18
+ *
19
+ * @var string
20
+ */
21
+ public $headers = '';
22
+
23
+ /**
24
+ * Stream metadata
25
+ *
26
+ * @var array Associative array of properties, see {@see http://php.net/stream_get_meta_data}
27
+ */
28
+ public $info;
29
+
30
+ protected $connect_error = '';
31
+
32
+ /**
33
+ * Perform a request
34
+ *
35
+ * @throws Requests_Exception On failure to connect to socket (`fsockopenerror`)
36
+ * @throws Requests_Exception On socket timeout (`timeout`)
37
+ *
38
+ * @param string $url URL to request
39
+ * @param array $headers Associative array of request headers
40
+ * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD
41
+ * @param array $options Request options, see {@see Requests::response()} for documentation
42
+ * @return string Raw HTTP result
43
+ */
44
+ public function request($url, $headers = array(), $data = array(), $options = array()) {
45
+ $options['hooks']->dispatch('fsockopen.before_request');
46
+
47
+ $url_parts = parse_url($url);
48
+ $host = $url_parts['host'];
49
+ $context = stream_context_create();
50
+ $verifyname = false;
51
+
52
+ // HTTPS support
53
+ if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https') {
54
+ $remote_socket = 'ssl://' . $host;
55
+ $url_parts['port'] = 443;
56
+
57
+ $context_options = array(
58
+ 'verify_peer' => true,
59
+ // 'CN_match' => $host,
60
+ 'capture_peer_cert' => true
61
+ );
62
+ $verifyname = true;
63
+
64
+ // SNI, if enabled (OpenSSL >=0.9.8j)
65
+ if (defined('OPENSSL_TLSEXT_SERVER_NAME') && OPENSSL_TLSEXT_SERVER_NAME) {
66
+ $context_options['SNI_enabled'] = true;
67
+ if (isset($options['verifyname']) && $options['verifyname'] === false) {
68
+ $context_options['SNI_enabled'] = false;
69
+ }
70
+ }
71
+
72
+ if (isset($options['verify'])) {
73
+ if ($options['verify'] === false) {
74
+ $context_options['verify_peer'] = false;
75
+ } elseif (is_string($options['verify'])) {
76
+ $context_options['cafile'] = $options['verify'];
77
+ }
78
+ }
79
+
80
+ if (isset($options['verifyname']) && $options['verifyname'] === false) {
81
+ $verifyname = false;
82
+ }
83
+
84
+ stream_context_set_option($context, array('ssl' => $context_options));
85
+ }
86
+ else {
87
+ $remote_socket = 'tcp://' . $host;
88
+ }
89
+
90
+ $proxy = isset( $options['proxy'] );
91
+ $proxy_auth = $proxy && isset( $options['proxy_username'] ) && isset( $options['proxy_password'] );
92
+
93
+ if (!isset($url_parts['port'])) {
94
+ $url_parts['port'] = 80;
95
+ }
96
+ $remote_socket .= ':' . $url_parts['port'];
97
+
98
+ set_error_handler(array($this, 'connect_error_handler'), E_WARNING | E_NOTICE);
99
+
100
+ $options['hooks']->dispatch('fsockopen.remote_socket', array(&$remote_socket));
101
+
102
+ $fp = stream_socket_client($remote_socket, $errno, $errstr, $options['timeout'], STREAM_CLIENT_CONNECT, $context);
103
+
104
+ restore_error_handler();
105
+
106
+ if ($verifyname) {
107
+ if (!$this->verify_certificate_from_context($host, $context)) {
108
+ throw new Requests_Exception('SSL certificate did not match the requested domain name', 'ssl.no_match');
109
+ }
110
+ }
111
+
112
+ if (!$fp) {
113
+ if ($errno === 0) {
114
+ // Connection issue
115
+ throw new Requests_Exception(rtrim($this->connect_error), 'fsockopen.connect_error');
116
+ }
117
+ else {
118
+ throw new Requests_Exception($errstr, 'fsockopenerror');
119
+ return;
120
+ }
121
+ }
122
+
123
+ $request_body = '';
124
+ $out = '';
125
+ switch ($options['type']) {
126
+ case Requests::POST:
127
+ case Requests::PUT:
128
+ case Requests::PATCH:
129
+ if (isset($url_parts['path'])) {
130
+ $path = $url_parts['path'];
131
+ if (isset($url_parts['query'])) {
132
+ $path .= '?' . $url_parts['query'];
133
+ }
134
+ }
135
+ else {
136
+ $path = '/';
137
+ }
138
+
139
+ $options['hooks']->dispatch( 'fsockopen.remote_host_path', array( &$path, $url ) );
140
+ $out = $options['type'] . " $path HTTP/1.0\r\n";
141
+
142
+ if (is_array($data)) {
143
+ $request_body = http_build_query($data, null, '&');
144
+ }
145
+ else {
146
+ $request_body = $data;
147
+ }
148
+ if (empty($headers['Content-Length'])) {
149
+ $headers['Content-Length'] = strlen($request_body);
150
+ }
151
+ if (empty($headers['Content-Type'])) {
152
+ $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
153
+ }
154
+ break;
155
+ case Requests::HEAD:
156
+ case Requests::GET:
157
+ case Requests::DELETE:
158
+ $path = self::format_get($url_parts, $data);
159
+ $options['hooks']->dispatch('fsockopen.remote_host_path', array(&$path, $url));
160
+ $out = $options['type'] . " $path HTTP/1.0\r\n";
161
+ break;
162
+ }
163
+ $out .= "Host: {$url_parts['host']}";
164
+
165
+ if ($url_parts['port'] !== 80) {
166
+ $out .= ":{$url_parts['port']}";
167
+ }
168
+ $out .= "\r\n";
169
+
170
+ $out .= "User-Agent: {$options['useragent']}\r\n";
171
+ $accept_encoding = $this->accept_encoding();
172
+ if (!empty($accept_encoding)) {
173
+ $out .= "Accept-Encoding: $accept_encoding\r\n";
174
+ }
175
+
176
+ $headers = Requests::flatten($headers);
177
+
178
+ if (!empty($headers)) {
179
+ $out .= implode($headers, "\r\n") . "\r\n";
180
+ }
181
+
182
+ $options['hooks']->dispatch('fsockopen.after_headers', array(&$out));
183
+
184
+ if (substr($out, -2) !== "\r\n") {
185
+ $out .= "\r\n";
186
+ }
187
+
188
+ $out .= "Connection: Close\r\n\r\n" . $request_body;
189
+
190
+ $options['hooks']->dispatch('fsockopen.before_send', array(&$out));
191
+
192
+ fwrite($fp, $out);
193
+ $options['hooks']->dispatch('fsockopen.after_send', array(&$fake_headers));
194
+
195
+ if (!$options['blocking']) {
196
+ fclose($fp);
197
+ $fake_headers = '';
198
+ $options['hooks']->dispatch('fsockopen.after_request', array(&$fake_headers));
199
+ return '';
200
+ }
201
+ stream_set_timeout($fp, $options['timeout']);
202
+
203
+ $this->info = stream_get_meta_data($fp);
204
+
205
+ $this->headers = '';
206
+ $this->info = stream_get_meta_data($fp);
207
+ if (!$options['filename']) {
208
+ while (!feof($fp)) {
209
+ $this->info = stream_get_meta_data($fp);
210
+ if ($this->info['timed_out']) {
211
+ throw new Requests_Exception('fsocket timed out', 'timeout');
212
+ }
213
+
214
+ $this->headers .= fread($fp, 1160);
215
+ }
216
+ }
217
+ else {
218
+ $download = fopen($options['filename'], 'wb');
219
+ $doingbody = false;
220
+ $response = '';
221
+ while (!feof($fp)) {
222
+ $this->info = stream_get_meta_data($fp);
223
+ if ($this->info['timed_out']) {
224
+ throw new Requests_Exception('fsocket timed out', 'timeout');
225
+ }
226
+
227
+ $block = fread($fp, 1160);
228
+ if ($doingbody) {
229
+ fwrite($download, $block);
230
+ }
231
+ else {
232
+ $response .= $block;
233
+ if (strpos($response, "\r\n\r\n")) {
234
+ list($this->headers, $block) = explode("\r\n\r\n", $response, 2);
235
+ $doingbody = true;
236
+ fwrite($download, $block);
237
+ }
238
+ }
239
+ }
240
+ fclose($download);
241
+ }
242
+ fclose($fp);
243
+
244
+ $options['hooks']->dispatch('fsockopen.after_request', array(&$this->headers));
245
+ return $this->headers;
246
+ }
247
+
248
+ /**
249
+ * Send multiple requests simultaneously
250
+ *
251
+ * @param array $requests Request data (array of 'url', 'headers', 'data', 'options') as per {@see Requests_Transport::request}
252
+ * @param array $options Global options, see {@see Requests::response()} for documentation
253
+ * @return array Array of Requests_Response objects (may contain Requests_Exception or string responses as well)
254
+ */
255
+ public function request_multiple($requests, $options) {
256
+ $responses = array();
257
+ $class = get_class($this);
258
+ foreach ($requests as $id => $request) {
259
+ try {
260
+ $handler = new $class();
261
+ $responses[$id] = $handler->request($request['url'], $request['headers'], $request['data'], $request['options']);
262
+
263
+ $request['options']['hooks']->dispatch('transport.internal.parse_response', array(&$responses[$id], $request));
264
+ }
265
+ catch (Requests_Exception $e) {
266
+ $responses[$id] = $e;
267
+ }
268
+
269
+ if (!is_string($responses[$id])) {
270
+ $request['options']['hooks']->dispatch('multiple.request.complete', array(&$responses[$id], $id));
271
+ }
272
+ }
273
+
274
+ return $responses;
275
+ }
276
+
277
+ /**
278
+ * Retrieve the encodings we can accept
279
+ *
280
+ * @return string Accept-Encoding header value
281
+ */
282
+ protected static function accept_encoding() {
283
+ $type = array();
284
+ if (function_exists('gzinflate')) {
285
+ $type[] = 'deflate;q=1.0';
286
+ }
287
+
288
+ if (function_exists('gzuncompress')) {
289
+ $type[] = 'compress;q=0.5';
290
+ }
291
+
292
+ $type[] = 'gzip;q=0.5';
293
+
294
+ return implode(', ', $type);
295
+ }
296
+
297
+ /**
298
+ * Format a URL given GET data
299
+ *
300
+ * @param array $url_parts
301
+ * @param array|object $data Data to build query using, see {@see http://php.net/http_build_query}
302
+ * @return string URL with data
303
+ */
304
+ protected static function format_get($url_parts, $data) {
305
+ if (!empty($data)) {
306
+ if (empty($url_parts['query']))
307
+ $url_parts['query'] = '';
308
+
309
+ $url_parts['query'] .= '&' . http_build_query($data, null, '&');
310
+ $url_parts['query'] = trim($url_parts['query'], '&');
311
+ }
312
+ if (isset($url_parts['path'])) {
313
+ if (isset($url_parts['query'])) {
314
+ $get = $url_parts['path'] . '?' . $url_parts['query'];
315
+ }
316
+ else {
317
+ $get = $url_parts['path'];
318
+ }
319
+ }
320
+ else {
321
+ $get = '/';
322
+ }
323
+ return $get;
324
+ }
325
+
326
+ /**
327
+ * Error handler for stream_socket_client()
328
+ *
329
+ * @param int $errno Error number (e.g. E_WARNING)
330
+ * @param string $errstr Error message
331
+ */
332
+ public function connect_error_handler($errno, $errstr) {
333
+ // Double-check we can handle it
334
+ if (($errno & E_WARNING) === 0 && ($errno & E_NOTICE) === 0) {
335
+ // Return false to indicate the default error handler should engage
336
+ return false;
337
+ }
338
+
339
+ $this->connect_error .= $errstr . "\n";
340
+ return true;
341
+ }
342
+
343
+ /**
344
+ * Verify the certificate against common name and subject alternative names
345
+ *
346
+ * Unfortunately, PHP doesn't check the certificate against the alternative
347
+ * names, leading things like 'https://www.github.com/' to be invalid.
348
+ * Instead
349
+ *
350
+ * @see http://tools.ietf.org/html/rfc2818#section-3.1 RFC2818, Section 3.1
351
+ *
352
+ * @throws Requests_Exception On failure to connect via TLS (`fsockopen.ssl.connect_error`)
353
+ * @throws Requests_Exception On not obtaining a match for the host (`fsockopen.ssl.no_match`)
354
+ * @param string $host Host name to verify against
355
+ * @param resource $context Stream context
356
+ * @return bool
357
+ */
358
+ public function verify_certificate_from_context($host, $context) {
359
+ $meta = stream_context_get_options($context);
360
+
361
+ // If we don't have SSL options, then we couldn't make the connection at
362
+ // all
363
+ if (empty($meta) || empty($meta['ssl']) || empty($meta['ssl']['peer_certificate'])) {
364
+ throw new Requests_Exception(rtrim($this->connect_error), 'ssl.connect_error');
365
+ }
366
+
367
+ $cert = openssl_x509_parse($meta['ssl']['peer_certificate']);
368
+
369
+ return Requests_SSL::verify_certificate($host, $cert);
370
+ }
371
+
372
+ /**
373
+ * Whether this transport is valid
374
+ *
375
+ * @codeCoverageIgnore
376
+ * @return boolean True if the transport is valid, false otherwise.
377
+ */
378
+ public static function test($capabilities = array()) {
379
+ if (!function_exists('fsockopen'))
380
+ return false;
381
+
382
+ // If needed, check that streams support SSL
383
+ if (isset( $capabilities['ssl'] ) && $capabilities['ssl']) {
384
+ if (!extension_loaded('openssl') || !function_exists('openssl_x509_parse'))
385
+ return false;
386
+
387
+ // Currently broken, thanks to https://github.com/facebook/hhvm/issues/2156
388
+ if (defined('HHVM_VERSION'))
389
+ return false;
390
+ }
391
+
392
+ return true;
393
+ }
394
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Utility/CaseInsensitiveDictionary.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Case-insensitive dictionary, suitable for HTTP headers
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * Case-insensitive dictionary, suitable for HTTP headers
11
+ *
12
+ * @package Requests
13
+ * @subpackage Utilities
14
+ */
15
+ class Requests_Utility_CaseInsensitiveDictionary implements ArrayAccess, IteratorAggregate {
16
+ /**
17
+ * Actual item data
18
+ *
19
+ * @var array
20
+ */
21
+ protected $data = array();
22
+
23
+ /**
24
+ * Check if the given item exists
25
+ *
26
+ * @param string $key Item key
27
+ * @return boolean Does the item exist?
28
+ */
29
+ public function offsetExists($key) {
30
+ $key = strtolower($key);
31
+ return isset($this->data[$key]);
32
+ }
33
+
34
+ /**
35
+ * Get the value for the item
36
+ *
37
+ * @param string $key Item key
38
+ * @return string Item value
39
+ */
40
+ public function offsetGet($key) {
41
+ $key = strtolower($key);
42
+ if (!isset($this->data[$key]))
43
+ return null;
44
+
45
+ return $this->data[$key];
46
+ }
47
+
48
+ /**
49
+ * Set the given item
50
+ *
51
+ * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
52
+ *
53
+ * @param string $key Item name
54
+ * @param string $value Item value
55
+ */
56
+ public function offsetSet($key, $value) {
57
+ if ($key === null) {
58
+ throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
59
+ }
60
+
61
+ $key = strtolower($key);
62
+ $this->data[$key] = $value;
63
+ }
64
+
65
+ /**
66
+ * Unset the given header
67
+ *
68
+ * @param string $key
69
+ */
70
+ public function offsetUnset($key) {
71
+ unset($this->data[strtolower($key)]);
72
+ }
73
+
74
+ /**
75
+ * Get an iterator for the data
76
+ *
77
+ * @return ArrayIterator
78
+ */
79
+ public function getIterator() {
80
+ return new ArrayIterator($this->data);
81
+ }
82
+
83
+ /**
84
+ * Get the headers as an array
85
+ *
86
+ * @return array Header data
87
+ */
88
+ public function getAll() {
89
+ return $this->data;
90
+ }
91
+ }
razorpay-sdk/libs/Requests-1.6.1/library/Requests/Utility/FilteredIterator.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Iterator for arrays requiring filtered values
4
+ *
5
+ * @package Requests
6
+ * @subpackage Utilities
7
+ */
8
+
9
+ /**
10
+ * Iterator for arrays requiring filtered values
11
+ *
12
+ * @package Requests
13
+ * @subpackage Utilities
14
+ */
15
+ class Requests_Utility_FilteredIterator extends ArrayIterator {
16
+ /**
17
+ * Create a new iterator
18
+ *
19
+ * @param array $data
20
+ * @param callable $callback Callback to be called on each value
21
+ */
22
+ public function __construct($data, $callback) {
23
+ parent::__construct($data);
24
+
25
+ $this->callback = $callback;
26
+ }
27
+
28
+ /**
29
+ * Get the current item's value after filtering
30
+ *
31
+ * @return string
32
+ */
33
+ public function current() {
34
+ $value = parent::current();
35
+ $value = call_user_func($this->callback, $value);
36
+ return $value;
37
+ }
38
+ }
razorpay-sdk/src/Api.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ class Api
6
+ {
7
+ public static $baseUrl = "https://api.razorpay.com/v1/";
8
+
9
+ public static $key = null;
10
+
11
+ public static $secret = null;
12
+
13
+ const VERSION = '1.2.8';
14
+
15
+ /**
16
+ * @param string $key
17
+ * @param string $secret
18
+ */
19
+ function __construct($key, $secret)
20
+ {
21
+ self::$key = $key;
22
+ self::$secret = $secret;
23
+
24
+ // Add the version to all HTTP Requests
25
+ Request::addHeader('User-Agent', "Razorpay-PHP/".self::VERSION);
26
+ }
27
+
28
+ /*
29
+ * Set Headers
30
+ *
31
+ */
32
+ function setHeader($header, $value)
33
+ {
34
+ Request::addHeader($header, $value);
35
+ }
36
+
37
+ /**
38
+ * @param string $name
39
+ * @return mixed
40
+ */
41
+ function __get($name)
42
+ {
43
+ $className = __NAMESPACE__.'\\'.ucwords($name);
44
+
45
+ $entity = new $className();
46
+
47
+ return $entity;
48
+ }
49
+ }
razorpay-sdk/src/ArrayableInterface.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ interface ArrayableInterface
6
+ {
7
+ /**
8
+ * Get the instance as an array.
9
+ *
10
+ * @return array
11
+ */
12
+ public function toArray();
13
+ }
razorpay-sdk/src/Collection.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ use Countable;
6
+
7
+ class Collection extends Entity implements Countable
8
+ {
9
+ public function count()
10
+ {
11
+ $count = 0;
12
+
13
+ if (isset($this->attributes['count']))
14
+ {
15
+ return $this->attributes['count'];
16
+ }
17
+
18
+ return $count;
19
+ }
20
+ }
razorpay-sdk/src/Customer.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ class Customer extends Entity
6
+ {
7
+ /**
8
+ * @param $id Customer id description
9
+ */
10
+ public function fetch($id)
11
+ {
12
+ return parent::fetch($id);
13
+ }
14
+
15
+ public function create($attributes = array())
16
+ {
17
+ return parent::create($attributes);
18
+ }
19
+
20
+ public function edit($attributes = null)
21
+ {
22
+ $entityUrl = $this->getEntityUrl().$this->id;
23
+
24
+ return $this->request('PUT', $entityUrl, $attributes);
25
+ }
26
+
27
+ public function tokens()
28
+ {
29
+ $token = new Token();
30
+
31
+ $token['customer_id'] = $this->id;
32
+
33
+ return $token;
34
+ }
35
+ }
razorpay-sdk/src/Entity.php ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ use Razorpay\Api\Errors;
6
+
7
+ class Entity extends Resource implements ArrayableInterface
8
+ {
9
+ protected $attributes = array();
10
+
11
+ protected function create($attributes = null)
12
+ {
13
+ $entityUrl = $this->getEntityUrl();
14
+
15
+ return $this->request('POST', $entityUrl, $attributes);
16
+ }
17
+
18
+ protected function fetch($id)
19
+ {
20
+ $entityUrl = $this->getEntityUrl();
21
+
22
+ if ($id === null)
23
+ {
24
+ $path = explode('\\', get_class($this));
25
+ $class = strtolower(array_pop($path));
26
+
27
+ $message = 'The ' . $class . ' id provided is null';
28
+
29
+ $code = Errors\ErrorCode::BAD_REQUEST_ERROR;
30
+
31
+ throw new Errors\BadRequestError($message, $code, 500);
32
+ }
33
+
34
+ $relativeUrl = $entityUrl . $id;
35
+
36
+ return $this->request('GET', $relativeUrl);
37
+ }
38
+
39
+ protected function all($options = array())
40
+ {
41
+ $entityUrl = $this->getEntityUrl();
42
+
43
+ return $this->request('GET', $entityUrl, $options);
44
+ }
45
+
46
+ protected function getEntityUrl()
47
+ {
48
+ $fullClassName = get_class($this);
49
+ $pos = strrpos($fullClassName, '\\');
50
+ $className = substr($fullClassName, $pos + 1);
51
+ $className = lcfirst($className);
52
+ return $className.'s/';
53
+ }
54
+
55
+ protected function request($method, $relativeUrl, $data = null)
56
+ {
57
+ $request = new Request();
58
+
59
+ $response = $request->request($method, $relativeUrl, $data);
60
+
61
+ if ((isset($response['entity'])) and
62
+ ($response['entity'] == $this->getEntity()))
63
+ {
64
+ $this->fill($response);
65
+
66
+ return $this;
67
+ }
68
+ else
69
+ {
70
+ return static::buildEntity($response);
71
+ }
72
+ }
73
+
74
+ protected static function buildEntity($data)
75
+ {
76
+ $entities = static::getDefinedEntitiesArray();
77
+
78
+ if (isset($data['entity']))
79
+ {
80
+ if (in_array($data['entity'], $entities))
81
+ {
82
+ $class = static::getEntityClass($data['entity']);
83
+ $entity = new $class;
84
+ }
85
+ else
86
+ {
87
+ $entity = new static;
88
+ }
89
+ }
90
+ else
91
+ {
92
+ $entity = new static;
93
+ }
94
+
95
+ $entity->fill($data);
96
+
97
+ return $entity;
98
+ }
99
+
100
+ protected static function getDefinedEntitiesArray()
101
+ {
102
+ return array(
103
+ 'collection',
104
+ 'payment',
105
+ 'refund',
106
+ 'order',
107
+ 'customer',
108
+ 'token');
109
+ }
110
+
111
+ protected static function getEntityClass($name)
112
+ {
113
+ return __NAMESPACE__.'\\'.ucfirst($name);
114
+ }
115
+
116
+ protected function getEntity()
117
+ {
118
+ $class = get_class($this);
119
+ $pos = strrpos($class, '\\');
120
+ $entity = strtolower(substr($class, $pos));
121
+
122
+ return $entity;
123
+ }
124
+
125
+ public function fill($data)
126
+ {
127
+ $attributes = array();
128
+
129
+ foreach ($data as $key => $value)
130
+ {
131
+ if (is_array($value))
132
+ {
133
+ if (static::isAssocArray($value) === false)
134
+ {
135
+ $collection = array();
136
+
137
+ foreach ($value as $v)
138
+ {
139
+ if (is_array($v))
140
+ {
141
+ $entity = static::buildEntity($v);
142
+ array_push($collection, $entity);
143
+ }
144
+ else
145
+ {
146
+ array_push($collection, $v);
147
+ }
148
+ }
149
+
150
+ $value = $collection;
151
+ }
152
+ else
153
+ {
154
+ $value = static::buildEntity($value);
155
+ }
156
+ }
157
+
158
+ $attributes[$key] = $value;
159
+ }
160
+
161
+ $this->attributes = $attributes;
162
+ }
163
+
164
+ public static function isAssocArray($arr)
165
+ {
166
+ return array_keys($arr) !== range(0, count($arr) - 1);
167
+ }
168
+
169
+ public function toArray()
170
+ {
171
+ return $this->convertToArray($this->attributes);
172
+ }
173
+
174
+ protected function convertToArray($attributes)
175
+ {
176
+ $array = $attributes;
177
+
178
+ foreach ($attributes as $key => $value)
179
+ {
180
+ if (is_object($value))
181
+ {
182
+ $array[$key] = $value->toArray();
183
+ }
184
+ else if (is_array($value) and self::isAssocArray($value) == false)
185
+ {
186
+ $array[$key] = $this->convertToArray($value);
187
+ }
188
+ }
189
+
190
+ return $array;
191
+ }
192
+ }
razorpay-sdk/src/Errors/BadRequestError.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api\Errors;
4
+
5
+ class BadRequestError extends Error
6
+ {
7
+ protected $field = null;
8
+
9
+ public function __construct($message, $code, $httpStatusCode, $field = null)
10
+ {
11
+ parent::__construct($message, $code, $httpStatusCode);
12
+
13
+ $this->field = $field;
14
+ }
15
+
16
+ public function getField()
17
+ {
18
+ return $this->field;
19
+ }
20
+ }
razorpay-sdk/src/Errors/Error.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api\Errors;
4
+
5
+ use Exception;
6
+
7
+ class Error extends Exception
8
+ {
9
+ protected $httpStatusCode;
10
+
11
+ public function __construct($message, $code, $httpStatusCode)
12
+ {
13
+ $this->code = $code;
14
+
15
+ $this->message = $message;
16
+
17
+ $this->httpStatusCode = $httpStatusCode;
18
+ }
19
+
20
+ public function getHttpStatusCode()
21
+ {
22
+ return $this->httpStatusCode;
23
+ }
24
+ }
razorpay-sdk/src/Errors/ErrorCode.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api\Errors;
4
+
5
+ class ErrorCode
6
+ {
7
+ const BAD_REQUEST_ERROR = 'BAD_REQUEST_ERROR';
8
+ const SERVER_ERROR = 'SERVER_ERROR';
9
+ const GATEWAY_ERROR = 'GATEWAY_ERROR';
10
+
11
+ public static function exists($code)
12
+ {
13
+ return defined(get_class().'::'.$code);
14
+ }
15
+ }
razorpay-sdk/src/Errors/GatewayError.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api\Errors;
4
+
5
+ class GatewayError extends Error
6
+ {
7
+ }
razorpay-sdk/src/Errors/ServerError.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api\Errors;
4
+
5
+ class ServerError extends Error
6
+ {
7
+ }
razorpay-sdk/src/Order.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ class Order extends Entity
6
+ {
7
+ /**
8
+ * @param $id Order id description
9
+ */
10
+
11
+ public function create($attributes = array())
12
+ {
13
+ return parent::create($attributes);
14
+ }
15
+
16
+ public function fetch($id)
17
+ {
18
+ return parent::fetch($id);
19
+ }
20
+
21
+ public function all($options = array())
22
+ {
23
+ return parent::all($options);
24
+ }
25
+
26
+ public function payments()
27
+ {
28
+ $relativeUrl = $this->getEntityUrl().$this->id.'/payments';
29
+
30
+ return $this->request('GET', $relativeUrl);
31
+ }
32
+ }
razorpay-sdk/src/Payment.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ class Payment extends Entity
6
+ {
7
+ /**
8
+ * @param $id Payment id
9
+ */
10
+ public function fetch($id)
11
+ {
12
+ return parent::fetch($id);
13
+ }
14
+
15
+ public function all($options = array())
16
+ {
17
+ return parent::all($options);
18
+ }
19
+
20
+ /**
21
+ * @param $id Payment id
22
+ */
23
+ public function refund($attributes = array())
24
+ {
25
+ $relativeUrl = $this->getEntityUrl() . $this->id . '/refund';
26
+
27
+ return $this->request('POST', $relativeUrl, $attributes);
28
+ }
29
+
30
+ /**
31
+ * @param $id Payment id
32
+ */
33
+ public function capture($attributes = array())
34
+ {
35
+ $relativeUrl = $this->getEntityUrl() . $this->id . '/capture';
36
+
37
+ return $this->request('POST', $relativeUrl, $attributes);
38
+ }
39
+
40
+ public function refunds()
41
+ {
42
+ $refund = new Refund();
43
+
44
+ $refund['payment_id'] = $this->id;
45
+
46
+ return $refund;
47
+ }
48
+ }
razorpay-sdk/src/Refund.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ class Refund extends Entity
6
+ {
7
+ /**
8
+ * @param $id Payment id
9
+ */
10
+ public function fetch($id)
11
+ {
12
+ $relativeUrl = 'payments/'.$this->payment_id.'/'.$this->getEntityUrl().$id;
13
+
14
+ return $this->request('GET', $relativeUrl);
15
+ }
16
+
17
+ public function all($options = array())
18
+ {
19
+ $relativeUrl = 'payments/'.$this->payment_id.'/'.$this->getEntityUrl();
20
+
21
+ return $this->request('GET', $relativeUrl, $options);
22
+ }
23
+ }
razorpay-sdk/src/Request.php ADDED
@@ -0,0 +1,150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ use Exception;
6
+ use Razorpay\Api\Errors;
7
+ use Razorpay\Api\Errors\ErrorCode;
8
+
9
+ /**
10
+ * Request class to communicate to the request libarary
11
+ */
12
+ class Request
13
+ {
14
+
15
+ /**
16
+ * Headers to be sent with every http request to the API
17
+ * @var array
18
+ */
19
+ protected static $headers = array(
20
+ 'Razorpay-API' => 1
21
+ );
22
+
23
+ /**
24
+ * Fires a request to the API
25
+ * @param string $method HTTP Verb
26
+ * @param string $url Relative URL for the request
27
+ * @param array $data Data to be passed along the request
28
+ * @return array Response data in array format. Not meant
29
+ * to be used directly
30
+ */
31
+ public function request($method, $url, $data = null)
32
+ {
33
+ $url = Api::$baseUrl . $url;
34
+
35
+ if ($data === null)
36
+ $data = array();
37
+
38
+ $options = array(
39
+ 'auth'=> array(Api::$key, Api::$secret),
40
+ 'timeout' => 60
41
+ );
42
+
43
+ $response = \Requests::request($url, self::$headers, $data, $method, $options);
44
+
45
+ $this->checkErrors($response);
46
+
47
+ return json_decode($response->body, true);
48
+ }
49
+
50
+ /**
51
+ * Adds an additional header to all API requests
52
+ * @param string $key Header key
53
+ * @param string $value Header value
54
+ * @return null
55
+ */
56
+ public static function addHeader($key, $value)
57
+ {
58
+ self::$headers[$key] = $value;
59
+ }
60
+
61
+ /**
62
+ * Returns all headers attached so far
63
+ * @return array headers
64
+ */
65
+ public static function getHeaders()
66
+ {
67
+ return self::$headers;
68
+ }
69
+
70
+ /**
71
+ * Process the statusCode of the response and throw exception if necessary
72
+ * @param Object $response The response object returned by Requests
73
+ */
74
+ protected function checkErrors($response)
75
+ {
76
+ $body = $response->body;
77
+ $httpStatusCode = $response->status_code;
78
+
79
+ try
80
+ {
81
+ $body = json_decode($response->body, true);
82
+ }
83
+ catch (Exception $e)
84
+ {
85
+ $this->throwServerError($body, $httpStatusCode);
86
+ }
87
+
88
+ if ($httpStatusCode !== 200)
89
+ {
90
+ $this->processError($body, $httpStatusCode, $response);
91
+ }
92
+ }
93
+
94
+ protected function processError($body, $httpStatusCode, $response)
95
+ {
96
+ if (is_array($body) === false)
97
+ {
98
+ $this->throwServerError($body, $httpStatusCode);
99
+ }
100
+
101
+ if ((isset($body['error']) === false) or
102
+ (isset($body['error']['code']) === false))
103
+ {
104
+ $this->throwServerError($body, $httpStatusCode);
105
+ }
106
+
107
+ $code = $body['error']['code'];
108
+
109
+ if (Errors\ErrorCode::exists($code) === false)
110
+ {
111
+ $this->throwServerError($body, $httpStatusCode);
112
+ }
113
+
114
+ // We are basically converting the error code to the Error class name
115
+ // Replace underscores with space
116
+ // Lowercase the words, capitalize first letter of each word
117
+ // Remove spaces
118
+ $error = str_replace('_', ' ', $code);
119
+ $error = ucwords(strtolower($error));
120
+ $error = str_replace(' ', '', $error);
121
+
122
+ // Add namespace
123
+ // This is the fully qualified error class name
124
+ $error = __NAMESPACE__.'\Errors\\' . $error;
125
+
126
+ $description = $body['error']['description'];
127
+
128
+ $field = null;
129
+ if (isset($body['error']['field']))
130
+ {
131
+ $field = $body['error']['field'];
132
+
133
+ // Create an instance of the error and then throw it
134
+ throw new $error($description, $code, $httpStatusCode, $field);
135
+ }
136
+
137
+ throw new $error($description, $code, $httpStatusCode);
138
+ }
139
+
140
+ protected function throwServerError($body, $httpStatusCode)
141
+ {
142
+ $description = "The server did not send back a well-formed response. " . PHP_EOL .
143
+ "Server Response: $body";
144
+
145
+ throw new Errors\ServerError(
146
+ $description,
147
+ ErrorCode::SERVER_ERROR,
148
+ $httpStatusCode);
149
+ }
150
+ }
razorpay-sdk/src/Resource.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ use ArrayAccess;
6
+ use ArrayIterator;
7
+ use IteratorAggregate;
8
+
9
+ class Resource implements ArrayAccess, IteratorAggregate
10
+ {
11
+ protected $attributes = array();
12
+
13
+ public function getIterator()
14
+ {
15
+ return new ArrayIterator($this->attributes);
16
+ }
17
+
18
+ public function offsetExists($offset)
19
+ {
20
+ return (isset($this->attributes[$offset]));
21
+ }
22
+
23
+ public function offsetSet($offset, $value)
24
+ {
25
+ $this->attributes[$offset] = $value;
26
+ }
27
+
28
+ public function offsetGet($offset)
29
+ {
30
+ return $this->attributes[$offset];
31
+ }
32
+
33
+ public function offsetUnset($offset)
34
+ {
35
+ unset($this->attributes[$offset]);
36
+ }
37
+
38
+ public function __get($key)
39
+ {
40
+ return $this->attributes[$key];
41
+ }
42
+
43
+ public function __set($key, $value)
44
+ {
45
+ return $this->attributes[$key] = $value;
46
+ }
47
+
48
+ public function __isset($key)
49
+ {
50
+ return (isset($this->attributes[$key]));
51
+ }
52
+
53
+ public function __unset($key)
54
+ {
55
+ unset($this->attributes[$key]);
56
+ }
57
+ }
razorpay-sdk/src/Token.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Razorpay\Api;
4
+
5
+ class Token extends Entity
6
+ {
7
+ /**
8
+ * @param $id Token id
9
+ */
10
+ public function fetch($id)
11
+ {
12
+ $relativeUrl = 'customers/'.$this->customer_id.'/'.$this->getEntityUrl().$id;
13
+
14
+ return $this->request('GET', $relativeUrl);
15
+ }
16
+
17
+ public function all($options = array())
18
+ {
19
+ $relativeUrl = 'customers/'.$this->customer_id.'/'.$this->getEntityUrl();
20
+
21
+ return $this->request('GET', $relativeUrl, $options);
22
+ }
23
+
24
+ public function delete($id)
25
+ {
26
+ $relativeUrl = 'customers/'.$this->customer_id.'/'.$this->getEntityUrl().$id;
27
+
28
+ return $this->request('DELETE', $relativeUrl);
29
+ }
30
+ }
readme.txt CHANGED
@@ -1,9 +1,9 @@
1
  === Razorpay for WooCommerce ===
2
  Contributors: razorpay
3
  Tags: razorpay, payments, india, woocommerce, ecommerce
4
- Requires at least: 3.0.1
5
- Tested up to: 4.4.1
6
- Stable tag: 1.2.4
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -17,7 +17,7 @@ This is compatible with both 2.4 and 2.5 series of WooCommerce.
17
 
18
  == Installation ==
19
 
20
- 1. Download the plugin from [the wordpress plugin server](https://downloads.wordpress.org/plugin/woo-razorpay.1.2.2.zip)
21
  2. Ensure you have latest version of WooCommerce plugin installed
22
  3. Unzip and upload contents of the plugin to your /wp-content/plugins/ directory
23
  4. Activate the plugin through the 'Plugins' menu in WordPress
@@ -25,15 +25,31 @@ This is compatible with both 2.4 and 2.5 series of WooCommerce.
25
  If you have downloaded the plugin from GitHub or elsewhere, make sure
26
  that the directory is named `woo-razorpay`.
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  == Configuration ==
29
 
30
  1. Visit the WooCommerce settings page, and click on the Checkout/Payment Gateways tab.
31
  2. Click on Razorpay to edit the settings. If you do not see Razorpay in the list at the top of the screen make sure you have activated the plugin in the WordPress Plugin Manager.
32
- 3. Enable the Payment Method, name it Credit Card / Debit Card / Internet Banking (this will show up on the payment page your customer sees), add in your key id and key secret.
 
33
 
34
  == Support ==
35
 
36
- Visit [razorpay.com](https://razorpay.com) for support requests or email us at <support@razorpay.com>.
37
 
38
  == License ==
39
 
1
  === Razorpay for WooCommerce ===
2
  Contributors: razorpay
3
  Tags: razorpay, payments, india, woocommerce, ecommerce
4
+ Requires at least: 3.9.2
5
+ Tested up to: 4.7
6
+ Stable tag: 1.3.0
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
17
 
18
  == Installation ==
19
 
20
+ 1. Download the plugin from [github releases](https://github.com/razorpay/razorpay-woocommerce/archive/1.2.11.zip)
21
  2. Ensure you have latest version of WooCommerce plugin installed
22
  3. Unzip and upload contents of the plugin to your /wp-content/plugins/ directory
23
  4. Activate the plugin through the 'Plugins' menu in WordPress
25
  If you have downloaded the plugin from GitHub or elsewhere, make sure
26
  that the directory is named `woo-razorpay`.
27
 
28
+ This is how your directory structure should look like:
29
+
30
+ ```
31
+ wordpress/
32
+ wp-content/
33
+ plugins/
34
+ woo-razorpay/
35
+ ca-bundle.crt
36
+ images/
37
+ LICENSE
38
+ razorpay-payments.php
39
+ readme.txt
40
+ woocommerce/
41
+ ```
42
+
43
  == Configuration ==
44
 
45
  1. Visit the WooCommerce settings page, and click on the Checkout/Payment Gateways tab.
46
  2. Click on Razorpay to edit the settings. If you do not see Razorpay in the list at the top of the screen make sure you have activated the plugin in the WordPress Plugin Manager.
47
+ 3. Enable the Payment Method, name it Credit Card / Debit Card / Internet Banking (this will show up on the payment page your customer sees), add in your Key id and Key Secret.
48
+ 4. The Payment Action should be set to "Authorize and Capture". If you want to capture payments manually from the Dashboard after manual verification, set it to "Authorize".
49
 
50
  == Support ==
51
 
52
+ Visit [razorpay.com](https://razorpay.com) for support requests or email us at <integrations@razorpay.com>.
53
 
54
  == License ==
55