Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d21a41330c | |||
| 4983d151c4 | |||
| 3c711fc376 | |||
| e9722f4a2f | |||
| f1f48e6c23 | |||
| eae09c0780 | |||
| 0528a5d4bd | |||
| fff2a43d63 | |||
| 46806f86f4 | |||
| 32af9bb353 | |||
| 6b66c9fd9d | |||
| 98ddef1e9a | |||
| e316a82f86 | |||
| 0be69bd810 | |||
| b1c5f9049f | |||
| 3eb0a395f3 | |||
| f878a91eb5 |
@@ -0,0 +1,41 @@
|
||||
on:
|
||||
- push
|
||||
- pull_request
|
||||
|
||||
jobs:
|
||||
test:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node:
|
||||
- '0.8'
|
||||
- '0.10'
|
||||
- '0.12'
|
||||
- '4'
|
||||
- '6'
|
||||
- '8'
|
||||
- '10'
|
||||
- '12'
|
||||
- '14'
|
||||
- '16'
|
||||
- '18'
|
||||
- '20'
|
||||
name: node.js v${{ matrix.node }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ matrix.node }}
|
||||
|
||||
- if: matrix.node == '0.8'
|
||||
run: npm conf set strict-ssl false
|
||||
|
||||
- run: node --version
|
||||
- run: npm install
|
||||
|
||||
- run: npm install 'nopt@5'
|
||||
- run: rm -rf node_modules/jstest/node_modules/nopt
|
||||
|
||||
- run: npm test
|
||||
@@ -1,6 +0,0 @@
|
||||
.git
|
||||
.gitignore
|
||||
.npmignore
|
||||
.travis.yml
|
||||
node_modules
|
||||
spec
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
sudo: false
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
||||
- "0.12"
|
||||
- "4"
|
||||
- "5"
|
||||
- "6"
|
||||
- "7"
|
||||
- "8"
|
||||
- "9"
|
||||
- "10"
|
||||
- "11"
|
||||
- "12"
|
||||
|
||||
before_install:
|
||||
- '[ "${TRAVIS_NODE_VERSION}" != "0.8" ] || npm install -g npm@~1.4.0'
|
||||
@@ -1,7 +1,12 @@
|
||||
### 0.11.4 / 2021-05-24
|
||||
|
||||
- Prevent the client hanging if `close()` is called when already closing
|
||||
|
||||
### 0.11.3 / 2019-06-10
|
||||
|
||||
- Fix a race condition that caused a timeout not to be cancelled immediately
|
||||
when the WebSocket is closed
|
||||
- Change license from MIT to Apache 2.0
|
||||
|
||||
### 0.11.2 / 2019-06-10
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Copyright 2010-2019 James Coglan
|
||||
Copyright 2010-2021 James Coglan
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# faye-websocket [](http://travis-ci.org/faye/faye-websocket-node)
|
||||
# faye-websocket
|
||||
|
||||
This is a general-purpose WebSocket implementation extracted from the
|
||||
[Faye](http://faye.jcoglan.com) project. It provides classes for easily building
|
||||
@@ -38,11 +38,11 @@ var server = http.createServer();
|
||||
server.on('upgrade', function(request, socket, body) {
|
||||
if (WebSocket.isWebSocket(request)) {
|
||||
var ws = new WebSocket(request, socket, body);
|
||||
|
||||
|
||||
ws.on('message', function(event) {
|
||||
ws.send(event.data);
|
||||
});
|
||||
|
||||
|
||||
ws.on('close', function(event) {
|
||||
console.log('close', event.code, event.reason);
|
||||
ws = null;
|
||||
@@ -120,8 +120,8 @@ require. Only the `origin` setting is required.
|
||||
var ws = new WebSocket.Client('ws://www.example.com/', [], {
|
||||
proxy: {
|
||||
origin: 'http://username:password@proxy.example.com',
|
||||
headers: {'User-Agent': 'node'},
|
||||
tls: {cert: fs.readFileSync('client.crt')}
|
||||
headers: { 'User-Agent': 'node' },
|
||||
tls: { cert: fs.readFileSync('client.crt') }
|
||||
}
|
||||
});
|
||||
```
|
||||
@@ -164,7 +164,7 @@ array of extensions to the `:extensions` option. For example, to add
|
||||
```js
|
||||
var deflate = require('permessage-deflate');
|
||||
|
||||
var ws = new WebSocket(request, socket, body, [], {extensions: [deflate]});
|
||||
var ws = new WebSocket(request, socket, body, [], { extensions: [deflate] });
|
||||
```
|
||||
|
||||
|
||||
@@ -200,7 +200,7 @@ The client accepts some additional options:
|
||||
- `tls` - an object containing TLS settings for the origin server, this will be
|
||||
passed to
|
||||
[`tls.connect()`](https://nodejs.org/api/tls.html#tls_tls_connect_options_callback)
|
||||
- `ca` - (legacy) a shorthand for passing `{tls: {ca: value}}`
|
||||
- `ca` - (legacy) a shorthand for passing `{ tls: { ca: value } }`
|
||||
|
||||
|
||||
## WebSocket API
|
||||
@@ -249,18 +249,18 @@ server.on('request', function(request, response) {
|
||||
if (EventSource.isEventSource(request)) {
|
||||
var es = new EventSource(request, response);
|
||||
console.log('open', es.url, es.lastEventId);
|
||||
|
||||
|
||||
// Periodically send messages
|
||||
var loop = setInterval(function() { es.send('Hello') }, 1000);
|
||||
|
||||
|
||||
es.on('close', function() {
|
||||
clearInterval(loop);
|
||||
es = null;
|
||||
});
|
||||
|
||||
|
||||
} else {
|
||||
// Normal HTTP request
|
||||
response.writeHead(200, {'Content-Type': 'text/plain'});
|
||||
response.writeHead(200, { 'Content-Type': 'text/plain' });
|
||||
response.end('Hello');
|
||||
}
|
||||
});
|
||||
@@ -273,7 +273,7 @@ event-type is `'message'` with no ID. For example, to send a `notification`
|
||||
event with ID `99`:
|
||||
|
||||
```js
|
||||
es.send('Breaking News!', {event: 'notification', id: '99'});
|
||||
es.send('Breaking News!', { event: 'notification', id: '99' });
|
||||
```
|
||||
|
||||
The `EventSource` object exposes the following properties:
|
||||
@@ -300,7 +300,7 @@ every 15 seconds and is retryable every 10 seconds if the connection is broken:
|
||||
|
||||
```js
|
||||
var es = new EventSource(request, response, {
|
||||
headers: {'Access-Control-Allow-Origin': '*'},
|
||||
headers: { 'Access-Control-Allow-Origin': '*' },
|
||||
ping: 15,
|
||||
retry: 10
|
||||
});
|
||||
|
||||
@@ -2,10 +2,10 @@ var WebSocket = require('..').Client,
|
||||
deflate = require('permessage-deflate'),
|
||||
pace = require('pace');
|
||||
|
||||
var host = 'ws://localhost:9001',
|
||||
var host = 'ws://0.0.0.0:9001',
|
||||
agent = encodeURIComponent('node-' + process.version),
|
||||
cases = 0,
|
||||
options = {extensions: [deflate]};
|
||||
options = { extensions: [deflate] };
|
||||
|
||||
var socket = new WebSocket(host + '/getCaseCount'),
|
||||
url, progress;
|
||||
@@ -20,7 +20,7 @@ var runCase = function(n) {
|
||||
if (n > cases) {
|
||||
url = host + '/updateReports?agent=' + agent;
|
||||
socket = new WebSocket(url);
|
||||
socket.onclose = process.exit;
|
||||
socket.onclose = function() { process.exit() };
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -5,12 +5,12 @@ var WebSocket = require('..').Client,
|
||||
var url = process.argv[2],
|
||||
proxy = process.argv[3],
|
||||
ca = fs.readFileSync(__dirname + '/../spec/server.crt'),
|
||||
tls = {ca: ca};
|
||||
tls = { ca: ca };
|
||||
|
||||
var ws = new WebSocket(url, [], {
|
||||
proxy: {origin: proxy, headers: {'User-Agent': 'Echo'}, tls: tls},
|
||||
proxy: { origin: proxy, headers: { 'User-Agent': 'Echo' }, tls: tls },
|
||||
tls: tls,
|
||||
headers: {Origin: 'http://faye.jcoglan.com'},
|
||||
headers: { Origin: 'http://faye.jcoglan.com' },
|
||||
extensions: [deflate]
|
||||
});
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@ var ProxyServer = require('../spec/proxy_server');
|
||||
|
||||
var port = process.argv[2],
|
||||
secure = process.argv[3] === 'tls',
|
||||
proxy = new ProxyServer({debug: true, tls: secure});
|
||||
proxy = new ProxyServer({ debug: true, tls: secure });
|
||||
|
||||
proxy.listen(port);
|
||||
|
||||
+4
-4
@@ -6,7 +6,7 @@ var WebSocket = require('..'),
|
||||
|
||||
var port = process.argv[2] || 7000,
|
||||
secure = process.argv[3] === 'tls',
|
||||
options = {extensions: [deflate], ping: 5};
|
||||
options = { extensions: [deflate], ping: 5 };
|
||||
|
||||
var upgradeHandler = function(request, socket, head) {
|
||||
var ws = new WebSocket(request, socket, head, ['irc', 'xmpp'], options);
|
||||
@@ -33,11 +33,11 @@ var requestHandler = function(request, response) {
|
||||
time += 1;
|
||||
es.send('Time: ' + time);
|
||||
setTimeout(function() {
|
||||
if (es) es.send('Update!!', {event: 'update', id: time});
|
||||
if (es) es.send('Update!!', { event: 'update', id: time });
|
||||
}, 1000);
|
||||
}, 2000);
|
||||
|
||||
fs.createReadStream(__dirname + '/haproxy.conf').pipe(es, {end: false});
|
||||
fs.createReadStream(__dirname + '/haproxy.conf').pipe(es, { end: false });
|
||||
|
||||
es.onclose = function() {
|
||||
clearInterval(loop);
|
||||
@@ -51,7 +51,7 @@ var staticHandler = function(request, response) {
|
||||
|
||||
fs.readFile(__dirname + path, function(err, content) {
|
||||
var status = err ? 404 : 200;
|
||||
response.writeHead(status, {'Content-Type': 'text/html'});
|
||||
response.writeHead(status, { 'Content-Type': 'text/html' });
|
||||
response.write(content || 'Not found');
|
||||
response.end();
|
||||
});
|
||||
|
||||
@@ -14,7 +14,7 @@ var WebSocket = function(request, socket, body, protocols, options) {
|
||||
options = options || {};
|
||||
|
||||
this._stream = socket;
|
||||
this._driver = driver.http(request, {maxLength: options.maxLength, protocols: protocols});
|
||||
this._driver = driver.http(request, { maxLength: options.maxLength, protocols: protocols });
|
||||
|
||||
var self = this;
|
||||
if (!this._stream || !this._stream.writable) return;
|
||||
|
||||
@@ -105,12 +105,14 @@ var instance = {
|
||||
"The code must be either 1000, or between 3000 and 4999. " +
|
||||
code + " is neither.");
|
||||
|
||||
if (this.readyState !== API.CLOSED) this.readyState = API.CLOSING;
|
||||
var self = this;
|
||||
if (this.readyState < API.CLOSING) {
|
||||
var self = this;
|
||||
this._closeTimer = setTimeout(function() {
|
||||
self._beginClose('', 1006);
|
||||
}, API.CLOSE_TIMEOUT);
|
||||
}
|
||||
|
||||
this._closeTimer = setTimeout(function() {
|
||||
self._beginClose('', 1006);
|
||||
}, API.CLOSE_TIMEOUT);
|
||||
if (this.readyState !== API.CLOSED) this.readyState = API.CLOSING;
|
||||
|
||||
this._driver.close(reason, code);
|
||||
},
|
||||
@@ -147,7 +149,7 @@ var instance = {
|
||||
|
||||
if (this.readable) this.emit('data', data);
|
||||
|
||||
var event = new Event('message', {data: data});
|
||||
var event = new Event('message', { data: data });
|
||||
event.initEvent('message', false, false);
|
||||
this.dispatchEvent(event);
|
||||
},
|
||||
@@ -155,7 +157,7 @@ var instance = {
|
||||
_emitError: function(message) {
|
||||
if (this.readyState >= API.CLOSING) return;
|
||||
|
||||
var event = new Event('error', {message: message});
|
||||
var event = new Event('error', { message: message });
|
||||
event.initEvent('error', false, false);
|
||||
this.dispatchEvent(event);
|
||||
},
|
||||
@@ -185,7 +187,7 @@ var instance = {
|
||||
var reason = this._closeParams ? this._closeParams[0] : '',
|
||||
code = this._closeParams ? this._closeParams[1] : 1006;
|
||||
|
||||
var event = new Event('close', {code: code, reason: reason});
|
||||
var event = new Event('close', { code: code, reason: reason });
|
||||
event.initEvent('close', false, false);
|
||||
this.dispatchEvent(event);
|
||||
}
|
||||
|
||||
@@ -8,14 +8,14 @@ var util = require('util'),
|
||||
API = require('./api'),
|
||||
Event = require('./api/event');
|
||||
|
||||
var DEFAULT_PORTS = {'http:': 80, 'https:': 443, 'ws:':80, 'wss:': 443},
|
||||
var DEFAULT_PORTS = { 'http:': 80, 'https:': 443, 'ws:':80, 'wss:': 443 },
|
||||
SECURE_PROTOCOLS = ['https:', 'wss:'];
|
||||
|
||||
var Client = function(_url, protocols, options) {
|
||||
options = options || {};
|
||||
|
||||
this.url = _url;
|
||||
this._driver = driver.client(this.url, {maxLength: options.maxLength, protocols: protocols});
|
||||
this._driver = driver.client(this.url, { maxLength: options.maxLength, protocols: protocols });
|
||||
|
||||
['open', 'error'].forEach(function(event) {
|
||||
this._driver.on(event, function() {
|
||||
@@ -67,12 +67,12 @@ Client.prototype._configureProxy = function(proxy, originTLS) {
|
||||
for (name in proxy.headers) this._proxy.setHeader(name, proxy.headers[name]);
|
||||
}
|
||||
|
||||
this._proxy.pipe(this._stream, {end: false});
|
||||
this._proxy.pipe(this._stream, { end: false });
|
||||
this._stream.pipe(this._proxy);
|
||||
|
||||
this._proxy.on('connect', function() {
|
||||
if (secure) {
|
||||
var options = {socket: self._stream, servername: uri.hostname};
|
||||
var options = { socket: self._stream, servername: uri.hostname };
|
||||
for (name in originTLS) options[name] = originTLS[name];
|
||||
self._stream = tls.connect(options);
|
||||
self._configureStream();
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@
|
||||
"eventsource"
|
||||
],
|
||||
"license": "Apache-2.0",
|
||||
"version": "0.11.3",
|
||||
"version": "0.11.4",
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
},
|
||||
|
||||
@@ -17,7 +17,7 @@ var WebSocketSteps = test.asyncSteps({
|
||||
},
|
||||
|
||||
proxy: function(port, secure, callback) {
|
||||
this._proxyServer = new ProxyServer({tls: secure})
|
||||
this._proxyServer = new ProxyServer({ tls: secure })
|
||||
this._proxyServer.listen(port)
|
||||
process.nextTick(callback)
|
||||
},
|
||||
@@ -157,7 +157,7 @@ test.describe("Client", function() { with(this) {
|
||||
sharedBehavior("socket client", function() { with(this) {
|
||||
it("can open a connection", function() { with(this) {
|
||||
open_socket(socket_url, protocols)
|
||||
check_open(101, {"Upgrade": "websocket"})
|
||||
check_open(101, { "Upgrade": "websocket" })
|
||||
check_protocol("echo")
|
||||
}})
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ var fs = require('fs'),
|
||||
net = require('net'),
|
||||
url = require('url');
|
||||
|
||||
var AGENTS = {'http:': http, 'https:': https},
|
||||
PORTS = {'http:': 80, 'https:': 443};
|
||||
var AGENTS = { 'http:': http, 'https:': https },
|
||||
PORTS = { 'http:': 80, 'https:': 443 };
|
||||
|
||||
var ProxyServer = function(options) {
|
||||
var proxy = options.tls
|
||||
|
||||
+17
-10
@@ -1,12 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIBuTCCASICCQDYxKMSaqIBUjANBgkqhkiG9w0BAQUFADAhMQswCQYDVQQGEwJV
|
||||
SzESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTE4MDcyNjEwMDc1MVoXDTE5MDcyNjEw
|
||||
MDc1MVowITELMAkGA1UEBhMCVUsxEjAQBgNVBAMMCWxvY2FsaG9zdDCBnzANBgkq
|
||||
hkiG9w0BAQEFAAOBjQAwgYkCgYEA0yhJUiPwtCyZz6B8F+7nczFx5dGN2FqHt3Vr
|
||||
X4Kw1bZYAibi2A1mLTUzq2XL1MkMZEKmU7Ed5W2XLE6pDBx+uwx2Ip+Ma04iPSIZ
|
||||
tpvYsDueWVWEsQ+ErT03l6b+tEDRBi5Phg6BkOyB8Wrt7hAeGCDZCpQCYtAJ/S51
|
||||
2BZTY2sCAwEAATANBgkqhkiG9w0BAQUFAAOBgQCm3xXFjYREjaj7SzBKq8R0YN57
|
||||
v1a+6IG9Lc4LHKxg9BMK/duj3pBina0pK97acJVUUMljh6q1jcfU2nvp2JPky+DL
|
||||
A7Ct59/Q4KB2Hlo3uCKEQvgpXkuRUbtgtLDSnr6IOQpfOJV3wbZC9hhSAG9vxDwz
|
||||
Ntk1nrqynosPPRFkjQ==
|
||||
MIIDCTCCAfECFGK6xC8kSXk3aNAjEuRTAeHoO1BFMA0GCSqGSIb3DQEBCwUAMEEx
|
||||
CzAJBgNVBAYTAlVLMQ8wDQYDVQQIDAZMb25kb24xDTALBgNVBAoMBEZheWUxEjAQ
|
||||
BgNVBAMMCWxvY2FsaG9zdDAeFw0yMzA5MDcxNzU4NTVaFw0yNDA5MDYxNzU4NTVa
|
||||
MEExCzAJBgNVBAYTAlVLMQ8wDQYDVQQIDAZMb25kb24xDTALBgNVBAoMBEZheWUx
|
||||
EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBAMGREBi/onEuDpfFOi+6ugGeYTEV+n/KrYDWdT5FCFrL3Ab/kCpWCpwzv6A5
|
||||
lEPoqyf1Y0+cpcxwZm24fZV8uaaQ53xamzp7/6K+6IeNdI3Lq1J7gJx5wU5tdm2U
|
||||
jbWv7U0R+XX6MzWYqRFWuCNu2n9uvTl0AKDnyAWmRbhMKXriD5IWbPvMqgI/FnXh
|
||||
VnK7z+UHzLb214Q0VlfUs4U8oJjA5K7IEiMF2FkA3HPnxdvtjDNDCYyahumWLozP
|
||||
lbSo8Zlyr4xpp7yUv9TAhJozs+Y320cBpLlEeQoFIel+nOc7xgD2Wmu11ds0p/4j
|
||||
8qdFOv1h9d2DsLQ5ZFJxbXVNu0UCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAaMQl
|
||||
AnLCKsdodSl6KV3joaGSSkY8WuD1Y76/bieArwRRqdSA4eGYcAHnsyEUqP2otgCj
|
||||
+vS9h9jGMbLLjPindE+0jij9TpA9oNk8exUQSN5CNgBbrxWakDR6GmK7nWYD4/uh
|
||||
wcj7QuysExGqpvY1eXh8ki81a5g3if2wjSkprF0VEtulv/MB7eBqvyEZ2d6IuNUc
|
||||
IG3FmHcCRiGW0S+fPshmSN+OkUtMBJxHXRbr7TFy3Iz4vSDcq0XznVksNTavz5ve
|
||||
r4qWhPn0J3lfo9y5GBPCv7RWnxqnQWNM8dXPmS8Wh8hteSde8rtHkPuRDF/1VdER
|
||||
myxYuyLx/dhkxp57kw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
+28
-15
@@ -1,15 +1,28 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQDTKElSI/C0LJnPoHwX7udzMXHl0Y3YWoe3dWtfgrDVtlgCJuLY
|
||||
DWYtNTOrZcvUyQxkQqZTsR3lbZcsTqkMHH67DHYin4xrTiI9Ihm2m9iwO55ZVYSx
|
||||
D4StPTeXpv60QNEGLk+GDoGQ7IHxau3uEB4YINkKlAJi0An9LnXYFlNjawIDAQAB
|
||||
AoGBAIX7Wgq0o1avtij4O8Uz4chF529buBU/3D2cU7UWx/3S5aT355gPaHXm/BIV
|
||||
VXB+4U38vGz+RWn+T53di4YTzpTZ2hUpsfR3qLPxEQDwws8NcGmaWMpkDNZYVMGi
|
||||
jC37g3TCNlaW+rpdAhKg8izORjQkY3XI4rClZczojkVC954BAkEA8fBLjrqXEc7I
|
||||
o1mTgduGBwYeBSRVoNLpTqQjrKfmmXFv1vntVhXZsqkgNgP4QJtLnr1IxAMxNeTK
|
||||
gNU7nDhQ0QJBAN9uAmHXQgDZijQOujBTQSd/XdIvFAouNGLvGDreoXqMG3o7vEuS
|
||||
H0rPj30u0zwJ7NluPKnshMjLWi/GWZaXX3sCQQDN/kLW65fk2aOLMaGeV0LuiA7X
|
||||
YfBmVi2/f5HAV9THoQYQjAu/2CrbK5T5aLfeilsAdTmXawBjWsHwn515jZmBAkBW
|
||||
nVDzGP2PUsXO1H69SSkS5L88Qd/k6nCIgePEvpWe6j2krw+ZxDW5TKl1f/eHaNmW
|
||||
mLOPtA7twFdf+ea1CE2NAkB+DytRQjaWstKAO8dpVzyZ9J6bP+FAEGy7lg7GJvKP
|
||||
HW14WK1OJ1luQ2vkftTPjJuE+5QDpkuXFMqJerzBtnL6
|
||||
-----END RSA PRIVATE KEY-----
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDBkRAYv6JxLg6X
|
||||
xTovuroBnmExFfp/yq2A1nU+RQhay9wG/5AqVgqcM7+gOZRD6Ksn9WNPnKXMcGZt
|
||||
uH2VfLmmkOd8Wps6e/+ivuiHjXSNy6tSe4CcecFObXZtlI21r+1NEfl1+jM1mKkR
|
||||
Vrgjbtp/br05dACg58gFpkW4TCl64g+SFmz7zKoCPxZ14VZyu8/lB8y29teENFZX
|
||||
1LOFPKCYwOSuyBIjBdhZANxz58Xb7YwzQwmMmobpli6Mz5W0qPGZcq+Maae8lL/U
|
||||
wISaM7PmN9tHAaS5RHkKBSHpfpznO8YA9lprtdXbNKf+I/KnRTr9YfXdg7C0OWRS
|
||||
cW11TbtFAgMBAAECggEAB+Pxa4jYRtPRTXeBNTPf5DQAEz+pm+73nqJfWh/3RLg9
|
||||
ql1dk5Q5T3++hnoCZLhFzdWvbC3fBlPooP1dxSu156fNf+CzpjEqzQgKM4hdIXCV
|
||||
dcHKDtbZvegxZSsika7vte4PJLODxeIItke6LtuUdZBej0p+whBgs3ZBLk+Qe01M
|
||||
la73SCNi0Pjg8auyMRvncLqFvKE/KplemeCS30+AMoyhtLKQmrOo+Ub94N+tp8fR
|
||||
COtsmIJQX6uj1cg3Ikn23G5Kll66gt3kzNRGgNfkcygWmfPFE4WHBZXvOiLHhs7j
|
||||
FsAtA+vVODDyofmgT686LsEg70aM58SCXhX5DtsxYQKBgQDsejwS1Po4rrAqZj7j
|
||||
ny9lnZuCGo/P9CnDzcNnsJAxVBh5knKkVNC8r6ubMBwrf3lq+I7RbI3AAS/vxcON
|
||||
Rhj39cvUMSv5/fkMAGDIHL2yW8LBufYbyyQm2ChFuas51560aAsCrFN1gB0I8A1M
|
||||
eRkNFcoPzeS8GHkjhE8P4EyRkQKBgQDRi/EQ+nA5nfLggl+G67ACiMe2i3FZs1mP
|
||||
4WWA7fvfty/L6WBGuxCU1v9hMBj63LhHrlKF2MOHbKNuBwGYjeNgqaBWw+ahwdPX
|
||||
N06x/FhR1q8AiVH26S5nRAaoh5ode5H2dx17e0QteEFe29nFoSkT47sAOxRfkWjx
|
||||
QqBdBgH0dQKBgG54zAegJyTDttiX21lKzEGUV0l4Tya+0aP/RAH0oefpeWWR3KyY
|
||||
UstS5cAhwYcwjfBDHbUIGVBRPautn6Un0hJEaWw/bGPlGatZodzaUGQ6KcmGrkpd
|
||||
pA3hfS7VhgAHksSEtmARUQvbRbUfL5dCG0nZnAO2E90rMaw96xFnn12BAoGAeX9J
|
||||
jA2Zal7hhzkwiDs5t451NauOUnNCF8GZp/LU2rcNWI79SqWGDLbIJiLMKRA3LSCv
|
||||
KnovjOL5s38OdtS2JMLVe9lkbR/EY4Hm+B4XW4Q9vfLg+mfjhu6Tab4OJtASJrST
|
||||
/JfRRQf35zdUAlnaRnUBZTXcLzlRfqmh763fDk0CgYEAuBYr1xVFrdwn/YSHn5m5
|
||||
amexAv821RCWvuZMUPfnSHGoxOGGI0DEOocznIuExNoRVrsKMeuskbpoVuo/b4S5
|
||||
BVjzP+lNlkDEJVcYLnlX3t4elA9IYj7RqwZTmT8BrVEoH3AFns3O2jDzZw47I7dK
|
||||
bCewTY0p5+4zEWlgsxX/Mtk=
|
||||
-----END PRIVATE KEY-----
|
||||
|
||||
Reference in New Issue
Block a user