mirror of
https://github.com/SrIzan10/vdo.ninja.git
synced 2026-05-01 11:05:24 +00:00
handshake verbosity tweaks; fake guest labels
This commit is contained in:
@@ -92,7 +92,7 @@
|
||||
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=10"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/aes.js"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=789"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=799"></script>
|
||||
<input id="zoomSlider" type="range" style="display: none;" />
|
||||
<span id="electronDragZone" style="pointer-events: none; z-index:-10; position:absolute;top:0;left:0;width:100%;height:2%;-webkit-app-region: drag;min-height:20px;"></span>
|
||||
<div id="header">
|
||||
@@ -2634,7 +2634,7 @@
|
||||
// if (!window.location.search){document.body.innerHTML = "";} // uncomment this line, if you wish to try it.
|
||||
|
||||
var session = WebRTC.Media; // session is a required global variable if configuring manually. Run before loading main.js but after webrtc.js.
|
||||
session.version = "25.4";
|
||||
session.version = "25.5";
|
||||
session.streamID = session.generateStreamID(); // randomly generates a streamID for this session. You can set your own programmatically if needed
|
||||
|
||||
session.defaultPassword = "someEncryptionKey123"; // Change this password if self-deploying for added security/privacy
|
||||
@@ -2756,7 +2756,7 @@
|
||||
// session.decrypted = session.decodeInvite("U2FsdGVkX1+d58DFIHoO3EQZSuX86ch4PqW2ouztnJ0="); // get a code from invite.cam
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=1168"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=880"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=1176"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=884"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
62
lib.js
62
lib.js
@@ -86,10 +86,10 @@ var miscTranslations = {
|
||||
"enter-new-display-name": "Enter a new Display Name for this stream",
|
||||
"what-bitrate": "What bitrate would you like to record at? (kbps)\n\n - This remote guest will save the recording directly to their local disk.\n\n - The recording can fail, so have backup recordings going.\n\n - This record option does not use Internet bandwidth and offers a high quality recording",
|
||||
"enter-website": "Enter a website URL to share",
|
||||
"press-ok-to-record": "You can specify the recording bitrate below (kbps)\n\n - Press OK to start recording. Press again to stop and download.\n\n - Keep this browser tab active to continue recording.\n\n - This recording option will record to your local disk.\n\n - Quality may depend on the Internet connection between you and the guest.",
|
||||
"press-ok-to-record": "You can specify the recording bitrate below (kbps)\n\n - Press OK to start recording. Press again to stop and download.\n\n - Keep this browser tab active to continue recording.\n\n - This recording option will record to your local disk.\n\n - Quality may depend on the Internet connection between you and the guest.\n\n - Recordings may possibly fail; have a backup option.",
|
||||
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
|
||||
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
|
||||
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
|
||||
"stream-id-too-long": "The Stream ID should be less than 64 alPhaNuMeric characters long.\n\nWe will trim it to length.",
|
||||
"share-with-trusted": "Share only with those you trust",
|
||||
"pass-recommended": "A password is recommended",
|
||||
"insecure-room-name": "Insecure room name.",
|
||||
@@ -1493,8 +1493,8 @@ var sanitizeStreamID = function (streamID) {
|
||||
warnUser(getTranslation("alphanumeric-only"), false, false);
|
||||
}
|
||||
}
|
||||
if (streamID_sanitized.length > 44) {
|
||||
streamID_sanitized = streamID_sanitized.substring(0, 50);
|
||||
if (streamID_sanitized.length > 64) {
|
||||
streamID_sanitized = streamID_sanitized.substring(0, 70); // leave room for salting
|
||||
if (!session.cleanOutput) {
|
||||
warnUser(getTranslation("stream-id-too-long"), false, false);
|
||||
}
|
||||
@@ -3688,7 +3688,7 @@ function play(streamid = null, UUID = false) {
|
||||
if (session.directorList.indexOf(UUID) >= 0) {
|
||||
warnlog("stream ID added to badStreamList: " + streamid);
|
||||
session.badStreamList.push(streamid);
|
||||
session.watchStream(streamid);
|
||||
// session.watchStream(streamid); // changed June 4th 2024. We shouldn't be viewing the stream if on the bad list, no?
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7039,7 +7039,7 @@ function updateMixerRun(e = false) {
|
||||
vid.style.backgroundColor = "unset";
|
||||
}
|
||||
|
||||
if (vid.dataset.UUID && session.rpcs[vid.dataset.UUID] && "label" in session.rpcs[vid.dataset.UUID] && session.rpcs[vid.dataset.UUID].label !== false && session.showlabels === true) {
|
||||
if (vid.dataset.UUID && session.rpcs[vid.dataset.UUID] && ("label" in session.rpcs[vid.dataset.UUID]) && session.rpcs[vid.dataset.UUID].label !== false && (session.showlabels === true)) {
|
||||
// remote source
|
||||
|
||||
if (animated && container.twidth && container.theight) {
|
||||
@@ -7086,7 +7086,7 @@ function updateMixerRun(e = false) {
|
||||
.map(word => `<span>${word}</span>`)
|
||||
.join(" ");
|
||||
}
|
||||
} else if (session.showlabels === true && vid.id === "videosource" && session.label) {
|
||||
} else if ((session.showlabels === true) && (((vid.id === "videosource") && session.label) || vid.labelText)) {
|
||||
// local source
|
||||
// creates a label holder that's the same size of the vid element.
|
||||
|
||||
@@ -7126,7 +7126,7 @@ function updateMixerRun(e = false) {
|
||||
label.style.fontSize = parseInt(fontsize) + "px";
|
||||
}
|
||||
|
||||
label.innerText = sanitizeLabel(session.label); //.replace(/[\W]+/g,"_").replace(/_+/g, ' ');
|
||||
label.innerText = sanitizeLabel(vid.labelText || session.label); //.replace(/[\W]+/g,"_").replace(/_+/g, ' ');
|
||||
|
||||
if (label.innerText) {
|
||||
label.innerHTML = label.innerHTML
|
||||
@@ -11634,7 +11634,11 @@ function playoutdelay(UUID) {
|
||||
if (session.rpcs[UUID].stats[tid]._type == "audio") {
|
||||
session.rpcs[UUID].stats[tid]._sync_offset = sync_offset || 0;
|
||||
|
||||
receiver.playoutDelayHint = parseFloat(sync_offset / 1000) || 0;
|
||||
if ("jitterBufferTarget" in receiver){
|
||||
receiver.jitterBufferTarget = parseFloat(sync_offset) || 0;
|
||||
} else {
|
||||
receiver.playoutDelayHint = parseFloat(sync_offset / 1000) || 0;
|
||||
}
|
||||
// receiver.jitterBufferDelayhint = parseFloat(sync_offset/1000); // This is deprecated I believe
|
||||
|
||||
if (session.sync !== false) {
|
||||
@@ -11657,7 +11661,11 @@ function playoutdelay(UUID) {
|
||||
}
|
||||
} else if (session.rpcs[UUID].stats[tid]._type == "video") {
|
||||
session.rpcs[UUID].stats[tid]._sync_offset = sync_offset || 0;
|
||||
receiver.playoutDelayHint = parseFloat(sync_offset / 1000) || 0; // Chrome seems to somewhat sync audio and video when using the delay
|
||||
if ("jitterBufferTarget" in receiver){
|
||||
receiver.jitterBufferTarget = parseFloat(sync_offset) || 0;
|
||||
} else {
|
||||
receiver.playoutDelayHint = parseFloat(sync_offset / 1000) || 0;
|
||||
}
|
||||
// receiver.jitterBufferDelayhint = parseFloat(sync_offset/1000); // This is deprecated I believe
|
||||
}
|
||||
}
|
||||
@@ -18959,7 +18967,7 @@ function joinRoom(roomname) {
|
||||
log(response);
|
||||
for (var i in response) {
|
||||
if ("UUID" in response[i]) {
|
||||
if ("streamID" in response[i]) {
|
||||
if (response[i].streamID) {
|
||||
if (response[i].UUID in session.rpcs) {
|
||||
log("RTC already connected"); /// lets just say instead of Stream, we have
|
||||
} else {
|
||||
@@ -18995,7 +19003,7 @@ function joinRoom(roomname) {
|
||||
} else {
|
||||
for (var i in response) {
|
||||
if ("UUID" in response[i]) {
|
||||
if ("streamID" in response[i]) {
|
||||
if (response[i].streamID) {
|
||||
if (response[i].UUID in session.rpcs) {
|
||||
log("RTC already connected"); /// lets just say instead of Stream, we have
|
||||
} else {
|
||||
@@ -19014,7 +19022,7 @@ function joinRoom(roomname) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log("STREAM ID DESALTED 3: " + streamID);
|
||||
log("STREAM ID DESALTED 4: " + streamID);
|
||||
play(streamID, response[i].UUID); // play handles the group room mechanics here
|
||||
}
|
||||
}
|
||||
@@ -30685,7 +30693,7 @@ function updateDirectorsAudio(dataN, UUID) {
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = data.micDelay || 0;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "constraints_manual_" + i + "_" + UUID;
|
||||
manualInput.dataset.UUID = UUID;
|
||||
@@ -30744,7 +30752,7 @@ function updateDirectorsAudio(dataN, UUID) {
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = data.lowcut;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "constraints_manual_" + i + "_" + UUID;
|
||||
manualInput.dataset.UUID = UUID;
|
||||
@@ -30801,7 +30809,7 @@ function updateDirectorsAudio(dataN, UUID) {
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = data.lowEQ;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "label_" + i + "_" + UUID;
|
||||
manualInput.dataset.UUID = UUID;
|
||||
@@ -30855,7 +30863,7 @@ function updateDirectorsAudio(dataN, UUID) {
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = data.midEQ;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "label_" + i + "_" + UUID;
|
||||
manualInput.dataset.UUID = UUID;
|
||||
@@ -30909,7 +30917,7 @@ function updateDirectorsAudio(dataN, UUID) {
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = data.highEQ;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "label_" + i + "_" + UUID;
|
||||
manualInput.dataset.UUID = UUID;
|
||||
@@ -31292,7 +31300,7 @@ function updateDirectorsAudio(dataN, UUID) {
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = data.subGain * 100;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "label_" + i + "_" + n + "_" + UUID;
|
||||
manualInput.dataset.UUID = UUID;
|
||||
@@ -31829,7 +31837,7 @@ function listAudioSettings() {
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.dataset.deviceid = track0.id;
|
||||
manualInput.dataset.labelname = label.innerHTML;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = session.webAudios[webAudio].gainNode.gain.value * 100;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "label_" + i;
|
||||
|
||||
@@ -32530,7 +32538,7 @@ function listAudioSettings() {
|
||||
input.name = "constraints_" + i + "_" + track0.id;
|
||||
|
||||
input.value = session.webAudios[webAudio].subGainNodes[track0.id].gain.value * 100;
|
||||
label.innerText += " " + parseInt(session.webAudios[webAudio].subGainNodes[track0.id].gain.value * 100);
|
||||
//label.innerText += " " + parseInt(session.webAudios[webAudio].subGainNodes[track0.id].gain.value * 100);
|
||||
input.title = parseInt(input.value);
|
||||
|
||||
var manualInput = document.createElement("input");
|
||||
@@ -32538,13 +32546,13 @@ function listAudioSettings() {
|
||||
manualInput.dataset.keyname = i;
|
||||
manualInput.dataset.deviceid = track0.id;
|
||||
manualInput.dataset.labelname = label.innerHTML;
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = session.webAudios[webAudio].subGainNodes[track0.id].gain.value * 100;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "manualInput_" + i + "_" + track0.id;
|
||||
|
||||
manualInput.onchange = function (e) {
|
||||
getById("constraints_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).value = parseFloat(e.target.value);
|
||||
getById("label_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).innerText = "Gain: " + parseInt(e.target.value);
|
||||
//getById("label_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).innerText = "Gain: " + parseInt(e.target.value);
|
||||
getById("manualInput_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).value = parseFloat(e.target.value);
|
||||
changeSubGain(e.target.value, e.target.dataset.deviceid);
|
||||
e.target.title = e.target.value;
|
||||
@@ -32552,14 +32560,14 @@ function listAudioSettings() {
|
||||
};
|
||||
|
||||
input.oninput = function (e) {
|
||||
getById("label_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).innerText = "Gain: " + parseInt(e.target.value);
|
||||
//getById("label_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).innerText = "Gain: " + parseInt(e.target.value);
|
||||
getById("manualInput_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).value = parseFloat(e.target.value);
|
||||
changeSubGain(e.target.value, e.target.dataset.deviceid);
|
||||
e.target.title = e.target.value;
|
||||
};
|
||||
|
||||
input.onchange = function (e) {
|
||||
getById("label_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).innerText = "Gain: " + parseInt(e.target.value);
|
||||
//getById("label_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).innerText = "Gain: " + parseInt(e.target.value);
|
||||
getById("manualInput_" + e.target.dataset.keyname + "_" + e.target.dataset.deviceid).value = parseFloat(e.target.value);
|
||||
changeSubGain(e.target.value, e.target.dataset.deviceid);
|
||||
e.target.title = e.target.value;
|
||||
@@ -32749,7 +32757,7 @@ function listCameraSettings() {
|
||||
|
||||
var manualInput = document.createElement("input");
|
||||
manualInput.type = "number";
|
||||
manualInput.value = parseFloat(input.value);
|
||||
manualInput.value = session.controlRoomBitrate;
|
||||
manualInput.className = "manualInput";
|
||||
manualInput.id = "label_" + i;
|
||||
|
||||
@@ -43627,7 +43635,7 @@ async function whepIn(whepInput = false, whepInputToken = false, UUID = false) {
|
||||
"a=ice-pwd:" +
|
||||
icePwd +
|
||||
"\r\n" +
|
||||
"m=audio 9 RTP/AVP 0\r\n" +
|
||||
"m=audio 9 RTP/AVP 0\r\n" + // if I leave out the port (9), then MediaMTX breaks, but this is not in the draft spec as linked above
|
||||
"a=mid:0\r\n";
|
||||
candidates.forEach(candidate => {
|
||||
patchCandidates += "a=" + candidate.candidate + "\r\n";
|
||||
|
||||
16
main.js
16
main.js
@@ -2581,9 +2581,11 @@ async function main() {
|
||||
session.style = 1;
|
||||
}
|
||||
}
|
||||
// https://vdo.ninja/?fakeguests=10&room=faketestroom123&scene&border=10&padding=20&rounded
|
||||
// https://vdo.ninja/?fakeusers=10&scene&room=test12342345ff
|
||||
|
||||
if (urlParams.has("fakeguests") || urlParams.has("fakefeeds")) {
|
||||
var total = parseInt(urlParams.get("fakeguests")) || parseInt(urlParams.get("fakefeeds")) || 4;
|
||||
if (urlParams.has("fakeguests") || urlParams.has("fakefeeds") || urlParams.has("fakeusers")) {
|
||||
var total = parseInt(urlParams.get("fakeguests")) || parseInt(urlParams.get("fakefeeds")) || parseInt(urlParams.get("fakeusers")) || 4;
|
||||
session.fakeFeeds = [];
|
||||
log("Creating " + total + " fake feeds");
|
||||
for (var i = 0; i < total; i++) {
|
||||
@@ -2592,6 +2594,7 @@ async function main() {
|
||||
fakeElement.loop = true;
|
||||
fakeElement.muted = true;
|
||||
fakeElement.src = "./media/fakesteve.webm";
|
||||
fakeElement.labelText = "Fake Steve\\n@steveseguin\\nhe\/him";
|
||||
fakeElement.dataset.sid = fakeElement.id = parseInt(Math.random() * 10000000000);
|
||||
session.fakeFeeds.push(fakeElement);
|
||||
}
|
||||
@@ -2631,8 +2634,7 @@ async function main() {
|
||||
}
|
||||
|
||||
if (urlParams.has("include") && urlParams.get("include")) {
|
||||
urlParams
|
||||
.get("include")
|
||||
urlParams.get("include")
|
||||
.split(",")
|
||||
.forEach(sid => {
|
||||
var sidd = sid.split(":s")[0];
|
||||
@@ -3055,14 +3057,14 @@ async function main() {
|
||||
}
|
||||
|
||||
try {
|
||||
if (urlParams.has("darkmode") || urlParams.has("nightmode")) {
|
||||
session.darkmode = urlParams.get("darkmode") || urlParams.get("nightmode") || null;
|
||||
if (urlParams.has("darkmode") || urlParams.has("nightmode") || urlParams.has("darktheme")) {
|
||||
session.darkmode = urlParams.get("darkmode") || urlParams.get("nightmode") || urlParams.get("darktheme") || null;
|
||||
if (session.darkmode === null || session.darkmode === "") {
|
||||
session.darkmode = true;
|
||||
} else if (darkmode == "false" || darkmode == "0" || darkmode == 0 || darkmode == "off") {
|
||||
session.darkmode = false;
|
||||
}
|
||||
} else if (urlParams.has("lightmode") || urlParams.has("lightmode")) {
|
||||
} else if (urlParams.has("lightmode") || urlParams.has("lighttheme")) {
|
||||
session.darkmode = false;
|
||||
} else if (window.obsstudio) {
|
||||
session.darkmode = false; // prevent OBS from defaulting to dark mode, avoiding possible overlooked bugs.
|
||||
|
||||
BIN
media/icon_gradient.png
Normal file
BIN
media/icon_gradient.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
135
media/icon_gradient.svg
Normal file
135
media/icon_gradient.svg
Normal file
@@ -0,0 +1,135 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="182.54446mm"
|
||||
height="150.39075mm"
|
||||
viewBox="0 0 182.54446 150.39075"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
sodipodi:docname="icon_gradient.svg"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
inkscape:export-filename="C:\Users\Steve\Desktop\logos\icon.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.90509668"
|
||||
inkscape:cx="74.577669"
|
||||
inkscape:cy="290.02427"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1361"
|
||||
inkscape:window-x="4791"
|
||||
inkscape:window-y="891"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8675">
|
||||
<stop
|
||||
style="stop-color:#1a1a1a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8671" />
|
||||
<stop
|
||||
style="stop-color:#1a1a1a;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8673" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8675"
|
||||
id="linearGradient8677"
|
||||
x1="12147.551"
|
||||
y1="13839.459"
|
||||
x2="18804.379"
|
||||
y2="6122.8374"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.03131831,0,0,-0.03185519,-184.79499,264.40544)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8675"
|
||||
id="linearGradient9462"
|
||||
x1="9100.0771"
|
||||
y1="8035"
|
||||
x2="17871.928"
|
||||
y2="12174.818"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.03131831,0,0,-0.03185519,-184.79499,264.40544)" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter14044"
|
||||
x="-0.02397901"
|
||||
y="-0.02402294"
|
||||
width="1.047958"
|
||||
height="1.0480459">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.3704028"
|
||||
id="feGaussianBlur14046" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-89.253181,107.67859)">
|
||||
<ellipse
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:4.76852;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:22.715;stroke-opacity:1;paint-order:markers fill stroke;filter:url(#filter14044)"
|
||||
id="path13382"
|
||||
cx="167.77542"
|
||||
cy="-32.775543"
|
||||
rx="68.251915"
|
||||
ry="68.127106"
|
||||
inkscape:export-filename="C:\Users\Steve\Desktop\logos\path13382.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96" />
|
||||
<path
|
||||
d="m 159.89429,-98.07475 c -24.17773,2.835112 -44.97309,19.049403 -53.74221,41.921428 -0.93955,2.45285 -2.81865,8.569046 -2.81865,9.238005 0,0.06371 28.96943,0.09557 64.35912,0.09557 35.38969,0 64.35912,-0.03186 64.35912,-0.09557 0,-0.06371 -0.21923,-0.86009 -0.50109,-1.783891 -0.25055,-0.9238 -0.40714,-1.752035 -0.3445,-1.847601 0.094,-0.06371 0.84559,0.222987 1.69119,0.637104 2.25491,1.146787 7.10925,2.930678 10.11581,3.727057 4.82302,1.242353 7.61035,1.65647 13.12237,1.815746 l 5.41807,0.191131 -0.18791,-0.764524 c -0.53241,-1.943167 -3.13183,-6.68959 -4.66643,-8.600901 -1.97305,-2.420995 -3.69556,-3.918188 -6.29498,-5.510948 -1.56592,-0.955655 -2.66206,-1.401628 -6.38894,-2.612125 -0.28186,-0.06371 0.25055,-0.73267 1.31537,-1.752036 3.50765,-3.249229 7.8609,-9.206149 10.20977,-13.952572 0.78296,-1.59276 0.90823,-2.102443 0.56373,-2.293574 -0.78296,-0.509683 -3.88347,-0.764524 -8.5499,-0.732669 -3.72687,0.03186 -5.19884,0.191131 -7.17189,0.732669 -6.73343,1.847601 -11.807,6.020631 -14.65697,12.073117 l -0.93955,2.038732 -1.56591,-2.51656 c -2.50547,-3.950043 -5.57466,-7.677101 -9.73999,-11.754565 -10.14714,-9.970674 -23.01896,-16.246146 -37.1122,-18.093747 -4.1027,-0.541538 -12.62128,-0.637103 -16.47343,-0.159276 z"
|
||||
id="path11"
|
||||
style="opacity:1;fill:url(#linearGradient8677);fill-opacity:1;stroke-width:0.0315856"
|
||||
inkscape:export-filename="C:\Users\Steve\Desktop\logos\path13382.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96" />
|
||||
<path
|
||||
d="m 112.10256,-37.964009 v 5.351671 l 7.29716,0.891946 c 3.97743,0.477828 7.76694,0.955655 8.36199,1.051221 l 1.09614,0.159276 0.0626,1.847601 c 0.12527,4.204885 3.10051,7.135562 7.29716,7.135562 3.50765,0 6.42026,-2.229863 7.20321,-5.510948 0.43846,-1.879456 0.094,-1.78389 4.69775,-1.146786 1.81646,0.254841 3.6016,0.477827 4.00874,0.477827 2.41151,0.03186 -1.0335,-1.433483 -19.44867,-8.218638 -11.05536,-4.077464 -20.2003,-7.390404 -20.32558,-7.390404 -0.15659,0 -0.25054,2.420994 -0.25054,5.351672 z"
|
||||
id="path21"
|
||||
inkscape:export-filename="C:\Users\Steve\Desktop\logos\path13382.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
style="stroke-width:0.0315856" />
|
||||
<path
|
||||
d="m 202.92565,-36.052698 c -10.7735,3.981899 -19.85581,7.358549 -20.16899,7.485969 -0.43846,0.191132 -0.5011,0.350407 -0.25055,0.605249 0.25055,0.254841 1.44064,0.191131 4.38456,-0.191131 2.2236,-0.286697 4.19666,-0.509683 4.38457,-0.509683 0.15659,0 0.40713,0.541538 0.53241,1.178642 1.09614,6.02063 8.98835,8.186783 12.8405,3.535926 1.25274,-1.497194 1.72251,-2.835112 1.72251,-4.810134 v -1.72018 l 1.1901,-0.191131 c 0.62636,-0.09557 4.4472,-0.573393 8.45594,-1.051221 l 7.26585,-0.891946 v -5.351671 c 0,-4.077464 -0.094,-5.351672 -0.37582,-5.319817 -0.21923,0 -9.20759,3.24923 -19.98108,7.231128 z"
|
||||
id="path23"
|
||||
inkscape:export-filename="C:\Users\Steve\Desktop\logos\path13382.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
style="stroke-width:0.0315856" />
|
||||
<path
|
||||
d="m 104.3043,-14.263749 c 0.3445,1.274207 1.19009,3.758912 1.8791,5.5109475 7.0153,18.2848781 21.98545,32.7152785 40.36929,38.8314745 7.29717,2.420994 13.24765,3.37665 21.13986,3.37665 7.89221,0 13.84269,-0.955656 21.10854,-3.37665 19.3234,-6.434748 34.95123,-22.171211 41.37148,-41.698441 0.68901,-2.070588 1.25274,-4.045609 1.25274,-4.364161 0,-0.541538 -2.63074,-0.573394 -63.85803,-0.573394 h -63.88935 z"
|
||||
id="path25"
|
||||
style="opacity:1;fill:url(#linearGradient9462);fill-opacity:1;stroke-width:0.0315856"
|
||||
inkscape:export-filename="C:\Users\Steve\Desktop\logos\path13382.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
Reference in New Issue
Block a user