-
Notifications
You must be signed in to change notification settings - Fork 0
/
confku.min.js
2 lines (2 loc) · 45.3 KB
/
confku.min.js
1
2
function checkCompatibility(){return!!RTCPeerConnection}(function(){"use strict";function a(){}function b(a,b){for(var c=a.length;c--;)if(a[c].listener===b)return c;return-1}function c(a){return function(){return this[a].apply(this,arguments)}}var d=a.prototype;d.getListeners=function(a){var b,c,d=this._getEvents();if("object"==typeof a){b={};for(c in d)d.hasOwnProperty(c)&&a.test(c)&&(b[c]=d[c])}else b=d[a]||(d[a]=[]);return b},d.flattenListeners=function(a){var b,c=[];for(b=0;b<a.length;b+=1)c.push(a[b].listener);return c},d.getListenersAsObject=function(a){var b,c=this.getListeners(a);return c instanceof Array&&(b={},b[a]=c),b||c},d.addListener=function(a,c){var d,e=this.getListenersAsObject(a),f="object"==typeof c;for(d in e)e.hasOwnProperty(d)&&-1===b(e[d],c)&&e[d].push(f?c:{listener:c,once:!1});return this},d.on=c("addListener"),d.addOnceListener=function(a,b){return this.addListener(a,{listener:b,once:!0})},d.once=c("addOnceListener"),d.defineEvent=function(a){return this.getListeners(a),this},d.defineEvents=function(a){for(var b=0;b<a.length;b+=1)this.defineEvent(a[b]);return this},d.removeListener=function(a,c){var d,e,f=this.getListenersAsObject(a);for(e in f)f.hasOwnProperty(e)&&(d=b(f[e],c),-1!==d&&f[e].splice(d,1));return this},d.off=c("removeListener"),d.addListeners=function(a,b){return this.manipulateListeners(!1,a,b)},d.removeListeners=function(a,b){return this.manipulateListeners(!0,a,b)},d.manipulateListeners=function(a,b,c){var d,e,f=a?this.removeListener:this.addListener,g=a?this.removeListeners:this.addListeners;if("object"!=typeof b||b instanceof RegExp)for(d=c.length;d--;)f.call(this,b,c[d]);else for(d in b)b.hasOwnProperty(d)&&(e=b[d])&&("function"==typeof e?f.call(this,d,e):g.call(this,d,e));return this},d.removeEvent=function(a){var b,c=typeof a,d=this._getEvents();if("string"===c)delete d[a];else if("object"===c)for(b in d)d.hasOwnProperty(b)&&a.test(b)&&delete d[b];else delete this._events;return this},d.removeAllListeners=c("removeEvent"),d.emitEvent=function(a,b){var c,d,e,f,g=this.getListenersAsObject(a);for(e in g)if(g.hasOwnProperty(e))for(d=g[e].length;d--;)c=g[e][d],c.once===!0&&this.removeListener(a,c.listener),f=c.listener.apply(this,b||[]),f===this._getOnceReturnValue()&&this.removeListener(a,c.listener);return this},d.trigger=c("emitEvent"),d.emit=function(a){var b=Array.prototype.slice.call(arguments,1);return this.emitEvent(a,b)},d.setOnceReturnValue=function(a){return this._onceReturnValue=a,this},d._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},d._getEvents=function(){return this._events||(this._events={})},"function"==typeof define&&define.amd?define(function(){return a}):"object"==typeof module&&module.exports?module.exports=a:this.EventEmitter=a}).call(this),function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.adapter=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){"use strict";!function(){var c=a("./utils").log,d=a("./utils").browserDetails;b.exports.browserDetails=d,b.exports.extractVersion=a("./utils").extractVersion,b.exports.disableLog=a("./utils").disableLog,a("./utils").disableLog(!0);var e=a("./chrome/chrome_shim")||null,f=a("./edge/edge_shim")||null,g=a("./firefox/firefox_shim")||null,h=a("./safari/safari_shim")||null;switch(d.browser){case"opera":case"chrome":if(!e||!e.shimPeerConnection)return void c("Chrome shim is not included in this adapter release.");c("adapter.js shimming chrome."),b.exports.browserShim=e,e.shimGetUserMedia(),e.shimSourceObject(),e.shimPeerConnection(),e.shimOnTrack();break;case"firefox":if(!g||!g.shimPeerConnection)return void c("Firefox shim is not included in this adapter release.");c("adapter.js shimming firefox."),b.exports.browserShim=g,g.shimGetUserMedia(),g.shimSourceObject(),g.shimPeerConnection(),g.shimOnTrack();break;case"edge":if(!f||!f.shimPeerConnection)return void c("MS edge shim is not included in this adapter release.");c("adapter.js shimming edge."),b.exports.browserShim=f,f.shimPeerConnection();break;case"safari":if(!h)return void c("Safari shim is not included in this adapter release.");c("adapter.js shimming safari."),b.exports.browserShim=h,h.shimGetUserMedia();break;default:c("Unsupported browser!")}}()},{"./chrome/chrome_shim":2,"./edge/edge_shim":5,"./firefox/firefox_shim":6,"./safari/safari_shim":8,"./utils":9}],2:[function(a,b,c){"use strict";var d=a("../utils.js").log,e=a("../utils.js").browserDetails,f={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(a){var b=this;this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=a),this.addEventListener("addstream",this._ontrackpoly=function(a){a.stream.addEventListener("addtrack",function(c){var d=new Event("track");d.track=c.track,d.receiver={track:c.track},d.streams=[a.stream],b.dispatchEvent(d)}),a.stream.getTracks().forEach(function(b){var c=new Event("track");c.track=b,c.receiver={track:b},c.streams=[a.stream],this.dispatchEvent(c)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(a){var b=this;return this._srcObject=a,this.src&&URL.revokeObjectURL(this.src),a?(this.src=URL.createObjectURL(a),a.addEventListener("addtrack",function(){b.src&&URL.revokeObjectURL(b.src),b.src=URL.createObjectURL(a)}),void a.addEventListener("removetrack",function(){b.src&&URL.revokeObjectURL(b.src),b.src=URL.createObjectURL(a)})):void(this.src="")}}))},shimPeerConnection:function(){window.RTCPeerConnection=function(a,b){d("PeerConnection"),a&&a.iceTransportPolicy&&(a.iceTransports=a.iceTransportPolicy);var c=new webkitRTCPeerConnection(a,b),e=c.getStats.bind(c);return c.getStats=function(a,b,c){var d=this,f=arguments;if(arguments.length>0&&"function"==typeof a)return e(a,b);var g=function(a){var b={},c=a.result();return c.forEach(function(a){var c={id:a.id,timestamp:a.timestamp,type:a.type};a.names().forEach(function(b){c[b]=a.stat(b)}),b[c.id]=c}),b};if(arguments.length>=2){var h=function(a){f[1](g(a))};return e.apply(this,[h,arguments[0]])}return new Promise(function(b,c){1===f.length&&"object"==typeof a?e.apply(d,[function(a){b.apply(null,[g(a)])},c]):e.apply(d,[b,c])})},c},window.RTCPeerConnection.prototype=webkitRTCPeerConnection.prototype,webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get:function(){return webkitRTCPeerConnection.generateCertificate}}),["createOffer","createAnswer"].forEach(function(a){var b=webkitRTCPeerConnection.prototype[a];webkitRTCPeerConnection.prototype[a]=function(){var a=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var c=1===arguments.length?arguments[0]:void 0;return new Promise(function(d,e){b.apply(a,[d,e,c])})}return b.apply(this,arguments)}}),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(a){var b=webkitRTCPeerConnection.prototype[a];webkitRTCPeerConnection.prototype[a]=function(){var c=arguments,d=this;return c[0]=new("addIceCandidate"===a?RTCIceCandidate:RTCSessionDescription)(c[0]),new Promise(function(a,e){b.apply(d,[c[0],function(){a(),c.length>=2&&c[1].apply(null,[])},function(a){e(a),c.length>=3&&c[2].apply(null,[a])}])})}})},attachMediaStream:function(a,b){d("DEPRECATED, attachMediaStream will soon be removed."),e.version>=43?a.srcObject=b:"undefined"!=typeof a.src?a.src=URL.createObjectURL(b):d("Error attaching stream to element.")},reattachMediaStream:function(a,b){d("DEPRECATED, reattachMediaStream will soon be removed."),e.version>=43?a.srcObject=b.srcObject:a.src=b.src}};b.exports={shimOnTrack:f.shimOnTrack,shimSourceObject:f.shimSourceObject,shimPeerConnection:f.shimPeerConnection,shimGetUserMedia:a("./getusermedia"),attachMediaStream:f.attachMediaStream,reattachMediaStream:f.reattachMediaStream}},{"../utils.js":9,"./getusermedia":3}],3:[function(a,b,c){"use strict";var d=a("../utils.js").log;b.exports=function(){var a=function(a){if("object"!=typeof a||a.mandatory||a.optional)return a;var b={};return Object.keys(a).forEach(function(c){if("require"!==c&&"advanced"!==c&&"mediaSource"!==c){var d="object"==typeof a[c]?a[c]:{ideal:a[c]};void 0!==d.exact&&"number"==typeof d.exact&&(d.min=d.max=d.exact);var e=function(a,b){return a?a+b.charAt(0).toUpperCase()+b.slice(1):"deviceId"===b?"sourceId":b};if(void 0!==d.ideal){b.optional=b.optional||[];var f={};"number"==typeof d.ideal?(f[e("min",c)]=d.ideal,b.optional.push(f),f={},f[e("max",c)]=d.ideal,b.optional.push(f)):(f[e("",c)]=d.ideal,b.optional.push(f))}void 0!==d.exact&&"number"!=typeof d.exact?(b.mandatory=b.mandatory||{},b.mandatory[e("",c)]=d.exact):["min","max"].forEach(function(a){void 0!==d[a]&&(b.mandatory=b.mandatory||{},b.mandatory[e(a,c)]=d[a])})}}),a.advanced&&(b.optional=(b.optional||[]).concat(a.advanced)),b},b=function(b,c,e){return b=JSON.parse(JSON.stringify(b)),b.audio&&(b.audio=a(b.audio)),b.video&&(b.video=a(b.video)),d("chrome: "+JSON.stringify(b)),navigator.webkitGetUserMedia(b,c,e)};navigator.getUserMedia=b;var c=function(a){return new Promise(function(b,c){navigator.getUserMedia(a,b,c)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:c,enumerateDevices:function(){return new Promise(function(a){var b={audio:"audioinput",video:"videoinput"};return MediaStreamTrack.getSources(function(c){a(c.map(function(a){return{label:a.label,kind:b[a.kind],deviceId:a.id,groupId:""}}))})})}}),navigator.mediaDevices.getUserMedia){var e=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(b){return b&&(d("spec: "+JSON.stringify(b)),b.audio=a(b.audio),b.video=a(b.video),d("chrome: "+JSON.stringify(b))),e(b)}.bind(this)}else navigator.mediaDevices.getUserMedia=function(a){return c(a)};"undefined"==typeof navigator.mediaDevices.addEventListener&&(navigator.mediaDevices.addEventListener=function(){d("Dummy mediaDevices.addEventListener called.")}),"undefined"==typeof navigator.mediaDevices.removeEventListener&&(navigator.mediaDevices.removeEventListener=function(){d("Dummy mediaDevices.removeEventListener called.")})}},{"../utils.js":9}],4:[function(a,b,c){"use strict";var d={};d.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},d.localCName=d.generateIdentifier(),d.splitLines=function(a){return a.trim().split("\n").map(function(a){return a.trim()})},d.splitSections=function(a){var b=a.split("\nm=");return b.map(function(a,b){return(b>0?"m="+a:a).trim()+"\r\n"})},d.matchPrefix=function(a,b){return d.splitLines(a).filter(function(a){return 0===a.indexOf(b)})},d.parseCandidate=function(a){var b;b=0===a.indexOf("a=candidate:")?a.substring(12).split(" "):a.substring(10).split(" ");for(var c={foundation:b[0],component:b[1],protocol:b[2].toLowerCase(),priority:parseInt(b[3],10),ip:b[4],port:parseInt(b[5],10),type:b[7]},d=8;d<b.length;d+=2)switch(b[d]){case"raddr":c.relatedAddress=b[d+1];break;case"rport":c.relatedPort=parseInt(b[d+1],10);break;case"tcptype":c.tcpType=b[d+1]}return c},d.writeCandidate=function(a){var b=[];b.push(a.foundation),b.push(a.component),b.push(a.protocol.toUpperCase()),b.push(a.priority),b.push(a.ip),b.push(a.port);var c=a.type;return b.push("typ"),b.push(c),"host"!==c&&a.relatedAddress&&a.relatedPort&&(b.push("raddr"),b.push(a.relatedAddress),b.push("rport"),b.push(a.relatedPort)),a.tcpType&&"tcp"===a.protocol.toLowerCase()&&(b.push("tcptype"),b.push(a.tcpType)),"candidate:"+b.join(" ")},d.parseRtpMap=function(a){var b=a.substr(9).split(" "),c={payloadType:parseInt(b.shift(),10)};return b=b[0].split("/"),c.name=b[0],c.clockRate=parseInt(b[1],10),c.numChannels=3===b.length?parseInt(b[2],10):1,c},d.writeRtpMap=function(a){var b=a.payloadType;return void 0!==a.preferredPayloadType&&(b=a.preferredPayloadType),"a=rtpmap:"+b+" "+a.name+"/"+a.clockRate+(1!==a.numChannels?"/"+a.numChannels:"")+"\r\n"},d.parseExtmap=function(a){var b=a.substr(9).split(" ");return{id:parseInt(b[0],10),uri:b[1]}},d.writeExtmap=function(a){return"a=extmap:"+(a.id||a.preferredId)+" "+a.uri+"\r\n"},d.parseFmtp=function(a){for(var b,c={},d=a.substr(a.indexOf(" ")+1).split(";"),e=0;e<d.length;e++)b=d[e].trim().split("="),c[b[0].trim()]=b[1];return c},d.writeFmtp=function(a){var b="",c=a.payloadType;if(void 0!==a.preferredPayloadType&&(c=a.preferredPayloadType),a.parameters&&Object.keys(a.parameters).length){var d=[];Object.keys(a.parameters).forEach(function(b){d.push(b+"="+a.parameters[b])}),b+="a=fmtp:"+c+" "+d.join(";")+"\r\n"}return b},d.parseRtcpFb=function(a){var b=a.substr(a.indexOf(" ")+1).split(" ");return{type:b.shift(),parameter:b.join(" ")}},d.writeRtcpFb=function(a){var b="",c=a.payloadType;return void 0!==a.preferredPayloadType&&(c=a.preferredPayloadType),a.rtcpFeedback&&a.rtcpFeedback.length&&a.rtcpFeedback.forEach(function(a){b+="a=rtcp-fb:"+c+" "+a.type+" "+a.parameter+"\r\n"}),b},d.parseSsrcMedia=function(a){var b=a.indexOf(" "),c={ssrc:parseInt(a.substr(7,b-7),10)},d=a.indexOf(":",b);return d>-1?(c.attribute=a.substr(b+1,d-b-1),c.value=a.substr(d+1)):c.attribute=a.substr(b+1),c},d.getDtlsParameters=function(a,b){var c=d.splitLines(a);c=c.concat(d.splitLines(b));var e=c.filter(function(a){return 0===a.indexOf("a=fingerprint:")})[0].substr(14),f={role:"auto",fingerprints:[{algorithm:e.split(" ")[0],value:e.split(" ")[1]}]};return f},d.writeDtlsParameters=function(a,b){var c="a=setup:"+b+"\r\n";return a.fingerprints.forEach(function(a){c+="a=fingerprint:"+a.algorithm+" "+a.value+"\r\n"}),c},d.getIceParameters=function(a,b){var c=d.splitLines(a);c=c.concat(d.splitLines(b));var e={usernameFragment:c.filter(function(a){return 0===a.indexOf("a=ice-ufrag:")})[0].substr(12),password:c.filter(function(a){return 0===a.indexOf("a=ice-pwd:")})[0].substr(10)};return e},d.writeIceParameters=function(a){return"a=ice-ufrag:"+a.usernameFragment+"\r\na=ice-pwd:"+a.password+"\r\n"},d.parseRtpParameters=function(a){for(var b={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},c=d.splitLines(a),e=c[0].split(" "),f=3;f<e.length;f++){var g=e[f],h=d.matchPrefix(a,"a=rtpmap:"+g+" ")[0];if(h){var i=d.parseRtpMap(h),j=d.matchPrefix(a,"a=fmtp:"+g+" ");switch(i.parameters=j.length?d.parseFmtp(j[0]):{},i.rtcpFeedback=d.matchPrefix(a,"a=rtcp-fb:"+g+" ").map(d.parseRtcpFb),b.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":b.fecMechanisms.push(i.name.toUpperCase())}}}return d.matchPrefix(a,"a=extmap:").forEach(function(a){b.headerExtensions.push(d.parseExtmap(a))}),b},d.writeRtpDescription=function(a,b){var c="";return c+="m="+a+" ",c+=b.codecs.length>0?"9":"0",c+=" UDP/TLS/RTP/SAVPF ",c+=b.codecs.map(function(a){return void 0!==a.preferredPayloadType?a.preferredPayloadType:a.payloadType}).join(" ")+"\r\n",c+="c=IN IP4 0.0.0.0\r\n",c+="a=rtcp:9 IN IP4 0.0.0.0\r\n",b.codecs.forEach(function(a){c+=d.writeRtpMap(a),c+=d.writeFmtp(a),c+=d.writeRtcpFb(a)}),c+="a=rtcp-mux\r\n"},d.parseRtpEncodingParameters=function(a){var b,c=[],e=d.parseRtpParameters(a),f=-1!==e.fecMechanisms.indexOf("RED"),g=-1!==e.fecMechanisms.indexOf("ULPFEC"),h=d.matchPrefix(a,"a=ssrc:").map(function(a){return d.parseSsrcMedia(a)}).filter(function(a){return"cname"===a.attribute}),i=h.length>0&&h[0].ssrc,j=d.matchPrefix(a,"a=ssrc-group:FID").map(function(a){var b=a.split(" ");return b.shift(),b.map(function(a){return parseInt(a,10)})});j.length>0&&j[0].length>1&&j[0][0]===i&&(b=j[0][1]),e.codecs.forEach(function(a){if("RTX"===a.name.toUpperCase()&&a.parameters.apt){var d={ssrc:i,codecPayloadType:parseInt(a.parameters.apt,10),rtx:{ssrc:b}};c.push(d),f&&(d=JSON.parse(JSON.stringify(d)),d.fec={ssrc:b,mechanism:g?"red+ulpfec":"red"},c.push(d))}}),0===c.length&&i&&c.push({ssrc:i});var k=d.matchPrefix(a,"b=");return k.length&&(0===k[0].indexOf("b=TIAS:")?k=parseInt(k[0].substr(7),10):0===k[0].indexOf("b=AS:")&&(k=parseInt(k[0].substr(5),10)),c.forEach(function(a){a.maxBitrate=k})),c},d.writeSessionBoilerplate=function(){return"v=0\r\no=thisisadapterortc 8169639915646943137 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},d.writeMediaSection=function(a,b,c,e){var f=d.writeRtpDescription(a.kind,b);if(f+=d.writeIceParameters(a.iceGatherer.getLocalParameters()),f+=d.writeDtlsParameters(a.dtlsTransport.getLocalParameters(),"offer"===c?"actpass":"active"),f+="a=mid:"+a.mid+"\r\n",f+=a.rtpSender&&a.rtpReceiver?"a=sendrecv\r\n":a.rtpSender?"a=sendonly\r\n":a.rtpReceiver?"a=recvonly\r\n":"a=inactive\r\n",a.rtpSender){var g="msid:"+e.id+" "+a.rtpSender.track.id+"\r\n";f+="a="+g,f+="a=ssrc:"+a.sendEncodingParameters[0].ssrc+" "+g}return f+="a=ssrc:"+a.sendEncodingParameters[0].ssrc+" cname:"+d.localCName+"\r\n"},d.getDirection=function(a,b){for(var c=d.splitLines(a),e=0;e<c.length;e++)switch(c[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return c[e].substr(2)}return b?d.getDirection(b):"sendrecv"},b.exports=d},{}],5:[function(a,b,c){"use strict";var d=a("./edge_sdp"),e=a("../utils").log,f={shimPeerConnection:function(){window.RTCIceGatherer&&(window.RTCIceCandidate||(window.RTCIceCandidate=function(a){return a}),window.RTCSessionDescription||(window.RTCSessionDescription=function(a){return a})),window.RTCPeerConnection=function(a){var b=this,c=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(a){b[a]=c[a].bind(c)}),this.onicecandidate=null,this.onaddstream=null,this.ontrack=null,this.onremovestream=null,this.onsignalingstatechange=null,this.oniceconnectionstatechange=null,this.onnegotiationneeded=null,this.ondatachannel=null,this.localStreams=[],this.remoteStreams=[],this.getLocalStreams=function(){return b.localStreams},this.getRemoteStreams=function(){return b.remoteStreams},this.localDescription=new RTCSessionDescription({type:"",sdp:""}),this.remoteDescription=new RTCSessionDescription({type:"",sdp:""}),this.signalingState="stable",this.iceConnectionState="new",this.iceGatheringState="new",this.iceOptions={gatherPolicy:"all",iceServers:[]},a&&a.iceTransportPolicy)switch(a.iceTransportPolicy){case"all":case"relay":this.iceOptions.gatherPolicy=a.iceTransportPolicy;break;case"none":throw new TypeError('iceTransportPolicy "none" not supported')}a&&a.iceServers&&(this.iceOptions.iceServers=a.iceServers.filter(function(a){return a&&a.urls?(a.urls=a.urls.filter(function(a){return 0===a.indexOf("turn:")&&-1!==a.indexOf("transport=udp")})[0],!!a.urls):!1})),this.transceivers=[],this._localIceCandidatesBuffer=[]},window.RTCPeerConnection.prototype._emitBufferedCandidates=function(){var a=this,b=d.splitSections(a.localDescription.sdp);this._localIceCandidatesBuffer.forEach(function(c){var d=!c.candidate||0===Object.keys(c.candidate).length;if(d)for(var e=1;e<b.length;e++)-1===b[e].indexOf("\r\na=end-of-candidates\r\n")&&(b[e]+="a=end-of-candidates\r\n");else-1===c.candidate.candidate.indexOf("typ endOfCandidates")&&(b[c.candidate.sdpMLineIndex+1]+="a="+c.candidate.candidate+"\r\n");if(a.localDescription.sdp=b.join(""),a.dispatchEvent(c),null!==a.onicecandidate&&a.onicecandidate(c),!c.candidate&&"complete"!==a.iceGatheringState){var f=a.transceivers.every(function(a){return a.iceGatherer&&"completed"===a.iceGatherer.state});f&&(a.iceGatheringState="complete")}}),this._localIceCandidatesBuffer=[]},window.RTCPeerConnection.prototype.addStream=function(a){this.localStreams.push(a.clone()),this._maybeFireNegotiationNeeded()},window.RTCPeerConnection.prototype.removeStream=function(a){var b=this.localStreams.indexOf(a);b>-1&&(this.localStreams.splice(b,1),this._maybeFireNegotiationNeeded())},window.RTCPeerConnection.prototype._getCommonCapabilities=function(a,b){var c={codecs:[],headerExtensions:[],fecMechanisms:[]};return a.codecs.forEach(function(a){for(var d=0;d<b.codecs.length;d++){var e=b.codecs[d];if(a.name.toLowerCase()===e.name.toLowerCase()&&a.clockRate===e.clockRate&&a.numChannels===e.numChannels){c.codecs.push(e);break}}}),a.headerExtensions.forEach(function(a){for(var d=0;d<b.headerExtensions.length;d++){var e=b.headerExtensions[d];if(a.uri===e.uri){c.headerExtensions.push(e);break}}}),c},window.RTCPeerConnection.prototype._createIceAndDtlsTransports=function(a,b){var c=this,e=new RTCIceGatherer(c.iceOptions),f=new RTCIceTransport(e);e.onlocalcandidate=function(g){var h=new Event("icecandidate");h.candidate={sdpMid:a,sdpMLineIndex:b};var i=g.candidate,j=!i||0===Object.keys(i).length;j?(void 0===e.state&&(e.state="completed"),h.candidate.candidate="candidate:1 1 udp 1 0.0.0.0 9 typ endOfCandidates"):(i.component="RTCP"===f.component?2:1,h.candidate.candidate=d.writeCandidate(i));var k=c.transceivers.every(function(a){return a.iceGatherer&&"completed"===a.iceGatherer.state});switch(c.iceGatheringState){case"new":c._localIceCandidatesBuffer.push(h),j&&k&&c._localIceCandidatesBuffer.push(new Event("icecandidate"));break;case"gathering":c._emitBufferedCandidates(),c.dispatchEvent(h),null!==c.onicecandidate&&c.onicecandidate(h),k&&(c.dispatchEvent(new Event("icecandidate")),null!==c.onicecandidate&&c.onicecandidate(new Event("icecandidate")),c.iceGatheringState="complete");break;case"complete":}},f.onicestatechange=function(){c._updateConnectionState()};var g=new RTCDtlsTransport(f);return g.ondtlsstatechange=function(){c._updateConnectionState()},g.onerror=function(){g.state="failed",c._updateConnectionState()},{iceGatherer:e,iceTransport:f,dtlsTransport:g}},window.RTCPeerConnection.prototype._transceive=function(a,b,c){var e=this._getCommonCapabilities(a.localCapabilities,a.remoteCapabilities);b&&a.rtpSender&&(e.encodings=a.sendEncodingParameters,e.rtcp={cname:d.localCName},a.recvEncodingParameters.length&&(e.rtcp.ssrc=a.recvEncodingParameters[0].ssrc),a.rtpSender.send(e)),c&&a.rtpReceiver&&(e.encodings=a.recvEncodingParameters,e.rtcp={cname:a.cname},a.sendEncodingParameters.length&&(e.rtcp.ssrc=a.sendEncodingParameters[0].ssrc),a.rtpReceiver.receive(e))},window.RTCPeerConnection.prototype.setLocalDescription=function(a){var b,c,e=this;switch("offer"===a.type?this._pendingOffer&&(b=d.splitSections(a.sdp),c=b.shift(),b.forEach(function(a,b){var c=d.parseRtpParameters(a);e._pendingOffer[b].localCapabilities=c}),this.transceivers=this._pendingOffer,delete this._pendingOffer):"answer"===a.type&&(b=d.splitSections(e.remoteDescription.sdp),c=b.shift(),b.forEach(function(a,b){var f=e.transceivers[b],g=f.iceGatherer,h=f.iceTransport,i=f.dtlsTransport,j=f.localCapabilities,k=f.remoteCapabilities,l="0"===a.split("\n",1)[0].split(" ",2)[1];if(!l){var m=d.getIceParameters(a,c);h.start(g,m,"controlled");var n=d.getDtlsParameters(a,c);i.start(n);var o=e._getCommonCapabilities(j,k);e._transceive(f,o.codecs.length>0,!1)}})),this.localDescription={type:a.type,sdp:a.sdp},a.type){case"offer":this._updateSignalingState("have-local-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+a.type+'"')}var f=arguments.length>1&&"function"==typeof arguments[1];if(f){var g=arguments[1];window.setTimeout(function(){g(),"new"===e.iceGatheringState&&(e.iceGatheringState="gathering"),e._emitBufferedCandidates()},0)}var h=Promise.resolve();return h.then(function(){f||("new"===e.iceGatheringState&&(e.iceGatheringState="gathering"),window.setTimeout(e._emitBufferedCandidates.bind(e),500))}),h},window.RTCPeerConnection.prototype.setRemoteDescription=function(a){var b=this,c=new MediaStream,e=[],f=d.splitSections(a.sdp),g=f.shift();switch(f.forEach(function(f,h){var i,j,k,l,m,n,o,p,q,r,s,t,u=d.splitLines(f),v=u[0].substr(2).split(" "),w=v[0],x="0"===v[1],y=d.getDirection(f,g),z=d.parseRtpParameters(f);x||(s=d.getIceParameters(f,g),t=d.getDtlsParameters(f,g)),p=d.parseRtpEncodingParameters(f);var A=d.matchPrefix(f,"a=mid:");A=A.length?A[0].substr(6):d.generateIdentifier();var B,C=d.matchPrefix(f,"a=ssrc:").map(function(a){return d.parseSsrcMedia(a)}).filter(function(a){return"cname"===a.attribute})[0];C&&(B=C.value);var D=d.matchPrefix(f,"a=end-of-candidates").length>0,E=d.matchPrefix(f,"a=candidate:").map(function(a){return d.parseCandidate(a)}).filter(function(a){return"1"===a.component});if("offer"!==a.type||x)"answer"!==a.type||x||(i=b.transceivers[h],j=i.iceGatherer,k=i.iceTransport,l=i.dtlsTransport,m=i.rtpSender,n=i.rtpReceiver,o=i.sendEncodingParameters,q=i.localCapabilities,b.transceivers[h].recvEncodingParameters=p,b.transceivers[h].remoteCapabilities=z,b.transceivers[h].cname=B,D&&k.setRemoteCandidates(E),k.start(j,s,"controlling"),l.start(t),b._transceive(i,"sendrecv"===y||"recvonly"===y,"sendrecv"===y||"sendonly"===y),!n||"sendrecv"!==y&&"sendonly"!==y?delete i.rtpReceiver:(r=n.track,e.push([r,n]),c.addTrack(r)));else{var F=b._createIceAndDtlsTransports(A,h);if(D&&F.iceTransport.setRemoteCandidates(E),q=RTCRtpReceiver.getCapabilities(w),o=[{ssrc:1001*(2*h+2)}],n=new RTCRtpReceiver(F.dtlsTransport,w),r=n.track,e.push([r,n]),c.addTrack(r),b.localStreams.length>0&&b.localStreams[0].getTracks().length>=h){var G=b.localStreams[0].getTracks()[h];m=new RTCRtpSender(G,F.dtlsTransport)}b.transceivers[h]={iceGatherer:F.iceGatherer,iceTransport:F.iceTransport,dtlsTransport:F.dtlsTransport,localCapabilities:q,remoteCapabilities:z,rtpSender:m,rtpReceiver:n,kind:w,mid:A,cname:B,sendEncodingParameters:o,recvEncodingParameters:p},b._transceive(b.transceivers[h],!1,"sendrecv"===y||"sendonly"===y)}}),this.remoteDescription={type:a.type,sdp:a.sdp},a.type){case"offer":this._updateSignalingState("have-remote-offer");break;case"answer":this._updateSignalingState("stable");break;default:throw new TypeError('unsupported type "'+a.type+'"')}return c.getTracks().length&&(b.remoteStreams.push(c),window.setTimeout(function(){var a=new Event("addstream");a.stream=c,b.dispatchEvent(a),null!==b.onaddstream&&window.setTimeout(function(){b.onaddstream(a)},0),e.forEach(function(d){var e=d[0],f=d[1],g=new Event("track");g.track=e,g.receiver=f,g.streams=[c],b.dispatchEvent(a),null!==b.ontrack&&window.setTimeout(function(){b.ontrack(g)},0)})},0)),arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.close=function(){this.transceivers.forEach(function(a){a.iceTransport&&a.iceTransport.stop(),a.dtlsTransport&&a.dtlsTransport.stop(),a.rtpSender&&a.rtpSender.stop(),a.rtpReceiver&&a.rtpReceiver.stop()}),this._updateSignalingState("closed")},window.RTCPeerConnection.prototype._updateSignalingState=function(a){this.signalingState=a;var b=new Event("signalingstatechange");this.dispatchEvent(b),null!==this.onsignalingstatechange&&this.onsignalingstatechange(b)},window.RTCPeerConnection.prototype._maybeFireNegotiationNeeded=function(){var a=new Event("negotiationneeded");this.dispatchEvent(a),null!==this.onnegotiationneeded&&this.onnegotiationneeded(a)},window.RTCPeerConnection.prototype._updateConnectionState=function(){var a,b=this,c={"new":0,closed:0,connecting:0,checking:0,connected:0,completed:0,failed:0};if(this.transceivers.forEach(function(a){c[a.iceTransport.state]++,c[a.dtlsTransport.state]++}),c.connected+=c.completed,a="new",c.failed>0?a="failed":c.connecting>0||c.checking>0?a="connecting":c.disconnected>0?a="disconnected":c["new"]>0?a="new":(c.connected>0||c.completed>0)&&(a="connected"),a!==b.iceConnectionState){b.iceConnectionState=a;var d=new Event("iceconnectionstatechange");this.dispatchEvent(d),null!==this.oniceconnectionstatechange&&this.oniceconnectionstatechange(d)}},window.RTCPeerConnection.prototype.createOffer=function(){var a=this;if(this._pendingOffer)throw new Error("createOffer called while there is a pending offer.");var b;1===arguments.length&&"function"!=typeof arguments[0]?b=arguments[0]:3===arguments.length&&(b=arguments[2]);var c=[],e=0,f=0;if(this.localStreams.length&&(e=this.localStreams[0].getAudioTracks().length,f=this.localStreams[0].getVideoTracks().length),b){if(b.mandatory||b.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==b.offerToReceiveAudio&&(e=b.offerToReceiveAudio),void 0!==b.offerToReceiveVideo&&(f=b.offerToReceiveVideo)}for(this.localStreams.length&&this.localStreams[0].getTracks().forEach(function(a){c.push({kind:a.kind,track:a,wantReceive:"audio"===a.kind?e>0:f>0}),"audio"===a.kind?e--:"video"===a.kind&&f--});e>0||f>0;)e>0&&(c.push({kind:"audio",wantReceive:!0}),e--),f>0&&(c.push({kind:"video",wantReceive:!0}),f--);var g=d.writeSessionBoilerplate(),h=[];c.forEach(function(b,c){var e,f,i=b.track,j=b.kind,k=d.generateIdentifier(),l=a._createIceAndDtlsTransports(k,c),m=RTCRtpSender.getCapabilities(j),n=[{ssrc:1001*(2*c+1)}];i&&(e=new RTCRtpSender(i,l.dtlsTransport)),b.wantReceive&&(f=new RTCRtpReceiver(l.dtlsTransport,j)),h[c]={iceGatherer:l.iceGatherer,iceTransport:l.iceTransport,dtlsTransport:l.dtlsTransport,localCapabilities:m,remoteCapabilities:null,rtpSender:e,rtpReceiver:f,kind:j,mid:k,sendEncodingParameters:n,recvEncodingParameters:null};var o=h[c];g+=d.writeMediaSection(o,o.localCapabilities,"offer",a.localStreams[0])}),this._pendingOffer=h;var i=new RTCSessionDescription({type:"offer",sdp:g});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,i),Promise.resolve(i)},window.RTCPeerConnection.prototype.createAnswer=function(){var a=this,b=d.writeSessionBoilerplate();this.transceivers.forEach(function(c){var e=a._getCommonCapabilities(c.localCapabilities,c.remoteCapabilities);b+=d.writeMediaSection(c,e,"answer",a.localStreams[0])});var c=new RTCSessionDescription({type:"answer",sdp:b});return arguments.length&&"function"==typeof arguments[0]&&window.setTimeout(arguments[0],0,c),Promise.resolve(c)},window.RTCPeerConnection.prototype.addIceCandidate=function(a){var b=a.sdpMLineIndex;if(a.sdpMid)for(var c=0;c<this.transceivers.length;c++)if(this.transceivers[c].mid===a.sdpMid){b=c;break}var e=this.transceivers[b];if(e){var f=Object.keys(a.candidate).length>0?d.parseCandidate(a.candidate):{};if("tcp"===f.protocol&&0===f.port)return;if("1"!==f.component)return;"endOfCandidates"===f.type&&(f={}),e.iceTransport.addRemoteCandidate(f);var g=d.splitSections(this.remoteDescription.sdp);g[b+1]+=(f.type?a.candidate.trim():"a=end-of-candidates")+"\r\n",this.remoteDescription.sdp=g.join("")}return arguments.length>1&&"function"==typeof arguments[1]&&window.setTimeout(arguments[1],0),Promise.resolve()},window.RTCPeerConnection.prototype.getStats=function(){var a=[];this.transceivers.forEach(function(b){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(c){b[c]&&a.push(b[c].getStats())})});var b=arguments.length>1&&"function"==typeof arguments[1]&&arguments[1];return new Promise(function(c){var d={};Promise.all(a).then(function(a){a.forEach(function(a){Object.keys(a).forEach(function(b){d[b]=a[b]})}),b&&window.setTimeout(b,0,d),c(d)})})}},attachMediaStream:function(a,b){e("DEPRECATED, attachMediaStream will soon be removed."),a.srcObject=b},reattachMediaStream:function(a,b){e("DEPRECATED, reattachMediaStream will soon be removed."),a.srcObject=b.srcObject;
}};b.exports={shimPeerConnection:f.shimPeerConnection,attachMediaStream:f.attachMediaStream,reattachMediaStream:f.reattachMediaStream}},{"../utils":9,"./edge_sdp":4}],6:[function(a,b,c){"use strict";var d=a("../utils").log,e=a("../utils").browserDetails,f={shimOnTrack:function(){"object"!=typeof window||!window.RTCPeerConnection||"ontrack"in window.RTCPeerConnection.prototype||Object.defineProperty(window.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(a){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=a),this.addEventListener("addstream",this._ontrackpoly=function(a){a.stream.getTracks().forEach(function(b){var c=new Event("track");c.track=b,c.receiver={track:b},c.streams=[a.stream],this.dispatchEvent(c)}.bind(this))}.bind(this))}})},shimSourceObject:function(){"object"==typeof window&&(!window.HTMLMediaElement||"srcObject"in window.HTMLMediaElement.prototype||Object.defineProperty(window.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(a){this.mozSrcObject=a}}))},shimPeerConnection:function(){window.RTCPeerConnection||(window.RTCPeerConnection=function(a,b){if(e.version<38&&a&&a.iceServers){for(var c=[],d=0;d<a.iceServers.length;d++){var f=a.iceServers[d];if(f.hasOwnProperty("urls"))for(var g=0;g<f.urls.length;g++){var h={url:f.urls[g]};0===f.urls[g].indexOf("turn")&&(h.username=f.username,h.credential=f.credential),c.push(h)}else c.push(a.iceServers[d])}a.iceServers=c}return new mozRTCPeerConnection(a,b)},window.RTCPeerConnection.prototype=mozRTCPeerConnection.prototype,mozRTCPeerConnection.generateCertificate&&Object.defineProperty(window.RTCPeerConnection,"generateCertificate",{get:function(){return mozRTCPeerConnection.generateCertificate}}),window.RTCSessionDescription=mozRTCSessionDescription,window.RTCIceCandidate=mozRTCIceCandidate),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(a){var b=RTCPeerConnection.prototype[a];RTCPeerConnection.prototype[a]=function(){return arguments[0]=new("addIceCandidate"===a?RTCIceCandidate:RTCSessionDescription)(arguments[0]),b.apply(this,arguments)}})},shimGetUserMedia:function(){var a=function(a,b,c){var f=function(a){if("object"!=typeof a||a.require)return a;var b=[];return Object.keys(a).forEach(function(c){if("require"!==c&&"advanced"!==c&&"mediaSource"!==c){var d=a[c]="object"==typeof a[c]?a[c]:{ideal:a[c]};if(void 0===d.min&&void 0===d.max&&void 0===d.exact||b.push(c),void 0!==d.exact&&("number"==typeof d.exact?d.min=d.max=d.exact:a[c]=d.exact,delete d.exact),void 0!==d.ideal){a.advanced=a.advanced||[];var e={};"number"==typeof d.ideal?e[c]={min:d.ideal,max:d.ideal}:e[c]=d.ideal,a.advanced.push(e),delete d.ideal,Object.keys(d).length||delete a[c]}}}),b.length&&(a.require=b),a};return a=JSON.parse(JSON.stringify(a)),e.version<38&&(d("spec: "+JSON.stringify(a)),a.audio&&(a.audio=f(a.audio)),a.video&&(a.video=f(a.video)),d("ff37: "+JSON.stringify(a))),navigator.mozGetUserMedia(a,b,c)};navigator.getUserMedia=a;var b=function(a){return new Promise(function(b,c){navigator.getUserMedia(a,b,c)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:b,addEventListener:function(){},removeEventListener:function(){}}),navigator.mediaDevices.enumerateDevices=navigator.mediaDevices.enumerateDevices||function(){return new Promise(function(a){var b=[{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}];a(b)})},e.version<41){var c=navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);navigator.mediaDevices.enumerateDevices=function(){return c().then(void 0,function(a){if("NotFoundError"===a.name)return[];throw a})}}},attachMediaStream:function(a,b){d("DEPRECATED, attachMediaStream will soon be removed."),a.srcObject=b},reattachMediaStream:function(a,b){d("DEPRECATED, reattachMediaStream will soon be removed."),a.srcObject=b.srcObject}};b.exports={shimOnTrack:f.shimOnTrack,shimSourceObject:f.shimSourceObject,shimPeerConnection:f.shimPeerConnection,shimGetUserMedia:a("./getusermedia"),attachMediaStream:f.attachMediaStream,reattachMediaStream:f.reattachMediaStream}},{"../utils":9,"./getusermedia":7}],7:[function(a,b,c){"use strict";var d=a("../utils").log,e=a("../utils").browserDetails;b.exports=function(){var a=function(a,b,c){var f=function(a){if("object"!=typeof a||a.require)return a;var b=[];return Object.keys(a).forEach(function(c){if("require"!==c&&"advanced"!==c&&"mediaSource"!==c){var d=a[c]="object"==typeof a[c]?a[c]:{ideal:a[c]};if(void 0===d.min&&void 0===d.max&&void 0===d.exact||b.push(c),void 0!==d.exact&&("number"==typeof d.exact?d.min=d.max=d.exact:a[c]=d.exact,delete d.exact),void 0!==d.ideal){a.advanced=a.advanced||[];var e={};"number"==typeof d.ideal?e[c]={min:d.ideal,max:d.ideal}:e[c]=d.ideal,a.advanced.push(e),delete d.ideal,Object.keys(d).length||delete a[c]}}}),b.length&&(a.require=b),a};return a=JSON.parse(JSON.stringify(a)),e.version<38&&(d("spec: "+JSON.stringify(a)),a.audio&&(a.audio=f(a.audio)),a.video&&(a.video=f(a.video)),d("ff37: "+JSON.stringify(a))),navigator.mozGetUserMedia(a,b,c)};navigator.getUserMedia=a;var b=function(a){return new Promise(function(b,c){navigator.getUserMedia(a,b,c)})};if(navigator.mediaDevices||(navigator.mediaDevices={getUserMedia:b,addEventListener:function(){},removeEventListener:function(){}}),navigator.mediaDevices.enumerateDevices=navigator.mediaDevices.enumerateDevices||function(){return new Promise(function(a){var b=[{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}];a(b)})},e.version<41){var c=navigator.mediaDevices.enumerateDevices.bind(navigator.mediaDevices);navigator.mediaDevices.enumerateDevices=function(){return c().then(void 0,function(a){if("NotFoundError"===a.name)return[];throw a})}}}},{"../utils":9}],8:[function(a,b,c){"use strict";var d={shimGetUserMedia:function(){navigator.getUserMedia=navigator.webkitGetUserMedia}};b.exports={shimGetUserMedia:d.shimGetUserMedia}},{}],9:[function(a,b,c){"use strict";var d=!1,e={disableLog:function(a){return"boolean"!=typeof a?new Error("Argument type: "+typeof a+". Please use a boolean."):(d=a,a?"adapter.js logging disabled":"adapter.js logging enabled")},log:function(){if("object"==typeof window){if(d)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}},extractVersion:function(a,b,c){var d=a.match(b);return d&&d.length>=c&&parseInt(d[c],10)},detectBrowser:function(){var a={};if(a.browser=null,a.version=null,a.minVersion=null,"undefined"==typeof window||!window.navigator)return a.browser="Not a browser.",a;if(navigator.mozGetUserMedia)a.browser="firefox",a.version=this.extractVersion(navigator.userAgent,/Firefox\/([0-9]+)\./,1),a.minVersion=31;else if(navigator.webkitGetUserMedia)if(window.webkitRTCPeerConnection)a.browser="chrome",a.version=this.extractVersion(navigator.userAgent,/Chrom(e|ium)\/([0-9]+)\./,2),a.minVersion=38;else{if(!navigator.userAgent.match(/Version\/(\d+).(\d+)/))return a.browser="Unsupported webkit-based browser with GUM support but no WebRTC support.",a;a.browser="safari",a.version=this.extractVersion(navigator.userAgent,/AppleWebKit\/([0-9]+)\./,1),a.minVersion=602}else{if(!navigator.mediaDevices||!navigator.userAgent.match(/Edge\/(\d+).(\d+)$/))return a.browser="Not a supported browser.",a;a.browser="edge",a.version=this.extractVersion(navigator.userAgent,/Edge\/(\d+).(\d+)$/,2),a.minVersion=10547}return a.version<a.minVersion&&e.log("Browser: "+a.browser+" Version: "+a.version+" < minimum supported version: "+a.minVersion+"\n some things might not work!"),a}};b.exports={log:e.log,disableLog:e.disableLog,browserDetails:e.detectBrowser(),extractVersion:e.extractVersion}},{}]},{},[1])(1)});var CONFKU_DEFAULT_WSHOST="localhost",CONFKU_DEFAULT_WSPORT="8001",CONFKU_DEFAULT_ROOM="",confku={localVideo:null,iceServers:"stun:stun.l.google.com:19302",ee:new EventEmitter,conns:{},myPeerId:null,myStream:null,hubHost:null,hubPort:null,room:null,name:null,isWsConnOpened:!1,isGetusermedia:!1,isGetPeers:!1},sdpConstraints={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:!0}};confku.NewConn=function(a,b){console.log("New Peer = "+b);var c={pc:null,peerId:a,name:b,stream:null};return c},confku.init=function(a,b,c,d){return checkCompatibility()?(confku.room=c||CONFKU_DEFAULT_ROOM,confku.hubHost=a||CONFKU_DEFAULT_WSHOST,confku.hubPort=b||CONFKU_DEFAULT_WSPORT,confku.name=d||"",console.info("initializing confku.hub host ="+confku.hubHost+".hub port = "+confku.hubPort+".room = "+c),this.localVideo=document.getElementById("localVideo"),this.getUserMedia(),this.wsConnect(),!0):(console.info("browser is not supported"),!1)},confku.numPeers=function(){return Object.keys(confku.conns).length},confku.wsConnect=function(){var a=this,b="ws://"+confku.hubHost+":"+confku.hubPort;console.log("connect to ws="+b),this.socket=new WebSocket(b),this.socket.onopen=function(){console.log("connection to server opened"),confku.ee.trigger("wsconnopened")},this.socket.onclose=function(){console.log("connection to server closed")},this.socket.onerror=function(a){console.log("ws connection to server error:"+a)},this.socket.onmessage=function(b){var c=JSON.parse(b.data);a.ee.trigger(c.eventName,[c.data])}},confku.getUserMedia=function(){var a=this,b=function(a){console.error("onUserMediaFailed = "+a)},c=function(b){console.log("onUserMediaSuccess"),confku.myStream=b,a.localVideo.src=URL.createObjectURL(b),a.ee.trigger("getusermedia_success")};console.log("getting user media"),navigator.getUserMedia({video:!0,audio:!0},c,b)},confku.createPC=function(a){console.log("create Peer Connection for id = "+a);var b={};b.optional=[],b.optional.push({DtlsSrtpKeyAgreement:"true"});var c={iceServers:[{url:this.iceServers}]},d=this.conns[a].pc=new RTCPeerConnection(c,b),e=this;return d.onopen=function(){console.log("pc onopen")},d.onicecandidate=function(b){if(b.candidate){var c={eventName:"ice_candidate",data:{label:b.candidate.sdpMLineIndex,candidate:b.candidate.candidate,peerIdDest:a,peerIdSrc:confku.myPeerId}};e.socket.send(JSON.stringify(c))}else console.log("end of candidate")},d.onaddstream=function(b){console.log("pc on add stream"),e.ee.trigger("add_remote_stream",[b.stream,a])},d},confku.sendOffer=function(a){console.log("sendOffer()");var b=this.conns[a].pc,c=function(c){var d=function(){console.log("set local session description OK")},e=function(a){console.log("set local sess description failed :"+a.toString())};b.setLocalDescription(c,d,e);var f={eventName:"offer",data:{peerIdDest:a,peerIdSrc:confku.myPeerId,sdp:c}};confku.socket.send(JSON.stringify(f))},d=function(a){console.log("onCreateSessionDesc error:"+a)};b.createOffer(c,d,sdpConstraints)},confku.recvChanOnMessage=function(a){console.log("recvChanOnMessage data = "+a.data)},confku.recvChanOnStateChange=function(a){var b=confku.recvChan.readyState;console.log("Receive channel state is: "+b)},confku.recvChanCb=function(a){console.log("pc on data channel"),confku.recvChan=a.channel,confku.recvChan.onmessage=confku.recvChanOnMessage,confku.recvChan.onclose=confku.recvChanOnStateChange,confku.recvChan.onopen=confku.recvChanOnStateChange},confku.createDC=function(a){var b={reliable:!0},c=confku.conns[a].pc;console.log("create Data channel to "+a);var d=confku.conns[a].dc=c.createDataChannel("dataChannel",b);c.ondatachannel=confku.recvChanCb,d.onopen=function(){console.log("DC Open brow")}},confku.setupConns=function(){console.log("setup Conns");for(var a in this.conns){var b=this.createPC(a);b.addStream(confku.myStream),this.sendOffer(a)}},confku.sendAnswer=function(a){console.log("sendAnswer()");var b=this.conns[a].pc,c=function(c){b.setLocalDescription(c);var d={eventName:"answer",data:{peerIdDest:a,peerIdSrc:confku.myPeerId,sdp:c}};confku.socket.send(JSON.stringify(d)),console.log("sending answer...")},d=function(a){console.error("sendAnswer(). Create answer failed:"+a.toString())};b.createAnswer(c,d,sdpConstraints)},confku.joinRoom=function(){var a=JSON.stringify({eventName:"join_room",data:{name:confku.name,room:confku.room}});confku.socket.send(a)},confku.ee.on("wsconnopened",function(a){console.log("on wsconnopened"),confku.isWsConnOpened=!0,confku.isGetusermedia&&confku.joinRoom()}),confku.ee.on("getusermedia_success",function(){console.log("on getusermedia_success"),confku.isGetusermedia=!0,confku.isWsConnOpened&&confku.joinRoom(),confku.isGetPeers&&confku.setupConns()}),confku.ee.on("join_room_ok",function(a){console.log("join room "+a.room_name+" OK. peerId = "+a.peerId),confku.myPeerId=a.peerId}),confku.ee.on("get_peers",function(a){console.log("on get peers"),confku.isGetPeers=!0;for(var b=0;b<a.peers.length;b++){var c=a.peers[b].peerId,d=a.peers[b].name;confku.conns[c]=confku.NewConn(c,d)}confku.isGetusermedia&&confku.setupConns()}),confku.ee.on("peer_join_room",function(a){console.log("on peer_join_room:"+a.peerId),confku.conns[a.peerId]=confku.NewConn(a.peerId,a.name);var b=confku.createPC(a.peerId);b.addStream(confku.myStream)}),confku.ee.on("peer_leave_room",function(a){console.log("on peer_leave_room:"+a.peerId),delete confku.conns[a.peerId],confkuUI.removeVideo(a.peerId)}),confku.ee.on("answer",function(a){console.log("on answer");var b=confku.conns[a.peerIdSrc].pc,c=function(){console.log("Set session description success")},d=function(a){console.warn("Failed to set session description : "+a.toString())};b.setRemoteDescription(new RTCSessionDescription(a.sdp),c,d)}),confku.ee.on("offer",function(a){console.log("on offer");var b=confku.conns[a.peerIdSrc].pc,c=function(){console.log("Receive offer. Set remote description OK"),confku.sendAnswer(a.peerIdSrc)},d=function(a){console.error("Receive offer. set remote description failed:"+a.toString())};b.setRemoteDescription(new RTCSessionDescription(a.sdp),c,d)}),confku.ee.on("ice_candidate",function(a){console.log("on ice_candidate");var b=new RTCIceCandidate({candidate:a.candidate,sdpMLineIndex:a.label});confku.conns[a.peerIdSrc].pc.addIceCandidate(b)}),confku.ee.on("add_remote_stream",function(a,b){console.log("on add_remote_stream");var c=confkuUI.addVideo(a,b);c.src=URL.createObjectURL(a)});