tg-redbird 0.12.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -16
- package/lib/docker.js +22 -18
- package/lib/etcd-backend.js +32 -35
- package/lib/letsencrypt.js +41 -38
- package/lib/proxy.js +197 -238
- package/lib/redis-backend.js +84 -79
- package/package.json +17 -4
- package/.dockerignore +0 -1
- package/.eslintrc +0 -22
- package/.travis.yml +0 -21
- package/.vscode/launch.json +0 -30
- package/Dockerfile +0 -6
- package/gulpfile.js +0 -36
- package/hl-tests/64/proxy.js +0 -52
- package/hl-tests/letsencrypt/a.js +0 -36
- package/hl-tests/letsencrypt/certs/accounts/acme-staging.api.letsencrypt.org/directory/367e0270a5d31ab031561f9f284ca350/meta.json +0 -1
- package/hl-tests/letsencrypt/certs/accounts/acme-staging.api.letsencrypt.org/directory/367e0270a5d31ab031561f9f284ca350/private_key.json +0 -1
- package/hl-tests/letsencrypt/certs/accounts/acme-staging.api.letsencrypt.org/directory/367e0270a5d31ab031561f9f284ca350/regr.json +0 -1
- package/hl-tests/letsencrypt/certs/accounts/acme-v01.api.letsencrypt.org/directory/49881ab35d6ac7bb51f05ca3a220fbac/meta.json +0 -1
- package/hl-tests/letsencrypt/certs/accounts/acme-v01.api.letsencrypt.org/directory/49881ab35d6ac7bb51f05ca3a220fbac/private_key.json +0 -1
- package/hl-tests/letsencrypt/certs/accounts/acme-v01.api.letsencrypt.org/directory/49881ab35d6ac7bb51f05ca3a220fbac/regr.json +0 -1
- package/hl-tests/letsencrypt/certs/api/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/api.com/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/archive/caturra.exactbytes.com/cert0.pem +0 -29
- package/hl-tests/letsencrypt/certs/archive/caturra.exactbytes.com/chain0.pem +0 -27
- package/hl-tests/letsencrypt/certs/archive/caturra.exactbytes.com/fullchain0.pem +0 -56
- package/hl-tests/letsencrypt/certs/archive/caturra.exactbytes.com/privkey0.pem +0 -27
- package/hl-tests/letsencrypt/certs/caturra.exactbytes.com/cert.pem +0 -29
- package/hl-tests/letsencrypt/certs/caturra.exactbytes.com/chain.pem +0 -27
- package/hl-tests/letsencrypt/certs/caturra.exactbytes.com/fullchain.pem +0 -56
- package/hl-tests/letsencrypt/certs/caturra.exactbytes.com/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/caturra.exactbytes.com/privkey.pem.bak +0 -27
- package/hl-tests/letsencrypt/certs/dash/.well-known/acme-challenge/abc +0 -1
- package/hl-tests/letsencrypt/certs/dash/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/dash.com/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/dash_/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/dev-cert.pem +0 -17
- package/hl-tests/letsencrypt/certs/dev-csr.pem +0 -13
- package/hl-tests/letsencrypt/certs/dev-key.pem +0 -15
- package/hl-tests/letsencrypt/certs/example.com/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/localhost/privkey.pem +0 -27
- package/hl-tests/letsencrypt/certs/renewal/caturra.exactbytes.com.conf +0 -67
- package/hl-tests/letsencrypt/certs/renewal/caturra.exactbytes.com.conf.bak +0 -68
- package/hl-tests/letsencrypt/proxy.js +0 -73
- package/hl-tests/paths.js +0 -19
- package/package-lock.json +0 -3269
- package/test/test_custom_resolver.js +0 -276
- package/test/test_hostheader.js +0 -141
- package/test/test_pathnames.js +0 -75
- package/test/test_register.js +0 -493
package/lib/redis-backend.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
'use strict';
|
2
2
|
|
3
3
|
var redis = require('redis');
|
4
4
|
var Promise = require('bluebird');
|
@@ -16,94 +16,99 @@ Promise.promisifyAll(redis);
|
|
16
16
|
opts: {}
|
17
17
|
}
|
18
18
|
*/
|
19
|
-
function RedisBackend(port, hostname, opts)
|
20
|
-
{
|
21
|
-
|
22
|
-
|
23
|
-
}
|
19
|
+
function RedisBackend(port, hostname, opts) {
|
20
|
+
if (!(this instanceof RedisBackend)) {
|
21
|
+
return new RedisBackend(port, hostname, opts);
|
22
|
+
}
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
opts = opts || {};
|
25
|
+
port = port || 6379;
|
26
|
+
hostname = hostname || 'localhost';
|
28
27
|
|
29
|
-
|
30
|
-
|
28
|
+
this.redis = redis.createClient(port, hostname, opts);
|
29
|
+
this.publish = redis.createClient(port, hostname, opts);
|
31
30
|
|
32
|
-
|
31
|
+
this.prefix = opts.prefix + '';
|
33
32
|
|
34
|
-
|
33
|
+
this.baseKey = baseKey(this.prefix);
|
35
34
|
}
|
36
35
|
|
37
36
|
/**
|
38
37
|
Returns a Promise that resolves to an array with all the
|
39
38
|
registered services and removes the expired ones.
|
40
39
|
*/
|
41
|
-
RedisBackend.prototype.getServices = function(){
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
}
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
40
|
+
RedisBackend.prototype.getServices = function () {
|
41
|
+
var _this = this;
|
42
|
+
var redis = this.redis;
|
43
|
+
var baseKey = this.baseKey;
|
44
|
+
|
45
|
+
//
|
46
|
+
// Get all members in the service set.
|
47
|
+
//
|
48
|
+
return redis
|
49
|
+
.smembersAsync(baseKey + 'ids')
|
50
|
+
.then(function (serviceIds) {
|
51
|
+
return Promise.all(
|
52
|
+
_.map(serviceIds, function (id) {
|
53
|
+
return _this.getService(id);
|
54
|
+
})
|
55
|
+
);
|
56
|
+
})
|
57
|
+
.then(function (services) {
|
58
|
+
// Clean expired services
|
59
|
+
return _.compact(services);
|
60
|
+
});
|
61
|
+
};
|
62
|
+
|
63
|
+
RedisBackend.prototype.getService = function (id) {
|
64
|
+
var redis = this.redis;
|
65
|
+
//
|
66
|
+
// Get service hash
|
67
|
+
//
|
68
|
+
return redis.hgetallAsync(this.baseKey + id).then(function (service) {
|
69
|
+
if (service) {
|
70
|
+
return service;
|
71
|
+
} else {
|
72
|
+
//
|
73
|
+
// Service has expired, we must delete it from the service set.
|
74
|
+
//
|
75
|
+
return redis.sremAsync(id);
|
76
|
+
}
|
77
|
+
});
|
78
|
+
};
|
79
|
+
|
80
|
+
RedisBackend.prototype.register = function (service) {
|
81
|
+
var redis = this.redis;
|
82
|
+
var publish = this.publish;
|
83
|
+
var baseKey = this.baseKey;
|
84
|
+
|
85
|
+
//
|
86
|
+
// Get unique service ID.
|
87
|
+
//
|
88
|
+
return redis
|
89
|
+
.incrAsync(baseKey + 'counter')
|
90
|
+
.then(function (id) {
|
91
|
+
// Store it
|
92
|
+
redis.hset(baseKey + id, service).then(function () {
|
93
|
+
return id;
|
94
|
+
});
|
95
|
+
})
|
96
|
+
.then(function (id) {
|
97
|
+
//
|
98
|
+
// // Publish a meesage so that the proxy can react faster to a new registration.
|
99
|
+
//
|
100
|
+
return publish.publishAsync(baseKey + 'registered', id).then(function () {
|
101
|
+
return id;
|
102
|
+
});
|
103
|
+
});
|
104
|
+
};
|
105
|
+
|
106
|
+
RedisBackend.prototype.ping = function (id) {
|
107
|
+
return this.redis.pexpireAsync(id, 5000);
|
108
|
+
};
|
109
|
+
|
110
|
+
function baseKey(prefix) {
|
111
|
+
return 'redbird-' + prefix + '-services-';
|
105
112
|
}
|
106
113
|
|
107
114
|
module.exports = RedisBackend;
|
108
|
-
|
109
|
-
|
package/package.json
CHANGED
@@ -1,15 +1,20 @@
|
|
1
1
|
{
|
2
2
|
"name": "tg-redbird",
|
3
|
-
"version": "
|
3
|
+
"version": "1.2.0",
|
4
4
|
"description": "A reverse proxy with support for dynamic tables",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
7
|
-
"test": "mocha test/* --reporter spec"
|
7
|
+
"test": "mocha test/* --reporter spec",
|
8
|
+
"format": "prettier --write *.js \"{samples,lib,test,hl-tests}/**/*.js\""
|
8
9
|
},
|
9
10
|
"repository": {
|
10
11
|
"type": "git",
|
11
12
|
"url": "git://github.com/TeselaGen/redbird.git"
|
12
13
|
},
|
14
|
+
"files": [
|
15
|
+
"index.js",
|
16
|
+
"lib"
|
17
|
+
],
|
13
18
|
"keywords": [
|
14
19
|
"proxy",
|
15
20
|
"reverse",
|
@@ -23,7 +28,7 @@
|
|
23
28
|
},
|
24
29
|
"homepage": "https://github.com/TeselaGen/redbird",
|
25
30
|
"dependencies": {
|
26
|
-
"bluebird": "^3.7.2",
|
31
|
+
"bluebird": "^2.11.0 || ^3.7.2",
|
27
32
|
"dolphin": "*",
|
28
33
|
"greenlock": "^2.8.8",
|
29
34
|
"http-proxy": "^1.18.0",
|
@@ -40,8 +45,16 @@
|
|
40
45
|
},
|
41
46
|
"devDependencies": {
|
42
47
|
"chai": "^1.9.1",
|
48
|
+
"electrode-server": "^2.2.2",
|
43
49
|
"gulp": "^3.8.11",
|
44
50
|
"gulp-eslint": "^0.9.0",
|
45
|
-
"mocha": "^2.5.3"
|
51
|
+
"mocha": "^2.5.3",
|
52
|
+
"needle": "^2.2.4",
|
53
|
+
"prettier": "^2.0.1",
|
54
|
+
"run-verify": "^1.2.2"
|
55
|
+
},
|
56
|
+
"prettier": {
|
57
|
+
"printWidth": 100,
|
58
|
+
"singleQuote": true
|
46
59
|
}
|
47
60
|
}
|
package/.dockerignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
node_modules
|
package/.eslintrc
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
rules:
|
2
|
-
space-before-blocks: [2, "never"]
|
3
|
-
space-after-keywords: [2, "never"]
|
4
|
-
new-cap: 0
|
5
|
-
no-underscore-dangle: 0
|
6
|
-
indent: [2, 2]
|
7
|
-
brace-style: [2, "1tbs"]
|
8
|
-
comma-style: [2, "last"]
|
9
|
-
default-case: 2
|
10
|
-
func-style: [2, "declaration"]
|
11
|
-
guard-for-in: 2
|
12
|
-
no-floating-decimal: 2
|
13
|
-
no-nested-ternary: 2
|
14
|
-
no-undefined: 2
|
15
|
-
radix: 2
|
16
|
-
space-after-function-name: [2, "never"]
|
17
|
-
space-after-keywords: [2, "always"]
|
18
|
-
space-before-blocks: [2, "never"]
|
19
|
-
spaced-line-comment: [2, "always", { exceptions: ["-"]}]
|
20
|
-
valid-jsdoc: [2, { prefer: { "return": "returns"}}]
|
21
|
-
wrap-iife: 2
|
22
|
-
quotes: [2, "single"]
|
package/.travis.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
language: node_js
|
2
|
-
|
3
|
-
node_js:
|
4
|
-
- 'node'
|
5
|
-
- '10'
|
6
|
-
- '9'
|
7
|
-
- '8'
|
8
|
-
- '7'
|
9
|
-
- '6'
|
10
|
-
|
11
|
-
before_install:
|
12
|
-
- npm cache clean --force
|
13
|
-
|
14
|
-
install:
|
15
|
-
- npm install --update-binary --no-shrinkwrap
|
16
|
-
|
17
|
-
script:
|
18
|
-
- npm test
|
19
|
-
|
20
|
-
cache:
|
21
|
-
npm: false
|
package/.vscode/launch.json
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": "0.2.0",
|
3
|
-
"configurations": [
|
4
|
-
{
|
5
|
-
"name": "Launch",
|
6
|
-
"type": "node",
|
7
|
-
"request": "launch",
|
8
|
-
"program": "hl-tests/paths.js",
|
9
|
-
"stopOnEntry": false,
|
10
|
-
"args": [],
|
11
|
-
"cwd": ".",
|
12
|
-
"runtimeExecutable": null,
|
13
|
-
"runtimeArgs": [
|
14
|
-
"--nolazy"
|
15
|
-
],
|
16
|
-
"env": {
|
17
|
-
"NODE_ENV": "development"
|
18
|
-
},
|
19
|
-
"externalConsole": false,
|
20
|
-
"sourceMaps": false,
|
21
|
-
"outDir": null
|
22
|
-
},
|
23
|
-
{
|
24
|
-
"name": "Attach",
|
25
|
-
"type": "node",
|
26
|
-
"request": "attach",
|
27
|
-
"port": 5858
|
28
|
-
}
|
29
|
-
]
|
30
|
-
}
|
package/Dockerfile
DELETED
package/gulpfile.js
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
/*eslint-env node */
|
2
|
-
'use strict';
|
3
|
-
|
4
|
-
var gulp = require('gulp');
|
5
|
-
var eslint = require('gulp-eslint');
|
6
|
-
|
7
|
-
gulp.task('lint', function (){
|
8
|
-
// Note: To have the process exit with an error code (1) on
|
9
|
-
// lint error, return the stream and pipe to failOnError last.
|
10
|
-
return gulp.src([
|
11
|
-
'./**/*.js',
|
12
|
-
'!./test/**',
|
13
|
-
'!./node_modules/**'
|
14
|
-
])
|
15
|
-
.pipe(eslint({
|
16
|
-
rules: {
|
17
|
-
'space-after-keywords': [2, 'never'],
|
18
|
-
indent: [2, 2],
|
19
|
-
'valid-jsdoc': 0,
|
20
|
-
'func-style': 0,
|
21
|
-
'no-use-before-define': 0,
|
22
|
-
camelcase: 1,
|
23
|
-
'no-unused-vars': 1,
|
24
|
-
'no-alert': 1,
|
25
|
-
'no-console': 1,
|
26
|
-
'no-unused-expressions': 0,
|
27
|
-
'consistent-return': 0
|
28
|
-
},
|
29
|
-
globals: {
|
30
|
-
'define': true
|
31
|
-
}
|
32
|
-
}))
|
33
|
-
.pipe(eslint.format())
|
34
|
-
.pipe(eslint.failAfterError());
|
35
|
-
});
|
36
|
-
|
package/hl-tests/64/proxy.js
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
'use strict';
|
2
|
-
|
3
|
-
|
4
|
-
// If URL has/.well-known/, send request to upstream API service
|
5
|
-
var customResolver1 = function (host, url) {
|
6
|
-
if (/^\/.well-known\//.test(url)) {
|
7
|
-
return 'http://localhost:3000';
|
8
|
-
}
|
9
|
-
};
|
10
|
-
|
11
|
-
// assign high priority
|
12
|
-
customResolver1.priority = 100;
|
13
|
-
|
14
|
-
var proxy = new require('../../index.js')({
|
15
|
-
port: 8080,
|
16
|
-
resolvers: [
|
17
|
-
customResolver1
|
18
|
-
],
|
19
|
-
secure: true,
|
20
|
-
ssl: { port: 443 },
|
21
|
-
})
|
22
|
-
|
23
|
-
proxy.register("www", "http://www.planetex.press:3000", {/*
|
24
|
-
ssl: {
|
25
|
-
key: "/home/planetex/ssl.key",
|
26
|
-
cert: "/home/planetex/ssl.cert",
|
27
|
-
}
|
28
|
-
*/});
|
29
|
-
proxy.register("api", "http://api.planetex.press:3002", {/*
|
30
|
-
ssl: {
|
31
|
-
key: "/home/planetex/domains/api.planetex.press/ssl.key",
|
32
|
-
cert: "/home/planetex/domains/api.planetex.press/ssl.cert",
|
33
|
-
}
|
34
|
-
*/});
|
35
|
-
proxy.register("dash", "http://dash.planetex.press:3001", {/*
|
36
|
-
ssl: {
|
37
|
-
key: "/home/planetex/domains/dash.planetex.press/ssl.key",
|
38
|
-
cert: "/home/planetex/domains/dash.planetex.press/ssl.cert",
|
39
|
-
}
|
40
|
-
*/});
|
41
|
-
|
42
|
-
var http = require('http');
|
43
|
-
|
44
|
-
http.createServer(function(req, res){
|
45
|
-
|
46
|
-
res.writeHead(200);
|
47
|
-
res.write(req.url);
|
48
|
-
res.end();
|
49
|
-
|
50
|
-
console.log(req.host);
|
51
|
-
|
52
|
-
}).listen(3000);
|
@@ -1,36 +0,0 @@
|
|
1
|
-
var spdy = require('spdy'),
|
2
|
-
fs = require('fs'),
|
3
|
-
path = require('path');
|
4
|
-
|
5
|
-
var options = {
|
6
|
-
// Private key
|
7
|
-
//key: fs.readFileSync(path.join(__dirname, "certs/dev-key.pem")),
|
8
|
-
//cert: fs.readFileSync(path.join(__dirname, "certs/dev-cert.pem")),
|
9
|
-
|
10
|
-
// **optional** SPDY-specific options
|
11
|
-
spdy: {
|
12
|
-
protocols: [ 'h2', 'spdy/3.1', 'http/1.1' ],
|
13
|
-
plain: false,
|
14
|
-
|
15
|
-
// **optional**
|
16
|
-
// Parse first incoming X_FORWARDED_FOR frame and put it to the
|
17
|
-
// headers of every request.
|
18
|
-
// NOTE: Use with care! This should not be used without some proxy that
|
19
|
-
// will *always* send X_FORWARDED_FOR
|
20
|
-
'x-forwarded-for': true,
|
21
|
-
|
22
|
-
connection: {
|
23
|
-
windowSize: 1024 * 1024, // Server's window size
|
24
|
-
|
25
|
-
// **optional** if true - server will send 3.1 frames on 3.0 *plain* spdy
|
26
|
-
autoSpdy31: false
|
27
|
-
}
|
28
|
-
}
|
29
|
-
};
|
30
|
-
|
31
|
-
var server = spdy.createServer(options, function(req, res) {
|
32
|
-
res.writeHead(200);
|
33
|
-
res.end('hello world!');
|
34
|
-
});
|
35
|
-
|
36
|
-
server.listen(3000);
|
@@ -1 +0,0 @@
|
|
1
|
-
{"creation_host":"Manuels-MacBook-Pro.local","creation_dt":"2016-08-30T15:22:20.371Z"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"kty":"RSA","n":"v7Q7VtM_s1obhDJrSef8oSZtT9-v91cHnqzeTyMf0-Sz3CjYXamzEz_v7ASMS4JsGoG1SeaDlk_GYMO4OyAUNTB5nUJSR5ImNPwNz0m6dmr42tqOQalGG20lbm0-ZA7UYrJes1WylLyeNE_sgMVkpI50f8GHfAbZlEsJz54Vt8jqv-DSbXXoK-PyuhvP0y-uMujJQs6cWvztgun_8xvAeR9EykxAhw-7n9h84P0j3zprARVI0JTMjKeZyJ14aupWLEZ350Hd_ryWz36D6dDQJgjWqHh6lvv36Md90KcR-CDB3I2qVHQT5kFJhUNVGK7-eJQs8C0APZvyHS9jynuX4Q","e":"AQAB","d":"iNfhG-OEL0T9K2rKR2GAZpCFq2Sjuc24NL51mswZ5in1cgz-Fi4TFISpgTLl6ujYvjsk6_HOsLeVhnFvy1Tk1-sYhPdYwJpFB8F9IiEhJ3LI3YDx11E8KEvLUn5M8SPc2-8zxpQ__AiAbhs3WdyOMSE3bBL74b8KBd9iy3-vRRa8SySu--eeR73LcAjWt6c-Mpt6mHBMT83sGQW-OXPAIDQK--vWXwEgZCgq-r6IwAyGcgV3IdTDu-XZwXyXviZ_D7c457YPN9bK4rZKlcW_FFoTEFN1Roq0UFmeIdOcYR6FeieEhICx3W09AvoLtvauPa8CPIzmH1kWLDNPViVigQ","p":"6ECuYDDcc2Z534pqB0tS8Pc89yE0jH1txMFEw-CpbUi8rykKGiEhqZq7xism0nBym2Zr3i6IhhEKRszQkNNR2fXA20L3OjRgDijRemzfO1-MU1m_PSlIQq9O85zB2F0GIvjLMXgvR_vgHNUOyutV0fWM2p8W1IHmPDds4OCGoyk","q":"004r_QTpQCdxWLS4zjVJgVikiUZkVPe8pQOFQmFjdv0C4V1_S23pQhdzrrdGB7gZ00-xeepK2MMHZiPPp-noMouRs7fmC3_-jOlBTe8R4mGjd5hHJZ_fAphyUiBy2uk971aPjiAQAoFlIk_VjLi-p464p14xFx-ls5eWQT1ZXfk","dp":"4xFp6u2aetDz0pP2-c6w9poiZtN2Fu0Cht0WKBPcUdZNc0tCby15ReLcNvE1cYUy57AJQh5op_q8-19_gji4y8ozlasxHxzZ1L4fn_wVfGz8OvmBuYBE_716CT93XdwFBegMcP856rzc7hN39PiE3VOfNJdZsMaXnMPrlSivOZE","dq":"NfoBCJgJkUbCEHvRvXMlPLJNDXf6xy2lda2Ji-ReyRVmd_UvQDBqZmShO187t1sS1cTEvDTaO7bOHAxHzkfU9ZxrcrImRIfEmXA4K1VHh0GTxUgT3IuTJxGUGmCJllwAYzQEZbTRAiLVl8c28MR8h0bQ6ogIGDUQWej-C9pFCtk","qi":"3eTbAKe0oiRQSs456A58jKac4UYS-VN6oGKHkROBq8w8YAYkhQI9jeTQbUm7N7g8bwEIruGUdyq-SXAb8WOS166GdEqB_5bhP9xJw1MLFVaerXVOrDYMCBB-hTKw3kY7SIDoCgVBP3-1GL-fhXbvz3-CdOprwDCf8JMExXcop8k"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"body":{"id":304846,"key":{"kty":"RSA","n":"v7Q7VtM_s1obhDJrSef8oSZtT9-v91cHnqzeTyMf0-Sz3CjYXamzEz_v7ASMS4JsGoG1SeaDlk_GYMO4OyAUNTB5nUJSR5ImNPwNz0m6dmr42tqOQalGG20lbm0-ZA7UYrJes1WylLyeNE_sgMVkpI50f8GHfAbZlEsJz54Vt8jqv-DSbXXoK-PyuhvP0y-uMujJQs6cWvztgun_8xvAeR9EykxAhw-7n9h84P0j3zprARVI0JTMjKeZyJ14aupWLEZ350Hd_ryWz36D6dDQJgjWqHh6lvv36Md90KcR-CDB3I2qVHQT5kFJhUNVGK7-eJQs8C0APZvyHS9jynuX4Q","e":"AQAB"},"contact":["mailto:manuel@optimalbits.com"],"agreement":"https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf","initialIp":"85.235.1.31","createdAt":"2016-08-30T15:22:19Z"}}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"creation_host":"Manuels-MBP","creation_dt":"2016-09-18T14:25:30.785Z"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"kty":"RSA","n":"1sfAvmeOBdJelhXoG0HUrSiiY2PORPkEz9cDnfEVW8-G0w_584kpJHsKm2ixhtmZnjR0lismnaaE9wsqGXCZQ0Gn5dTUkcVKqRyntLKUh1emMY2SjEfTorEZqh6mq-7fUr6NtJU24QEJHWkDFxPp6PsQA8FREcrDIr5gt50xgaK65FxJ4YWCHH8kfCBY9XG5lD8NKya6S9upJFWJtldj7Qplx4JTf-se2YXCqvhVNXGkU_f23ZO9zOt9aPWtEekcZLTHjwTMUhq64vOFV7YlIuUPvQJhLG9AXVszYKjrWak-B_Eq6E74onOyI7W3aT7YjRIZl1RmBnnKmBYgysr2ww","e":"AQAB","d":"0mEDOP4yLR2srJJ0sg4_hgVhWr1uVD0fK35O-qwk4bNbOu5RRO07MZKcBzH7gj0urbpv4JAP2Sg84cc7y4NxfGGZVhSsysRXp2J8GxE5T4DZN3yW6XWJpbiXjP1NAOiQM3qXTyVBhg__n6E296n32s_hFeyLvkO_9A5Kqk_9KB40AtLBmgD99apZo43cvjQWoQTha28vx6MdKSG7cMGbKEoAulCufjYFoUvV8CUETo_vg5Vjzj4rZ0HpyOIfOxjzfLlEBoEPWWSc5NWV4toFU7uimlFW1eTKduyhRwnj9PiJ9aOtmNvvDH20X6BTunCLXM6OKp51jd7M207O8VNg0Q","p":"85Sc7ZWMD5mgx7ggzEPtehpsV1q1M0iVVOZi0955IsU7Fpe4avq4-kBg-9PPJCFrMnNpZOmr9Xc0e84SuShkT_5hmTZH-d8f8aHRknbJHNKerzABfHYgUhza0bpYR0u5Lf77fiRTIFnsyFykotMCP3E10B4HM7bPxN-j9KumDm8","q":"4bs3-irM80lGIW8Q0OkOkcADJUh4HlnK-tL08wIEJ-2rXb_PfPZ3aeMMvZrDoDL2YZerlKRe3vj1ceCkuZaNsnawNUM480y8V6AE4cjhEWo7fSLmvnqmkU2HlTLgUkJKAJXKTCLl3zBNKi9fKpK57EiGgtjjqOT4W6TDU0pXBu0","dp":"8Km1I0jOydsQcEQMo8W5rRrOUMDep3zfjrLSkmMNbL1SVFAzdf-jJB7Xs_jigOBD-eTuDTaTIERXJrvE5Ax0kFTWOXrYQpmiBivL1NpoeoHfJ1hXH5HW_UplKTLkZgz7OebktQ1O1HgE6zIduIKjhetlL-t7Ui0du3b7l5LAzyE","dq":"EPW8EvO8SlsrBcAOh2O7UIAYvGhhfgZJFedbuBZisY1N3tFWiZELD82bW3ORVyv9DwASSCzBZAdYiaHTPo5tPwdj3dybHsyZKgw_0acCIgjVR2Wj6JPWh_xHP5J_AC8y2DBo7qeAlfBPG-hLQiucBIC-en5JPJtXfas3cb6YI1E","qi":"1GV96yL6GV5S7B3rj5TWJUuKpkgTyKe4Q4sOTWh1pTsQ2PVL1Vr--FKM2CT_PvuAf4jWcaZgZoEZiaBGoLAPWBXYjuvaqXZ1dtdNqb-tLhOVSZJ3vAzA-jPJ-OUwQ_-BXl2FGD66plaPK0EvbaufK5a0h8D_9oK8E2TXtdSMtJ0"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"body":{"id":4407503,"key":{"kty":"RSA","n":"1sfAvmeOBdJelhXoG0HUrSiiY2PORPkEz9cDnfEVW8-G0w_584kpJHsKm2ixhtmZnjR0lismnaaE9wsqGXCZQ0Gn5dTUkcVKqRyntLKUh1emMY2SjEfTorEZqh6mq-7fUr6NtJU24QEJHWkDFxPp6PsQA8FREcrDIr5gt50xgaK65FxJ4YWCHH8kfCBY9XG5lD8NKya6S9upJFWJtldj7Qplx4JTf-se2YXCqvhVNXGkU_f23ZO9zOt9aPWtEekcZLTHjwTMUhq64vOFV7YlIuUPvQJhLG9AXVszYKjrWak-B_Eq6E74onOyI7W3aT7YjRIZl1RmBnnKmBYgysr2ww","e":"AQAB"},"contact":["mailto:manuel@optimalbits.com"],"agreement":"https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf","initialIp":"217.72.54.127","createdAt":"2016-09-18T14:25:30Z"}}
|
@@ -1,27 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
MIIEowIBAAKCAQEA2xcbvINnnA0EuQo3vt6VZYl7Bcy078pybFnDe2Wo2BJTtoJp
|
3
|
-
n2k4xUUHibMuwxLCZC4iCcQY/4RzMLp3ZDcYvrlB9+THrx6xKusdOgdhktTuDTbA
|
4
|
-
F6f0W4EthfNpJPBGkwaI9JU8UvHcd9kukiLj9Kv7AbhTsQjGBHT+6PVqp8Gzkf75
|
5
|
-
lVV4iQyzi1zexw2GMe1XQboykgPU7B1x8YIdV5J7vO7/TsLu/fRvCOy33g1kZ62m
|
6
|
-
ksMvp+L1WtYwLCVCGgwmMbLndNcGfpHHM82aZL1yJxBcrNgH2m7S3mgfaHlZxe5O
|
7
|
-
8WlwxGbVAPZiDaCFDF+4JXaLCvfG41ERRj0bTQIDAQABAoIBAF6tWMYZPw/3rD/O
|
8
|
-
g5KPG556T9iMwvAQ22upSsmrf9CH8vce2kgSL39IOl6uORoBpFGogfsYa/kXorO/
|
9
|
-
ENMU4DOjWTen/QbXS5aRbdriz66lJ448R7yxTu6wHx0QuDJHRyhIHa0cRKpPbIe6
|
10
|
-
Kd7rBvl3zIvMvRX3BaNtb676RzHgvSrkp4f8c5kCFZ8YHPKsEJml0mIRKW4py7R7
|
11
|
-
ZwCNOX1Lnbb5z2ZeqCM2RkFgf+UeL40TpFTizYzCETXEWBUn1F37t2i4XM0rwQt1
|
12
|
-
KCfyhKb7ylsvp6W5wlnZ5cBl80LLnllcpa+GA+u5/5+QCZ1I1jr3SbsBhmEoyco7
|
13
|
-
DUywyp0CgYEA+L7GXjrDfFzvuPX8v8khEswpSAriE0LCcUCnQMQ3qup/zxzNjodU
|
14
|
-
Nr4VNGos3Y7+ZF/EoVluhY+cVAl8iTo5i06nWhkWYe7DCUzF4dk1qgXPCPSLyk/W
|
15
|
-
KN9PZI7xaCSuaWWC5CMqoflDNqQc7ocgCX7QhKztpJmW4gYEMyRhvlMCgYEA4Xrr
|
16
|
-
Iwbd/Zr7cle2VjuI73j6vMlY3REy9sM74CryldZJ4sYwqMHhxDWnaFNa/Zem46eF
|
17
|
-
8A7vflJiLpfnyUxwvVmB+ztVSalA9Q6rD1TEIqbKBmPFw5+oriVAm8QZf1UV+zlQ
|
18
|
-
4KqmzNNGcY8n4hAu72IoSHwA5se6jfhdeh2SS98CgYEAxOBCI0zBcsogFrXjgWxQ
|
19
|
-
mA8tUU8D1pjNS1QPzOxA3y9RT30NmRS1a8qQ//ZVYlsOMCW4fLhLCL08zyre/cIu
|
20
|
-
z3rGbEJU+9g9WDwClxoTJmoIjp73kX4VFC6DKSUWHwaBYPwuWCEZWi/uqe3E1Gnw
|
21
|
-
ynMr2QcB5HiH+ocmhc/y6O8CgYAi+CFHiWUcU9DzZs8MiKcwHJ8mcEOr5WL2Ckla
|
22
|
-
9s4wls9WsE4Tnh4ZhAi2kVbnRYHIhM6s8GQMP1Kiz0RPX9+MPjl+cTFE/07nsqKs
|
23
|
-
+gSBK0ThwM+HC1fpyjU+8ybRLK0ADV+RuGWuFoYyTnVtBf2BesOsmi65m/g+1GoK
|
24
|
-
6lMqGQKBgAD2RyL/KrbxKGMmqrkthYo4iw2/zAJ7XQ8yaP6OIuzW4pC/OeL52VZP
|
25
|
-
LjDsegmQeHD4VcCRB/jdtGFZFmGlhtkzQ2iX5+Vbrt6udP80X5CrrK51k0d6LSdg
|
26
|
-
nsDKs0appoZbfE/oaO2WpSPytyvlBQgoquq/kagYnOc+G2di5VBS
|
27
|
-
-----END RSA PRIVATE KEY-----
|
@@ -1,27 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
MIIEpAIBAAKCAQEAwx0q3noqTM8+/XURJxJ02oHxf8MdqY0M46VsCw7u6dXqeVF/
|
3
|
-
K/piezQZ2ZKMmdyzHBnrifbkN6oaLsNuW1xEO12wKl3W6j4VlE9NR3CL7ZfmKrTA
|
4
|
-
EVR/ynW7KOlXvNnN5p6vkuPM4xCu7YgtxpDVzkebE33FuhcgzQdElKuUqdQm7BDB
|
5
|
-
FWV+S3W9UQyG01APIZ9MjM39NroYdz31U/tRTKwlffLpVGjphIhCivPUP++E/7LL
|
6
|
-
vB5JAYjJaoZy98JsQ/tvzQ1EsPCkWQaKhtfuPFOaUviLGp7F2NV+wHrzA+b88v8z
|
7
|
-
BNd2HunVSNp7GpFmBj+gv6syB2O5oBoxGBibgQIDAQABAoIBAFYK9c24qBDJUCjr
|
8
|
-
yE2nuPpnVX2XKOyNdEKrv5K82iUqncU0aFWXjHhyiHfHRdPQXPgmghWMWCYoEHXQ
|
9
|
-
30jQzpIzha2ZRl50VIXb1uOLQVnco7bvkMfTsKsy8f9fr75ren6aOikX5lG4GLxN
|
10
|
-
Uop/cpoOP9f/ngOrkV55NwgtBllBnOu1P9VoUR6gSdZ8i9b8UZT1FjzKpudYMWmT
|
11
|
-
pOR8k62OKeze7jnxrqAhL/WzpsNM+rwE2pTvjo+lP3zu4sJqdhNzOK2irkDYHqrf
|
12
|
-
rvdnkXlnMNCVhtD9qiU6cVijPwTU24hw7R1aY2qpwWdSm2tkw2oNnBD911X3H32E
|
13
|
-
26tGeHECgYEA8Cct9KSLUZeE+bllwI/uhIWRYpyH6Rn0FlAHIo/+Dfgl/QX9yTNk
|
14
|
-
GI8/pUJ+tYClfWPQq+hmUx28zsyUFhqoCEFJDRbORFphGkJsod4RMBNAZokr2kuv
|
15
|
-
J3qKt3DaX1QQXA+NI6gfg92sJYDv0gAJWrc5QhIVGbRuUypgMUcrjrUCgYEAz/0o
|
16
|
-
fvtwwMMOoyp3bS8oPnccffi74+0FI+mSccn5GS734SLe2yd6G0SiOmv9W7LGfZ8q
|
17
|
-
EjSfOZ1uknBBN8OyZ4BVZR9b1aOF5caTlfP3NsKOuQVUekHcrexyNWCuoyblw2VZ
|
18
|
-
r+ztp0FT+OtWyA2JDkBJBh7+ba4Flpr2No5pTR0CgYEAqwCa/pq0AZNMwq07QRS8
|
19
|
-
GG0rivY+6MLsRX8StY+mrbfHBRZhEgWf/sTx4vEoXIGQVWrfyakgQ4rnSLHvuJWe
|
20
|
-
lNI3/DQDCDT688HcrJ39yyfKMbj3GufNfuUJJXocZMjtJUCFlaA/YJxV2hanrfcM
|
21
|
-
siXJhbxuffE2pc2E1VICOAkCgYBUmIOAIoUZ4jxx4TPyFNwpjAjqs+C4NA+DK92E
|
22
|
-
qsHGnHP1/ljmiof/z0qsuH+0bGKPdc2G2iBpLr9qkH32UIKf1nLlTnvryTcM3lfp
|
23
|
-
BfHnM/sZBjH2CBPaKfHKBCkD8y5A61gvVg7TmJ6vAAmsFNVKFpudAb46ni1ntF+w
|
24
|
-
kPwDgQKBgQDgR0Y4zWHD5HbmhRFs6SZl8WUF3UA4XXdsuyi3CoUDmxw3d7fTmqKb
|
25
|
-
twyFuVrlm6I5ArTx6IGyYwidFaZglKDeQnLCToarM8GcMipquJzd4tmlkZJb9pOi
|
26
|
-
cxJjNA6+D1uSGC2LW7gsXsAf/wJ6J7GPH2SzEiezhhgvALfujlX1Vw==
|
27
|
-
-----END RSA PRIVATE KEY-----
|
@@ -1,29 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIE8TCCA9mgAwIBAgITAPoaP9spbg6rEZeE9ftc0nGrejANBgkqhkiG9w0BAQsF
|
3
|
-
ADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0xNjA5MTgx
|
4
|
-
MzI4MDBaFw0xNjEyMTcxMzI4MDBaMCExHzAdBgNVBAMTFmNhdHVycmEuZXhhY3Ri
|
5
|
-
eXRlcy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6IzRaeBrY
|
6
|
-
QCA6iaoKAG2aODktRuw9ZEKZluXVNQosnlhUzkcClyj/O6mM4RUqXZw4SzdDPYLL
|
7
|
-
f8qRxBvvGtOX/WfsMxkJk6ZwrFHp8GwYchgKehVhuuvPmzXx4sTZCyFOs2sK5PNg
|
8
|
-
g17lI8Qdzw1cyI2zT+WVK9BMWRWw4UM+TEHLeb8LWn0Ljw5sk5krgffx8HCmC8Ho
|
9
|
-
JruFOXUiRAl2+sWq02JM83FfB6lRXtp1yt+U/XdCpsbcDQyUjLfzcN0Wu/zXLPFN
|
10
|
-
AaVDKTzdhSU/q9ze+RkT4DSJHXD272ekvIdgbDoOpXbChZqvqoIqQOI6EkFGTHE8
|
11
|
-
sAsnJBm9sRcLAgMBAAGjggIfMIICGzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
|
12
|
-
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBdA
|
13
|
-
wGk8f15CB4YLr6G1JhTTrxUJMB8GA1UdIwQYMBaAFMDMA0a5WCDMXHJw8+EuyyCm
|
14
|
-
9Wg6MHgGCCsGAQUFBwEBBGwwajAzBggrBgEFBQcwAYYnaHR0cDovL29jc3Auc3Rn
|
15
|
-
LWludC14MS5sZXRzZW5jcnlwdC5vcmcvMDMGCCsGAQUFBzAChidodHRwOi8vY2Vy
|
16
|
-
dC5zdGctaW50LXgxLmxldHNlbmNyeXB0Lm9yZy8wIQYDVR0RBBowGIIWY2F0dXJy
|
17
|
-
YS5leGFjdGJ5dGVzLmNvbTCB/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYLKwYB
|
18
|
-
BAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQu
|
19
|
-
b3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9ubHkg
|
20
|
-
YmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGluIGFj
|
21
|
-
Y29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0IGh0
|
22
|
-
dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEBCwUA
|
23
|
-
A4IBAQCugwNrp0wmMHoU33jzeOlCWaHLnYplYxGp2zL0uU0/DxWLyVn5u6dj7hcq
|
24
|
-
UggYh+8PL0iVLPSfLId4t1aI7gor1qmF6L9yzAQq0vderwXMXvLurOsVfEaGJjrA
|
25
|
-
mpmTews20NdDFJaYly/4GrDfb07D8NTBlzu9sUkRUznBdJ/8u/SjBkFAK5ICxkJ7
|
26
|
-
/6KiKwk7g0k9vyMMfAsLCNEPueY17mCnlzj7A2N90np4QXjgcFdFqibAQ6J/+La0
|
27
|
-
flU1PWfms+UwRjt4vBebAmInd50lofObm6OPnB9X9IH0vVvnZBUIhk8BE+wxnlw9
|
28
|
-
piOf4l9a4N8YiiR+VTUGSOOO7jsN
|
29
|
-
-----END CERTIFICATE-----
|
@@ -1,27 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQELBQAw
|
3
|
-
GjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1OVoXDTM2
|
4
|
-
MDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1lZGlhdGUgWDEw
|
5
|
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKySDn7rWZc5ggjz3ZB0
|
6
|
-
8jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+IvdbXF5/yt8aWPpUKnPym
|
7
|
-
oLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtApEN8nZFnf3bhehZW7AxmS1m0
|
8
|
-
ZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdlz5bbrUYV2volxhDFtnI4Mh8BiWCN
|
9
|
-
xDH1Hizq+GKCcHsinDZWurCqder/afJBnQs+SBSL6MVApHt+d35zjBD92fO2Je56
|
10
|
-
dhMfzCgOKXeJ340WhW3TjD1zqLZXeaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9
|
11
|
-
AgMBAAGjgeMwgeAwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw
|
12
|
-
HQYDVR0OBBYEFMDMA0a5WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0
|
13
|
-
BggrBgEFBQcwAYYoaHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu
|
14
|
-
b3JnLzA0BggrBgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2Vu
|
15
|
-
Y3J5cHQub3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkq
|
16
|
-
hkiG9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF
|
17
|
-
UGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieTsaC9
|
18
|
-
AFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07sGHMCf+zp
|
19
|
-
DQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBFRFclzLRjo/h7
|
20
|
-
IkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJiY2xmVC9h12H99Xyf
|
21
|
-
zWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlIRmvXvVKTwNCP3eCjRCCI
|
22
|
-
PTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8iBm+5nk7O2ynaPVW0U2W+pt2w
|
23
|
-
SVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6YfdOUH66iRtQtDkHBRdkNBsMbD+Em
|
24
|
-
2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUDWJ7vO0+NTXlgrRofRT6pVywzxVo6dND0
|
25
|
-
WzYlTWeUVsO40xJqhgUQRER9YLOLxJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uyt
|
26
|
-
n5Z5MqkYhlMI3J1tPRTp1nEt9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU=
|
27
|
-
-----END CERTIFICATE-----
|
@@ -1,56 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIE8TCCA9mgAwIBAgITAPoaP9spbg6rEZeE9ftc0nGrejANBgkqhkiG9w0BAQsF
|
3
|
-
ADAiMSAwHgYDVQQDDBdGYWtlIExFIEludGVybWVkaWF0ZSBYMTAeFw0xNjA5MTgx
|
4
|
-
MzI4MDBaFw0xNjEyMTcxMzI4MDBaMCExHzAdBgNVBAMTFmNhdHVycmEuZXhhY3Ri
|
5
|
-
eXRlcy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6IzRaeBrY
|
6
|
-
QCA6iaoKAG2aODktRuw9ZEKZluXVNQosnlhUzkcClyj/O6mM4RUqXZw4SzdDPYLL
|
7
|
-
f8qRxBvvGtOX/WfsMxkJk6ZwrFHp8GwYchgKehVhuuvPmzXx4sTZCyFOs2sK5PNg
|
8
|
-
g17lI8Qdzw1cyI2zT+WVK9BMWRWw4UM+TEHLeb8LWn0Ljw5sk5krgffx8HCmC8Ho
|
9
|
-
JruFOXUiRAl2+sWq02JM83FfB6lRXtp1yt+U/XdCpsbcDQyUjLfzcN0Wu/zXLPFN
|
10
|
-
AaVDKTzdhSU/q9ze+RkT4DSJHXD272ekvIdgbDoOpXbChZqvqoIqQOI6EkFGTHE8
|
11
|
-
sAsnJBm9sRcLAgMBAAGjggIfMIICGzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
|
12
|
-
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBdA
|
13
|
-
wGk8f15CB4YLr6G1JhTTrxUJMB8GA1UdIwQYMBaAFMDMA0a5WCDMXHJw8+EuyyCm
|
14
|
-
9Wg6MHgGCCsGAQUFBwEBBGwwajAzBggrBgEFBQcwAYYnaHR0cDovL29jc3Auc3Rn
|
15
|
-
LWludC14MS5sZXRzZW5jcnlwdC5vcmcvMDMGCCsGAQUFBzAChidodHRwOi8vY2Vy
|
16
|
-
dC5zdGctaW50LXgxLmxldHNlbmNyeXB0Lm9yZy8wIQYDVR0RBBowGIIWY2F0dXJy
|
17
|
-
YS5leGFjdGJ5dGVzLmNvbTCB/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYLKwYB
|
18
|
-
BAGC3xMBAQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQu
|
19
|
-
b3JnMIGrBggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9ubHkg
|
20
|
-
YmUgcmVsaWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGluIGFj
|
21
|
-
Y29yZGFuY2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0IGh0
|
22
|
-
dHBzOi8vbGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEBCwUA
|
23
|
-
A4IBAQCugwNrp0wmMHoU33jzeOlCWaHLnYplYxGp2zL0uU0/DxWLyVn5u6dj7hcq
|
24
|
-
UggYh+8PL0iVLPSfLId4t1aI7gor1qmF6L9yzAQq0vderwXMXvLurOsVfEaGJjrA
|
25
|
-
mpmTews20NdDFJaYly/4GrDfb07D8NTBlzu9sUkRUznBdJ/8u/SjBkFAK5ICxkJ7
|
26
|
-
/6KiKwk7g0k9vyMMfAsLCNEPueY17mCnlzj7A2N90np4QXjgcFdFqibAQ6J/+La0
|
27
|
-
flU1PWfms+UwRjt4vBebAmInd50lofObm6OPnB9X9IH0vVvnZBUIhk8BE+wxnlw9
|
28
|
-
piOf4l9a4N8YiiR+VTUGSOOO7jsN
|
29
|
-
-----END CERTIFICATE-----
|
30
|
-
-----BEGIN CERTIFICATE-----
|
31
|
-
MIIEqzCCApOgAwIBAgIRAIvhKg5ZRO08VGQx8JdhT+UwDQYJKoZIhvcNAQELBQAw
|
32
|
-
GjEYMBYGA1UEAwwPRmFrZSBMRSBSb290IFgxMB4XDTE2MDUyMzIyMDc1OVoXDTM2
|
33
|
-
MDUyMzIyMDc1OVowIjEgMB4GA1UEAwwXRmFrZSBMRSBJbnRlcm1lZGlhdGUgWDEw
|
34
|
-
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtWKySDn7rWZc5ggjz3ZB0
|
35
|
-
8jO4xti3uzINfD5sQ7Lj7hzetUT+wQob+iXSZkhnvx+IvdbXF5/yt8aWPpUKnPym
|
36
|
-
oLxsYiI5gQBLxNDzIec0OIaflWqAr29m7J8+NNtApEN8nZFnf3bhehZW7AxmS1m0
|
37
|
-
ZnSsdHw0Fw+bgixPg2MQ9k9oefFeqa+7Kqdlz5bbrUYV2volxhDFtnI4Mh8BiWCN
|
38
|
-
xDH1Hizq+GKCcHsinDZWurCqder/afJBnQs+SBSL6MVApHt+d35zjBD92fO2Je56
|
39
|
-
dhMfzCgOKXeJ340WhW3TjD1zqLZXeaCyUNRnfOmWZV8nEhtHOFbUCU7r/KkjMZO9
|
40
|
-
AgMBAAGjgeMwgeAwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAw
|
41
|
-
HQYDVR0OBBYEFMDMA0a5WCDMXHJw8+EuyyCm9Wg6MHoGCCsGAQUFBwEBBG4wbDA0
|
42
|
-
BggrBgEFBQcwAYYoaHR0cDovL29jc3Auc3RnLXJvb3QteDEubGV0c2VuY3J5cHQu
|
43
|
-
b3JnLzA0BggrBgEFBQcwAoYoaHR0cDovL2NlcnQuc3RnLXJvb3QteDEubGV0c2Vu
|
44
|
-
Y3J5cHQub3JnLzAfBgNVHSMEGDAWgBTBJnSkikSg5vogKNhcI5pFiBh54DANBgkq
|
45
|
-
hkiG9w0BAQsFAAOCAgEABYSu4Il+fI0MYU42OTmEj+1HqQ5DvyAeyCA6sGuZdwjF
|
46
|
-
UGeVOv3NnLyfofuUOjEbY5irFCDtnv+0ckukUZN9lz4Q2YjWGUpW4TTu3ieTsaC9
|
47
|
-
AFvCSgNHJyWSVtWvB5XDxsqawl1KzHzzwr132bF2rtGtazSqVqK9E07sGHMCf+zp
|
48
|
-
DQVDVVGtqZPHwX3KqUtefE621b8RI6VCl4oD30Olf8pjuzG4JKBFRFclzLRjo/h7
|
49
|
-
IkkfjZ8wDa7faOjVXx6n+eUQ29cIMCzr8/rNWHS9pYGGQKJiY2xmVC9h12H99Xyf
|
50
|
-
zWE9vb5zKP3MVG6neX1hSdo7PEAb9fqRhHkqVsqUvJlIRmvXvVKTwNCP3eCjRCCI
|
51
|
-
PTAvjV+4ni786iXwwFYNz8l3PmPLCyQXWGohnJ8iBm+5nk7O2ynaPVW0U2W+pt2w
|
52
|
-
SVuvdDM5zGv2f9ltNWUiYZHJ1mmO97jSY/6YfdOUH66iRtQtDkHBRdkNBsMbD+Em
|
53
|
-
2TgBldtHNSJBfB3pm9FblgOcJ0FSWcUDWJ7vO0+NTXlgrRofRT6pVywzxVo6dND0
|
54
|
-
WzYlTWeUVsO40xJqhgUQRER9YLOLxJ0O6C8i0xFxAMKOtSdodMB3RIwt7RFQ0uyt
|
55
|
-
n5Z5MqkYhlMI3J1tPRTp1nEt9fyGspBOO05gi148Qasp+3N+svqKomoQglNoAxU=
|
56
|
-
-----END CERTIFICATE-----
|