EVOLUTION-MANAGER
Edit File: settings.min.js
/* @name JavaScript/NodeJS Merge v1.2.1 @author yeikos @repository https://github.com/yeikos/js.merge Copyright 2014 yeikos - MIT license https://raw.github.com/yeikos/js.merge/master/LICENSE UAParser.js v0.7.21 Lightweight JavaScript-based User-Agent string parser https://github.com/faisalman/ua-parser-js Copyright © 2012-2019 Faisal Salman <f@faisalman.com> Licensed under MIT License */ var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(k,m,h){k!=Array.prototype&&k!=Object.prototype&&(k[m]=h.value)};$jscomp.getGlobal=function(k){return"undefined"!=typeof window&&window===k?k:"undefined"!=typeof global&&null!=global?global:k};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; $jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(k){return $jscomp.SYMBOL_PREFIX+(k||"")+$jscomp.symbolCounter_++}; $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var k=$jscomp.global.Symbol.iterator;k||(k=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[k]&&$jscomp.defineProperty(Array.prototype,k,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(k){var m=0;return $jscomp.iteratorPrototype(function(){return m<k.length?{done:!1,value:k[m++]}:{done:!0}})}; $jscomp.iteratorPrototype=function(k){$jscomp.initSymbolIterator();k={next:k};k[$jscomp.global.Symbol.iterator]=function(){return this};return k}; var WB_AREA_SEL=".room-block .wb-block",WBA_WB_SEL=".room-block .wb-block .wb-tab-content",VIDWIN_SEL=".video.user-video",VID_SEL=".video-container[id!\x3duser-video]",CAM_ACTIVITY="VIDEO",MIC_ACTIVITY="AUDIO",SCREEN_ACTIVITY="SCREEN",REC_ACTIVITY="RECORD",VideoUtil=function(){function k(a){return!!a&&"SCREEN"===a.type&&a.activities.includes(SCREEN_ACTIVITY)}function m(a){return!!a&&"SCREEN"===a.type&&a.activities.includes(REC_ACTIVITY)}function h(a){return!a||a.activities.includes(CAM_ACTIVITY)} function f(a){a=$(a);var b=a.offset();return{left:b.left,top:b.top,right:b.left+a.width(),bottom:b.top+a.height()}}function a(){var a=$(WB_AREA_SEL);return 0<a.find(".wb-area .tabs .wb-tab-content").length?$(WBA_WB_SEL):a}function d(a,b,c){var e=a.bottom;do{var g=!0;for(var d=0;d<c.length;++d){var q=c[d],e=Math.min(e,q.bottom);b.left<q.right&&b.right>q.left&&b.top<q.bottom&&b.bottom>q.top&&(b.left=q.right+20,g=!1);b.right>=a.right&&(b.left=a.left,b.top=Math.max(e,b.top)+10,g=!1);if(b.bottom>=a.bottom){b.top= a.top;g=!0;break}}}while(!g);return{left:b.left,top:b.top}}function c(a,b,c){var e=b.bottom=a.bottom;do{var g=!0;for(var d=0;d<c.length;++d){var q=c[d],e=Math.min(e,q.top);b.left<q.right&&b.right>q.left&&b.top<q.bottom&&b.bottom>q.top&&(b.left=q.right+20,g=!1);b.right>=a.right&&(b.left=a.left,b.bottom=Math.min(e,b.top)-10,g=!1);if(b.top<=a.top){b.top=a.top;g=!0;break}}}while(!g);return{left:b.left,top:b.top}}function l(b,c,e,g){if(Room.getOptions().interview)return{left:0,top:0};var u=a(),w=u.offset(), u={left:w.left,top:w.top,right:w.left+u.width(),bottom:w.top+u.height()};return(g||d)(u,{_left:u.left,_top:u.top,_right:u.left+c,_bottom:u.top+e,get left(){return this._left},set left(a){this._left=a;this._right=a+c},get right(){return this._right},get top(){return this._top},set top(a){this._top=a;this._bottom=a+e},set bottom(a){this._bottom=a;this._top=a-e},get bottom(){return this._bottom}},b)}function b(a){a&&a.getTracks().forEach(function(a){try{a.stop()}catch(w){}})}function g(a,b,c){!a||1> a.length||a.hasClass("disabled")||0>c||a.addClass(b).delay(2E3).queue(function(e){a.removeClass(b).delay(2E3).queue(function(e){g(a,b,--c);e()});e()})}var e={getVid:function(a){return"video"+a}};e.isSharing=k;e.isRecording=m;e.hasMic=function(a){return!a||a.activities.includes(MIC_ACTIVITY)};e.hasCam=h;e.hasVideo=function(a){return h(a)||k(a)||m(a)};e.getRects=function(a,b){var c=[];a=$(a);for(var e=0;e<a.length;++e)b!==$(a[e]).attr("aria-describedby")&&c.push(f(a[e]));return c};e.getPos=l;e.container= a;e.arrange=function(){var a=[];$(VIDWIN_SEL).each(function(){var b=$(this);b.css(l(a,b.width(),b.height()));a.push(f(b))})};e.arrangeResize=function(){function a(a){return $(a).find(".video-container.ui-dialog-content")}var b=[];$(VIDWIN_SEL).toArray().sort(function(b,c){b=a(b).data().stream();c=a(c).data().stream();return c.level-b.level||b.user.displayName.localeCompare(c.user.displayName)}).forEach(function(e){e=$(e);a(e).dialog("option","width",120).dialog("option","height",90);e.css(l(b,e.width(), e.height(),c));b.push(f(e))})};e.cleanStream=b;e.cleanPeer=function(a){if(a){a.cleaned=!0;var e=a.peerConnection;try{e&&e.getLocalStreams()&&e.getLocalStreams().forEach(function(a){b(a)})}catch(w){OmUtil.log("Failed to clean peer"+w)}try{a.dispose()}catch(w){}a=null}};e.addIceServers=function(a,b){b&&b.iceServers&&0<b.iceServers.length&&(a.configuration={iceServers:b.iceServers});return a};e.isEdge=function(a){return"Edge"===(a||kurentoUtils.WebRtcPeer.browser).name};e.isChrome=function(a){a=a||kurentoUtils.WebRtcPeer.browser; return"Chrome"===a.name||"Chromium"===a.name};e.setPos=function(a,b){a.dialog("instance")&&a.dialog("widget").css(b)};e.askPermission=function(a){var b=$("#ask-permission");void 0===b.dialog("instance")?b.data("callbacks",[]).dialog({appendTo:".room-block .room-container",autoOpen:!0,buttons:[{text:b.data("btn-ok"),click:function(){for(;0<b.data("callbacks").length;)b.data("callbacks").pop()();$(this).dialog("close")}}]}):b.dialog("isOpen")||b.dialog("open");b.data("callbacks").push(a)};e.disconnect= function(a){try{a.disconnect()}catch(v){}};e.sharingSupported=function(){var a=kurentoUtils.WebRtcPeer.browser;return"Edge"===a.name&&16<a.major||"Firefox"===a.name||"Chrome"===a.name||"Chromium"===a.name};e.highlight=g;return e}(),Volume=function(){function k(){b&&(clearTimeout(b),b=null);b=setTimeout(function(){d.hide();b=null},3E3)}function m(b){l.text(b);var e=f.video(),c=e.data();f.stream().self?c.gainNode&&(c.gainNode.gain.value=b/100):e[0].volume=b/100;e=a.find("a");0<b&&e.hasClass("volume-off")? (e.toggleClass("volume-off volume-on"),f.handleMicStatus(!0)):0===b&&e.hasClass("volume-on")&&(e.toggleClass("volume-on volume-off"),f.handleMicStatus(!1))}function h(a){c&&((e=a)?(a=c.slider("option","value"),0<a&&(g=a),c.slider("option","value",0),m(0)):(c.slider("option","value",g),m(g)))}var f,a,d,c,l,b=null,g=50,e=!1;return{create:function(u){f=u;var v=f.stream().uid;a=OmUtil.tmpl("#volume-control-stub","volume-"+v);c=a.find(".slider");d=a.find(".dropdown-menu");a.on("mouseenter",function(a){a.stopImmediatePropagation(); d.show();k()}).click(function(a){a.stopImmediatePropagation();OmUtil.roomAction({action:"mute",uid:v,mute:!e});h(!e);d.hide();return!1}).dblclick(function(a){a.stopImmediatePropagation();return!1});d.on("mouseenter",function(){b&&(clearTimeout(b),b=null)});d.on("mouseleave",function(){k()});l=a.find(".handle");c.slider({orientation:"vertical",range:"min",min:0,max:100,value:g,create:function(){l.text($(this).slider("value"))},slide:function(a,b){m(b.value)}});m(g);h(e);return a},handle:m,mute:h,muted:function(){return e}, destroy:function(){a&&(a.remove(),a=null)}}};!1===window.hasOwnProperty("isSecureContext")&&(window.isSecureContext="https:"==window.location.protocol||-1!==["localhost","127.0.0.1"].indexOf(window.location.hostname)); var RingBuffer=function(k){var m=[],h=0;return{get:function(f){return m[f]},push:function(f){m[h]=f;h=(h+1)%k},min:function(){return Math.min.apply(Math,m)}}},MicLevel=function(){function k(c,l,b,g){try{var e=function(){var c=u.width,g=u.height;w.clearRect(0,0,c,g);if(f&&l.is(":visible")){f.getByteFrequencyData(p);for(var n=0,B=0;B<t;++B)n+=p[B]*p[B];a=Math.sqrt(n/t);d.push(a);n=d.min();b(a>n+5);w.fillStyle=v;D?w.fillRect(0,0,c*a/100,g):(n=g*a/100,w.fillRect(0,g-n,c,n));requestAnimationFrame(e)}}; f=c;f.minDecibels=-90;f.maxDecibels=-10;f.fftSize=256;var u=l[0],v=$("body").css("--level-color"),w=u.getContext("2d"),t=f.frequencyBinCount,p=new Uint8Array(t),D="horizontal"===l.data("orientation");e()}catch(q){g(q)}}var m,h,f,a=0,d=RingBuffer(100);return{meter:k,meterPeer:function(a,d,b,g,e){if(a&&("function"===typeof a.getLocalStream||"function"===typeof a.getRemoteStream)&&(a=a.getLocalStream()||a.getRemoteStream())&&!(1>a.getAudioTracks().length))try{var c=window.AudioContext||window.webkitAudioContext; c?(m=new c,f=m.createAnalyser(),h=m.createMediaStreamSource(a),h.connect(f),e&&f.connect(m.destination),k(f,d,b,g)):g("AudioContext is inaccessible")}catch(v){g(v)}},dispose:function(){m&&(VideoUtil.cleanStream(h.mediaStream),VideoUtil.disconnect(h),VideoUtil.disconnect(m.destination),m.close(),m=null);f&&(VideoUtil.disconnect(f),f=null)}}},VideoSettings=function(){function k(){n=Settings.load();if(!n.video){var a=$("#video-settings .cam-resolution option:selected").data();n.video={cam:0,mic:0,width:a.width, height:a.height}}return n}function m(a){var b=Settings.save(n);"function"===typeof avSettings&&avSettings(b);a&&"object"===typeof VideoManager&&A.uid&&VideoManager.refresh(A.uid)}function h(a){VideoUtil.cleanStream(a||(G&&1===G.length?G[0].srcObject:null));G&&1===G.length&&(G[0].srcObject=null);VideoUtil.cleanPeer(E);x&&x.hide();L&&(L.dispose(),L=null)}function f(){h();Wicket.Event.unsubscribe("/websocket/message",D)}function a(a){OmUtil.log("Local candidate"+JSON.stringify(a));OmUtil.sendMessage({id:"iceCandidate", candidate:a},O)}function d(){Q.prop("disabled",!S||0>n.video.cam&&0>n.video.mic)}function c(a){if("Safari"===kurentoUtils.WebRtcPeer.browser.name){var b=n.video.width;[320,640,1280].some(function(a){return b<a+1?(b=a,!0):!1});a.video.width=1281>b?b:1280}else a.video.width=n.video.width,a.video.height=n.video.height}function l(a,b){v(function(e){var g={};e.video&&!1===A.audioOnly&&VideoUtil.hasCam(a)&&-1<n.video.cam?(g.video={frameRate:A.camera.fps},c(g),n.video.camDevice&&(g.video.deviceId={ideal:n.video.camDevice})): g.video=!1;e.audio&&VideoUtil.hasMic(a)&&-1<n.video.mic?(g.audio={sampleRate:A.microphone.rate,echoCancellation:A.microphone.echo,noiseSuppression:A.microphone.noise},n.video.micDevice&&(g.audio.deviceId={ideal:n.video.micDevice})):g.audio=!1;b(g)})}function b(a,b){var e=B.find("option:selected"),c=z.find("option:selected"),g=F.find("option:selected").data();n.video.cam=1*B.val();n.video.camDevice=e.data("device-id");n.video.mic=1*z.val();n.video.micDevice=c.data("device-id");n.video.width=g.width; n.video.height=g.height;G.width(g.width).height(g.height);C.scrollLeft(Math.max(0,n.video.width/2-150)).scrollTop(Math.max(0,n.video.height/2-110));h();l(null,function(e){if(!1!==e.video||!1!==e.audio){var c=VideoUtil.addIceServers({localVideo:G[0],mediaConstraints:e},a);E=new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(c,function(a){if(a)return!0===this.cleaned?void 0:OmUtil.error(a);e.audio?(x.show(),L=MicLevel(),L.meterPeer(E,x,function(){},OmUtil.error,!1)):x.hide();E.generateOffer(function(a, c){if(a)return!0===this.cleaned?void 0:OmUtil.error("Error generating the offer");"function"===typeof b?b(c,e):(S=!0,d())})})}a||d()})}function g(a){a.find("option").remove();a.append(OmUtil.tmpl("#settings-option-loading"))}function e(a){a.forEach(function(a){a.find("option").remove();a.append(OmUtil.tmpl("#settings-option-disabled"))})}function u(a,b){var e=a.find('option[value\x3d"'+b+'"]');0===e.length&&-1!==b&&(e=a.find('option[value\x3d"0"]'));e.prop("selected",!0)}function v(a){var b={audio:!1, video:!1};!1===window.isSecureContext?OmUtil.error($("#settings-https-required").text()):navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices?navigator.mediaDevices.enumerateDevices().then(function(e){e.forEach(function(a){"audioinput"===a.kind?b.audio=!0:"videoinput"===a.kind&&(b.video=!0)});a(b)}).catch(function(){OmUtil.error("Unable to get the list of multimedia devices");a(b)}):OmUtil.error("enumerateDevices() not supported.")}function w(){!1===window.isSecureContext?OmUtil.error($("#settings-https-required").text()): navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices?(g(B),g(z),v(function(a){a.audio||a.video?navigator.mediaDevices.getUserMedia(a).then(function(a){return navigator.mediaDevices.enumerateDevices().then(function(b){h(a);return b}).catch(function(b){h(a);throw b;})}).then(function(a){var c=0,g=0;k();e([B,z]);a.forEach(function(a){"audioinput"===a.kind?(a=$("\x3coption\x3e\x3c/option\x3e").attr("value",g).text(a.label).data("device-id",a.deviceId),z.append(a),g++):"videoinput"===a.kind&& (a=$("\x3coption\x3e\x3c/option\x3e").attr("value",c).text(a.label).data("device-id",a.deviceId),B.append(a),c++)});u(B,n.video.cam);u(z,n.video.mic);F.find("option").each(function(){var a=$(this).data();if(a.width===n.video.width&&a.height===n.video.height)return $(this).prop("selected",!0),!1});b()}).catch(function(a){e([B,z]);OmUtil.error(a)}):e([B,z])})):OmUtil.error("enumerateDevices() not supported.")}function t(a){T.prop("disabled",a);B.prop("disabled",a);z.prop("disabled",a);F.prop("disabled", a)}function p(e){OmUtil.info("Received message: ",e);switch(e.id){case "canRecord":b(e,function(b,e){OmUtil.info("Invoking SDP offer callback function");OmUtil.sendMessage({id:"record",sdpOffer:b,video:!1!==e.video,audio:!1!==e.audio},O);E.on("icecandidate",a)});break;case "canPlay":e=VideoUtil.addIceServers({remoteVideo:G[0],mediaConstraints:{audio:!0,video:!0},onicecandidate:a},e);h();E=new kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(e,function(a){if(a)return!0===this.cleaned?void 0:OmUtil.error(a); E.generateOffer(function(a,b){if(a)return!0===this.cleaned?void 0:OmUtil.error("Error generating the offer");OmUtil.sendMessage({id:"play",sdpOffer:b},O)})});break;case "playResponse":OmUtil.log("Play SDP answer received from server. Processing ...");E.processAnswer(e.sdpAnswer,function(a){if(a)return!0===this.cleaned?void 0:OmUtil.error(a);x.show();L=MicLevel();L.meterPeer(E,x,function(){},OmUtil.error,!0)});break;case "startResponse":OmUtil.log("SDP answer received from server. Processing ..."); E.processAnswer(e.sdpAnswer,function(a){if(a)return!0===this.cleaned?void 0:OmUtil.error(a)});break;case "iceCandidate":E.addIceCandidate(e.candidate,function(a){if(a)return!0===this.cleaned?void 0:OmUtil.error("Error adding candidate: "+a)});break;case "recording":r.show().find(".time").text(e.time);break;case "recStopped":r.hide();d();t(!1);break;case "playStopped":d(),t(!1),b()}}function D(a,b){try{if(!(b instanceof Blob)){var e=JSON.parse(b);if(e&&"kurento"===e.type)switch("test"===e.mode&&p(e), e.id){case "error":OmUtil.error(e.message)}}}catch(W){OmUtil.error(W)}}var q,x,n,B,z,F,A,E,r,C,G,Q,T,S=!1,L,O={type:"kurento",mode:"test"};return{init:function(a){A=JSON.parse(JSON.stringify(a));A.infoMsg&&OmUtil.alert("info",A.infoMsg,0);q=$("#video-settings");x=q.find(".level-meter");B=q.find("select.cam").change(function(){b()});z=q.find("select.mic").change(function(){b()});F=q.find("select.cam-resolution").change(function(){b()});C=q.find(".vid-block .video-conainer");r=q.find(".timer");G=C.find("video"); Q=q.find(".rec-start").click(function(){Q.prop("disabled",!0);t(!0);OmUtil.sendMessage({id:"wannaRecord"},O)});T=q.find(".play").click(function(){Q.prop("disabled",!0);t(!0);OmUtil.sendMessage({id:"wannaPlay"},O)});q.find(".btn-save").off().click(function(){m(!0);f();q.modal("hide")});q.find(".btn-cancel").off().click(function(){f();q.modal("hide")});q.off().on("hidden.bs.modal",function(a){f()});A.width=300;A.height=200;A.mode="settings";A.rights=(A.rights||[]).join();delete A.keycode;q.find(".modal-body input, .modal-body button").prop("disabled", !0);a=q.find(".cam-resolution").parents(".sett-row");A.interview?a.hide():a.show();k();m()},open:function(){Wicket.Event.subscribe("/websocket/message",D);S=!1;r.hide();T.prop("disabled",!0);q.modal("show");k();w()},close:function(){f();q&&q.modal("hide")},load:k,save:m,constraints:l}}(); (function(k){"object"===typeof exports&&"undefined"!==typeof module?module.exports=k():"function"===typeof define&&define.amd?define([],k):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).adapter=k()})(function(){return function(){function k(m,h,f){function a(c,b){if(!h[c]){if(!m[c]){var g="function"==typeof require&&require;if(!b&&g)return g(c,!0);if(d)return d(c,!0);b=Error("Cannot find module '"+c+"'");throw b.code="MODULE_NOT_FOUND",b; }b=h[c]={exports:{}};m[c][0].call(b.exports,function(b){return a(m[c][1][b]||b)},b,b.exports,k,m,h,f)}return h[c].exports}for(var d="function"==typeof require&&require,c=0;c<f.length;c++)a(f[c]);return a}return k}()({1:[function(k,m,h){k=k("./adapter_factory.js");k=(0,k.adapterFactory)({window:window});m.exports=k},{"./adapter_factory.js":2}],2:[function(k,m,h){function f(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(b[e]=a[e]);b.default= a;return b}Object.defineProperty(h,"__esModule",{value:!0});h.adapterFactory=function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).window,f=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0},v=a.log,w=a.detectBrowser(e),t={browserDetails:w,commonShim:g,extractVersion:a.extractVersion,disableLog:a.disableLog,disableWarnings:a.disableWarnings};switch(w.browser){case "chrome":if(!d||!d.shimPeerConnection||!f.shimChrome){v("Chrome shim is not included in this adapter release."); break}v("adapter.js shimming chrome.");t.browserShim=d;d.shimGetUserMedia(e);d.shimMediaStream(e);d.shimPeerConnection(e);d.shimOnTrack(e);d.shimAddTrackRemoveTrack(e);d.shimGetSendersWithDtmf(e);d.shimGetStats(e);d.shimSenderReceiverGetStats(e);d.fixNegotiationNeeded(e);g.shimRTCIceCandidate(e);g.shimConnectionState(e);g.shimMaxMessageSize(e);g.shimSendThrowTypeError(e);g.removeAllowExtmapMixed(e);break;case "firefox":if(!l||!l.shimPeerConnection||!f.shimFirefox){v("Firefox shim is not included in this adapter release."); break}v("adapter.js shimming firefox.");t.browserShim=l;l.shimGetUserMedia(e);l.shimPeerConnection(e);l.shimOnTrack(e);l.shimRemoveStream(e);l.shimSenderGetStats(e);l.shimReceiverGetStats(e);l.shimRTCDataChannel(e);l.shimAddTransceiver(e);l.shimCreateOffer(e);l.shimCreateAnswer(e);g.shimRTCIceCandidate(e);g.shimConnectionState(e);g.shimMaxMessageSize(e);g.shimSendThrowTypeError(e);break;case "edge":if(!c||!c.shimPeerConnection||!f.shimEdge){v("MS edge shim is not included in this adapter release."); break}v("adapter.js shimming edge.");t.browserShim=c;c.shimGetUserMedia(e);c.shimGetDisplayMedia(e);c.shimPeerConnection(e);c.shimReplaceTrack(e);g.shimMaxMessageSize(e);g.shimSendThrowTypeError(e);break;case "safari":if(!b||!f.shimSafari){v("Safari shim is not included in this adapter release.");break}v("adapter.js shimming safari.");t.browserShim=b;b.shimRTCIceServerUrls(e);b.shimCreateOfferLegacy(e);b.shimCallbacksAPI(e);b.shimLocalStreamsAPI(e);b.shimRemoteStreamsAPI(e);b.shimTrackEventTransceiver(e); b.shimGetUserMedia(e);g.shimRTCIceCandidate(e);g.shimMaxMessageSize(e);g.shimSendThrowTypeError(e);g.removeAllowExtmapMixed(e);break;default:v("Unsupported browser!")}return t};m=k("./utils");var a=f(m);m=k("./chrome/chrome_shim");var d=f(m);m=k("./edge/edge_shim");var c=f(m);m=k("./firefox/firefox_shim");var l=f(m);m=k("./safari/safari_shim");var b=f(m);k=k("./common_shim");var g=f(k)},{"./chrome/chrome_shim":3,"./common_shim":6,"./edge/edge_shim":7,"./firefox/firefox_shim":11,"./safari/safari_shim":14, "./utils":15}],3:[function(k,m,h){function f(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function a(a){a.RTCPeerConnection.prototype.getLocalStreams=function(){var a=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{};return Object.keys(this._shimmedLocalStreams).map(function(b){return a._shimmedLocalStreams[b][0]})};var b=a.RTCPeerConnection.prototype.addTrack;a.RTCPeerConnection.prototype.addTrack=function(a,e){if(!e)return b.apply(this, arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var c=b.apply(this,arguments);this._shimmedLocalStreams[e.id]?-1===this._shimmedLocalStreams[e.id].indexOf(c)&&this._shimmedLocalStreams[e.id].push(c):this._shimmedLocalStreams[e.id]=[e,c];return c};var c=a.RTCPeerConnection.prototype.addStream;a.RTCPeerConnection.prototype.addStream=function(a){var b=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{};a.getTracks().forEach(function(a){if(b.getSenders().find(function(b){return b.track=== a}))throw new DOMException("Track already exists.","InvalidAccessError");});var e=this.getSenders();c.apply(this,arguments);var g=this.getSenders().filter(function(a){return-1===e.indexOf(a)});this._shimmedLocalStreams[a.id]=[a].concat(g)};var g=a.RTCPeerConnection.prototype.removeStream;a.RTCPeerConnection.prototype.removeStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{};delete this._shimmedLocalStreams[a.id];return g.apply(this,arguments)};var d=a.RTCPeerConnection.prototype.removeTrack; a.RTCPeerConnection.prototype.removeTrack=function(a){var b=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{};a&&Object.keys(this._shimmedLocalStreams).forEach(function(e){var c=b._shimmedLocalStreams[e].indexOf(a);-1!==c&&b._shimmedLocalStreams[e].splice(c,1);1===b._shimmedLocalStreams[e].length&&delete b._shimmedLocalStreams[e]});return d.apply(this,arguments)}}Object.defineProperty(h,"__esModule",{value:!0});h.shimGetDisplayMedia=h.shimGetUserMedia=void 0;$jscomp.initSymbol();$jscomp.initSymbol(); $jscomp.initSymbolIterator();var d="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},c=k("./getusermedia");Object.defineProperty(h,"shimGetUserMedia",{enumerable:!0,get:function(){return c.shimGetUserMedia}});var l=k("./getdisplaymedia");Object.defineProperty(h,"shimGetDisplayMedia", {enumerable:!0,get:function(){return l.shimGetDisplayMedia}});h.shimMediaStream=function(a){a.MediaStream=a.MediaStream||a.webkitMediaStream};h.shimOnTrack=function(a){if("object"!==("undefined"===typeof a?"undefined":d(a))||!a.RTCPeerConnection||"ontrack"in a.RTCPeerConnection.prototype)b.wrapPeerConnectionEvent(a,"track",function(a){a.transceiver||Object.defineProperty(a,"transceiver",{value:{receiver:a.receiver}});return a});else{Object.defineProperty(a.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack}, set:function(a){this._ontrack&&this.removeEventListener("track",this._ontrack);this.addEventListener("track",this._ontrack=a)},enumerable:!0,configurable:!0});var e=a.RTCPeerConnection.prototype.setRemoteDescription;a.RTCPeerConnection.prototype.setRemoteDescription=function(){var b=this;this._ontrackpoly||(this._ontrackpoly=function(e){e.stream.addEventListener("addtrack",function(c){var g=void 0,g=a.RTCPeerConnection.prototype.getReceivers?b.getReceivers().find(function(a){return a.track&&a.track.id=== c.track.id}):{track:c.track},d=new Event("track");d.track=c.track;d.receiver=g;d.transceiver={receiver:g};d.streams=[e.stream];b.dispatchEvent(d)});e.stream.getTracks().forEach(function(c){var g=void 0,g=a.RTCPeerConnection.prototype.getReceivers?b.getReceivers().find(function(a){return a.track&&a.track.id===c.id}):{track:c},d=new Event("track");d.track=c;d.receiver=g;d.transceiver={receiver:g};d.streams=[e.stream];b.dispatchEvent(d)})},this.addEventListener("addstream",this._ontrackpoly));return e.apply(this, arguments)}}};h.shimGetSendersWithDtmf=function(a){if("object"===("undefined"===typeof a?"undefined":d(a))&&a.RTCPeerConnection&&!("getSenders"in a.RTCPeerConnection.prototype)&&"createDTMFSender"in a.RTCPeerConnection.prototype){var b=function(a,b){return{track:b,get dtmf(){void 0===this._dtmf&&(this._dtmf="audio"===b.kind?a.createDTMFSender(b):null);return this._dtmf},_pc:a}};if(!a.RTCPeerConnection.prototype.getSenders){a.RTCPeerConnection.prototype.getSenders=function(){this._senders=this._senders|| [];return this._senders.slice()};var c=a.RTCPeerConnection.prototype.addTrack;a.RTCPeerConnection.prototype.addTrack=function(a,e){var g=c.apply(this,arguments);g||(g=b(this,a),this._senders.push(g));return g};var g=a.RTCPeerConnection.prototype.removeTrack;a.RTCPeerConnection.prototype.removeTrack=function(a){g.apply(this,arguments);var b=this._senders.indexOf(a);-1!==b&&this._senders.splice(b,1)}}var w=a.RTCPeerConnection.prototype.addStream;a.RTCPeerConnection.prototype.addStream=function(a){var e= this;this._senders=this._senders||[];w.apply(this,[a]);a.getTracks().forEach(function(a){e._senders.push(b(e,a))})};var f=a.RTCPeerConnection.prototype.removeStream;a.RTCPeerConnection.prototype.removeStream=function(a){var b=this;this._senders=this._senders||[];f.apply(this,[a]);a.getTracks().forEach(function(a){var e=b._senders.find(function(b){return b.track===a});e&&b._senders.splice(b._senders.indexOf(e),1)})}}else if("object"===("undefined"===typeof a?"undefined":d(a))&&a.RTCPeerConnection&& "getSenders"in a.RTCPeerConnection.prototype&&"createDTMFSender"in a.RTCPeerConnection.prototype&&a.RTCRtpSender&&!("dtmf"in a.RTCRtpSender.prototype)){var l=a.RTCPeerConnection.prototype.getSenders;a.RTCPeerConnection.prototype.getSenders=function(){var a=this,b=l.apply(this,[]);b.forEach(function(b){return b._pc=a});return b};Object.defineProperty(a.RTCRtpSender.prototype,"dtmf",{get:function(){void 0===this._dtmf&&(this._dtmf="audio"===this.track.kind?this._pc.createDTMFSender(this.track):null); return this._dtmf}})}};h.shimGetStats=function(a){if(a.RTCPeerConnection){var b=a.RTCPeerConnection.prototype.getStats;a.RTCPeerConnection.prototype.getStats=function(){var a=this,e=Array.prototype.slice.call(arguments),c=e[0],g=e[1],e=e[2];if(0<arguments.length&&"function"===typeof c)return b.apply(this,arguments);if(0===b.length&&(0===arguments.length||"function"!==typeof c))return b.apply(this,[]);var d=function(a){var b={};a.result().forEach(function(a){var e={id:a.id,timestamp:a.timestamp,type:{localcandidate:"local-candidate", remotecandidate:"remote-candidate"}[a.type]||a.type};a.names().forEach(function(b){e[b]=a.stat(b)});b[e.id]=e});return b},f=function(a){return new Map(Object.keys(a).map(function(b){return[b,a[b]]}))};return 2<=arguments.length?b.apply(this,[function(a){g(f(d(a)))},c]):(new Promise(function(e,c){b.apply(a,[function(a){e(f(d(a)))},c])})).then(g,e)}}};h.shimSenderReceiverGetStats=function(a){if("object"===("undefined"===typeof a?"undefined":d(a))&&a.RTCPeerConnection&&a.RTCRtpSender&&a.RTCRtpReceiver){if(!("getStats"in a.RTCRtpSender.prototype)){var e=a.RTCPeerConnection.prototype.getSenders;e&&(a.RTCPeerConnection.prototype.getSenders=function(){var a=this,b=e.apply(this,[]);b.forEach(function(b){return b._pc=a});return b});var c=a.RTCPeerConnection.prototype.addTrack;c&&(a.RTCPeerConnection.prototype.addTrack=function(){var a=c.apply(this,arguments);a._pc=this;return a});a.RTCRtpSender.prototype.getStats=function(){var a=this;return this._pc.getStats().then(function(e){return b.filterStats(e,a.track,!0)})}}if(!("getStats"in a.RTCRtpReceiver.prototype)){var g=a.RTCPeerConnection.prototype.getReceivers;g&&(a.RTCPeerConnection.prototype.getReceivers=function(){var a=this,b=g.apply(this,[]);b.forEach(function(b){return b._pc=a});return b});b.wrapPeerConnectionEvent(a,"track",function(a){a.receiver._pc=a.srcElement;return a});a.RTCRtpReceiver.prototype.getStats=function(){var a=this;return this._pc.getStats().then(function(e){return b.filterStats(e,a.track,!1)})}}if("getStats"in a.RTCRtpSender.prototype&&"getStats"in a.RTCRtpReceiver.prototype){var f= a.RTCPeerConnection.prototype.getStats;a.RTCPeerConnection.prototype.getStats=function(){if(0<arguments.length&&arguments[0]instanceof a.MediaStreamTrack){var b=arguments[0],e=void 0,c=void 0,d=void 0;this.getSenders().forEach(function(a){a.track===b&&(e?d=!0:e=a)});this.getReceivers().forEach(function(a){a.track===b&&(c?d=!0:c=a);return a.track===b});return d||e&&c?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):e?e.getStats():c? c.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return f.apply(this,arguments)}}}};h.shimAddTrackRemoveTrackWithNative=a;h.shimAddTrackRemoveTrack=function(c){function e(a,b){var c=b.sdp;Object.keys(a._reverseStreams||[]).forEach(function(b){b=a._reverseStreams[b];c=c.replace(new RegExp(a._streams[b.id].id,"g"),b.id)});return new RTCSessionDescription({type:b.type,sdp:c})}function d(a,b){var c=b.sdp;Object.keys(a._reverseStreams|| []).forEach(function(b){b=a._reverseStreams[b];c=c.replace(new RegExp(b.id,"g"),a._streams[b.id].id)});return new RTCSessionDescription({type:b.type,sdp:c})}if(c.RTCPeerConnection){var g=b.detectBrowser(c);if(c.RTCPeerConnection.prototype.addTrack&&65<=g.version)return a(c);var l=c.RTCPeerConnection.prototype.getLocalStreams;c.RTCPeerConnection.prototype.getLocalStreams=function(){var a=this,b=l.apply(this);this._reverseStreams=this._reverseStreams||{};return b.map(function(b){return a._reverseStreams[b.id]})}; var t=c.RTCPeerConnection.prototype.addStream;c.RTCPeerConnection.prototype.addStream=function(a){var b=this;this._streams=this._streams||{};this._reverseStreams=this._reverseStreams||{};a.getTracks().forEach(function(a){if(b.getSenders().find(function(b){return b.track===a}))throw new DOMException("Track already exists.","InvalidAccessError");});if(!this._reverseStreams[a.id]){var e=new c.MediaStream(a.getTracks());this._streams[a.id]=e;this._reverseStreams[e.id]=a;a=e}t.apply(this,[a])};var p=c.RTCPeerConnection.prototype.removeStream; c.RTCPeerConnection.prototype.removeStream=function(a){this._streams=this._streams||{};this._reverseStreams=this._reverseStreams||{};p.apply(this,[this._streams[a.id]||a]);delete this._reverseStreams[this._streams[a.id]?this._streams[a.id].id:a.id];delete this._streams[a.id]};c.RTCPeerConnection.prototype.addTrack=function(a,b){var e=this;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var d=[].slice.call(arguments, 1);if(1!==d.length||!d[0].getTracks().find(function(b){return b===a}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(function(b){return b.track===a}))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{};this._reverseStreams=this._reverseStreams||{};(d=this._streams[b.id])?(d.addTrack(a),Promise.resolve().then(function(){e.dispatchEvent(new Event("negotiationneeded"))})): (d=new c.MediaStream([a]),this._streams[b.id]=d,this._reverseStreams[d.id]=b,this.addStream(d));return this.getSenders().find(function(b){return b.track===a})};["createOffer","createAnswer"].forEach(function(a){var b=c.RTCPeerConnection.prototype[a],d=f({},a,function(){var a=this,c=arguments;return arguments.length&&"function"===typeof arguments[0]?b.apply(this,[function(b){b=e(a,b);c[0].apply(null,[b])},function(a){c[1]&&c[1].apply(null,a)},arguments[2]]):b.apply(this,arguments).then(function(b){return e(a, b)})});c.RTCPeerConnection.prototype[a]=d[a]});var h=c.RTCPeerConnection.prototype.setLocalDescription;c.RTCPeerConnection.prototype.setLocalDescription=function(){if(!arguments.length||!arguments[0].type)return h.apply(this,arguments);arguments[0]=d(this,arguments[0]);return h.apply(this,arguments)};var q=Object.getOwnPropertyDescriptor(c.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(c.RTCPeerConnection.prototype,"localDescription",{get:function(){var a=q.get.apply(this); return""===a.type?a:e(this,a)}});c.RTCPeerConnection.prototype.removeTrack=function(a){var b=this;if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!a._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(a._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{}; var c=void 0;Object.keys(this._streams).forEach(function(e){b._streams[e].getTracks().find(function(b){return a.track===b})&&(c=b._streams[e])});c&&(1===c.getTracks().length?this.removeStream(this._reverseStreams[c.id]):c.removeTrack(a.track),this.dispatchEvent(new Event("negotiationneeded")))}}};h.shimPeerConnection=function(a){var c=b.detectBrowser(a);!a.RTCPeerConnection&&a.webkitRTCPeerConnection&&(a.RTCPeerConnection=a.webkitRTCPeerConnection);if(a.RTCPeerConnection){var d=0===a.RTCPeerConnection.prototype.addIceCandidate.length; 53>c.version&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(b){var c=a.RTCPeerConnection.prototype[b],e=f({},b,function(){arguments[0]=new ("addIceCandidate"===b?a.RTCIceCandidate:a.RTCSessionDescription)(arguments[0]);return c.apply(this,arguments)});a.RTCPeerConnection.prototype[b]=e[b]});var g=a.RTCPeerConnection.prototype.addIceCandidate;a.RTCPeerConnection.prototype.addIceCandidate=function(){return d||arguments[0]?78>c.version&&arguments[0]&&""===arguments[0].candidate? Promise.resolve():g.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())}}};h.fixNegotiationNeeded=function(a){b.wrapPeerConnectionEvent(a,"negotiationneeded",function(a){if("stable"===a.target.signalingState)return a})};var b=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);b.default=a;return b}(k("../utils.js"))},{"../utils.js":15,"./getdisplaymedia":4,"./getusermedia":5}],4:[function(k, m,h){Object.defineProperty(h,"__esModule",{value:!0});h.shimGetDisplayMedia=function(f,a){f.navigator.mediaDevices&&"getDisplayMedia"in f.navigator.mediaDevices||!f.navigator.mediaDevices||("function"!==typeof a?console.error("shimGetDisplayMedia: getSourceId argument is not a function"):f.navigator.mediaDevices.getDisplayMedia=function(d){return a(d).then(function(a){var c=d.video&&d.video.width,b=d.video&&d.video.height;d.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:a,maxFrameRate:d.video&& d.video.frameRate||3}};c&&(d.video.mandatory.maxWidth=c);b&&(d.video.mandatory.maxHeight=b);return f.navigator.mediaDevices.getUserMedia(d)})})}},{}],5:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbolIterator();var f="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor=== Symbol&&a!==Symbol.prototype?"symbol":typeof a};h.shimGetUserMedia=function(c){var l=c&&c.navigator;if(l.mediaDevices){var b=a.detectBrowser(c),g=function(a){if("object"!==("undefined"===typeof a?"undefined":f(a))||a.mandatory||a.optional)return a;var b={};Object.keys(a).forEach(function(c){if("require"!==c&&"advanced"!==c&&"mediaSource"!==c){var e="object"===f(a[c])?a[c]:{ideal:a[c]};void 0!==e.exact&&"number"===typeof e.exact&&(e.min=e.max=e.exact);var d=function(a,b){return a?a+b.charAt(0).toUpperCase()+ b.slice(1):"deviceId"===b?"sourceId":b};if(void 0!==e.ideal){b.optional=b.optional||[];var g={};"number"===typeof e.ideal?(g[d("min",c)]=e.ideal,b.optional.push(g),g={},g[d("max",c)]=e.ideal):g[d("",c)]=e.ideal;b.optional.push(g)}void 0!==e.exact&&"number"!==typeof e.exact?(b.mandatory=b.mandatory||{},b.mandatory[d("",c)]=e.exact):["min","max"].forEach(function(a){void 0!==e[a]&&(b.mandatory=b.mandatory||{},b.mandatory[d(a,c)]=e[a])})}});a.advanced&&(b.optional=(b.optional||[]).concat(a.advanced)); return b},e=function(a,c){if(61<=b.version)return c(a);if((a=JSON.parse(JSON.stringify(a)))&&"object"===f(a.audio)){var e=function(a,b,c){b in a&&!(c in a)&&(a[c]=a[b],delete a[b])};a=JSON.parse(JSON.stringify(a));e(a.audio,"autoGainControl","googAutoGainControl");e(a.audio,"noiseSuppression","googNoiseSuppression");a.audio=g(a.audio)}if(a&&"object"===f(a.video)){var w=a.video.facingMode,w=w&&("object"===("undefined"===typeof w?"undefined":f(w))?w:{ideal:w}),e=66>b.version;if(!(!w||"user"!==w.exact&& "environment"!==w.exact&&"user"!==w.ideal&&"environment"!==w.ideal||l.mediaDevices.getSupportedConstraints&&l.mediaDevices.getSupportedConstraints().facingMode&&!e)){delete a.video.facingMode;var q=void 0;if("environment"===w.exact||"environment"===w.ideal)q=["back","rear"];else if("user"===w.exact||"user"===w.ideal)q=["front"];if(q)return l.mediaDevices.enumerateDevices().then(function(b){b=b.filter(function(a){return"videoinput"===a.kind});var e=b.find(function(a){return q.some(function(b){return a.label.toLowerCase().includes(b)})}); !e&&b.length&&q.includes("back")&&(e=b[b.length-1]);e&&(a.video.deviceId=w.exact?{exact:e.deviceId}:{ideal:e.deviceId});a.video=g(a.video);d("chrome: "+JSON.stringify(a));return c(a)})}a.video=g(a.video)}d("chrome: "+JSON.stringify(a));return c(a)},u=function(a){return 64<=b.version?a:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError", MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[a.name]||a.name,message:a.message,constraint:a.constraint||a.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}};l.getUserMedia=function(a,b,c){e(a,function(a){l.webkitGetUserMedia(a,b,function(a){c&&c(u(a))})})}.bind(l);if(l.mediaDevices.getUserMedia){var v=l.mediaDevices.getUserMedia.bind(l.mediaDevices); l.mediaDevices.getUserMedia=function(a){return e(a,function(a){return v(a).then(function(b){if(a.audio&&!b.getAudioTracks().length||a.video&&!b.getVideoTracks().length)throw b.getTracks().forEach(function(a){a.stop()}),new DOMException("","NotFoundError");return b},function(a){return Promise.reject(u(a))})})}}}};var a=function(a){if(a&&a.__esModule)return a;var c={};if(null!=a)for(var b in a)Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);c.default=a;return c}(k("../utils.js")),d=a.log},{"../utils.js":15}], 6:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbolIterator();var f="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};h.shimRTCIceCandidate=function(c){if(c.RTCIceCandidate&&!(c.RTCIceCandidate&&"foundation"in c.RTCIceCandidate.prototype)){var l=c.RTCIceCandidate;c.RTCIceCandidate=function(b){"object"===("undefined"===typeof b?"undefined":f(b))&&b.candidate&&0===b.candidate.indexOf("a\x3d")&&(b=JSON.parse(JSON.stringify(b)),b.candidate=b.candidate.substr(2));if(b.candidate&&b.candidate.length){var c=new l(b);b=a.default.parseCandidate(b.candidate);var e=Object.assign(c,b);e.toJSON=function(){return{candidate:e.candidate,sdpMid:e.sdpMid,sdpMLineIndex:e.sdpMLineIndex,usernameFragment:e.usernameFragment}}; return e}return new l(b)};c.RTCIceCandidate.prototype=l.prototype;d.wrapPeerConnectionEvent(c,"icecandidate",function(a){a.candidate&&Object.defineProperty(a,"candidate",{value:new c.RTCIceCandidate(a.candidate),writable:"false"});return a})}};h.shimMaxMessageSize=function(c){if(c.RTCPeerConnection){var f=d.detectBrowser(c);"sctp"in c.RTCPeerConnection.prototype||Object.defineProperty(c.RTCPeerConnection.prototype,"sctp",{get:function(){return"undefined"===typeof this._sctp?null:this._sctp}});var b= function(b){if(!b||!b.sdp)return!1;b=a.default.splitSections(b.sdp);b.shift();return b.some(function(b){return(b=a.default.parseMLine(b))&&"application"===b.kind&&-1!==b.protocol.indexOf("SCTP")})},g=function(a){a=a.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===a||2>a.length)return-1;a=parseInt(a[1],10);return a!==a?-1:a},e=function(a){var b=65536;"firefox"===f.browser&&(b=57>f.version?-1===a?16384:2147483637:60>f.version?57===f.version?65535:65536:2147483637);return b},u=function(b,c){var e= 65536;"firefox"===f.browser&&57===f.version&&(e=65535);b=a.default.matchPrefix(b.sdp,"a\x3dmax-message-size:");0<b.length?e=parseInt(b[0].substr(19),10):"firefox"===f.browser&&-1!==c&&(e=2147483637);return e},v=c.RTCPeerConnection.prototype.setRemoteDescription;c.RTCPeerConnection.prototype.setRemoteDescription=function(){this._sctp=null;"chrome"===f.browser&&76<=f.version&&"plan-b"===this.getConfiguration().sdpSemantics&&Object.defineProperty(this,"sctp",{get:function(){return"undefined"===typeof this._sctp? null:this._sctp},enumerable:!0,configurable:!0});if(b(arguments[0])){var a=g(arguments[0]),c=e(a),a=u(arguments[0],a),d=void 0,d=0===c&&0===a?Number.POSITIVE_INFINITY:0===c||0===a?Math.max(c,a):Math.min(c,a),c={};Object.defineProperty(c,"maxMessageSize",{get:function(){return d}});this._sctp=c}return v.apply(this,arguments)}}};h.shimSendThrowTypeError=function(a){function c(a,b){var c=a.send;a.send=function(){var e=arguments[0],e=e.length||e.size||e.byteLength;if("open"===a.readyState&&b.sctp&&e> b.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+b.sctp.maxMessageSize+" bytes)");return c.apply(a,arguments)}}if(a.RTCPeerConnection&&"createDataChannel"in a.RTCPeerConnection.prototype){var b=a.RTCPeerConnection.prototype.createDataChannel;a.RTCPeerConnection.prototype.createDataChannel=function(){var a=b.apply(this,arguments);c(a,this);return a};d.wrapPeerConnectionEvent(a,"datachannel",function(a){c(a.channel,a.target);return a})}};h.shimConnectionState=function(a){if(a.RTCPeerConnection&& !("connectionState"in a.RTCPeerConnection.prototype)){var c=a.RTCPeerConnection.prototype;Object.defineProperty(c,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0});Object.defineProperty(c,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(a){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange), delete this._onconnectionstatechange);a&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=a)},enumerable:!0,configurable:!0});["setLocalDescription","setRemoteDescription"].forEach(function(a){var b=c[a];c[a]=function(){this._connectionstatechangepoly||(this._connectionstatechangepoly=function(a){var b=a.target;if(b._lastConnectionState!==b.connectionState){b._lastConnectionState=b.connectionState;var c=new Event("connectionstatechange",a);b.dispatchEvent(c)}return a},this.addEventListener("iceconnectionstatechange", this._connectionstatechangepoly));return b.apply(this,arguments)}})}};h.removeAllowExtmapMixed=function(a){if(a.RTCPeerConnection){var c=d.detectBrowser(a);if(!("chrome"===c.browser&&71<=c.version)){var b=a.RTCPeerConnection.prototype.setRemoteDescription;a.RTCPeerConnection.prototype.setRemoteDescription=function(a){a&&a.sdp&&-1!==a.sdp.indexOf("\na\x3dextmap-allow-mixed")&&(a.sdp=a.sdp.split("\n").filter(function(a){return"a\x3dextmap-allow-mixed"!==a.trim()}).join("\n"));return b.apply(this,arguments)}}}}; var a=(m=k("sdp"))&&m.__esModule?m:{default:m},d=function(a){if(a&&a.__esModule)return a;var c={};if(null!=a)for(var b in a)Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);c.default=a;return c}(k("./utils"))},{"./utils":15,sdp:17}],7:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});h.shimGetDisplayMedia=h.shimGetUserMedia=void 0;var f=k("./getusermedia");Object.defineProperty(h,"shimGetUserMedia",{enumerable:!0,get:function(){return f.shimGetUserMedia}});var a=k("./getdisplaymedia"); Object.defineProperty(h,"shimGetDisplayMedia",{enumerable:!0,get:function(){return a.shimGetDisplayMedia}});h.shimPeerConnection=function(a){var b=d.detectBrowser(a);if(a.RTCIceGatherer&&(a.RTCIceCandidate||(a.RTCIceCandidate=function(a){return a}),a.RTCSessionDescription||(a.RTCSessionDescription=function(a){return a}),15025>b.version)){var e=Object.getOwnPropertyDescriptor(a.MediaStreamTrack.prototype,"enabled");Object.defineProperty(a.MediaStreamTrack.prototype,"enabled",{set:function(a){e.set.call(this, a);var b=new Event("enabled");b.enabled=a;this.dispatchEvent(b)}})}!a.RTCRtpSender||"dtmf"in a.RTCRtpSender.prototype||Object.defineProperty(a.RTCRtpSender.prototype,"dtmf",{get:function(){void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new a.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null));return this._dtmf}});a.RTCDtmfSender&&!a.RTCDTMFSender&&(a.RTCDTMFSender=a.RTCDtmfSender);var f=(0,l.default)(a,b.version);a.RTCPeerConnection=function(a){a&&a.iceServers&&(a.iceServers= (0,c.filterIceServers)(a.iceServers,b.version),d.log("ICE servers after filtering:",a.iceServers));return new f(a)};a.RTCPeerConnection.prototype=f.prototype};h.shimReplaceTrack=function(a){!a.RTCRtpSender||"replaceTrack"in a.RTCRtpSender.prototype||(a.RTCRtpSender.prototype.replaceTrack=a.RTCRtpSender.prototype.setTrack)};var d=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);b.default=a;return b}(k("../utils")),c=k("./filtericeservers"), l=(k=k("rtcpeerconnection-shim"))&&k.__esModule?k:{default:k}},{"../utils":15,"./filtericeservers":8,"./getdisplaymedia":9,"./getusermedia":10,"rtcpeerconnection-shim":16}],8:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});h.filterIceServers=function(a,d){var c=!1;a=JSON.parse(JSON.stringify(a));return a.filter(function(a){if(a&&(a.urls||a.url)){var b=a.urls||a.url;a.url&&!a.urls&&f.deprecated("RTCIceServer.url","RTCIceServer.urls");var d="string"===typeof b;d&&(b=[b]);b=b.filter(function(a){return 0=== a.indexOf("stun:")?!1:(a=a.startsWith("turn")&&!a.startsWith("turn:[")&&a.includes("transport\x3dudp"))&&!c?c=!0:a&&!c});delete a.url;a.urls=d?b[0]:b;return!!b.length}})};var f=function(a){if(a&&a.__esModule)return a;var d={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(d[c]=a[c]);d.default=a;return d}(k("../utils"))},{"../utils":15}],9:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});h.shimGetDisplayMedia=function(f){"getDisplayMedia"in f.navigator&&f.navigator.mediaDevices&& !(f.navigator.mediaDevices&&"getDisplayMedia"in f.navigator.mediaDevices)&&(f.navigator.mediaDevices.getDisplayMedia=f.navigator.getDisplayMedia.bind(f.navigator))}},{}],10:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});h.shimGetUserMedia=function(f){f=f&&f.navigator;var a=function(a){return{name:{PermissionDeniedError:"NotAllowedError"}[a.name]||a.name,message:a.message,constraint:a.constraint,toString:function(){return this.name}}},d=f.mediaDevices.getUserMedia.bind(f.mediaDevices); f.mediaDevices.getUserMedia=function(c){return d(c).catch(function(c){return Promise.reject(a(c))})}}},{}],11:[function(k,m,h){function f(a,c,e){c in a?Object.defineProperty(a,c,{value:e,enumerable:!0,configurable:!0,writable:!0}):a[c]=e;return a}Object.defineProperty(h,"__esModule",{value:!0});h.shimGetDisplayMedia=h.shimGetUserMedia=void 0;$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbolIterator();var a="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}: function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},d=k("./getusermedia");Object.defineProperty(h,"shimGetUserMedia",{enumerable:!0,get:function(){return d.shimGetUserMedia}});var c=k("./getdisplaymedia");Object.defineProperty(h,"shimGetDisplayMedia",{enumerable:!0,get:function(){return c.shimGetDisplayMedia}});h.shimOnTrack=function(b){"object"===("undefined"===typeof b?"undefined": a(b))&&b.RTCTrackEvent&&"receiver"in b.RTCTrackEvent.prototype&&!("transceiver"in b.RTCTrackEvent.prototype)&&Object.defineProperty(b.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})};h.shimPeerConnection=function(b){var c=l.detectBrowser(b);if("object"===("undefined"===typeof b?"undefined":a(b))&&(b.RTCPeerConnection||b.mozRTCPeerConnection)){!b.RTCPeerConnection&&b.mozRTCPeerConnection&&(b.RTCPeerConnection=b.mozRTCPeerConnection);53>c.version&&["setLocalDescription", "setRemoteDescription","addIceCandidate"].forEach(function(a){var c=b.RTCPeerConnection.prototype[a],e=f({},a,function(){arguments[0]=new ("addIceCandidate"===a?b.RTCIceCandidate:b.RTCSessionDescription)(arguments[0]);return c.apply(this,arguments)});b.RTCPeerConnection.prototype[a]=e[a]});if(68>c.version){var e=b.RTCPeerConnection.prototype.addIceCandidate;b.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?arguments[0]&&""===arguments[0].candidate?Promise.resolve():e.apply(this, arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())}}var d={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},v=b.RTCPeerConnection.prototype.getStats;b.RTCPeerConnection.prototype.getStats=function(){var a=Array.prototype.slice.call(arguments),b=a[1],e=a[2];return v.apply(this,[a[0]||null]).then(function(a){if(53>c.version&&!b)try{a.forEach(function(a){a.type=d[a.type]||a.type})}catch(q){if("TypeError"!== q.name)throw q;a.forEach(function(b,c){a.set(c,Object.assign({},b,{type:d[b.type]||b.type}))})}return a}).then(b,e)}}};h.shimSenderGetStats=function(b){if("object"===("undefined"===typeof b?"undefined":a(b))&&b.RTCPeerConnection&&b.RTCRtpSender&&!(b.RTCRtpSender&&"getStats"in b.RTCRtpSender.prototype)){var c=b.RTCPeerConnection.prototype.getSenders;c&&(b.RTCPeerConnection.prototype.getSenders=function(){var a=this,b=c.apply(this,[]);b.forEach(function(b){return b._pc=a});return b});var e=b.RTCPeerConnection.prototype.addTrack; e&&(b.RTCPeerConnection.prototype.addTrack=function(){var a=e.apply(this,arguments);a._pc=this;return a});b.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}};h.shimReceiverGetStats=function(b){if("object"===("undefined"===typeof b?"undefined":a(b))&&b.RTCPeerConnection&&b.RTCRtpSender&&!(b.RTCRtpSender&&"getStats"in b.RTCRtpReceiver.prototype)){var c=b.RTCPeerConnection.prototype.getReceivers;c&&(b.RTCPeerConnection.prototype.getReceivers= function(){var a=this,b=c.apply(this,[]);b.forEach(function(b){return b._pc=a});return b});l.wrapPeerConnectionEvent(b,"track",function(a){a.receiver._pc=a.srcElement;return a});b.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}};h.shimRemoveStream=function(a){!a.RTCPeerConnection||"removeStream"in a.RTCPeerConnection.prototype||(a.RTCPeerConnection.prototype.removeStream=function(a){var b=this;l.deprecated("removeStream","removeTrack");this.getSenders().forEach(function(c){c.track&& a.getTracks().includes(c.track)&&b.removeTrack(c)})})};h.shimRTCDataChannel=function(a){a.DataChannel&&!a.RTCDataChannel&&(a.RTCDataChannel=a.DataChannel)};h.shimAddTransceiver=function(b){if("object"===("undefined"===typeof b?"undefined":a(b))&&b.RTCPeerConnection){var c=b.RTCPeerConnection.prototype.addTransceiver;c&&(b.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var a=arguments[1],b=a&&"sendEncodings"in a;b&&a.sendEncodings.forEach(function(a){if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(1<=parseFloat(a.scaleResolutionDownBy)))throw new RangeError("scale_resolution_down_by must be \x3e\x3d 1.0");if("maxFramerate"in a&&!(0<=parseFloat(a.maxFramerate)))throw new RangeError("max_framerate must be \x3e\x3d 0.0");});var d=c.apply(this,arguments);if(b){var b=d.sender,g=b.getParameters();"encodings"in g||(g.encodings=a.sendEncodings,this.setParametersPromises.push(b.setParameters(g).catch(function(){})))}return d})}}; h.shimCreateOffer=function(b){if("object"===("undefined"===typeof b?"undefined":a(b))&&b.RTCPeerConnection){var c=b.RTCPeerConnection.prototype.createOffer;b.RTCPeerConnection.prototype.createOffer=function(){var a=this,b=arguments;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return c.apply(a,b)}).finally(function(){a.setParametersPromises=[]}):c.apply(this,arguments)}}};h.shimCreateAnswer=function(b){if("object"===("undefined"=== typeof b?"undefined":a(b))&&b.RTCPeerConnection){var c=b.RTCPeerConnection.prototype.createAnswer;b.RTCPeerConnection.prototype.createAnswer=function(){var a=this,b=arguments;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return c.apply(a,b)}).finally(function(){a.setParametersPromises=[]}):c.apply(this,arguments)}}};var l=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a, c)&&(b[c]=a[c]);b.default=a;return b}(k("../utils"))},{"../utils":15,"./getdisplaymedia":12,"./getusermedia":13}],12:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});h.shimGetDisplayMedia=function(f,a){f.navigator.mediaDevices&&"getDisplayMedia"in f.navigator.mediaDevices||!f.navigator.mediaDevices||(f.navigator.mediaDevices.getDisplayMedia=function(d){if(!d||!d.video)return d=new DOMException("getDisplayMedia without video constraints is undefined"),d.name="NotFoundError",d.code= 8,Promise.reject(d);!0===d.video?d.video={mediaSource:a}:d.video.mediaSource=a;return f.navigator.mediaDevices.getUserMedia(d)})}},{}],13:[function(k,m,h){Object.defineProperty(h,"__esModule",{value:!0});$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbolIterator();var f="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor=== Symbol&&a!==Symbol.prototype?"symbol":typeof a};h.shimGetUserMedia=function(d){var c=a.detectBrowser(d),l=d&&d.navigator;d=d&&d.MediaStreamTrack;l.getUserMedia=function(b,c,e){a.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia");l.mediaDevices.getUserMedia(b).then(c,e)};if(!(55<c.version&&"autoGainControl"in l.mediaDevices.getSupportedConstraints())){var b=function(a,b,c){b in a&&!(c in a)&&(a[c]=a[b],delete a[b])},g=l.mediaDevices.getUserMedia.bind(l.mediaDevices);l.mediaDevices.getUserMedia= function(a){"object"===("undefined"===typeof a?"undefined":f(a))&&"object"===f(a.audio)&&(a=JSON.parse(JSON.stringify(a)),b(a.audio,"autoGainControl","mozAutoGainControl"),b(a.audio,"noiseSuppression","mozNoiseSuppression"));return g(a)};if(d&&d.prototype.getSettings){var e=d.prototype.getSettings;d.prototype.getSettings=function(){var a=e.apply(this,arguments);b(a,"mozAutoGainControl","autoGainControl");b(a,"mozNoiseSuppression","noiseSuppression");return a}}if(d&&d.prototype.applyConstraints){var u= d.prototype.applyConstraints;d.prototype.applyConstraints=function(a){"audio"===this.kind&&"object"===("undefined"===typeof a?"undefined":f(a))&&(a=JSON.parse(JSON.stringify(a)),b(a,"autoGainControl","mozAutoGainControl"),b(a,"noiseSuppression","mozNoiseSuppression"));return u.apply(this,[a])}}}};var a=function(a){if(a&&a.__esModule)return a;var c={};if(null!=a)for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&(c[d]=a[d]);c.default=a;return c}(k("../utils"))},{"../utils":15}],14:[function(k, m,h){function f(a){return a&&void 0!==a.video?Object.assign({},a,{video:d.compactObject(a.video)}):a}Object.defineProperty(h,"__esModule",{value:!0});$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbolIterator();var a="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};h.shimLocalStreamsAPI= function(c){if("object"===("undefined"===typeof c?"undefined":a(c))&&c.RTCPeerConnection){"getLocalStreams"in c.RTCPeerConnection.prototype||(c.RTCPeerConnection.prototype.getLocalStreams=function(){this._localStreams||(this._localStreams=[]);return this._localStreams});if(!("addStream"in c.RTCPeerConnection.prototype)){var d=c.RTCPeerConnection.prototype.addTrack;c.RTCPeerConnection.prototype.addStream=function(a){var b=this;this._localStreams||(this._localStreams=[]);this._localStreams.includes(a)|| this._localStreams.push(a);a.getAudioTracks().forEach(function(c){return d.call(b,c,a)});a.getVideoTracks().forEach(function(c){return d.call(b,c,a)})};c.RTCPeerConnection.prototype.addTrack=function(a){for(var b=this,c=arguments.length,f=Array(1<c?c-1:0),l=1;l<c;l++)f[l-1]=arguments[l];f&&f.forEach(function(a){b._localStreams?b._localStreams.includes(a)||b._localStreams.push(a):b._localStreams=[a]});return d.apply(this,arguments)}}"removeStream"in c.RTCPeerConnection.prototype||(c.RTCPeerConnection.prototype.removeStream= function(a){var b=this;this._localStreams||(this._localStreams=[]);var c=this._localStreams.indexOf(a);if(-1!==c){this._localStreams.splice(c,1);var d=a.getTracks();this.getSenders().forEach(function(a){d.includes(a.track)&&b.removeTrack(a)})}})}};h.shimRemoteStreamsAPI=function(c){if("object"===("undefined"===typeof c?"undefined":a(c))&&c.RTCPeerConnection&&("getRemoteStreams"in c.RTCPeerConnection.prototype||(c.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams: []}),!("onaddstream"in c.RTCPeerConnection.prototype))){Object.defineProperty(c.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(a){var b=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly));this.addEventListener("addstream",this._onaddstream=a);this.addEventListener("track",this._onaddstreampoly=function(a){a.streams.forEach(function(a){b._remoteStreams||(b._remoteStreams= []);if(!b._remoteStreams.includes(a)){b._remoteStreams.push(a);var c=new Event("addstream");c.stream=a;b.dispatchEvent(c)}})})}});var d=c.RTCPeerConnection.prototype.setRemoteDescription;c.RTCPeerConnection.prototype.setRemoteDescription=function(){var a=this;this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(b){b.streams.forEach(function(b){a._remoteStreams||(a._remoteStreams=[]);if(!(0<=a._remoteStreams.indexOf(b))){a._remoteStreams.push(b);var c=new Event("addstream"); c.stream=b;a.dispatchEvent(c)}})});return d.apply(a,arguments)}}};h.shimCallbacksAPI=function(c){if("object"===("undefined"===typeof c?"undefined":a(c))&&c.RTCPeerConnection){c=c.RTCPeerConnection.prototype;var d=c.createOffer,b=c.createAnswer,f=c.setLocalDescription,e=c.setRemoteDescription,u=c.addIceCandidate;c.createOffer=function(a,b){var c=d.apply(this,[2<=arguments.length?arguments[2]:arguments[0]]);if(!b)return c;c.then(a,b);return Promise.resolve()};c.createAnswer=function(a,c){var e=b.apply(this, [2<=arguments.length?arguments[2]:arguments[0]]);if(!c)return e;e.then(a,c);return Promise.resolve()};var h=function(a,b,c){a=f.apply(this,[a]);if(!c)return a;a.then(b,c);return Promise.resolve()};c.setLocalDescription=h;h=function(a,b,c){a=e.apply(this,[a]);if(!c)return a;a.then(b,c);return Promise.resolve()};c.setRemoteDescription=h;h=function(a,b,c){a=u.apply(this,[a]);if(!c)return a;a.then(b,c);return Promise.resolve()};c.addIceCandidate=h}};h.shimGetUserMedia=function(a){var c=a&&a.navigator; if(c.mediaDevices&&c.mediaDevices.getUserMedia){a=c.mediaDevices;var b=a.getUserMedia.bind(a);c.mediaDevices.getUserMedia=function(a){return b(f(a))}}!c.getUserMedia&&c.mediaDevices&&c.mediaDevices.getUserMedia&&(c.getUserMedia=function(a,b,d){c.mediaDevices.getUserMedia(a).then(b,d)}.bind(c))};h.shimConstraints=f;h.shimRTCIceServerUrls=function(a){var c=a.RTCPeerConnection;a.RTCPeerConnection=function(a,f){if(a&&a.iceServers){for(var b=[],g=0;g<a.iceServers.length;g++){var l=a.iceServers[g];!l.hasOwnProperty("urls")&& l.hasOwnProperty("url")?(d.deprecated("RTCIceServer.url","RTCIceServer.urls"),l=JSON.parse(JSON.stringify(l)),l.urls=l.url,delete l.url,b.push(l)):b.push(a.iceServers[g])}a.iceServers=b}return new c(a,f)};a.RTCPeerConnection.prototype=c.prototype;"generateCertificate"in a.RTCPeerConnection&&Object.defineProperty(a.RTCPeerConnection,"generateCertificate",{get:function(){return c.generateCertificate}})};h.shimTrackEventTransceiver=function(c){"object"===("undefined"===typeof c?"undefined":a(c))&&c.RTCTrackEvent&& "receiver"in c.RTCTrackEvent.prototype&&!("transceiver"in c.RTCTrackEvent.prototype)&&Object.defineProperty(c.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})};h.shimCreateOfferLegacy=function(a){var c=a.RTCPeerConnection.prototype.createOffer;a.RTCPeerConnection.prototype.createOffer=function(a){if(a){"undefined"!==typeof a.offerToReceiveAudio&&(a.offerToReceiveAudio=!!a.offerToReceiveAudio);var b=this.getTransceivers().find(function(a){return"audio"===a.receiver.track.kind}); !1===a.offerToReceiveAudio&&b?"sendrecv"===b.direction?b.setDirection?b.setDirection("sendonly"):b.direction="sendonly":"recvonly"===b.direction&&(b.setDirection?b.setDirection("inactive"):b.direction="inactive"):!0!==a.offerToReceiveAudio||b||this.addTransceiver("audio");"undefined"!==typeof a.offerToReceiveVideo&&(a.offerToReceiveVideo=!!a.offerToReceiveVideo);b=this.getTransceivers().find(function(a){return"video"===a.receiver.track.kind});!1===a.offerToReceiveVideo&&b?"sendrecv"===b.direction? b.setDirection?b.setDirection("sendonly"):b.direction="sendonly":"recvonly"===b.direction&&(b.setDirection?b.setDirection("inactive"):b.direction="inactive"):!0!==a.offerToReceiveVideo||b||this.addTransceiver("video")}return c.apply(this,arguments)}};var d=function(a){if(a&&a.__esModule)return a;var c={};if(null!=a)for(var b in a)Object.prototype.hasOwnProperty.call(a,b)&&(c[b]=a[b]);c.default=a;return c}(k("../utils"))},{"../utils":15}],15:[function(k,m,h){function f(a,b,c){b in a?Object.defineProperty(a, b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function a(a,b,c){return(a=a.match(b))&&a.length>=c&&parseInt(a[c],10)}function d(a){return"[object Object]"!==Object.prototype.toString.call(a)?a:Object.keys(a).reduce(function(b,c){var e="[object Object]"===Object.prototype.toString.call(a[c]),g=e?d(a[c]):a[c],e=e&&!Object.keys(g).length;return void 0===g||e?b:Object.assign(b,f({},c,g))},{})}function c(a,b,d){b&&!d.has(b.id)&&(d.set(b.id,b),Object.keys(b).forEach(function(e){e.endsWith("Id")? c(a,a.get(b[e]),d):e.endsWith("Ids")&&b[e].forEach(function(b){c(a,a.get(b),d)})}))}Object.defineProperty(h,"__esModule",{value:!0});$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbolIterator();var l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(a){return typeof a}:function(a){$jscomp.initSymbol();$jscomp.initSymbol();$jscomp.initSymbol();return a&&"function"===typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};h.extractVersion=a;h.wrapPeerConnectionEvent= function(a,b,c){if(a.RTCPeerConnection){a=a.RTCPeerConnection.prototype;var e=a.addEventListener;a.addEventListener=function(a,d){if(a!==b)return e.apply(this,arguments);var q=function(a){(a=c(a))&&d(a)};this._eventMap=this._eventMap||{};this._eventMap[d]=q;return e.apply(this,[a,q])};var d=a.removeEventListener;a.removeEventListener=function(a,c){if(a!==b||!this._eventMap||!this._eventMap[c])return d.apply(this,arguments);var e=this._eventMap[c];delete this._eventMap[c];return d.apply(this,[a,e])}; Object.defineProperty(a,"on"+b,{get:function(){return this["_on"+b]},set:function(a){this["_on"+b]&&(this.removeEventListener(b,this["_on"+b]),delete this["_on"+b]);a&&this.addEventListener(b,this["_on"+b]=a)},enumerable:!0,configurable:!0})}};h.disableLog=function(a){return"boolean"!==typeof a?Error("Argument type: "+("undefined"===typeof a?"undefined":l(a))+". Please use a boolean."):(b=a)?"adapter.js logging disabled":"adapter.js logging enabled"};h.disableWarnings=function(a){if("boolean"!==typeof a)return Error("Argument type: "+ ("undefined"===typeof a?"undefined":l(a))+". Please use a boolean.");g=!a;return"adapter.js deprecation warnings "+(a?"disabled":"enabled")};h.log=function(){"object"!==("undefined"===typeof window?"undefined":l(window))||b||"undefined"!==typeof console&&"function"===typeof console.log&&console.log.apply(console,arguments)};h.deprecated=function(a,b){g&&console.warn(a+" is deprecated, please use "+b+" instead.")};h.detectBrowser=function(b){var c=b.navigator,e={browser:null,version:null};if("undefined"=== typeof b||!b.navigator)return e.browser="Not a browser.",e;c.mozGetUserMedia?(e.browser="firefox",e.version=a(c.userAgent,/Firefox\/(\d+)\./,1)):c.webkitGetUserMedia||!1===b.isSecureContext&&b.webkitRTCPeerConnection&&!b.RTCIceGatherer?(e.browser="chrome",e.version=a(c.userAgent,/Chrom(e|ium)\/(\d+)\./,2)):c.mediaDevices&&c.userAgent.match(/Edge\/(\d+).(\d+)$/)?(e.browser="edge",e.version=a(c.userAgent,/Edge\/(\d+).(\d+)$/,2)):b.RTCPeerConnection&&c.userAgent.match(/AppleWebKit\/(\d+)\./)?(e.browser= "safari",e.version=a(c.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=b.RTCRtpTransceiver&&"currentDirection"in b.RTCRtpTransceiver.prototype):e.browser="Not a supported browser.";return e};h.compactObject=d;h.walkStats=c;h.filterStats=function(a,b,d){var e=d?"outbound-rtp":"inbound-rtp",f=new Map;if(null===b)return f;var g=[];a.forEach(function(a){"track"===a.type&&a.trackIdentifier===b.id&&g.push(a)});g.forEach(function(b){a.forEach(function(d){d.type===e&&d.trackId===b.id&&c(a,d,f)})}); return f};var b=!0,g=!0},{}],16:[function(k,m,h){function f(a,b,c,d,f){b=g.writeRtpDescription(a.kind,b);b+=g.writeIceParameters(a.iceGatherer.getLocalParameters());b+=g.writeDtlsParameters(a.dtlsTransport.getLocalParameters(),"offer"===c?"actpass":f||"active");b+="a\x3dmid:"+a.mid+"\r\n";b=a.rtpSender&&a.rtpReceiver?b+"a\x3dsendrecv\r\n":a.rtpSender?b+"a\x3dsendonly\r\n":a.rtpReceiver?b+"a\x3drecvonly\r\n":b+"a\x3dinactive\r\n";a.rtpSender&&(c=a.rtpSender._initialTrackId||a.rtpSender.track.id,a.rtpSender._initialTrackId= c,d="msid:"+(d?d.id:"-")+" "+c+"\r\n",b=b+("a\x3d"+d)+("a\x3dssrc:"+a.sendEncodingParameters[0].ssrc+" "+d),a.sendEncodingParameters[0].rtx&&(b+="a\x3dssrc:"+a.sendEncodingParameters[0].rtx.ssrc+" "+d,b+="a\x3dssrc-group:FID "+a.sendEncodingParameters[0].ssrc+" "+a.sendEncodingParameters[0].rtx.ssrc+"\r\n"));b+="a\x3dssrc:"+a.sendEncodingParameters[0].ssrc+" cname:"+g.localCName+"\r\n";a.rtpSender&&a.sendEncodingParameters[0].rtx&&(b+="a\x3dssrc:"+a.sendEncodingParameters[0].rtx.ssrc+" cname:"+g.localCName+ "\r\n");return b}function a(a,b){var c=!1;a=JSON.parse(JSON.stringify(a));return a.filter(function(a){if(a&&(a.urls||a.url)){var d=a.urls||a.url;a.url&&!a.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var e="string"===typeof d;e&&(d=[d]);d=d.filter(function(a){return 0!==a.indexOf("turn:")||-1===a.indexOf("transport\x3dudp")||-1!==a.indexOf("turn:[")||c?0===a.indexOf("stun:")&&14393<=b&&-1===a.indexOf("?transport\x3dudp"):c=!0});delete a.url;a.urls=e?d[0]:d;return!!d.length}})} function d(a,b){var c={codecs:[],headerExtensions:[],fecMechanisms:[]},d=function(a,b){a=parseInt(a,10);for(var c=0;c<b.length;c++)if(b[c].payloadType===a||b[c].preferredPayloadType===a)return b[c]},e=function(a,b,c,e){a=d(a.parameters.apt,c);b=d(b.parameters.apt,e);return a&&b&&a.name.toLowerCase()===b.name.toLowerCase()};a.codecs.forEach(function(d){for(var f=0;f<b.codecs.length;f++){var q=b.codecs[f];if(d.name.toLowerCase()===q.name.toLowerCase()&&d.clockRate===q.clockRate&&("rtx"!==d.name.toLowerCase()|| !d.parameters||!q.parameters.apt||e(d,q,a.codecs,b.codecs))){q=JSON.parse(JSON.stringify(q));q.numChannels=Math.min(d.numChannels,q.numChannels);c.codecs.push(q);q.rtcpFeedback=q.rtcpFeedback.filter(function(a){for(var b=0;b<d.rtcpFeedback.length;b++)if(d.rtcpFeedback[b].type===a.type&&d.rtcpFeedback[b].parameter===a.parameter)return!0;return!1});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}}});return c}function c(a,b,c){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[b][a].indexOf(c)}function l(a,b){var c=a.getRemoteCandidates().find(function(a){return b.foundation===a.foundation&&b.ip===a.ip&&b.port===a.port&&b.priority===a.priority&&b.protocol===a.protocol&&b.type=== a.type});c||a.addRemoteCandidate(b);return!c}function b(a,b){b=Error(b);b.name=a;b.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[a];return b}var g=k("sdp");m.exports=function(e,h){function k(a,b){b.addTrack(a);b.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:a}))}function w(a,b){b.removeTrack(a);b.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:a}))}function m(a,b,c,d){var f=new Event("track");f.track=b;f.receiver= c;f.transceiver={receiver:c};f.streams=d;e.setTimeout(function(){a._dispatchEvent("track",f)})}var p=function(c){var d=this,f=document.createDocumentFragment();["addEventListener","removeEventListener","dispatchEvent"].forEach(function(a){d[a]=f[a].bind(f)});this.canTrickleIceCandidates=null;this.needNegotiation=!1;this.localStreams=[];this.remoteStreams=[];this._remoteDescription=this._localDescription=null;this.signalingState="stable";this.iceGatheringState=this.connectionState=this.iceConnectionState= "new";c=JSON.parse(JSON.stringify(c||{}));this.usingBundle="max-bundle"===c.bundlePolicy;if("negotiate"===c.rtcpMuxPolicy)throw b("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");c.rtcpMuxPolicy||(c.rtcpMuxPolicy="require");switch(c.iceTransportPolicy){case "all":case "relay":break;default:c.iceTransportPolicy="all"}switch(c.bundlePolicy){case "balanced":case "max-compat":case "max-bundle":break;default:c.bundlePolicy="balanced"}c.iceServers=a(c.iceServers||[],h);this._iceGatherers= [];if(c.iceCandidatePoolSize)for(var q=c.iceCandidatePoolSize;0<q;q--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:c.iceServers,gatherPolicy:c.iceTransportPolicy}));else c.iceCandidatePoolSize=0;this._config=c;this.transceivers=[];this._sdpSessionId=g.generateSessionId();this._sdpSessionVersion=0;this._dtlsRole=void 0;this._isClosed=!1};Object.defineProperty(p.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}});Object.defineProperty(p.prototype, "remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}});p.prototype.onicecandidate=null;p.prototype.onaddstream=null;p.prototype.ontrack=null;p.prototype.onremovestream=null;p.prototype.onsignalingstatechange=null;p.prototype.oniceconnectionstatechange=null;p.prototype.onconnectionstatechange=null;p.prototype.onicegatheringstatechange=null;p.prototype.onnegotiationneeded=null;p.prototype.ondatachannel=null;p.prototype._dispatchEvent=function(a,b){if(!this._isClosed&& (this.dispatchEvent(b),"function"===typeof this["on"+a]))this["on"+a](b)};p.prototype._emitGatheringStateChange=function(){var a=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",a)};p.prototype.getConfiguration=function(){return this._config};p.prototype.getLocalStreams=function(){return this.localStreams};p.prototype.getRemoteStreams=function(){return this.remoteStreams};p.prototype._createTransceiver=function(a,b){var c=0<this.transceivers.length;a={track:null, iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:a,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};this.usingBundle&&c?(a.iceTransport=this.transceivers[0].iceTransport,a.dtlsTransport=this.transceivers[0].dtlsTransport):(c=this._createIceAndDtlsTransports(),a.iceTransport=c.iceTransport,a.dtlsTransport=c.dtlsTransport);b||this.transceivers.push(a); return a};p.prototype.addTrack=function(a,c){if(this._isClosed)throw b("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");if(this.transceivers.find(function(b){return b.track===a}))throw b("InvalidAccessError","Track already exists.");for(var d,f=0;f<this.transceivers.length;f++)this.transceivers[f].track||this.transceivers[f].kind!==a.kind||(d=this.transceivers[f]);d||(d=this._createTransceiver(a.kind));this._maybeFireNegotiationNeeded();-1===this.localStreams.indexOf(c)&& this.localStreams.push(c);d.track=a;d.stream=c;d.rtpSender=new e.RTCRtpSender(a,d.dtlsTransport);return d.rtpSender};p.prototype.addStream=function(a){var b=this;if(15025<=h)a.getTracks().forEach(function(c){b.addTrack(c,a)});else{var c=a.clone();a.getTracks().forEach(function(a,b){var d=c.getTracks()[b];a.addEventListener("enabled",function(a){d.enabled=a.enabled})});c.getTracks().forEach(function(a){b.addTrack(a,c)})}};p.prototype.removeTrack=function(a){if(this._isClosed)throw b("InvalidStateError", "Attempted to call removeTrack on a closed peerconnection.");if(!(a instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var c=this.transceivers.find(function(b){return b.rtpSender===a});if(!c)throw b("InvalidAccessError","Sender was not created by this connection.");var d=c.stream;c.rtpSender.stop();c.rtpSender=null;c.track=null;c.stream=null;-1===this.transceivers.map(function(a){return a.stream}).indexOf(d)&&-1< this.localStreams.indexOf(d)&&this.localStreams.splice(this.localStreams.indexOf(d),1);this._maybeFireNegotiationNeeded()};p.prototype.removeStream=function(a){var b=this;a.getTracks().forEach(function(a){var c=b.getSenders().find(function(b){return b.track===a});c&&b.removeTrack(c)})};p.prototype.getSenders=function(){return this.transceivers.filter(function(a){return!!a.rtpSender}).map(function(a){return a.rtpSender})};p.prototype.getReceivers=function(){return this.transceivers.filter(function(a){return!!a.rtpReceiver}).map(function(a){return a.rtpReceiver})}; p.prototype._createIceGatherer=function(a,b){var c=this;if(b&&0<a)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var d=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});Object.defineProperty(d,"state",{value:"new",writable:!0});this.transceivers[a].bufferedCandidateEvents=[];this.transceivers[a].bufferCandidates=function(b){var e=!b.candidate||0===Object.keys(b.candidate).length;d.state=e? "completed":"gathering";null!==c.transceivers[a].bufferedCandidateEvents&&c.transceivers[a].bufferedCandidateEvents.push(b)};d.addEventListener("localcandidate",this.transceivers[a].bufferCandidates);return d};p.prototype._gather=function(a,b){var c=this,d=this.transceivers[b].iceGatherer;if(!d.onlocalcandidate){var f=this.transceivers[b].bufferedCandidateEvents;this.transceivers[b].bufferedCandidateEvents=null;d.removeEventListener("localcandidate",this.transceivers[b].bufferCandidates);d.onlocalcandidate= function(e){if(!(c.usingBundle&&0<b)){var f=new Event("icecandidate");f.candidate={sdpMid:a,sdpMLineIndex:b};var n=e.candidate;if(e=!n||0===Object.keys(n).length){if("new"===d.state||"gathering"===d.state)d.state="completed"}else"new"===d.state&&(d.state="gathering"),n.component=1,n.ufrag=d.getLocalParameters().usernameFragment,n=g.writeCandidate(n),f.candidate=Object.assign(f.candidate,g.parseCandidate(n)),f.candidate.candidate=n,f.candidate.toJSON=function(){return{candidate:f.candidate.candidate, sdpMid:f.candidate.sdpMid,sdpMLineIndex:f.candidate.sdpMLineIndex,usernameFragment:f.candidate.usernameFragment}};n=g.getMediaSections(c._localDescription.sdp);n[f.candidate.sdpMLineIndex]=e?n[f.candidate.sdpMLineIndex]+"a\x3dend-of-candidates\r\n":n[f.candidate.sdpMLineIndex]+("a\x3d"+f.candidate.candidate+"\r\n");c._localDescription.sdp=g.getDescription(c._localDescription.sdp)+n.join("");n=c.transceivers.every(function(a){return a.iceGatherer&&"completed"===a.iceGatherer.state});"gathering"!== c.iceGatheringState&&(c.iceGatheringState="gathering",c._emitGatheringStateChange());e||c._dispatchEvent("icecandidate",f);n&&(c._dispatchEvent("icecandidate",new Event("icecandidate")),c.iceGatheringState="complete",c._emitGatheringStateChange())}};e.setTimeout(function(){f.forEach(function(a){d.onlocalcandidate(a)})},0)}};p.prototype._createIceAndDtlsTransports=function(){var a=this,b=new e.RTCIceTransport(null);b.onicestatechange=function(){a._updateIceConnectionState();a._updateConnectionState()}; var c=new e.RTCDtlsTransport(b);c.ondtlsstatechange=function(){a._updateConnectionState()};c.onerror=function(){Object.defineProperty(c,"state",{value:"failed",writable:!0});a._updateConnectionState()};return{iceTransport:b,dtlsTransport:c}};p.prototype._disposeIceAndDtlsTransports=function(a){var b=this.transceivers[a].iceGatherer;b&&(delete b.onlocalcandidate,delete this.transceivers[a].iceGatherer);if(b=this.transceivers[a].iceTransport)delete b.onicestatechange,delete this.transceivers[a].iceTransport; if(b=this.transceivers[a].dtlsTransport)delete b.ondtlsstatechange,delete b.onerror,delete this.transceivers[a].dtlsTransport};p.prototype._transceive=function(a,b,c){var e=d(a.localCapabilities,a.remoteCapabilities);b&&a.rtpSender&&(e.encodings=a.sendEncodingParameters,e.rtcp={cname:g.localCName,compound:a.rtcpParameters.compound},a.recvEncodingParameters.length&&(e.rtcp.ssrc=a.recvEncodingParameters[0].ssrc),a.rtpSender.send(e));c&&a.rtpReceiver&&0<e.codecs.length&&("video"===a.kind&&a.recvEncodingParameters&& 15019>h&&a.recvEncodingParameters.forEach(function(a){delete a.rtx}),e.encodings=a.recvEncodingParameters.length?a.recvEncodingParameters:[{}],e.rtcp={compound:a.rtcpParameters.compound},a.rtcpParameters.cname&&(e.rtcp.cname=a.rtcpParameters.cname),a.sendEncodingParameters.length&&(e.rtcp.ssrc=a.sendEncodingParameters[0].ssrc),a.rtpReceiver.receive(e))};p.prototype.setLocalDescription=function(a){var e=this;if(-1===["offer","answer"].indexOf(a.type))return Promise.reject(b("TypeError",'Unsupported type "'+ a.type+'"'));if(!c("setLocalDescription",a.type,e.signalingState)||e._isClosed)return Promise.reject(b("InvalidStateError","Can not set local "+a.type+" in state "+e.signalingState));if("offer"===a.type){var f=g.splitSections(a.sdp);var l=f.shift();f.forEach(function(a,b){a=g.parseRtpParameters(a);e.transceivers[b].localCapabilities=a});e.transceivers.forEach(function(a,b){e._gather(a.mid,b)})}else if("answer"===a.type){f=g.splitSections(e._remoteDescription.sdp);l=f.shift();var q=0<g.matchPrefix(l, "a\x3dice-lite").length;f.forEach(function(a,b){var c=e.transceivers[b],f=c.iceGatherer,n=c.iceTransport,x=c.dtlsTransport,h=c.localCapabilities,p=c.remoteCapabilities;if(!(g.isRejected(a)&&0===g.matchPrefix(a,"a\x3dbundle-only").length||c.rejected)){var k=g.getIceParameters(a,l);a=g.getDtlsParameters(a,l);q&&(a.role="server");e.usingBundle&&0!==b||(e._gather(c.mid,b),"new"===n.state&&n.start(f,k,q?"controlling":"controlled"),"new"===x.state&&x.start(a));b=d(h,p);e._transceive(c,0<b.codecs.length, !1)}})}e._localDescription={type:a.type,sdp:a.sdp};"offer"===a.type?e._updateSignalingState("have-local-offer"):e._updateSignalingState("stable");return Promise.resolve()};p.prototype.setRemoteDescription=function(a){var f=this;if(-1===["offer","answer"].indexOf(a.type))return Promise.reject(b("TypeError",'Unsupported type "'+a.type+'"'));if(!c("setRemoteDescription",a.type,f.signalingState)||f._isClosed)return Promise.reject(b("InvalidStateError","Can not set remote "+a.type+" in state "+f.signalingState)); var n={};f.remoteStreams.forEach(function(a){n[a.id]=a});var q=[],p=g.splitSections(a.sdp),F=p.shift(),u=0<g.matchPrefix(F,"a\x3dice-lite").length,v=0<g.matchPrefix(F,"a\x3dgroup:BUNDLE ").length;f.usingBundle=v;var t=g.matchPrefix(F,"a\x3dice-options:")[0];f.canTrickleIceCandidates=t?0<=t.substr(14).split(" ").indexOf("trickle"):!1;p.forEach(function(b,c){var x=g.splitLines(b),p=g.getKind(b),C=g.isRejected(b)&&0===g.matchPrefix(b,"a\x3dbundle-only").length,B=x[0].substr(2).split(" ")[2],x=g.getDirection(b, F),z=g.parseMsid(b),m=g.getMid(b)||g.generateIdentifier();if(C||"application"===p&&("DTLS/SCTP"===B||"UDP/DTLS/SCTP"===B))f.transceivers[c]={mid:m,kind:p,protocol:B,rejected:!0};else{!C&&f.transceivers[c]&&f.transceivers[c].rejected&&(f.transceivers[c]=f._createTransceiver(p,!0));var t=g.parseRtpParameters(b);if(!C){var A=g.getIceParameters(b,F);var r=g.getDtlsParameters(b,F);r.role="client"}var B=g.parseRtpEncodingParameters(b),G=g.parseRtcpParameters(b),D=0<g.matchPrefix(b,"a\x3dend-of-candidates", F).length,E=g.matchPrefix(b,"a\x3dcandidate:").map(function(a){return g.parseCandidate(a)}).filter(function(a){return 1===a.component});("offer"===a.type||"answer"===a.type)&&!C&&v&&0<c&&f.transceivers[c]&&(f._disposeIceAndDtlsTransports(c),f.transceivers[c].iceGatherer=f.transceivers[0].iceGatherer,f.transceivers[c].iceTransport=f.transceivers[0].iceTransport,f.transceivers[c].dtlsTransport=f.transceivers[0].dtlsTransport,f.transceivers[c].rtpSender&&f.transceivers[c].rtpSender.setTransport(f.transceivers[0].dtlsTransport), f.transceivers[c].rtpReceiver&&f.transceivers[c].rtpReceiver.setTransport(f.transceivers[0].dtlsTransport));if("offer"!==a.type||C)"answer"!==a.type||C||(y=f.transceivers[c],I=y.iceGatherer,p=y.iceTransport,m=y.dtlsTransport,H=y.rtpReceiver,C=y.sendEncodingParameters,b=y.localCapabilities,f.transceivers[c].recvEncodingParameters=B,f.transceivers[c].remoteCapabilities=t,f.transceivers[c].rtcpParameters=G,E.length&&"new"===p.state&&(!u&&!D||v&&0!==c?E.forEach(function(a){l(y.iceTransport,a)}):p.setRemoteCandidates(E)), v&&0!==c||("new"===p.state&&p.start(I,A,"controlling"),"new"===m.state&&m.start(r)),!d(y.localCapabilities,y.remoteCapabilities).codecs.filter(function(a){return"rtx"===a.name.toLowerCase()}).length&&y.sendEncodingParameters[0].rtx&&delete y.sendEncodingParameters[0].rtx,f._transceive(y,"sendrecv"===x||"recvonly"===x,"sendrecv"===x||"sendonly"===x),!H||"sendrecv"!==x&&"sendonly"!==x?delete y.rtpReceiver:(x=H.track,z?(n[z.stream]||(n[z.stream]=new e.MediaStream),k(x,n[z.stream]),q.push([x,H,n[z.stream]])): (n.default||(n.default=new e.MediaStream),k(x,n.default),q.push([x,H,n.default]))));else{var y=f.transceivers[c]||f._createTransceiver(p);y.mid=m;y.iceGatherer||(y.iceGatherer=f._createIceGatherer(c,v));E.length&&"new"===y.iceTransport.state&&(!D||v&&0!==c?E.forEach(function(a){l(y.iceTransport,a)}):y.iceTransport.setRemoteCandidates(E));b=e.RTCRtpReceiver.getCapabilities(p);15019>h&&(b.codecs=b.codecs.filter(function(a){return"rtx"!==a.name}));C=y.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];A= !1;if("sendrecv"===x||"sendonly"===x){A=!y.rtpReceiver;var H=y.rtpReceiver||new e.RTCRtpReceiver(y.dtlsTransport,p);if(A){x=H.track;if(!z||"-"!==z.stream)if(z){n[z.stream]||(n[z.stream]=new e.MediaStream,Object.defineProperty(n[z.stream],"id",{get:function(){return z.stream}}));Object.defineProperty(x,"id",{get:function(){return z.track}});var I=n[z.stream]}else n.default||(n.default=new e.MediaStream),I=n.default;I&&(k(x,I),y.associatedRemoteMediaStreams.push(I));q.push([x,H,I])}}else y.rtpReceiver&& y.rtpReceiver.track&&(y.associatedRemoteMediaStreams.forEach(function(a){var b=a.getTracks().find(function(a){return a.id===y.rtpReceiver.track.id});b&&w(b,a)}),y.associatedRemoteMediaStreams=[]);y.localCapabilities=b;y.remoteCapabilities=t;y.rtpReceiver=H;y.rtcpParameters=G;y.sendEncodingParameters=C;y.recvEncodingParameters=B;f._transceive(f.transceivers[c],!1,A)}}});void 0===f._dtlsRole&&(f._dtlsRole="offer"===a.type?"active":"passive");f._remoteDescription={type:a.type,sdp:a.sdp};"offer"===a.type? f._updateSignalingState("have-remote-offer"):f._updateSignalingState("stable");Object.keys(n).forEach(function(a){var b=n[a];if(b.getTracks().length){if(-1===f.remoteStreams.indexOf(b)){f.remoteStreams.push(b);var c=new Event("addstream");c.stream=b;e.setTimeout(function(){f._dispatchEvent("addstream",c)})}q.forEach(function(a){b.id===a[2].id&&m(f,a[0],a[1],[b])})}});q.forEach(function(a){a[2]||m(f,a[0],a[1],[])});e.setTimeout(function(){f&&f.transceivers&&f.transceivers.forEach(function(a){a.iceTransport&& "new"===a.iceTransport.state&&0<a.iceTransport.getRemoteCandidates().length&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),a.iceTransport.addRemoteCandidate({}))})},4E3);return Promise.resolve()};p.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._isClosed=!0;this._updateSignalingState("closed")}; p.prototype._updateSignalingState=function(a){this.signalingState=a;a=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",a)};p.prototype._maybeFireNegotiationNeeded=function(){var a=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout(function(){if(a.needNegotiation){a.needNegotiation=!1;var b=new Event("negotiationneeded");a._dispatchEvent("negotiationneeded",b)}},0))};p.prototype._updateIceConnectionState=function(){var a= {"new":0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(b){b.iceTransport&&!b.rejected&&a[b.iceTransport.state]++});var b="new";0<a.failed?b="failed":0<a.checking?b="checking":0<a.disconnected?b="disconnected":0<a.new?b="new":0<a.connected?b="connected":0<a.completed&&(b="completed");b!==this.iceConnectionState&&(this.iceConnectionState=b,b=new Event("iceconnectionstatechange"),this._dispatchEvent("iceconnectionstatechange",b))};p.prototype._updateConnectionState= function(){var a={"new":0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};this.transceivers.forEach(function(b){b.iceTransport&&b.dtlsTransport&&!b.rejected&&(a[b.iceTransport.state]++,a[b.dtlsTransport.state]++)});a.connected+=a.completed;var b="new";0<a.failed?b="failed":0<a.connecting?b="connecting":0<a.disconnected?b="disconnected":0<a.new?b="new":0<a.connected&&(b="connected");b!==this.connectionState&&(this.connectionState=b,b=new Event("connectionstatechange"),this._dispatchEvent("connectionstatechange", b))};p.prototype.createOffer=function(a){var c=this;if(c._isClosed)return Promise.reject(b("InvalidStateError","Can not call createOffer after close"));var d=c.transceivers.filter(function(a){return"audio"===a.kind}).length,l=c.transceivers.filter(function(a){return"video"===a.kind}).length;if(a){if(a.mandatory||a.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==a.offerToReceiveAudio&&(d=!0===a.offerToReceiveAudio?1:!1===a.offerToReceiveAudio?0:a.offerToReceiveAudio); void 0!==a.offerToReceiveVideo&&(l=!0===a.offerToReceiveVideo?1:!1===a.offerToReceiveVideo?0:a.offerToReceiveVideo)}for(c.transceivers.forEach(function(a){"audio"===a.kind?(d--,0>d&&(a.wantReceive=!1)):"video"===a.kind&&(l--,0>l&&(a.wantReceive=!1))});0<d||0<l;)0<d&&(c._createTransceiver("audio"),d--),0<l&&(c._createTransceiver("video"),l--);var p=g.writeSessionBoilerplate(c._sdpSessionId,c._sdpSessionVersion++);c.transceivers.forEach(function(a,b){var d=a.track,f=a.kind,n=a.mid||g.generateIdentifier(); a.mid=n;a.iceGatherer||(a.iceGatherer=c._createIceGatherer(b,c.usingBundle));n=e.RTCRtpSender.getCapabilities(f);15019>h&&(n.codecs=n.codecs.filter(function(a){return"rtx"!==a.name}));n.codecs.forEach(function(b){"H264"===b.name&&void 0===b.parameters["level-asymmetry-allowed"]&&(b.parameters["level-asymmetry-allowed"]="1");a.remoteCapabilities&&a.remoteCapabilities.codecs&&a.remoteCapabilities.codecs.forEach(function(a){b.name.toLowerCase()===a.name.toLowerCase()&&b.clockRate===a.clockRate&&(b.preferredPayloadType= a.payloadType)})});n.headerExtensions.forEach(function(b){(a.remoteCapabilities&&a.remoteCapabilities.headerExtensions||[]).forEach(function(a){b.uri===a.uri&&(b.id=a.id)})});b=a.sendEncodingParameters||[{ssrc:1001*(2*b+1)}];d&&15019<=h&&"video"===f&&!b[0].rtx&&(b[0].rtx={ssrc:b[0].ssrc+1});a.wantReceive&&(a.rtpReceiver=new e.RTCRtpReceiver(a.dtlsTransport,f));a.localCapabilities=n;a.sendEncodingParameters=b});"max-compat"!==c._config.bundlePolicy&&(p+="a\x3dgroup:BUNDLE "+c.transceivers.map(function(a){return a.mid}).join(" ")+ "\r\n");p+="a\x3dice-options:trickle\r\n";c.transceivers.forEach(function(a,b){p+=f(a,a.localCapabilities,"offer",a.stream,c._dtlsRole);p+="a\x3drtcp-rsize\r\n";!a.iceGatherer||"new"===c.iceGatheringState||0!==b&&c.usingBundle||(a.iceGatherer.getLocalCandidates().forEach(function(a){a.component=1;p+="a\x3d"+g.writeCandidate(a)+"\r\n"}),"completed"===a.iceGatherer.state&&(p+="a\x3dend-of-candidates\r\n"))});a=new e.RTCSessionDescription({type:"offer",sdp:p});return Promise.resolve(a)};p.prototype.createAnswer= function(){var a=this;if(a._isClosed)return Promise.reject(b("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==a.signalingState&&"have-local-pranswer"!==a.signalingState)return Promise.reject(b("InvalidStateError","Can not call createAnswer in signalingState "+a.signalingState));var c=g.writeSessionBoilerplate(a._sdpSessionId,a._sdpSessionVersion++);a.usingBundle&&(c+="a\x3dgroup:BUNDLE "+a.transceivers.map(function(a){return a.mid}).join(" ")+"\r\n");var c=c+ "a\x3dice-options:trickle\r\n",n=g.getMediaSections(a._remoteDescription.sdp).length;a.transceivers.forEach(function(b,e){if(!(e+1>n))if(b.rejected)"application"===b.kind?c="DTLS/SCTP"===b.protocol?c+"m\x3dapplication 0 DTLS/SCTP 5000\r\n":c+("m\x3dapplication 0 "+b.protocol+" webrtc-datachannel\r\n"):"audio"===b.kind?c+="m\x3daudio 0 UDP/TLS/RTP/SAVPF 0\r\na\x3drtpmap:0 PCMU/8000\r\n":"video"===b.kind&&(c+="m\x3dvideo 0 UDP/TLS/RTP/SAVPF 120\r\na\x3drtpmap:120 VP8/90000\r\n"),c+="c\x3dIN IP4 0.0.0.0\r\na\x3dinactive\r\na\x3dmid:"+ b.mid+"\r\n";else{if(b.stream){var g;"audio"===b.kind?g=b.stream.getAudioTracks()[0]:"video"===b.kind&&(g=b.stream.getVideoTracks()[0]);g&&15019<=h&&"video"===b.kind&&!b.sendEncodingParameters[0].rtx&&(b.sendEncodingParameters[0].rtx={ssrc:b.sendEncodingParameters[0].ssrc+1})}e=d(b.localCapabilities,b.remoteCapabilities);!e.codecs.filter(function(a){return"rtx"===a.name.toLowerCase()}).length&&b.sendEncodingParameters[0].rtx&&delete b.sendEncodingParameters[0].rtx;c+=f(b,e,"answer",b.stream,a._dtlsRole); b.rtcpParameters&&b.rtcpParameters.reducedSize&&(c+="a\x3drtcp-rsize\r\n")}});var l=new e.RTCSessionDescription({type:"answer",sdp:c});return Promise.resolve(l)};p.prototype.addIceCandidate=function(a){var c=this,d;return a&&void 0===a.sdpMLineIndex&&!a.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(e,f){if(c._remoteDescription)if(a&&""!==a.candidate){var n=a.sdpMLineIndex;if(a.sdpMid)for(var p=0;p<c.transceivers.length;p++)if(c.transceivers[p].mid=== a.sdpMid){n=p;break}var h=c.transceivers[n];if(h){if(h.rejected)return e();p=0<Object.keys(a.candidate).length?g.parseCandidate(a.candidate):{};if("tcp"===p.protocol&&(0===p.port||9===p.port)||p.component&&1!==p.component)return e();if((0===n||0<n&&h.iceTransport!==c.transceivers[0].iceTransport)&&!l(h.iceTransport,p))return f(b("OperationError","Can not add ICE candidate"));f=a.candidate.trim();0===f.indexOf("a\x3d")&&(f=f.substr(2));d=g.getMediaSections(c._remoteDescription.sdp);d[n]+="a\x3d"+(p.type? f:"end-of-candidates")+"\r\n";c._remoteDescription.sdp=g.getDescription(c._remoteDescription.sdp)+d.join("")}else return f(b("OperationError","Can not add ICE candidate"))}else for(n=0;n<c.transceivers.length&&(c.transceivers[n].rejected||(c.transceivers[n].iceTransport.addRemoteCandidate({}),d=g.getMediaSections(c._remoteDescription.sdp),d[n]+="a\x3dend-of-candidates\r\n",c._remoteDescription.sdp=g.getDescription(c._remoteDescription.sdp)+d.join(""),!c.usingBundle));n++);else return f(b("InvalidStateError", "Can not add ICE candidate without a remote description"));e()})};p.prototype.getStats=function(a){if(a&&a instanceof e.MediaStreamTrack){var c=null;this.transceivers.forEach(function(b){b.rtpSender&&b.rtpSender.track===a?c=b.rtpSender:b.rtpReceiver&&b.rtpReceiver.track===a&&(c=b.rtpReceiver)});if(!c)throw b("InvalidAccessError","Invalid selector.");return c.getStats()}var d=[];this.transceivers.forEach(function(a){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(b){a[b]&& d.push(a[b].getStats())})});return Promise.all(d).then(function(a){var b=new Map;a.forEach(function(a){a.forEach(function(a){b.set(a.id,a)})});return b})};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach(function(a){if((a=e[a])&&a.prototype&&a.prototype.getStats){var b=a.prototype.getStats;a.prototype.getStats=function(){return b.apply(this).then(function(a){var b=new Map;Object.keys(a).forEach(function(c){var d=a[c];a[c].type={inboundrtp:"inbound-rtp", outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[d.type]||d.type;b.set(c,a[c])});return b})}}});var u=["createOffer","createAnswer"];u.forEach(function(a){var b=p.prototype[a];p.prototype[a]=function(){var a=arguments;return"function"===typeof a[0]||"function"===typeof a[1]?b.apply(this,[arguments[2]]).then(function(b){"function"===typeof a[0]&&a[0].apply(null,[b])},function(b){"function"===typeof a[1]&&a[1].apply(null, [b])}):b.apply(this,arguments)}});u=["setLocalDescription","setRemoteDescription","addIceCandidate"];u.forEach(function(a){var b=p.prototype[a];p.prototype[a]=function(){var a=arguments;return"function"===typeof a[1]||"function"===typeof a[2]?b.apply(this,arguments).then(function(){"function"===typeof a[1]&&a[1].apply(null)},function(b){"function"===typeof a[2]&&a[2].apply(null,[b])}):b.apply(this,arguments)}});["getStats"].forEach(function(a){var b=p.prototype[a];p.prototype[a]=function(){var a= arguments;return"function"===typeof a[1]?b.apply(this,arguments).then(function(){"function"===typeof a[1]&&a[1].apply(null)}):b.apply(this,arguments)}});return p}},{sdp:17}],17:[function(k,m,h){var f={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};f.localCName=f.generateIdentifier();f.splitLines=function(a){return a.trim().split("\n").map(function(a){return a.trim()})};f.splitSections=function(a){return a.split("\nm\x3d").map(function(a,c){return(0<c?"m\x3d"+a:a).trim()+ "\r\n"})};f.getDescription=function(a){return(a=f.splitSections(a))&&a[0]};f.getMediaSections=function(a){a=f.splitSections(a);a.shift();return a};f.matchPrefix=function(a,d){return f.splitLines(a).filter(function(a){return 0===a.indexOf(d)})};f.parseCandidate=function(a){a=0===a.indexOf("a\x3dcandidate:")?a.substring(12).split(" "):a.substring(10).split(" ");for(var d={foundation:a[0],component:parseInt(a[1],10),protocol:a[2].toLowerCase(),priority:parseInt(a[3],10),ip:a[4],address:a[4],port:parseInt(a[5], 10),type:a[7]},c=8;c<a.length;c+=2)switch(a[c]){case "raddr":d.relatedAddress=a[c+1];break;case "rport":d.relatedPort=parseInt(a[c+1],10);break;case "tcptype":d.tcpType=a[c+1];break;case "ufrag":d.ufrag=a[c+1];d.usernameFragment=a[c+1];break;default:d[a[c]]=a[c+1]}return d};f.writeCandidate=function(a){var d=[];d.push(a.foundation);d.push(a.component);d.push(a.protocol.toUpperCase());d.push(a.priority);d.push(a.address||a.ip);d.push(a.port);var c=a.type;d.push("typ");d.push(c);"host"!==c&&a.relatedAddress&& a.relatedPort&&(d.push("raddr"),d.push(a.relatedAddress),d.push("rport"),d.push(a.relatedPort));a.tcpType&&"tcp"===a.protocol.toLowerCase()&&(d.push("tcptype"),d.push(a.tcpType));if(a.usernameFragment||a.ufrag)d.push("ufrag"),d.push(a.usernameFragment||a.ufrag);return"candidate:"+d.join(" ")};f.parseIceOptions=function(a){return a.substr(14).split(" ")};f.parseRtpMap=function(a){a=a.substr(9).split(" ");var d={payloadType:parseInt(a.shift(),10)};a=a[0].split("/");d.name=a[0];d.clockRate=parseInt(a[1], 10);d.channels=3===a.length?parseInt(a[2],10):1;d.numChannels=d.channels;return d};f.writeRtpMap=function(a){var d=a.payloadType;void 0!==a.preferredPayloadType&&(d=a.preferredPayloadType);var c=a.channels||a.numChannels||1;return"a\x3drtpmap:"+d+" "+a.name+"/"+a.clockRate+(1!==c?"/"+c:"")+"\r\n"};f.parseExtmap=function(a){a=a.substr(9).split(" ");return{id:parseInt(a[0],10),direction:0<a[0].indexOf("/")?a[0].split("/")[1]:"sendrecv",uri:a[1]}};f.writeExtmap=function(a){return"a\x3dextmap:"+(a.id|| a.preferredId)+(a.direction&&"sendrecv"!==a.direction?"/"+a.direction:"")+" "+a.uri+"\r\n"};f.parseFmtp=function(a){for(var d={},c=a.substr(a.indexOf(" ")+1).split(";"),f=0;f<c.length;f++)a=c[f].trim().split("\x3d"),d[a[0].trim()]=a[1];return d};f.writeFmtp=function(a){var d="",c=a.payloadType;void 0!==a.preferredPayloadType&&(c=a.preferredPayloadType);if(a.parameters&&Object.keys(a.parameters).length){var f=[];Object.keys(a.parameters).forEach(function(b){a.parameters[b]?f.push(b+"\x3d"+a.parameters[b]): f.push(b)});d+="a\x3dfmtp:"+c+" "+f.join(";")+"\r\n"}return d};f.parseRtcpFb=function(a){a=a.substr(a.indexOf(" ")+1).split(" ");return{type:a.shift(),parameter:a.join(" ")}};f.writeRtcpFb=function(a){var d="",c=a.payloadType;void 0!==a.preferredPayloadType&&(c=a.preferredPayloadType);a.rtcpFeedback&&a.rtcpFeedback.length&&a.rtcpFeedback.forEach(function(a){d+="a\x3drtcp-fb:"+c+" "+a.type+(a.parameter&&a.parameter.length?" "+a.parameter:"")+"\r\n"});return d};f.parseSsrcMedia=function(a){var d=a.indexOf(" "), c={ssrc:parseInt(a.substr(7,d-7),10)},f=a.indexOf(":",d);-1<f?(c.attribute=a.substr(d+1,f-d-1),c.value=a.substr(f+1)):c.attribute=a.substr(d+1);return c};f.parseSsrcGroup=function(a){a=a.substr(13).split(" ");return{semantics:a.shift(),ssrcs:a.map(function(a){return parseInt(a,10)})}};f.getMid=function(a){if(a=f.matchPrefix(a,"a\x3dmid:")[0])return a.substr(6)};f.parseFingerprint=function(a){a=a.substr(14).split(" ");return{algorithm:a[0].toLowerCase(),value:a[1]}};f.getDtlsParameters=function(a, d){return{role:"auto",fingerprints:f.matchPrefix(a+d,"a\x3dfingerprint:").map(f.parseFingerprint)}};f.writeDtlsParameters=function(a,d){var c="a\x3dsetup:"+d+"\r\n";a.fingerprints.forEach(function(a){c+="a\x3dfingerprint:"+a.algorithm+" "+a.value+"\r\n"});return c};f.parseCryptoLine=function(a){a=a.substr(9).split(" ");return{tag:parseInt(a[0],10),cryptoSuite:a[1],keyParams:a[2],sessionParams:a.slice(3)}};f.writeCryptoLine=function(a){return"a\x3dcrypto:"+a.tag+" "+a.cryptoSuite+" "+("object"===typeof a.keyParams? f.writeCryptoKeyParams(a.keyParams):a.keyParams)+(a.sessionParams?" "+a.sessionParams.join(" "):"")+"\r\n"};f.parseCryptoKeyParams=function(a){if(0!==a.indexOf("inline:"))return null;a=a.substr(7).split("|");return{keyMethod:"inline",keySalt:a[0],lifeTime:a[1],mkiValue:a[2]?a[2].split(":")[0]:void 0,mkiLength:a[2]?a[2].split(":")[1]:void 0}};f.writeCryptoKeyParams=function(a){return a.keyMethod+":"+a.keySalt+(a.lifeTime?"|"+a.lifeTime:"")+(a.mkiValue&&a.mkiLength?"|"+a.mkiValue+":"+a.mkiLength:"")}; f.getCryptoParameters=function(a,d){return f.matchPrefix(a+d,"a\x3dcrypto:").map(f.parseCryptoLine)};f.getIceParameters=function(a,d){var c=f.matchPrefix(a+d,"a\x3dice-ufrag:")[0];a=f.matchPrefix(a+d,"a\x3dice-pwd:")[0];return c&&a?{usernameFragment:c.substr(12),password:a.substr(10)}:null};f.writeIceParameters=function(a){return"a\x3dice-ufrag:"+a.usernameFragment+"\r\na\x3dice-pwd:"+a.password+"\r\n"};f.parseRtpParameters=function(a){for(var d={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]}, c=f.splitLines(a)[0].split(" "),l=3;l<c.length;l++){var b=c[l],g=f.matchPrefix(a,"a\x3drtpmap:"+b+" ")[0];if(g){var g=f.parseRtpMap(g),e=f.matchPrefix(a,"a\x3dfmtp:"+b+" ");g.parameters=e.length?f.parseFmtp(e[0]):{};g.rtcpFeedback=f.matchPrefix(a,"a\x3drtcp-fb:"+b+" ").map(f.parseRtcpFb);d.codecs.push(g);switch(g.name.toUpperCase()){case "RED":case "ULPFEC":d.fecMechanisms.push(g.name.toUpperCase())}}}f.matchPrefix(a,"a\x3dextmap:").forEach(function(a){d.headerExtensions.push(f.parseExtmap(a))}); return d};f.writeRtpDescription=function(a,d){var c="",c=c+("m\x3d"+a+" "),c=c+(0<d.codecs.length?"9":"0"),c=c+" UDP/TLS/RTP/SAVPF ",c=c+(d.codecs.map(function(a){return void 0!==a.preferredPayloadType?a.preferredPayloadType:a.payloadType}).join(" ")+"\r\n"),c=c+"c\x3dIN IP4 0.0.0.0\r\n",c=c+"a\x3drtcp:9 IN IP4 0.0.0.0\r\n";d.codecs.forEach(function(a){c+=f.writeRtpMap(a);c+=f.writeFmtp(a);c+=f.writeRtcpFb(a)});var l=0;d.codecs.forEach(function(a){a.maxptime>l&&(l=a.maxptime)});0<l&&(c+="a\x3dmaxptime:"+ l+"\r\n");c+="a\x3drtcp-mux\r\n";d.headerExtensions&&d.headerExtensions.forEach(function(a){c+=f.writeExtmap(a)});return c};f.parseRtpEncodingParameters=function(a){var d=[],c=f.parseRtpParameters(a),l=-1!==c.fecMechanisms.indexOf("RED"),b=-1!==c.fecMechanisms.indexOf("ULPFEC"),g=f.matchPrefix(a,"a\x3dssrc:").map(function(a){return f.parseSsrcMedia(a)}).filter(function(a){return"cname"===a.attribute}),e=0<g.length&&g[0].ssrc,h,g=f.matchPrefix(a,"a\x3dssrc-group:FID").map(function(a){return a.substr(17).split(" ").map(function(a){return parseInt(a, 10)})});0<g.length&&1<g[0].length&&g[0][0]===e&&(h=g[0][1]);c.codecs.forEach(function(a){"RTX"===a.name.toUpperCase()&&a.parameters.apt&&(a={ssrc:e,codecPayloadType:parseInt(a.parameters.apt,10)},e&&h&&(a.rtx={ssrc:h}),d.push(a),l&&(a=JSON.parse(JSON.stringify(a)),a.fec={ssrc:e,mechanism:b?"red+ulpfec":"red"},d.push(a)))});0===d.length&&e&&d.push({ssrc:e});var k=f.matchPrefix(a,"b\x3d");k.length&&(k=0===k[0].indexOf("b\x3dTIAS:")?parseInt(k[0].substr(7),10):0===k[0].indexOf("b\x3dAS:")?950*parseInt(k[0].substr(5), 10)-16E3:void 0,d.forEach(function(a){a.maxBitrate=k}));return d};f.parseRtcpParameters=function(a){var d={},c=f.matchPrefix(a,"a\x3dssrc:").map(function(a){return f.parseSsrcMedia(a)}).filter(function(a){return"cname"===a.attribute})[0];c&&(d.cname=c.value,d.ssrc=c.ssrc);c=f.matchPrefix(a,"a\x3drtcp-rsize");d.reducedSize=0<c.length;d.compound=0===c.length;a=f.matchPrefix(a,"a\x3drtcp-mux");d.mux=0<a.length;return d};f.parseMsid=function(a){var d=f.matchPrefix(a,"a\x3dmsid:");if(1===d.length)return a= d[0].substr(7).split(" "),{stream:a[0],track:a[1]};a=f.matchPrefix(a,"a\x3dssrc:").map(function(a){return f.parseSsrcMedia(a)}).filter(function(a){return"msid"===a.attribute});if(0<a.length)return a=a[0].value.split(" "),{stream:a[0],track:a[1]}};f.parseSctpDescription=function(a){var d=f.parseMLine(a),c=f.matchPrefix(a,"a\x3dmax-message-size:"),l;0<c.length&&(l=parseInt(c[0].substr(19),10));isNaN(l)&&(l=65536);c=f.matchPrefix(a,"a\x3dsctp-port:");if(0<c.length)return{port:parseInt(c[0].substr(12), 10),protocol:d.fmt,maxMessageSize:l};if(0<f.matchPrefix(a,"a\x3dsctpmap:").length)return a=f.matchPrefix(a,"a\x3dsctpmap:")[0].substr(10).split(" "),{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:l}};f.writeSctpDescription=function(a,d){a="DTLS/SCTP"!==a.protocol?["m\x3d"+a.kind+" 9 "+a.protocol+" "+d.protocol+"\r\n","c\x3dIN IP4 0.0.0.0\r\n","a\x3dsctp-port:"+d.port+"\r\n"]:["m\x3d"+a.kind+" 9 "+a.protocol+" "+d.port+"\r\n","c\x3dIN IP4 0.0.0.0\r\n","a\x3dsctpmap:"+d.port+" "+d.protocol+" 65535\r\n"]; void 0!==d.maxMessageSize&&a.push("a\x3dmax-message-size:"+d.maxMessageSize+"\r\n");return a.join("")};f.generateSessionId=function(){return Math.random().toString().substr(2,21)};f.writeSessionBoilerplate=function(a,d,c){d=void 0!==d?d:2;a=a?a:f.generateSessionId();return"v\x3d0\r\no\x3d"+(c||"thisisadapterortc")+" "+a+" "+d+" IN IP4 127.0.0.1\r\ns\x3d-\r\nt\x3d0 0\r\n"};f.writeMediaSection=function(a,d,c,l){d=f.writeRtpDescription(a.kind,d);d+=f.writeIceParameters(a.iceGatherer.getLocalParameters()); d+=f.writeDtlsParameters(a.dtlsTransport.getLocalParameters(),"offer"===c?"actpass":"active");d+="a\x3dmid:"+a.mid+"\r\n";d=a.direction?d+("a\x3d"+a.direction+"\r\n"):a.rtpSender&&a.rtpReceiver?d+"a\x3dsendrecv\r\n":a.rtpSender?d+"a\x3dsendonly\r\n":a.rtpReceiver?d+"a\x3drecvonly\r\n":d+"a\x3dinactive\r\n";a.rtpSender&&(c="msid:"+l.id+" "+a.rtpSender.track.id+"\r\n",d=d+("a\x3d"+c)+("a\x3dssrc:"+a.sendEncodingParameters[0].ssrc+" "+c),a.sendEncodingParameters[0].rtx&&(d+="a\x3dssrc:"+a.sendEncodingParameters[0].rtx.ssrc+ " "+c,d+="a\x3dssrc-group:FID "+a.sendEncodingParameters[0].ssrc+" "+a.sendEncodingParameters[0].rtx.ssrc+"\r\n"));d+="a\x3dssrc:"+a.sendEncodingParameters[0].ssrc+" cname:"+f.localCName+"\r\n";a.rtpSender&&a.sendEncodingParameters[0].rtx&&(d+="a\x3dssrc:"+a.sendEncodingParameters[0].rtx.ssrc+" cname:"+f.localCName+"\r\n");return d};f.getDirection=function(a,d){a=f.splitLines(a);for(var c=0;c<a.length;c++)switch(a[c]){case "a\x3dsendrecv":case "a\x3dsendonly":case "a\x3drecvonly":case "a\x3dinactive":return a[c].substr(2)}return d? f.getDirection(d):"sendrecv"};f.getKind=function(a){return f.splitLines(a)[0].split(" ")[0].substr(2)};f.isRejected=function(a){return"0"===a.split(" ",2)[1]};f.parseMLine=function(a){a=f.splitLines(a)[0].substr(2).split(" ");return{kind:a[0],port:parseInt(a[1],10),protocol:a[2],fmt:a.slice(3).join(" ")}};f.parseOLine=function(a){a=f.matchPrefix(a,"o\x3d")[0].substr(2).split(" ");return{username:a[0],sessionId:a[1],sessionVersion:parseInt(a[2],10),netType:a[3],addressType:a[4],address:a[5]}};f.isValidSDP= function(a){if("string"!==typeof a||0===a.length)return!1;a=f.splitLines(a);for(var d=0;d<a.length;d++)if(2>a[d].length||"\x3d"!==a[d].charAt(1))return!1;return!0};"object"===typeof m&&(m.exports=f)},{}]},{},[1])(1)}); (function(k){"object"===typeof exports&&"undefined"!==typeof module?module.exports=k():"function"===typeof define&&define.amd?define([],k):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).kurentoUtils=k()})(function(){return function(){function k(m,h,f){function a(c,b){if(!h[c]){if(!m[c]){var g="function"==typeof require&&require;if(!b&&g)return g(c,!0);if(d)return d(c,!0);b=Error("Cannot find module '"+c+"'");throw b.code="MODULE_NOT_FOUND", b;}b=h[c]={exports:{}};m[c][0].call(b.exports,function(b){return a(m[c][1][b]||b)},b,b.exports,k,m,h,f)}return h[c].exports}for(var d="function"==typeof require&&require,c=0;c<f.length;c++)a(f[c]);return a}return k}()({1:[function(k,m,h){function f(a){a&&n.error(a)}function a(a){a.stop&&a.stop()}function d(b){b.getTracks().forEach(a)}function c(a,b){var c=[];(function(a,b){"undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<=AdapterJS.webrtcDetectedVersion?b.onsignalingstatechange= a:b.addEventListener("signalingstatechange",a)})(function(){if("stable"===a.signalingState)for(;c.length;){var b=c.shift();a.addIceCandidate(b.candidate,b.callback,b.callback)}},a);return function(d,e){e=e||b;switch(a.signalingState){case "closed":e(Error("PeerConnection object is closed"));break;case "stable":if(a.remoteDescription){a.addIceCandidate(d,e,e);break}default:c.push({candidate:d,callback:e})}}}function l(a,b){"undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<= AdapterJS.webrtcDetectedVersion?b.onicecandidate=a:b.addEventListener("icecandidate",a)}function b(a,d,e){function g(){if(C){C.pause();var a=r.getRemoteStreams()[0];C.srcObject=a;n.debug("Remote stream:",a);"undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<=AdapterJS.webrtcDetectedVersion?C=attachMediaStream(C,a):C.load()}}function p(a){if(X)if("Chrome"===F.name||"Chromium"===F.name){n.debug("Adding multicast info");var b=RTCSessionDescription,c=a.type;a=a.sdp;var d=a.indexOf("a\x3dssrc-group:FID"); a=0<d?a.slice(0,d):a;var d=u,e=d.getVideoTracks();e.length?(d=["a\x3dx-google-flag:conference","a\x3dssrc-group:SIM 1 2 3","a\x3dssrc:1 cname:localVideo","a\x3dssrc:1 msid:"+d.id+" "+e[0].id,"a\x3dssrc:1 mslabel:"+d.id,"a\x3dssrc:1 label:"+e[0].id,"a\x3dssrc:2 cname:localVideo","a\x3dssrc:2 msid:"+d.id+" "+e[0].id,"a\x3dssrc:2 mslabel:"+d.id,"a\x3dssrc:2 label:"+e[0].id,"a\x3dssrc:3 cname:localVideo","a\x3dssrc:3 msid:"+d.id+" "+e[0].id,"a\x3dssrc:3 mslabel:"+d.id,"a\x3dssrc:3 label:"+e[0].id],d.push(""), d=d.join("\n")):(n.warn("No video tracks available in the video stream"),d="");a=new b({type:c,sdp:a+d})}else n.warn("Simulcast is only available in Chrome browser.");return a}function h(){"closed"===r.signalingState&&e('The peer connection object is in "closed" state. This is most likely due to an invocation of the dispose method before accepting in the dialogue');u&&m&&k.showLocalVideo();u&&u.getTracks().forEach(function(a){r.addTrack(a,u)});v&&v.getTracks().forEach(function(a){r.addTrack(a,v)}); var b=z.getBrowser();"sendonly"!==a||"Chrome"!==b.name&&"Chromium"!==b.name||39!==b.major||(a="sendrecv");e()}if(!(this instanceof b))return new b(a,d,e);b.super_.call(this);d instanceof Function&&(e=d,d=void 0);d=d||{};e=(e||f).bind(this);var k=this,m=d.localVideo,C=d.remoteVideo,u=d.videoStream,v=d.audioStream,t=d.mediaConstraints,r=d.peerConnection,G=d.sendSource||"webcam",K=d.dataChannelConfig,y=d.dataChannels||!1,H=uuidv4(),I=q({iceServers:w()},d.configuration),R=d.onicecandidate;if(R)this.on("icecandidate", R);if(R=d.oncandidategatheringdone)this.on("candidategatheringdone",R);var X=d.simulcast,M=d.multistream,N=new x.Interop,U=[],P=!1;Object.defineProperties(this,{peerConnection:{get:function(){return r}},id:{value:d.id||H,writable:!1},remoteVideo:{get:function(){return C}},localVideo:{get:function(){return m}},dataChannel:{get:function(){return J}},currentFrame:{get:function(){if(C){if(C.readyState<C.HAVE_CURRENT_DATA)throw Error("No video stream data available");var a=document.createElement("canvas"); a.width=C.videoWidth;a.height=C.videoHeight;a.getContext("2d").drawImage(C,0,0);return a}}}});if(!r&&(r=new RTCPeerConnection(I),y&&!J)){y="WebRtcPeer-"+k.id;I=void 0;K&&(y=K.id||y,I=K.options);var J=r.createDataChannel(y,I);K&&(J.onopen=K.onopen,J.onclose=K.onclose,J.onmessage=K.onmessage,J.onbufferedamountlow=K.onbufferedamountlow,J.onerror=K.onerror||f)}!r.getLocalStreams&&r.getSenders&&(r.getLocalStreams=function(){var a=new MediaStream;r.getSenders().forEach(function(b){a.addTrack(b.track)}); return[a]});!r.getRemoteStreams&&r.getReceivers&&(r.getRemoteStreams=function(){var a=new MediaStream;r.getReceivers().forEach(function(b){a.addTrack(b.track)});return[a]});l(function(a){a=a.candidate;if(D.listenerCount(k,"icecandidate")||D.listenerCount(k,"candidategatheringdone"))if(a){var b=M&&A?N.candidateToUnifiedPlan(a):a;"undefined"===typeof AdapterJS&&k.emit("icecandidate",b);P=!1}else P||("undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<=AdapterJS.webrtcDetectedVersion? D.prototype.emit("candidategatheringdone",b):k.emit("candidategatheringdone"),P=!0);else P||(U.push(a),a||(P=!0))},r);r.onaddstream=d.onaddstream;r.onnegotiationneeded=d.onnegotiationneeded;this.on("newListener",function(a,b){if("icecandidate"===a||"candidategatheringdone"===a)for(;U.length;){var c=U.shift();!c===("candidategatheringdone"===a)&&b(c)}});var Y=c(r);this.addIceCandidate=function(a,b){var c=M&&A?N.candidateToPlanB(a):new RTCIceCandidate(a);n.debug("Remote ICE candidate received",a);b= (b||f).bind(this);Y(c,b)};this.generateOffer=function(b){b=b.bind(this);if("recvonly"===a){var c=t&&"boolean"===typeof t.video?t.video:!0;(t&&"boolean"===typeof t.audio?t.audio:1)&&r.addTransceiver("audio",{direction:"recvonly"});c&&r.addTransceiver("video",{direction:"recvonly"})}if("undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<=AdapterJS.webrtcDetectedVersion){var d=function(){for(var a=(new Date).getTime(),c=0;1E7>c&&!(1E3<(new Date).getTime()-a);c++);a=r.localDescription; n.debug("Local description set\n",a.sdp);M&&A&&(a=N.toUnifiedPlan(a),n.debug("offer::origPlanB-\x3eUnifiedPlan",E(a)));b(null,a.sdp,k.processAnswer.bind(k))};r.createOffer(function(a){n.debug("Created SDP offer");n.debug("Local description set\n",r.localDescription);r.setLocalDescription(a,d,b)},b)}else r.createOffer().then(function(a){n.debug("Created SDP offer");a=p(a);return r.setLocalDescription(a)}).then(function(){var a=r.localDescription;n.debug("Local description set\n",a.sdp);M&&A&&(a=N.toUnifiedPlan(a), n.debug("offer::origPlanB-\x3eUnifiedPlan",E(a)));b(null,a.sdp,k.processAnswer.bind(k))}).catch(b)};this.getLocalSessionDescriptor=function(){return r.localDescription};this.getRemoteSessionDescriptor=function(){return r.remoteDescription};this.showLocalVideo=function(){m.srcObject=u;m.muted=!0;"undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<=AdapterJS.webrtcDetectedVersion&&(m=attachMediaStream(m,u))};this.send=function(a){J&&"open"===J.readyState?J.send(a):n.warn("Trying to send data over a non-existing or closed data channel")}; this.processAnswer=function(a,b){b=(b||f).bind(this);a=new RTCSessionDescription({type:"answer",sdp:a});M&&A&&(a=N.toPlanB(a),n.debug("asnwer::planB",E(a)));n.debug("SDP answer received, setting remote description");if("closed"===r.signalingState)return b("PeerConnection is closed");r.setRemoteDescription(a,function(){g();b()},b)};this.processOffer=function(a,b){b=b.bind(this);a=new RTCSessionDescription({type:"offer",sdp:a});M&&A&&(a=N.toPlanB(a),n.debug("offer::planB",E(a)));n.debug("SDP offer received, setting remote description"); if("closed"===r.signalingState)return b("PeerConnection is closed");r.setRemoteDescription(a).then(function(){return g()}).then(function(){return r.createAnswer()}).then(function(a){a=p(a);n.debug("Created SDP answer");return r.setLocalDescription(a)}).then(function(){var a=r.localDescription;M&&A&&(a=N.toUnifiedPlan(a),n.debug("answer::origPlanB-\x3eUnifiedPlan",E(a)));n.debug("Local description set\n",a.sdp);b(null,a.sdp)}).catch(b)};if("recvonly"===a||u||v)setTimeout(h,0);else{var V=function(a){void 0=== a&&(a=B);"undefined"!==typeof AdapterJS&&"IE"===AdapterJS.webrtcDetectedBrowser&&9<=AdapterJS.webrtcDetectedVersion?navigator.getUserMedia(a,function(a){u=a;h()},e):navigator.mediaDevices.getUserMedia(a).then(function(a){u=a;h()}).catch(e)};"webcam"===G?V(t):getScreenConstraints(G,function(a,b){if(a)return e(a);constraints=[t];constraints.unshift(b);V(q.apply(void 0,constraints))},H)}this.on("_dispose",function(){m&&(m.pause(),m.srcObject=null,"undefined"===typeof AdapterJS&&m.load(),m.muted=!1); C&&(C.pause(),C.srcObject=null,"undefined"===typeof AdapterJS&&C.load());k.removeAllListeners();void 0!==window.cancelChooseDesktopMedia&&window.cancelChooseDesktopMedia(H)})}function g(a){var b="get"+a+"Tracks";return{enumerable:!0,get:function(){if(this.peerConnection){var a=this.peerConnection.getLocalStreams();if(a.length){for(var c=0,d;d=a[c];c++){d=d[b]();for(var e=0,f;f=d[e];e++)if(!f.enabled)return!1}return!0}}},set:function(a){function c(b){b.enabled=a}this.peerConnection.getLocalStreams().forEach(function(a){a[b]().forEach(c)})}}} function e(a,b){if(!(this instanceof e))return new e(a,b);e.super_.call(this,"recvonly",a,b)}function u(a,b){if(!(this instanceof u))return new u(a,b);u.super_.call(this,"sendonly",a,b)}function v(a,b){if(!(this instanceof v))return new v(a,b);v.super_.call(this,"sendrecv",a,b)}var w=k("freeice");m=k("inherits");var t=k("ua-parser-js");window.uuidv4=k("uuid/v4");var p=k("hark"),D=k("events").EventEmitter,q=k("merge").recursive.bind(void 0,!0),x=k("sdp-translator"),n=window.Logger||console;try{k("kurento-browser-extensions")}catch(r){"undefined"=== typeof getScreenConstraints&&(n.warn("screen sharing is not available"),getScreenConstraints=function(a,b){b(Error("This library is not enabled for screen sharing"))})}var B={audio:!0,video:{width:640,framerate:15}},z=new t(window&&window.navigator?window.navigator.userAgent:""),F=z.getBrowser(),A=!1;if("Chrome"===F.name||"Chromium"===F.name)n.debug(F.name+": using SDP PlanB"),A=!0;var E=function(a){return"undefined"===typeof a||null===a?"":"type: "+a.type+"\r\n"+a.sdp};m(b,D);Object.defineProperties(b.prototype, {enabled:{enumerable:!0,get:function(){return this.audioEnabled&&this.videoEnabled},set:function(a){this.audioEnabled=this.videoEnabled=a}},audioEnabled:g("Audio"),videoEnabled:g("Video")});b.prototype.getLocalStream=function(a){if(this.peerConnection)return this.peerConnection.getLocalStreams()[a||0]};b.prototype.getRemoteStream=function(a){if(this.peerConnection)return this.peerConnection.getRemoteStreams()[a||0]};b.prototype.dispose=function(){n.debug("Disposing WebRtcPeer");var a=this.peerConnection, b=this.dataChannel;try{if(b){if("closed"===b.signalingState)return;b.close()}if(a){if("closed"===a.signalingState)return;a.getLocalStreams().forEach(d);a.close()}}catch(G){n.warn("Exception disposing webrtc peer "+G)}"undefined"===typeof AdapterJS&&this.emit("_dispose")};m(e,b);m(u,b);m(v,b);h.bufferizeCandidates=c;h.WebRtcPeerRecvonly=e;h.WebRtcPeerSendonly=u;h.WebRtcPeerSendrecv=v;h.hark=function(a,b){return p(a,b)};h.browser=F},{events:4,freeice:5,hark:8,inherits:9,"kurento-browser-extensions":10, merge:11,"sdp-translator":18,"ua-parser-js":21,"uuid/v4":24}],2:[function(k,m,h){window.addEventListener&&(m.exports=k("./index"))},{"./index":3}],3:[function(k,m,h){k=k("./WebRtcPeer");h.WebRtcPeer=k},{"./WebRtcPeer":1}],4:[function(k,m,h){function f(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=w(null),this._eventsCount=0);this._maxListeners=this._maxListeners||void 0}function a(a,b,c,d){var e;if("function"!==typeof c)throw new TypeError('"listener" argument must be a function'); if(e=a._events){e.newListener&&(a.emit("newListener",b,c.listener?c.listener:c),e=a._events);var g=e[b]}else e=a._events=w(null),a._eventsCount=0;g?("function"===typeof g?g=e[b]=d?[c,g]:[g,c]:d?g.unshift(c):g.push(c),g.warned||(c=void 0===a._maxListeners?f.defaultMaxListeners:a._maxListeners)&&0<c&&g.length>c&&(g.warned=!0,c=Error("Possible EventEmitter memory leak detected. "+g.length+' "'+String(b)+'" listeners added. Use emitter.setMaxListeners() to increase limit.'),c.name="MaxListenersExceededWarning", c.emitter=a,c.type=b,c.count=g.length,"object"===typeof console&&console.warn&&console.warn("%s: %s",c.name,c.message))):(e[b]=c,++a._eventsCount);return a}function d(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0], arguments[1],arguments[2]);default:for(var a=Array(arguments.length),b=0;b<a.length;++b)a[b]=arguments[b];this.listener.apply(this.target,a)}}function c(a,b,c){a={fired:!1,wrapFn:void 0,target:a,type:b,listener:c};b=p.call(d,a);b.listener=c;return a.wrapFn=b}function l(a,b,c){a=a._events;if(!a)return[];b=a[b];if(!b)return[];if("function"===typeof b)return c?[b.listener||b]:[b];if(c)for(c=Array(b.length),a=0;a<c.length;++a)c[a]=b[a].listener||b[a];else c=g(b,b.length);return c}function b(a){var b= this._events;if(b){a=b[a];if("function"===typeof a)return 1;if(a)return a.length}return 0}function g(a,b){for(var c=Array(b),d=0;d<b;++d)c[d]=a[d];return c}function e(a){var b=function(){};b.prototype=a;return new b}function u(a){var b=[],c;for(c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return c}function v(a){var b=this;return function(){return b.apply(a,arguments)}}var w=Object.create||e,t=Object.keys||u,p=Function.prototype.bind||v;m.exports=f;f.EventEmitter=f;f.prototype._events= void 0;f.prototype._maxListeners=void 0;var D=10;try{k={};Object.defineProperty&&Object.defineProperty(k,"x",{value:0});var q=0===k.x}catch(x){q=!1}q?Object.defineProperty(f,"defaultMaxListeners",{enumerable:!0,get:function(){return D},set:function(a){if("number"!==typeof a||0>a||a!==a)throw new TypeError('"defaultMaxListeners" must be a positive number');D=a}}):f.defaultMaxListeners=D;f.prototype.setMaxListeners=function(a){if("number"!==typeof a||0>a||isNaN(a))throw new TypeError('"n" argument must be a positive number'); this._maxListeners=a;return this};f.prototype.getMaxListeners=function(){return void 0===this._maxListeners?f.defaultMaxListeners:this._maxListeners};f.prototype.emit=function(a){var b,c,d;var e="error"===a;if(d=this._events)e=e&&null==d.error;else if(!e)return!1;if(e){1<arguments.length&&(b=arguments[1]);if(b instanceof Error)throw b;d=Error('Unhandled "error" event. ('+b+")");d.context=b;throw d;}b=d[a];if(!b)return!1;d="function"===typeof b;var f=arguments.length;switch(f){case 1:if(d)b.call(this); else for(d=b.length,b=g(b,d),e=0;e<d;++e)b[e].call(this);break;case 2:e=arguments[1];if(d)b.call(this,e);else for(d=b.length,b=g(b,d),f=0;f<d;++f)b[f].call(this,e);break;case 3:e=arguments[1];f=arguments[2];if(d)b.call(this,e,f);else for(d=b.length,b=g(b,d),c=0;c<d;++c)b[c].call(this,e,f);break;case 4:e=arguments[1];f=arguments[2];c=arguments[3];if(d)b.call(this,e,f,c);else{d=b.length;b=g(b,d);for(var l=0;l<d;++l)b[l].call(this,e,f,c)}break;default:e=Array(f-1);for(c=1;c<f;c++)e[c-1]=arguments[c]; if(d)b.apply(this,e);else for(d=b.length,b=g(b,d),f=0;f<d;++f)b[f].apply(this,e)}return!0};f.prototype.addListener=function(b,c){return a(this,b,c,!1)};f.prototype.on=f.prototype.addListener;f.prototype.prependListener=function(b,c){return a(this,b,c,!0)};f.prototype.once=function(a,b){if("function"!==typeof b)throw new TypeError('"listener" argument must be a function');this.on(a,c(this,a,b));return this};f.prototype.prependOnceListener=function(a,b){if("function"!==typeof b)throw new TypeError('"listener" argument must be a function'); this.prependListener(a,c(this,a,b));return this};f.prototype.removeListener=function(a,b){var c;if("function"!==typeof b)throw new TypeError('"listener" argument must be a function');var d=this._events;if(!d)return this;var e=d[a];if(!e)return this;if(e===b||e.listener===b)0===--this._eventsCount?this._events=w(null):(delete d[a],d.removeListener&&this.emit("removeListener",a,e.listener||b));else if("function"!==typeof e){var f=-1;for(c=e.length-1;0<=c;c--)if(e[c]===b||e[c].listener===b){var g=e[c].listener; f=c;break}if(0>f)return this;if(0===f)e.shift();else{c=f+1;for(var l=e.length;c<l;f+=1,c+=1)e[f]=e[c];e.pop()}1===e.length&&(d[a]=e[0]);d.removeListener&&this.emit("removeListener",a,g||b)}return this};f.prototype.removeAllListeners=function(a){var b=this._events;if(!b)return this;if(!b.removeListener)return 0===arguments.length?(this._events=w(null),this._eventsCount=0):b[a]&&(0===--this._eventsCount?this._events=w(null):delete b[a]),this;if(0===arguments.length){var c=t(b);for(b=0;b<c.length;++b){var d= c[b];"removeListener"!==d&&this.removeAllListeners(d)}this.removeAllListeners("removeListener");this._events=w(null);this._eventsCount=0;return this}c=b[a];if("function"===typeof c)this.removeListener(a,c);else if(c)for(b=c.length-1;0<=b;b--)this.removeListener(a,c[b]);return this};f.prototype.listeners=function(a){return l(this,a,!0)};f.prototype.rawListeners=function(a){return l(this,a,!1)};f.listenerCount=function(a,c){return"function"===typeof a.listenerCount?a.listenerCount(c):b.call(a,c)};f.prototype.listenerCount= b;f.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]}},{}],5:[function(k,m,h){var f=k("normalice");m.exports=function(a){function d(a,d){for(var b=[],g=[].concat(c[a]),l;g.length&&b.length<d;)l=Math.random()*g.length|0,b=b.concat(g.splice(l,1));return b.map(function(b){return"string"===typeof b||b instanceof String?f(a+":"+b):b})}var c={stun:(a||{}).stun||k("./stun.json"),turn:(a||{}).turn||k("./turn.json")},l=(a||{}).turnCount||0;a=[].concat(d("stun",(a|| {}).stunCount||2));l&&(a=a.concat(d("turn",l)));return a}},{"./stun.json":6,"./turn.json":7,normalice:12}],6:[function(k,m,h){m.exports="stun.l.google.com:19302 stun1.l.google.com:19302 stun2.l.google.com:19302 stun3.l.google.com:19302 stun4.l.google.com:19302 stun.ekiga.net stun.ideasip.com stun.schlund.de stun.stunprotocol.org:3478 stun.voiparound.com stun.voipbuster.com stun.voipstunt.com stun.voxgratia.org".split(" ")},{}],7:[function(k,m,h){m.exports=[]},{}],8:[function(k,m,h){var f=k("wildemitter"), a;"undefined"!==typeof window&&(a=window.AudioContext||window.webkitAudioContext);var d=null;m.exports=function(c,l){var b=new f;if(!a)return b;l=l||{};var g=l.smoothing||.1,e=l.interval||50,h=l.threshold,k=l.play,m=l.history||10,t=!0;d=l.audioContext||d||new a;var p=d.createAnalyser();p.fftSize=512;p.smoothingTimeConstant=g;var D=new Float32Array(p.frequencyBinCount);c.jquery&&(c=c[0]);if(c instanceof HTMLAudioElement||c instanceof HTMLVideoElement){var q=d.createMediaElementSource(c);"undefined"=== typeof k&&(k=!0)}else q=d.createMediaStreamSource(c);h=h||-50;q.connect(p);k&&p.connect(d.destination);b.speaking=!1;b.suspend=function(){return d.suspend()};b.resume=function(){return d.resume()};Object.defineProperty(b,"state",{get:function(){return d.state}});d.onstatechange=function(){b.emit("state_change",d.state)};b.setThreshold=function(a){h=a};b.setInterval=function(a){e=a};b.stop=function(){t=!1;b.emit("volume_change",-100,h);b.speaking&&(b.speaking=!1,b.emit("stopped_speaking"));p.disconnect(); q.disconnect()};b.speakingHistory=[];for(c=0;c<m;c++)b.speakingHistory.push(0);var x=function(){setTimeout(function(){if(t){var a=-Infinity;p.getFloatFrequencyData(D);for(var c=4,d=D.length;c<d;c++)D[c]>a&&0>D[c]&&(a=D[c]);b.emit("volume_change",a,h);c=0;if(a>h&&!b.speaking){for(d=b.speakingHistory.length-3;d<b.speakingHistory.length;d++)c+=b.speakingHistory[d];2<=c&&(b.speaking=!0,b.emit("speaking"))}else if(a<h&&b.speaking){for(d=0;d<b.speakingHistory.length;d++)c+=b.speakingHistory[d];0==c&&(b.speaking= !1,b.emit("stopped_speaking"))}b.speakingHistory.shift();b.speakingHistory.push(0+(a>h));x()}},e)};x();return b}},{wildemitter:25}],9:[function(k,m,h){m.exports="function"===typeof Object.create?function(f,a){a&&(f.super_=a,f.prototype=Object.create(a.prototype,{constructor:{value:f,enumerable:!1,writable:!0,configurable:!0}}))}:function(f,a){if(a){f.super_=a;var d=function(){};d.prototype=a.prototype;f.prototype=new d;f.prototype.constructor=f}}},{}],10:[function(k,m,h){},{}],11:[function(k,m,h){(function(f){function a(b, d){if("object"!==c(b))return d;for(var e in d)"object"===c(b[e])&&"object"===c(d[e])?b[e]=a(b[e],d[e]):b[e]=d[e];return b}function d(b,d,e){var f=e[0],g=e.length;if(b||"object"!==c(f))f={};for(var h=0;h<g;++h){var k=e[h];if("object"===c(k))for(var p in k)if("__proto__"!==p){var m=b?l.clone(k[p]):k[p];f[p]=d?a(f[p],m):m}}return f}function c(a){return{}.toString.call(a).slice(8,-1).toLowerCase()}var l=function(a){return d(!0===a,!1,arguments)};l.recursive=function(a){return d(!0===a,!0,arguments)}; l.clone=function(a){var b=a,d=c(a),f;if("array"===d)for(b=[],d=a.length,f=0;f<d;++f)b[f]=l.clone(a[f]);else if("object"===d)for(f in b={},a)b[f]=l.clone(a[f]);return b};f?m.exports=l:window.merge=l})("object"===typeof m&&m&&"object"===typeof m.exports&&m.exports)},{}],12:[function(k,m,h){var f=["stun:","turn:"];m.exports=function(a){var d=(a||{}).url||a,c={};if("string"!=typeof d&&!(d instanceof String))return a;d=d.trim();var l=f[f.indexOf(d.slice(0,5))];if(!l)return a;d=d.slice(5);var b=d.split("@"); c.username=a.username;c.credential=a.credential;1<b.length&&(d=b[1],b=b[0].split(":"),c.username=b[0],c.credential=(a||{}).credential||b[1]||"");c.url=l+d;c.urls=[c.url];return c}},{}],13:[function(k,m,h){var f=m.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:"username sessionId sessionVersion netType ipVer address".split(" "),format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}], p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w\/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/, names:["payload","codec","rate","encoding"],format:function(a){return a.encoding?"rtpmap:%d %s/%s/%s":a.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(a){return null!=a.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/, names:["payload","value"],format:"rtcp-fb:%d trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(a){return null!=a.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:([\w_\/]*) (\S*)(?: (\S*))?/,names:["value","uri","config"],format:function(a){return null!=a.config?"extmap:%s %s %s":"extmap:%s %s"}},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"], format:function(a){return null!=a.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"}, {name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?/,names:"foundation component transport priority ip port type raddr rport tcptype generation".split(" "),format:function(a){var d="candidate:%s %d %s %d %s %d typ %s"+(null!=a.raddr?" raddr %s rport %d": "%v%v");d+=null!=a.tcptype?" tcptype %s":"%v";null!=a.generation&&(d+=" generation %d");return d}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_]*):(.*)/,names:["id","attribute","value"],format:"ssrc:%d %s:%s"},{push:"ssrcGroups",reg:/^ssrc-group:(\w*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"}, {name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{push:"invalid",names:["value"]}]};Object.keys(f).forEach(function(a){f[a].forEach(function(a){a.reg||(a.reg=/(.*)/);a.format||(a.format="%s")})})},{}],14:[function(k,m,h){m=k("./parser");k=k("./writer");h.write=k;h.parse=m.parse; h.parseFmtpConfig=m.parseFmtpConfig;h.parsePayloads=m.parsePayloads;h.parseRemoteCandidates=m.parseRemoteCandidates},{"./parser":15,"./writer":16}],15:[function(k,m,h){var f=function(a){return String(Number(a))===a?Number(a):a},a=k("./grammar"),d=RegExp.prototype.test.bind(/^([a-z])=(.*)/);h.parse=function(c){var b={},g=[],e=b;c.split(/(\r\n|\r|\n)/).filter(d).forEach(function(b){var c=b[0],d=b.slice(2);"m"===c&&(g.push({rtp:[],fmtp:[]}),e=g[g.length-1]);for(b=0;b<(a[c]||[]).length;b+=1){var l=a[c][b]; if(l.reg.test(d)){c=l;b=e;l=d;d=c.name&&c.names;c.push&&!b[c.push]?b[c.push]=[]:d&&!b[c.name]&&(b[c.name]={});var d=c.push?{}:d?b[c.name]:b,l=l.match(c.reg),h=d,k=c.names,m=c.name;if(m&&!k)h[m]=f(l[1]);else for(m=0;m<k.length;m+=1)null!=l[m+1]&&(h[k[m]]=f(l[m+1]));c.push&&b[c.push].push(d);break}}});b.media=g;return b};var c=function(a,b){b=b.split("\x3d");2===b.length&&(a[b[0]]=f(b[1]));return a};h.parseFmtpConfig=function(a){return a.split(/\;\s?/).reduce(c,{})};h.parsePayloads=function(a){return a.split(" ").map(Number)}; h.parseRemoteCandidates=function(a){var b=[];a=a.split(" ").map(f);for(var c=0;c<a.length;c+=3)b.push({component:a[c],ip:a[c+1],port:a[c+2]});return b}},{"./grammar":13}],16:[function(k,m,h){var f=k("./grammar"),a=/%[sdv%]/g,d=function(b){var c=1,d=arguments,f=d.length;return b.replace(a,function(a){if(c>=f)return a;var b=d[c];c+=1;switch(a){case "%%":return"%";case "%s":return String(b);case "%d":return Number(b);case "%v":return""}})},c=function(a,b,c){var e=b.format instanceof Function?b.format(b.push? c:c[b.name]):b.format;a=[a+"\x3d"+e];if(b.names)for(e=0;e<b.names.length;e+=1){var f=b.names[e];b.name?a.push(c[b.name][f]):a.push(c[b.names[e]])}else a.push(c[b.name]);return d.apply(null,a)},l="vosiuepcbtrza".split(""),b=["i","c","b","a"];m.exports=function(a,d){d=d||{};null==a.version&&(a.version=0);null==a.name&&(a.name=" ");a.media.forEach(function(a){null==a.payloads&&(a.payloads="")});var e=d.innerOrder||b,g=[];(d.outerOrder||l).forEach(function(b){f[b].forEach(function(d){d.name in a&&null!= a[d.name]?g.push(c(b,d,a)):d.push in a&&null!=a[d.push]&&a[d.push].forEach(function(a){g.push(c(b,d,a))})})});a.media.forEach(function(a){g.push(c("m",f.m[0],a));e.forEach(function(b){f[b].forEach(function(d){d.name in a&&null!=a[d.name]?g.push(c(b,d,a)):d.push in a&&null!=a[d.push]&&a[d.push].forEach(function(a){g.push(c(b,d,a))})})})});return g.join("\r\n")+"\r\n"}},{"./grammar":13}],17:[function(k,m,h){m.exports=function a(d){if(!d||this.length!=d.length)return!1;for(var c=0,l=this.length;c<l;c++)if(this[c]instanceof Array&&d[c]instanceof Array){if(!a.apply(this[c],[d[c]]))return!1}else if(this[c]!=d[c])return!1;return!0}},{}],18:[function(k,m,h){h.Interop=k("./interop")},{"./interop":19}],19:[function(k,m,h){function f(){this.cache={mlB2UMap:{},mlU2BMap:{}}}var a=k("./transform"),d=k("./array-equals");m.exports=f;f.prototype.candidateToUnifiedPlan=function(a){a=new RTCIceCandidate(a);a.sdpMLineIndex=this.cache.mlB2UMap[a.sdpMLineIndex];return a};f.prototype.candidateToPlanB=function(a){a=new RTCIceCandidate(a); if(0===a.sdpMid.indexOf("audio"))a.sdpMid="audio";else if(0===a.sdpMid.indexOf("video"))a.sdpMid="video";else throw Error("candidate with "+a.sdpMid+" not allowed");a.sdpMLineIndex=this.cache.mlU2BMap[a.sdpMLineIndex];return a};f.prototype.getFirstSendingIndexFromAnswer=function(c){if(!this.cache.answer)return null;var d=a.parse(this.cache.answer);if(d&&d.media&&Array.isArray(d.media))for(var b=0;b<d.media.length;b++)if(d.media[b].type==c&&(!d.media[b].direction||"sendrecv"===d.media[b].direction|| "sendonly"===d.media[b].direction))return b;return null};f.prototype.toPlanB=function(c){var d=this;if("object"!==typeof c||null===c||"string"!==typeof c.sdp)return console.warn("An empty description was passed as an argument."),c;var b=a.parse(c.sdp);if("undefined"===typeof b.media||!Array.isArray(b.media)||0===b.media.length)return console.warn("The description has no media."),c;if(3>=b.media.length&&b.media.every(function(a){return-1!==["video","audio","data"].indexOf(a.mid)}))return console.warn("This description does not look like Unified Plan."), c;for(var f=c.sdp,e=!1,h=0;h<b.media.length;h++)b.media[h].rtp.forEach(function(b){if("NULL"===b.codec){e=!0;var c=a.parse(d.cache.offer);b.codec=c.media[h].rtp[0].codec}});e&&(f=a.write(b));this.cache[c.type]=f;var k=b.media;b.media=[];var m={},t=[];k.forEach(function(a){if(("string"!==typeof a.rtcpMux||"rtcp-mux"!==a.rtcpMux)&&"inactive"!==a.direction)throw Error("Cannot convert to Plan B because m-lines without the rtcp-mux attribute were found.");if("undefined"===typeof m[a.type]||"inactive"=== m[a.type].direction)m[a.type]=a;if(a.protocol!=m[a.type].protocol)throw Error("Cannot convert to Plan B because m-lines have different protocols and this library does not have support for that");if(a.payloads!=m[a.type].payloads)throw Error("Cannot convert to Plan B because m-lines have different payloads and this library does not have support for that");});k.forEach(function(a){"application"===a.type?(b.media.push(a),t.push(a.mid)):("object"===typeof a.sources&&Object.keys(a.sources).forEach(function(b){"object"!== typeof m[a.type].sources&&(m[a.type].sources={});m[a.type].sources[b]=a.sources[b];"undefined"!==typeof a.msid&&(m[a.type].sources[b].msid=a.msid)}),"undefined"!==typeof a.ssrcGroups&&Array.isArray(a.ssrcGroups)&&("undefined"!==typeof m[a.type].ssrcGroups&&Array.isArray(m[a.type].ssrcGroups)||(m[a.type].ssrcGroups=[]),m[a.type].ssrcGroups=m[a.type].ssrcGroups.concat(a.ssrcGroups)),m[a.type]===a&&(a.mid=a.type,delete a.bundleOnly,delete a.msid,a.type==k[0].type?(t.unshift(a.type),b.media.unshift(a)): (t.push(a.type),b.media.push(a))))});"undefined"!==typeof b.groups&&b.groups.some(function(a){if("BUNDLE"===a.type)return a.mids=t.join(" "),!0});b.msidSemantic={semantic:"WMS",token:"*"};f=a.write(b);return new RTCSessionDescription({type:c.type,sdp:f})};f.prototype.toUnifiedPlan=function(c){var f=this;if("object"!==typeof c||null===c||"string"!==typeof c.sdp)return console.warn("An empty description was passed as an argument."),c;var b=a.parse(c.sdp);if("undefined"===typeof b.media||!Array.isArray(b.media)|| 0===b.media.length)return console.warn("The description has no media."),c;if(3<b.media.length||!b.media.every(function(a){return-1!==["video","audio","data"].indexOf(a.mid)}))return console.warn("This description does not look like Plan B."),c;var g=[];b.media.forEach(function(a){g.push(a.mid)});var e=!1;"undefined"!==typeof b.groups&&Array.isArray(b.groups)&&(e=b.groups.every(function(a){return"BUNDLE"!==a.type||d.apply(a.mids.sort(),[g.sort()])}));if(!e){var h=!1;b.media.forEach(function(a){"inactive"!== a.direction&&(h=!0)});if(h)throw Error("Cannot convert to Unified Plan because m-lines that are not bundled were found.");}if("answer"===c.type)e="offer";else if("offer"===c.type)e="answer";else throw Error("Type '"+c.type+"' not supported.");var k;"undefined"!==typeof this.cache[e]&&(k=a.parse(this.cache[e]));var m={audio:{},video:{}},t={},p=0,D=0,q={},x,n,B,z,F={},A={},E={};b.media.forEach(function(a){if(("string"!==typeof a.rtcpMux||"rtcp-mux"!==a.rtcpMux)&&"inactive"!==a.direction)throw Error("Cannot convert to Unified Plan because m-lines without the rtcp-mux attribute were found."); if("application"===a.type)t[a.mid]=a;else{var b=a.sources,d=a.ssrcGroups,e=a.port;"undefined"!=typeof a.candidates&&(x="undefined"!=typeof x?x.concat(a.candidates):a.candidates);if("undefined"!=typeof n&&"undefined"!=typeof a.iceUfrag&&n!=a.iceUfrag)throw Error("Only BUNDLE supported, iceUfrag must be the same for all m-lines.\n\tLast iceUfrag: "+n+"\n\tNew iceUfrag: "+a.iceUfrag);"undefined"!=typeof a.iceUfrag&&(n=a.iceUfrag);if("undefined"!=typeof B&&"undefined"!=typeof a.icePwd&&B!=a.icePwd)throw Error("Only BUNDLE supported, icePwd must be the same for all m-lines.\n\tLast icePwd: "+ B+"\n\tNew icePwd: "+a.icePwd);"undefined"!=typeof a.icePwd&&(B=a.icePwd);if("undefined"!=typeof z&&"undefined"!=typeof a.fingerprint&&(z.type!=a.fingerprint.type||z.hash!=a.fingerprint.hash))throw Error("Only BUNDLE supported, fingerprint must be the same for all m-lines.\n\tLast fingerprint: "+JSON.stringify(z)+"\n\tNew fingerprint: "+JSON.stringify(a.fingerprint));"undefined"!=typeof a.fingerprint&&(z=a.fingerprint);F[a.type]=a.payloads;A[a.type]=a.rtcpFb;E[a.type]=a.rtp;var g={};"undefined"!== typeof d&&Array.isArray(d)&&d.forEach(function(a){"undefined"!==typeof a.ssrcs&&Array.isArray(a.ssrcs)&&a.ssrcs.forEach(function(b){"undefined"===typeof g[b]&&(g[b]=[]);g[b].push(a)})});var h={};"object"===typeof b?(delete a.sources,delete a.ssrcGroups,delete a.candidates,delete a.iceUfrag,delete a.icePwd,delete a.fingerprint,delete a.port,delete a.mid,Object.keys(b).forEach(function(d){if("offer"!==c.type||b[d].msid)if("undefined"!==typeof g[d]&&Array.isArray(g[d])&&g[d].some(function(a){return a.ssrcs.some(function(a){if("object"=== typeof h[a])return l=h[a],!0})}),"object"===typeof l)l.sources[d]=b[d],delete b[d].msid;else{var l=Object.create(a);h[d]=l;"undefined"!==typeof b[d].msid&&(l.msid=b[d].msid,delete b[d].msid);l.sources={};l.sources[d]=b[d];l.ssrcGroups=g[d];"undefined"!==typeof k&&"undefined"!==typeof k.media&&Array.isArray(k.media)&&k.media.forEach(function(a){"object"===typeof a.sources&&Object.keys(a.sources).forEach(function(b){b===d&&(l.mid=a.mid)})});"undefined"===typeof l.mid&&(l.mid=[a.type,"-",d].join("")); l.candidates=x;l.iceUfrag=n;l.icePwd=B;l.fingerprint=z;l.port=e;t[l.mid]=l;q[D]=l.sources;f.cache.mlU2BMap[D]=p;"undefined"===typeof f.cache.mlB2UMap[p]&&(f.cache.mlB2UMap[p]=D);D++}else m[a.type][d]=b[d]})):(a.candidates=x,a.iceUfrag=n,a.icePwd=B,a.fingerprint=z,a.port=e,t[a.mid]=a,f.cache.mlU2BMap[D]=p,"undefined"===typeof f.cache.mlB2UMap[p]&&(f.cache.mlB2UMap[p]=D));p++}});b.media=[];g=[];if("answer"===c.type)for(e=0;e<k.media.length;e++){var r=k.media[e];delete r.msid;delete r.sources;delete r.ssrcGroups; "undefined"===typeof q[e]?r.direction&&"sendrecv"!==r.direction?"sendonly"===r.direction&&(r.direction="inactive"):r.direction="recvonly":r.direction&&"sendrecv"!==r.direction?"recvonly"===r.direction&&(r.direction="sendonly"):r.direction="sendrecv";r.sources=q[e];r.candidates=x;r.iceUfrag=n;r.icePwd=B;r.fingerprint=z;r.rtp=E[r.type];r.payloads=F[r.type];r.rtcpFb=A[r.type];b.media.push(r);"string"===typeof r.mid&&g.push(r.mid)}else"undefined"!==typeof k&&"undefined"!==typeof k.media&&Array.isArray(k.media)&& k.media.forEach(function(a){g.push(a.mid);"undefined"!==typeof t[a.mid]?b.media.push(t[a.mid]):(delete a.msid,delete a.sources,delete a.ssrcGroups,a.direction&&"sendrecv"!==a.direction||(a.direction="sendonly"),a.direction&&"recvonly"!==a.direction||(a.direction="inactive"),"undefined"!==typeof a.setup&&("active"===a.setup?a.setup="passive":"passive"===a.setup&&(a.setup="active")),b.media.push(a))}),Object.keys(t).forEach(function(a){if(-1===g.indexOf(a))if(g.push(a),"recvonly"===t[a].direction){var c= !1;b.media.some(function(b){if(("sendrecv"===b.direction||"sendonly"===b.direction)&&b.type===t[a].type)return Object.keys(t[a].sources).forEach(function(c){b.sources[c]=t[a].sources[c]}),c=!0});c||b.media.push(t[a])}else b.media.push(t[a])});["audio","video"].forEach(function(a){if(b&&b.media&&Array.isArray(b.media)){var c=null;if(0<Object.keys(m[a]).length&&(c=f.getFirstSendingIndexFromAnswer(a),null===c))for(var d=0;d<b.media.length;d++)if(b.media[d].type===a){c=d;break}if(c&&b.media.length>c){var e= b.media[c];Object.keys(m[a]).forEach(function(b){e.sources&&e.sources[b]&&console.warn("Replacing an existing SSRC.");e.sources||(e.sources={});e.sources[b]=m[a][b]})}}});"undefined"!==typeof b.groups&&b.groups.some(function(a){if("BUNDLE"===a.type)return a.mids=g.join(" "),!0});b.msidSemantic={semantic:"WMS",token:"*"};e=a.write(b);this.cache[c.type]=e;return new RTCSessionDescription({type:c.type,sdp:e})}},{"./array-equals":17,"./transform":20}],20:[function(k,m,h){var f=k("sdp-transform");h.write= function(a,d){"undefined"!==typeof a&&"undefined"!==typeof a.media&&Array.isArray(a.media)&&a.media.forEach(function(a){"undefined"!==typeof a.sources&&0!==Object.keys(a.sources).length&&(a.ssrcs=[],Object.keys(a.sources).forEach(function(c){var b=a.sources[c];Object.keys(b).forEach(function(d){a.ssrcs.push({id:c,attribute:d,value:b[d]})})}),delete a.sources);"undefined"!==typeof a.ssrcGroups&&Array.isArray(a.ssrcGroups)&&a.ssrcGroups.forEach(function(a){"undefined"!==typeof a.ssrcs&&Array.isArray(a.ssrcs)&& (a.ssrcs=a.ssrcs.join(" "))})});"undefined"!==typeof a&&"undefined"!==typeof a.groups&&Array.isArray(a.groups)&&a.groups.forEach(function(a){"undefined"!==typeof a.mids&&Array.isArray(a.mids)&&(a.mids=a.mids.join(" "))});return f.write(a,d)};h.parse=function(a){a=f.parse(a);"undefined"!==typeof a&&"undefined"!==typeof a.media&&Array.isArray(a.media)&&a.media.forEach(function(a){"undefined"!==typeof a.ssrcs&&Array.isArray(a.ssrcs)&&(a.sources={},a.ssrcs.forEach(function(c){a.sources[c.id]||(a.sources[c.id]= {});a.sources[c.id][c.attribute]=c.value}),delete a.ssrcs);"undefined"!==typeof a.ssrcGroups&&Array.isArray(a.ssrcGroups)&&a.ssrcGroups.forEach(function(a){"string"===typeof a.ssrcs&&(a.ssrcs=a.ssrcs.split(" "))})});"undefined"!==typeof a&&"undefined"!==typeof a.groups&&Array.isArray(a.groups)&&a.groups.forEach(function(a){"string"===typeof a.mids&&(a.mids=a.mids.split(" "))});return a}},{"sdp-transform":14}],21:[function(k,m,h){(function(f,a){var d={extend:function(a,b){var c={},d;for(d in a)c[d]= b[d]&&0===b[d].length%2?b[d].concat(a[d]):a[d];return c},has:function(a,b){return"string"===typeof a?-1!==b.toLowerCase().indexOf(a.toLowerCase()):!1},lowerize:function(a){return a.toLowerCase()},major:function(b){return"string"===typeof b?b.replace(/[^\d\.]/g,"").split(".")[0]:a},trim:function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},c=function(b,c){for(var d=0,e,f,g,h,l,k;d<c.length&&!l;){var m=c[d],t=c[d+1];for(e=f=0;e<m.length&&!l;)if(l=m[e++].exec(b))for(g=0;g<t.length;g++)k= l[++f],h=t[g],"object"===typeof h&&0<h.length?2==h.length?this[h[0]]="function"==typeof h[1]?h[1].call(this,k):h[1]:3==h.length?this[h[0]]="function"!==typeof h[1]||h[1].exec&&h[1].test?k?k.replace(h[1],h[2]):a:k?h[1].call(this,k,h[2]):a:4==h.length&&(this[h[0]]=k?h[3].call(this,k.replace(h[1],h[2])):a):this[h]=k?k:a;d+=2}},l=function(b,c){for(var e in c)if("object"===typeof c[e]&&0<c[e].length)for(var f=0;f<c[e].length;f++){if(d.has(c[e][f],b))return"?"===e?a:e}else if(d.has(c[e],b))return"?"=== e?a:e;return b},b={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2E3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},g={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],["name","version"],[/(opios)[\/\s]+([\w\.]+)/i],[["name","Opera Mini"],"version"],[/\s(opr)\/([\w\.]+)/i],[["name","Opera"],"version"],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, /(avant\s|iemobile|slim)(?:browser)?[\/\s]?([\w\.]*)/i,/(bidubrowser|baidubrowser)[\/\s]?([\w\.]+)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]*)/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i],["name","version"],[/(konqueror)\/([\w\.]+)/i],[["name","Konqueror"],"version"],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[["name","IE"],"version"],[/(edge|edgios|edga|edg)\/((\d+)?[\w\.]+)/i],[["name", "Edge"],"version"],[/(yabrowser)\/([\w\.]+)/i],[["name","Yandex"],"version"],[/(Avast)\/([\w\.]+)/i],[["name","Avast Secure Browser"],"version"],[/(AVG)\/([\w\.]+)/i],[["name","AVG Secure Browser"],"version"],[/(puffin)\/([\w\.]+)/i],[["name","Puffin"],"version"],[/(focus)\/([\w\.]+)/i],[["name","Firefox Focus"],"version"],[/(opt)\/([\w\.]+)/i],[["name","Opera Touch"],"version"],[/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[["name","UCBrowser"],"version"],[/(comodo_dragon)\/([\w\.]+)/i], [["name",/_/g," "],"version"],[/(windowswechat qbcore)\/([\w\.]+)/i],[["name","WeChat(Win) Desktop"],"version"],[/(micromessenger)\/([\w\.]+)/i],[["name","WeChat"],"version"],[/(brave)\/([\w\.]+)/i],[["name","Brave"],"version"],[/(qqbrowserlite)\/([\w\.]+)/i],["name","version"],[/(QQ)\/([\d\.]+)/i],["name","version"],[/m?(qqbrowser)[\/\s]?([\w\.]+)/i],["name","version"],[/(baiduboxapp)[\/\s]?([\w\.]+)/i],["name","version"],[/(2345Explorer)[\/\s]?([\w\.]+)/i],["name","version"],[/(MetaSr)[\/\s]?([\w\.]+)/i], ["name"],[/(LBBROWSER)/i],["name"],[/xiaomi\/miuibrowser\/([\w\.]+)/i],["version",["name","MIUI Browser"]],[/;fbav\/([\w\.]+);/i],["version",["name","Facebook"]],[/safari\s(line)\/([\w\.]+)/i,/android.+(line)\/([\w\.]+)\/iab/i],["name","version"],[/headlesschrome(?:\/([\w\.]+)|\s)/i],["version",["name","Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[["name",/(.+)/,"$1 WebView"],"version"],[/((?:oculus|samsung)browser)\/([\w\.]+)/i],[["name",/(.+(?:g|us))(.+)/,"$1 $2"],"version"],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i], ["version",["name","Android Browser"]],[/(sailfishbrowser)\/([\w\.]+)/i],[["name","Sailfish Browser"],"version"],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],["name","version"],[/(dolfin)\/([\w\.]+)/i],[["name","Dolphin"],"version"],[/(qihu|qhbrowser|qihoobrowser|360browser)/i],[["name","360 Browser"]],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[["name","Chrome"],"version"],[/(coast)\/([\w\.]+)/i],[["name","Opera Coast"],"version"],[/fxios\/([\w\.-]+)/i],["version",["name","Firefox"]], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],["version",["name","Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],["version","name"],[/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[["name","GSA"],"version"],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],["name",["version",l,{"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],["name","version"],[/(navigator|netscape)\/([\w\.-]+)/i], [["name","Netscape"],"version"],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]*)/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],["name","version"]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i], [["architecture","amd64"]],[/(ia32(?=;))/i],[["architecture",d.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[["architecture","ia32"]],[/windows\s(ce|mobile);\sppc;/i],[["architecture","arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[["architecture",/ower/,"",d.lowerize]],[/(sun4\w)[;\)]/i],[["architecture","sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[["architecture",d.lowerize]]],device:[[/\((ipad|playbook);[\w\s\),;-]+(rim|apple)/i], ["model","vendor",["type","tablet"]],[/applecoremedia\/[\w\.]+ \((ipad)/],["model",["vendor","Apple"],["type","tablet"]],[/(apple\s{0,1}tv)/i],[["model","Apple TV"],["vendor","Apple"],["type","smarttv"]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],["vendor","model",["type","tablet"]],[/(kf[A-z]+)\sbuild\/.+silk\//i],["model",["vendor","Amazon"],["type","tablet"]],[/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i], [["model",l,{"Fire Phone":["SD","KF"]}],["vendor","Amazon"],["type","mobile"]],[/android.+aft([bms])\sbuild/i],["model",["vendor","Amazon"],["type","smarttv"]],[/\((ip[honed|\s\w*]+);.+(apple)/i],["model","vendor",["type","mobile"]],[/\((ip[honed|\s\w*]+);/i],["model",["vendor","Apple"],["type","mobile"]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],["vendor","model",["type","mobile"]], [/\(bb10;\s(\w+)/i],["model",["vendor","BlackBerry"],["type","mobile"]],[/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone|p00c)/i],["model",["vendor","Asus"],["type","tablet"]],[/(sony)\s(tablet\s[ps])\sbuild\//i,/(sony)?(?:sgp.+)\sbuild\//i],[["vendor","Sony"],["model","Xperia Tablet"],["type","tablet"]],[/android.+\s([c-g]\d{4}|so[-l]\w+)(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i],["model",["vendor","Sony"],["type","mobile"]],[/\s(ouya)\s/i,/(nintendo)\s([wids3u]+)/i], ["vendor","model",["type","console"]],[/android.+;\s(shield)\sbuild/i],["model",["vendor","Nvidia"],["type","console"]],[/(playstation\s[34portablevi]+)/i],["model",["vendor","Sony"],["type","console"]],[/(sprint\s(\w+))/i],[["vendor",l,{HTC:"APA",Sprint:"Sprint"}],["model",l,{"Evo Shift 4G":"7373KT"}],["type","mobile"]],[/(htc)[;_\s-]+([\w\s]+(?=\)|\sbuild)|\w+)/i,/(zte)-(\w*)/i,/(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i],["vendor",["model",/_/g," "],["type","mobile"]],[/(nexus\s9)/i], ["model",["vendor","HTC"],["type","tablet"]],[/d\/huawei([\w\s-]+)[;\)]/i,/(nexus\s6p|vog-l29|ane-lx1|eml-l29)/i],["model",["vendor","Huawei"],["type","mobile"]],[/android.+(bah2?-a?[lw]\d{2})/i],["model",["vendor","Huawei"],["type","tablet"]],[/(microsoft);\s(lumia[\s\w]+)/i],["vendor","model",["type","mobile"]],[/[\s\(;](xbox(?:\sone)?)[\s\);]/i],["model",["vendor","Microsoft"],["type","console"]],[/(kin\.[onetw]{3})/i],[["model",/\./g," "],["vendor","Microsoft"],["type","mobile"]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w*)/i,/(XT\d{3,4}) build\//i,/(nexus\s6)/i],["model",["vendor","Motorola"],["type","mobile"]],[/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],["model",["vendor","Motorola"],["type","tablet"]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[["vendor",d.trim],["model",d.trim],["type","smarttv"]],[/hbbtv.+maple;(\d+)/i],[["model",/^/,"SmartTV"],["vendor","Samsung"],["type","smarttv"]],[/\(dtv[\);].+(aquos)/i],["model",["vendor","Sharp"],["type","smarttv"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i],[["vendor","Samsung"],"model",["type","tablet"]],[/smart-tv.+(samsung)/i],["vendor",["type","smarttv"],"model"],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i,/sec-((sgh\w+))/i],[["vendor","Samsung"],"model",["type","mobile"]],[/sie-(\w*)/i],["model",["vendor","Siemens"],["type","mobile"]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]*)/i],[["vendor","Nokia"],"model",["type","mobile"]],[/android[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i], ["model",["vendor","Acer"],["type","tablet"]],[/android.+([vl]k\-?\d{3})\s+build/i],["model",["vendor","LG"],["type","tablet"]],[/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],[["vendor","LG"],"model",["type","tablet"]],[/(lg) netcast\.tv/i],["vendor","model",["type","smarttv"]],[/(nexus\s[45])/i,/lg[e;\s\/-]+(\w*)/i,/android.+lg(\-?[\d\w]+)\s+build/i],["model",["vendor","LG"],["type","mobile"]],[/(lenovo)\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+))/i],["vendor","model",["type","tablet"]],[/android.+(ideatab[a-z0-9\-\s]+)/i], ["model",["vendor","Lenovo"],["type","tablet"]],[/(lenovo)[_\s-]?([\w-]+)/i],["vendor","model",["type","mobile"]],[/linux;.+((jolla));/i],["vendor","model",["type","mobile"]],[/((pebble))app\/[\d\.]+\s/i],["vendor","model",["type","wearable"]],[/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i],["vendor","model",["type","mobile"]],[/crkey/i],[["model","Chromecast"],["vendor","Google"],["type","smarttv"]],[/android.+;\s(glass)\s\d/i],["model",["vendor","Google"],["type","wearable"]],[/android.+;\s(pixel c)[\s)]/i], ["model",["vendor","Google"],["type","tablet"]],[/android.+;\s(pixel( [23])?( xl)?)[\s)]/i],["model",["vendor","Google"],["type","mobile"]],[/android.+;\s(\w+)\s+build\/hm\1/i,/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,/android.+(mi[\s\-_]*(?:a\d|one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i,/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i],[["model",/_/g," "],["vendor","Xiaomi"],["type","mobile"]],[/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i], [["model",/_/g," "],["vendor","Xiaomi"],["type","tablet"]],[/android.+;\s(m[1-5]\snote)\sbuild/i],["model",["vendor","Meizu"],["type","mobile"]],[/(mz)-([\w-]{2,})/i],[["vendor","Meizu"],"model",["type","mobile"]],[/android.+a000(1)\s+build/i,/android.+oneplus\s(a\d{4})[\s)]/i],["model",["vendor","OnePlus"],["type","mobile"]],[/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i],["model",["vendor","RCA"],["type","tablet"]],[/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i],["model",["vendor","Dell"],["type","tablet"]], [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i],["model",["vendor","Verizon"],["type","tablet"]],[/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i],[["vendor","Barnes \x26 Noble"],"model",["type","tablet"]],[/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i],["model",["vendor","NuVision"],["type","tablet"]],[/android.+;\s(k88)\sbuild/i],["model",["vendor","ZTE"],["type","tablet"]],[/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i],["model",["vendor","Swiss"],["type","mobile"]],[/android.+[;\/]\s*(zur\d{3})\s+build/i], ["model",["vendor","Swiss"],["type","tablet"]],[/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i],["model",["vendor","Zeki"],["type","tablet"]],[/(android).+[;\/]\s+([YR]\d{2})\s+build/i,/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i],[["vendor","Dragon Touch"],"model",["type","tablet"]],[/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i],["model",["vendor","Insignia"],["type","tablet"]],[/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i],["model",["vendor","NextBook"],["type","tablet"]],[/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i], [["vendor","Voice"],"model",["type","mobile"]],[/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i],[["vendor","LvTel"],"model",["type","mobile"]],[/android.+;\s(PH-1)\s/i],["model",["vendor","Essential"],["type","mobile"]],[/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i],["model",["vendor","Envizen"],["type","tablet"]],[/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i],["vendor","model",["type","tablet"]],[/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i],["model",["vendor","MachSpeed"], ["type","tablet"]],[/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i],["vendor","model",["type","tablet"]],[/android.+[;\/]\s*TU_(1491)\s+build/i],["model",["vendor","Rotor"],["type","tablet"]],[/android.+(KS(.+))\s+build/i],["model",["vendor","Amazon"],["type","tablet"]],[/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i],["vendor","model",["type","tablet"]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[["type",d.lowerize],"vendor","model"],[/[\s\/\(](smart-?tv)[;\)]/i],[["type","smarttv"]], [/(android[\w\.\s\-]{0,9});.+build/i],["model",["vendor","Generic"]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],["version",["name","EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],["version",["name","Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],["name","version"],[/rv\:([\w\.]{1,9}).+(gecko)/i],["version","name"]],os:[[/microsoft\s(windows)\s(vista|xp)/i],["name", "version"],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],["name",["version",l,b]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[["name","Windows"],["version",l,b]],[/\((bb)(10);/i],[["name","BlackBerry"],"version"],[/(blackberry)\w*\/?([\w\.]*)/i,/(tizen|kaios)[\/\s]([\w\.]+)/i,/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i],["name","version"],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i], [["name","Symbian"],"version"],[/\((series40);/i],["name"],[/mozilla.+\(mobile;.+gecko.+firefox/i],[["name","Firefox OS"],"version"],[/(nintendo|playstation)\s([wids34portablevu]+)/i,/(mint)[\/\s\(]?(\w*)/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i,/(hurd|linux)\s?([\w\.]*)/i,/(gnu)\s?([\w\.]*)/i],["name","version"],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[["name", "Chromium OS"],"version"],[/(sunos)\s?([\w\.\d]*)/i],[["name","Solaris"],"version"],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i],["name","version"],[/(haiku)\s(\w+)/i],["name","version"],[/cfnetwork\/.+darwin/i,/ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i],[["version",/_/g,"."],["name","iOS"]],[/(mac\sos\sx)\s?([\w\s\.]*)/i,/(macintosh|mac(?=_powerpc)\s)/i],[["name","Mac OS"],["version",/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]*)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i, /(unix)\s?([\w\.]*)/i],["name","version"]]},e=function(b,h){"object"===typeof b&&(h=b,b=a);if(!(this instanceof e))return(new e(b,h)).getResult();var k=b||(f&&f.navigator&&f.navigator.userAgent?f.navigator.userAgent:""),l=h?d.extend(g,h):g;this.getBrowser=function(){var b={name:a,version:a};c.call(b,k,l.browser);b.major=d.major(b.version);return b};this.getCPU=function(){var b={architecture:a};c.call(b,k,l.cpu);return b};this.getDevice=function(){var b={vendor:a,model:a,type:a};c.call(b,k,l.device); return b};this.getEngine=function(){var b={name:a,version:a};c.call(b,k,l.engine);return b};this.getOS=function(){var b={name:a,version:a};c.call(b,k,l.os);return b};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return k};this.setUA=function(a){k=a;return this};return this};e.VERSION="0.7.21";e.BROWSER={NAME:"name",MAJOR:"major",VERSION:"version"};e.CPU={ARCHITECTURE:"architecture"}; e.DEVICE={MODEL:"model",VENDOR:"vendor",TYPE:"type",CONSOLE:"console",MOBILE:"mobile",SMARTTV:"smarttv",TABLET:"tablet",WEARABLE:"wearable",EMBEDDED:"embedded"};e.ENGINE={NAME:"name",VERSION:"version"};e.OS={NAME:"name",VERSION:"version"};"undefined"!==typeof h?("undefined"!==typeof m&&m.exports&&(h=m.exports=e),h.UAParser=e):f&&(f.UAParser=e);var k=f&&(f.jQuery||f.Zepto);if(k&&!k.ua){var v=new e;k.ua=v.getResult();k.ua.get=function(){return v.getUA()};k.ua.set=function(a){v.setUA(a);a=v.getResult(); for(var b in a)k.ua[b]=a[b]}}})("object"===typeof window?window:this)},{}],22:[function(k,m,h){var f=[];for(k=0;256>k;++k)f[k]=(k+256).toString(16).substr(1);m.exports=function(a,d){d=d||0;return[f[a[d++]],f[a[d++]],f[a[d++]],f[a[d++]],"-",f[a[d++]],f[a[d++]],"-",f[a[d++]],f[a[d++]],"-",f[a[d++]],f[a[d++]],"-",f[a[d++]],f[a[d++]],f[a[d++]],f[a[d++]],f[a[d++]],f[a[d++]]].join("")}},{}],23:[function(k,m,h){var f="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)|| "undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(f){var a=new Uint8Array(16);m.exports=function(){f(a);return a}}else{var d=Array(16);m.exports=function(){for(var a=0,f;16>a;a++)0===(a&3)&&(f=4294967296*Math.random()),d[a]=f>>>((a&3)<<3)&255;return d}}},{}],24:[function(k,m,h){var f=k("./lib/rng"),a=k("./lib/bytesToUuid");m.exports=function(d,c,h){h=c&&h||0;"string"==typeof d&&(c="binary"===d?Array(16):null,d=null);d=d||{}; d=d.random||(d.rng||f)();d[6]=d[6]&15|64;d[8]=d[8]&63|128;if(c)for(var b=0;16>b;++b)c[h+b]=d[b];return c||a(d)}},{"./lib/bytesToUuid":22,"./lib/rng":23}],25:[function(k,m,h){function f(){}m.exports=f;f.mixin=function(a){a=a.prototype||a;a.isWildEmitter=!0;a.on=function(a,c,f){this.callbacks=this.callbacks||{};var b=3===arguments.length,d=b?arguments[2]:arguments[1];d._groupName=b?arguments[1]:void 0;(this.callbacks[a]=this.callbacks[a]||[]).push(d);return this};a.once=function(a,c,f){function b(){d.off(a, b);h.apply(this,arguments)}var d=this,e=3===arguments.length,h=e?arguments[2]:arguments[1];this.on(a,e?arguments[1]:void 0,b);return this};a.releaseGroup=function(a){this.callbacks=this.callbacks||{};var c,d;for(c in this.callbacks){var b=this.callbacks[c];var f=0;for(d=b.length;f<d;f++)b[f]._groupName===a&&(b.splice(f,1),f--,d--)}return this};a.off=function(a,c){this.callbacks=this.callbacks||{};var d=this.callbacks[a];if(!d)return this;if(1===arguments.length)return delete this.callbacks[a],this; var b=d.indexOf(c);-1!==b&&(d.splice(b,1),0===d.length&&delete this.callbacks[a]);return this};a.emit=function(a){this.callbacks=this.callbacks||{};var c=[].slice.call(arguments,1),d=this.callbacks[a],b=this.getWildcardCallbacks(a),f;if(d){var e=d.slice();d=0;for(f=e.length;d<f&&e[d];++d)e[d].apply(this,c)}if(b)for(e=b.slice(),d=0,f=e.length;d<f&&e[d];++d)e[d].apply(this,[a].concat(c));return this};a.getWildcardCallbacks=function(a){this.callbacks=this.callbacks||{};var c,d=[];for(c in this.callbacks){var b= c.split("*");if("*"===c||2===b.length&&a.slice(0,b[0].length)===b[0])d=d.concat(this.callbacks[c])}return d}};f.mixin(f)},{}]},{},[2])(2)});