retropilot-server/cabana/static/js/main.f2e8c285.chunk.js

2 lines
230 KiB
JavaScript

(this["webpackJsonpcan-explorer"]=this["webpackJsonpcan-explorer"]||[]).push([[0],{134:function(e,t,n){"use strict";n.d(t,"a",(function(){return swapKeysAndValues}));n(5),n(10),n(11);function swapKeysAndValues(e,t){return Object.keys(e).reduce((function(t,n){return t[e[n]]=n,t}),{})}},135:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(2),s=n(3),r=function(){function BoardUnit(e){Object(a.a)(this,BoardUnit),this.name=e,this.attributes={},this.comment=null}return Object(s.a)(BoardUnit,[{key:"text",value:function text(){return this.name}}]),BoardUnit}()},136:function(e,t,n){"use strict";var a=n(231),s=n(13),r=n.n(s);t.a=function(){var e=[],t=[];return[].forEach.call(arguments,(function(n){n&&n._definition&&n._name?e.push(n):t.push(n)})),r.a.apply(null,[].concat(t,[Object(a.css)(e)]))}},137:function(e,t,n){"use strict";n.d(t,"a",(function(){return shade}));var a=n(11);function shade(e,t){var n=Object(a.a)(e,3),s=n[0],r=n[1],i=n[2],o=t<0?0:255,l=Math.abs(t);return[Math.round((o-s)*l)+s,Math.round((o-r)*l)+r,Math.round((o-i)*l)+i]}},14:function(e,t,n){"use strict";n.d(t,"d",(function(){return s})),n.d(t,"e",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"g",(function(){return o})),n.d(t,"k",(function(){return l})),n.d(t,"j",(function(){return c})),n.d(t,"f",(function(){return d})),n.d(t,"h",(function(){return u})),n.d(t,"a",(function(){return g})),n.d(t,"i",(function(){return m})),n.d(t,"b",(function(){return h}));var a=n(19),s="4b43250e7499a97d62a5",r="https://api.comma.ai/cabana/ghcallback",i="gh_access_token",o="commaai/opendbc",l="undefined"!==typeof window&&null!==Object(a.a)("unlogger"),c="http://localhost:8080/unlogger",d="4bc98019-8277-4fe0-867c-ed21ea843cc5",u=3,g=5e3,m=60,h="https://my.comma.ai/"},15:function(e,t,n){"use strict";(function(e){var a=n(10);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function createMessageSpec(e,t,n,a){var s=e.getMessageFrame(t),r=s?s.size:8;return{address:t,id:n,bus:a,entries:[],frame:s,byteColors:Array(r).fill(0),byteStateChangeCounts:Array(r).fill(0)}}function determineByteStateChangeTimes(e,t,n,a){var s,r=Array(n).fill(0);if(a){s=a.byteStateChangeTimes;for(var i=0;i<s.length;i++){e.substr(2*i,2)!==a.hexData.substr(2*i,2)&&(s[i]=t,r[i]=1)}}else s=Array(n).fill(t);return{byteStateChangeTimes:s,byteStateChangeCounts:r}}function createMessageEntry(t,n,a,s,r,i){return{signals:t.getSignalValues(n,r),address:n,data:r,time:a,relTime:s,hexData:e.from(r).toString("hex"),byteStateChangeTimes:i,updated:Date.now()}}function parseMessage(t,n,a,s,r,i){var o;"string"===typeof s?(o=s,s=e.from(s,"hex")):o=e.from(s).toString("hex");var l=t.getMessageFrame(a),c=n-r,d=determineByteStateChangeTimes(o,c,l?l.size:8,i),u=d.byteStateChangeTimes,g=d.byteStateChangeCounts;return{msgEntry:createMessageEntry(t,a,n,c,s,u),byteStateChangeCounts:g}}for(var s=[],r=0;r<64;r+=8)for(var i=7;i>-1;i--)s.push(r+i);t.a={bigEndianBitIndex:function bigEndianBitIndex(e){return s.indexOf(e)},addCanMessage:function addCanMessage(e,t,n,a,s,r){var i=e.address,o=e.busTime,l=e.data,c=e.bus,d="".concat(c,":").concat(i.toString(16));void 0===a[d]&&(a[d]=createMessageSpec(t,i,d,c));var u=a[d].entries.length>0?a[d].entries[a[d].entries.length-1]:s[d]||null;r[d]&&a[d].byteStateChangeCounts.every((function(e){return 0===e}))&&(a[d].byteStateChangeCounts=r[d]);var g=parseMessage(t,o,i,l,n,u),m=g.msgEntry,h=g.byteStateChangeCounts;return a[d].byteStateChangeCounts=h.map((function(e,t){return a[d].byteStateChangeCounts[t]+e})),a[d].entries.push(m),m},createMessageSpec:createMessageSpec,matrixBitNumber:function matrixBitNumber(e){return s[e]},parseMessage:parseMessage,reparseMessage:function reparseMessage(e,t,n){var s=e.getMessageFrame(t.address),r=s?s.size:8,i=determineByteStateChangeTimes(t.hexData,t.relTime,r,n),o=i.byteStateChangeTimes,l=i.byteStateChangeCounts;return{msgEntry:function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(a.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t,{signals:e.getSignalValues(t.address,t.data),byteStateChangeTimes:o,updated:Date.now()}),byteStateChangeCounts:l}},findMaxByteStateChangeCount:function findMaxByteStateChangeCount(e){return Object.values(e).map((function(e){return e.byteStateChangeCounts})).reduce((function(e,t){return e.concat(t)}),[]).reduce((function(e,t){return e>t?e:t}),0)},setMessageByteColors:function setMessageByteColors(e,t){return e.byteColors=e.byteStateChangeCounts.map((function(e){return isNaN(e)?0:Math.min(255,75+e/t*180)})).map((function(e){return"rgb(".concat(Math.round(e),",0,0)")})),e},createMessageEntry:createMessageEntry}}).call(this,n(21).Buffer)},19:function(e,t,n){"use strict";n.d(t,"c",(function(){return objToQuery})),n.d(t,"a",(function(){return getUrlParameter})),n.d(t,"b",(function(){return modifyQueryParameters}));var a=n(10);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function objToQuery(e){return Object.keys(e).map((function(t){return"".concat(t,"=").concat(encodeURIComponent(decodeURIComponent(e[t])))})).join("&")}function getUrlParameter(e){var t=window.location;e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var n=new RegExp("[\\?&]".concat(e,"=([^&#]*)")).exec(t.search);return null===n?null:decodeURIComponent(n[1].replace(/\+/g," "))}function modifyQueryParameters(e){var t=e.add,n=e.remove,s=void 0===n?[]:n,r=new RegExp("[\\?&]([^&#]+)=([^&#]*)").exec(location.search),i={};if(null!=r){for(var o=1;o<r.length-1;o+=2){var l=r[o],c=r[o+1];i[l]=c}for(var d in i)-1!==s.indexOf(d)&&delete i[d];i=function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(a.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},i,{},t)}else i=t;return"".concat(location.origin+location.pathname,"?").concat(objToQuery(i))}},218:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return init}));var a=n(4),s=n.n(a),r=n(12),i=n(10),o=n(11),l=n(1),c=n.n(l),d=n(219),u=n.n(d),g=n(53),m=n.n(g),h=n(37),p=n(220),b=n(222),f=(n(552),n(19)),S=n(14),v=n(28),E=n(62),_=n(249);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function init(){p.a.init();var t=Object(f.a)("route"),n=!!Object(f.a)("demo"),a=Object(f.a)("segments");a&&a.length&&2!==(a=a.split(",").map(Number)).length&&(a=void 0);var l={autoplay:!0,startTime:Number(Object(f.a)("seekTime")||0),segments:a,isDemo:n},d=null;if(t){var g=t.split("|"),O=Object(o.a)(g,2),y=O[0],C=O[1];l.dongleId=y,l.name=C,d=Object(v.a)(t);var T=Object(f.a)("max"),D=Object(f.a)("url"),w=Object(f.a)("exp"),M=Object(f.a)("sig");T&&(l.max=T),D&&(l.url=D),w&&(l.exp=w),M&&(l.sig=M),l.isLegacyShare=T&&D&&!w&&!M,l.isShare=T&&D&&w&&M}else n&&(l=function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(i.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},l,{},E.b));if(d){var k=d,X=k.dbcFilename,A=k.dbc;l.dbc=A,l.dbcFilename=X}var B=Object(f.a)(S.c);if(null!==B){l.githubAuthToken=B,Object(v.d)(B);var G=Object(f.b)({remove:[S.c]});window.location.href=G}else l.githubAuthToken=Object(v.b)();function _renderDom(){return(_renderDom=Object(r.a)(s.a.mark((function _callee(){var t;return s.a.wrap((function _callee$(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,m.a.init();case 2:return t=n.sent,n.next=5,Object(_.a)(Object(f.a)("retropilotHost")||"",Object(f.a)("retropilotIdentifier")||"",Object(f.a)("seekTime")||0);case 5:e.retropilotLoaded&&(l=e.retropilotProps),t&&h.request.configure(t),u.a.render(c.a.createElement(b.a,l),document.getElementById("root"));case 8:case"end":return n.stop()}}),_callee)})))).apply(this,arguments)}!function renderDom(){return _renderDom.apply(this,arguments)}()}}).call(this,n(18))},220:function(e,t,n){"use strict";var a=n(221),s=n.n(a);t.a={init:function init(){var e={};"undefined"!==typeof __webpack_hash__&&(e.release=__webpack_hash__),s.a.config("https://50006e5d91894f508dd288bbbf4585a6@sentry.io/185303",e).install()}}},222:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return J}));var a=n(4),s=n.n(a),r=n(12),i=n(5),o=n(10),l=n(11),c=n(2),d=n(3),u=n(8),g=n(6),m=n(7),h=n(9),p=n(1),b=n.n(p),f=n(32),S=n.n(f),v=n(13),E=n.n(v),_=n(223),O=n(224),y=n.n(O),C=n(53),T=n.n(C),D=n(37),w=n(86),M=n(14),k=n(225),X=n(24),A=n(253),B=n(250),G=n(240),P=n(241),x=n(252),N=n(33),R=n(244),L=n(245),j=n(28),I=n(59),U=n(246),F=(n(134),n(248)),z=n(19),H=n(15),V=n(62);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(o.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var W=n(548),Y=n(549),K=n(550),Z=n(551),Q={},J=function(t){function CanExplorer(e){var t;return Object(c.a)(this,CanExplorer),(t=Object(u.a)(this,Object(g.a)(CanExplorer).call(this,e))).partChangeDebounced=Object(N.a)((function(){t.loadMessagesFromCache(),t.spawnWorker()}),500),t.state={messages:{},thumbnails:[],selectedMessages:[],route:null,canFrameOffset:0,routeInitTime:0,firstFrameTime:0,firstCanTime:null,lastBusTime:null,selectedMessage:null,currentParts:[0,0],currentPart:0,currentWorkers:{},loadingParts:[],loadedParts:[],showOnboarding:!1,showLoadDbc:!1,showSaveDbc:!1,showEditMessageModal:!1,editMessageModalMessage:null,dbc:e.dbc?e.dbc:new X.a,dbcText:e.dbc?e.dbc.text():(new X.a).text(),dbcFilename:e.dbcFilename?e.dbcFilename:"New_DBC",dbcLastSaved:null,seekTime:e.seekTime||0,seekIndex:0,maxByteStateChangeCount:0,isLoading:!0,partsLoaded:0,spawnWorkerHash:null,attemptingPandaConnection:!1,pandaNoDeviceSelected:!1,live:!1,isGithubAuthenticated:null!==e.githubAuthToken&&void 0!==e.githubAuthToken,shareUrl:null,logUrls:null},t.openDbcClient=new I.a(e.githubAuthToken),M.k&&(t.unloggerClient=new U.a),t.showOnboarding=t.showOnboarding.bind(Object(m.a)(t)),t.hideOnboarding=t.hideOnboarding.bind(Object(m.a)(t)),t.showLoadDbc=t.showLoadDbc.bind(Object(m.a)(t)),t.hideLoadDbc=t.hideLoadDbc.bind(Object(m.a)(t)),t.showSaveDbc=t.showSaveDbc.bind(Object(m.a)(t)),t.hideSaveDbc=t.hideSaveDbc.bind(Object(m.a)(t)),t.showEditMessageModal=t.showEditMessageModal.bind(Object(m.a)(t)),t.hideEditMessageModal=t.hideEditMessageModal.bind(Object(m.a)(t)),t.onDbcSelected=t.onDbcSelected.bind(Object(m.a)(t)),t.onDbcSaved=t.onDbcSaved.bind(Object(m.a)(t)),t.onConfirmedSignalChange=t.onConfirmedSignalChange.bind(Object(m.a)(t)),t.onPartChange=t.onPartChange.bind(Object(m.a)(t)),t.onMessageFrameEdited=t.onMessageFrameEdited.bind(Object(m.a)(t)),t.onSeek=t.onSeek.bind(Object(m.a)(t)),t.onUserSeek=t.onUserSeek.bind(Object(m.a)(t)),t.onMessageSelected=t.onMessageSelected.bind(Object(m.a)(t)),t.onMessageUnselected=t.onMessageUnselected.bind(Object(m.a)(t)),t.initCanData=t.initCanData.bind(Object(m.a)(t)),t.updateSelectedMessages=t.updateSelectedMessages.bind(Object(m.a)(t)),t.handlePandaConnect=t.handlePandaConnect.bind(Object(m.a)(t)),t.processStreamedCanMessages=t.processStreamedCanMessages.bind(Object(m.a)(t)),t.onStreamedCanMessagesProcessed=t.onStreamedCanMessagesProcessed.bind(Object(m.a)(t)),t.showingModal=t.showingModal.bind(Object(m.a)(t)),t.lastMessageEntriesById=t.lastMessageEntriesById.bind(Object(m.a)(t)),t.githubSignOut=t.githubSignOut.bind(Object(m.a)(t)),t.downloadLogAsCSV=t.downloadLogAsCSV.bind(Object(m.a)(t)),t.pandaReader=new y.a,t.pandaReader.onMessage(t.processStreamedCanMessages),t}return Object(h.a)(CanExplorer,t),Object(d.a)(CanExplorer,[{key:"componentDidMount",value:function componentDidMount(){var t=this;this.dataCacheTimer=Object(w.interval)((function(){var e=t.state.currentParts,n=t.state.loadedParts;t.loadMessagesFromCacheRunning||n.length<4||n.forEach((function(a){a>=e[0]&&a<=e[1]||Date.now()-Q[a].lastUsed>18e4&&(console.log("Decaching part",a),n=n.filter((function(e){return e!==a})),t.setState({loadedParts:n},(function(){delete Q[a]})))}))}),1e4);var n=this.props,a=n.dongleId,s=n.name;if(T.a.isAuthenticated()&&!s)this.showOnboarding();else if(this.props.isDemo){var r=e.retropilotLoaded?e.retropilotLogUrls:V.a,i=e.retropilotLoaded?e.retropilotRoute:V.c;this.setState({logUrls:r,route:i,currentParts:[0,Math.min(r.length-1,M.h-1)],currentPart:0},this.initCanData)}else if(this.props.max&&this.props.url&&!this.props.exp&&!this.props.sig){var o=this.props,c=o.max,d=o.url,u=S()(s,"YYYY-MM-DD--H-m-s"),g={fullname:"".concat(a,"|").concat(s),proclog:c,url:d,start_time:u};this.setState({route:g,currentParts:[0,Math.min(c,M.h-1)]},this.initCanData)}else if(a&&s){var m,h,p="".concat(a,"|").concat(s);m=this.props.url?Promise.resolve(this.props.url):D.drives.getRouteInfo(p).then((function(e){return e.url})),h=this.props.sig&&this.props.exp?D.raw.getLogUrls(p,{sig:this.props.sig,exp:this.props.exp}):D.raw.getLogUrls(p),Promise.all([m,h]).then((function(e){var n=Object(l.a)(e,2),a=n[0],r=n[1],i={route:{fullname:p,proclog:r.length-1,start_time:S()(s,"YYYY-MM-DD--H-m-s"),url:a},currentParts:[0,Math.min(r.length-1,M.h-1)],logUrls:r};t.setState(i,t.initCanData),D.drives.getShareSignature(p).then((function(e){return t.setState({shareUrl:Object(z.b)({add:{exp:e.exp,sig:e.sig,max:r.length-1,url:a},remove:[M.c]})})}))})).catch((function(e){console.error(e),t.showOnboarding()}))}else this.showOnboarding()}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.dataCacheTimer&&this.dataCacheTimer()}},{key:"initCanData",value:function initCanData(){this.state.route;this.spawnWorker(this.state.currentParts)}},{key:"onDbcSelected",value:function onDbcSelected(e,t){var n=this,a=this.state.route;this.hideLoadDbc(),t.lastUpdated=Date.now(),this.persistDbc({dbcFilename:e,dbc:t}),a?this.setState({dbc:t,dbcFilename:e,dbcText:t.text(),partsLoaded:0,selectedMessage:null,messages:{}},(function(){n.loadMessagesFromCache()})):this.setState({dbc:t,dbcFilename:e,dbcText:t.text(),messages:{}})}},{key:"onDbcSaved",value:function onDbcSaved(e){var t=S()();this.setState({dbcLastSaved:t,dbcFilename:e}),this.hideSaveDbc()}},{key:"downloadLogAsCSV",value:function downloadLogAsCSV(){console.log("downloadLogAsCSV:start");var e=this.state.dbcFilename,t=Object(_.createWriteStream)("".concat(e.replace(/\.dbc/g,"-")).concat(+new Date,".csv")).getWriter(),n=new TextEncoder;return this.state.live?this.downloadLiveLogAsCSV(dataHandler):this.downloadRawLogAsCSV(dataHandler);function dataHandler(e){var a=e.data,s=a.logData,r=a.shouldClose,i=a.progress;if(r)return console.log("downloadLogAsCSV:close"),void t.close();console.log("CSV export progress:",i);var o=n.encode("".concat(s,"\n"));t.write(o)}}},{key:"downloadRawLogAsCSV",value:function downloadRawLogAsCSV(e){return this.downloadLiveLogAsCSV(e)}},{key:"downloadLiveLogAsCSV",value:function downloadLiveLogAsCSV(e){var t=this,n=this.state,a=n.firstCanTime,s=n.canFrameOffset,r=new Y;r.onmessage=e,r.postMessage({data:Object.keys(this.state.messages).map((function(e){var n=t.state.messages[e];return{id:n.id,bus:n.bus,address:n.address,entries:n.entries.slice()}})),canStartTime:a-s})}},{key:"mergeThumbnails",value:function mergeThumbnails(e){var t=this.state.thumbnails;if(!e||!e.length)return t;if(!t.length)return e;var n=0,a=0;if(e[0].monoTime>t[t.length-1])return t.concat(e);if(e[e.length-1]<t[0])return e.concat(t);for(var s=[];n<t.length&&a<e.length;)t[n].monoTime<e[a].monoTime?(s.push(t[n]),n+=1):(s.push(e[a]),a+=1);return n<t.length?s=s.concat(t.slice(n)):a<e.length&&(s=s.concat(e.slice(a))),s}},{key:"cancelWorker",value:function cancelWorker(e){}},{key:"spawnWorker",value:function spawnWorker(e){var t=this,n=this.state,a=n.currentParts,s=n.currentWorkers,r=n.loadingParts;if(console.log("Checking worker for",a),this.state.isLoading||this.setState({isLoading:!0}),!(r.length>1)){var o=Object(l.a)(a,2),c=o[0],d=o[1];s=_objectSpread({},this.state.currentWorkers);for(var u=this.state,g=u.loadedParts,m=u.currentPart,h=-1,p=r.concat(g),b=0;b<=d-c;++b){var f=m+b;if(f>d&&(f=c+(f-c)%(d-c+1)),-1===p.indexOf(f)){h=f;break}}if(-1===h)return console.log("Loading complete"),void this.setState({isLoading:!1});console.log("Starting worker for part",h);var S=(e=e||{}).prevMsgEntries,v=this.state,E=v.dbc,_=(v.dbcFilename,v.route),O=v.firstCanTime,y=v.canFrameOffset,C=this.state.maxByteStateChangeCount;if(!S){var T=this.state.messages;S={},Object.keys(T).forEach((function(e){var t=T[e].entries;S[e]=t[t.length-1]}))}var D=new W,w=Object(F.a)(Math.random().toString(16));s[w]={part:h,worker:D},r=[h].concat(Object(i.a)(r)),this.setState({currentWorkers:s,loadingParts:r}),D.onmessage=function(e){if(void 0!==t.state.currentWorkers[w]){C=e.data.maxByteStateChangeCount;var n=e.data,a=n.newMessages,s=n.newThumbnails,r=n.isFinished,o=n.routeInitTime,l=n.firstFrameTime;if(C>t.state.maxByteStateChangeCount?t.setState({maxByteStateChangeCount:C}):C=t.state.maxByteStateChangeCount,o!==t.state.routeInitTime&&t.setState({routeInitTime:o}),l&&l!==t.state.firstFrameTime&&t.setState({firstFrameTime:l}),t.addMessagesToDataCache(h,a,s),r){var c=t.state.loadingParts.filter((function(e){return e!==h})),d=[h].concat(Object(i.a)(t.state.loadedParts));t.setState({partsLoaded:t.state.partsLoaded+1,loadingParts:c,loadedParts:d},(function(){t.spawnWorker({prevMsgEntries:S,spawnWorkerHash:w,prepend:!1}),window.dataCallback&&(window.dataCallback(),window.dataCallback=null)}))}}else console.log("Worker was canceled")},D.postMessage({base:_.url,num:h,isDemo:this.props.isDemo,isLegacyShare:this.props.isLegacyShare,logUrls:this.state.logUrls,dbcText:E.text(),route:_.fullname,part:h,canStartTime:null!=O?O-y:null,prevMsgEntries:S,maxByteStateChangeCount:C})}}},{key:"addAndRehydrateMessages",value:function addAndRehydrateMessages(e,t){var n=this;t=t||{};var a=_objectSpread({},this.state.messages);Object.keys(e).forEach((function(s){if(!0!==t.replace&&s in a){var r=a[s].entries,i=e[s].entries,o=r.length,l=i.length,c=o+l;a[s]=_objectSpread({},a[s],{entries:Array(c)});for(var d=0,u=0,g=0;g<c;++g)u>=l?a[s].entries[g]=r[d++]:d>=o?a[s].entries[g]=i[u++]:r[d].relTime<=i[u].relTime?a[s].entries[g]=r[d++]:r[d].relTime>=i[u].relTime&&(a[s].entries[g]=i[u++]);a[s].byteStateChangeCounts=e[s].byteStateChangeCounts}else a[s]=e[s],a[s].frame=n.state.dbc.getMessageFrame(a[s].address)}));var s=H.a.findMaxByteStateChangeCount(a);return this.setState({maxByteStateChangeCount:s}),Object.keys(a).forEach((function(e){a[e]=H.a.setMessageByteColors(a[e],s)})),a}},{key:"addMessagesToDataCache",value:function(){var e=Object(r.a)(s.a.mark((function _callee(e,t,n){var a,r,i,o,l=this;return s.a.wrap((function _callee$(s){for(;;)switch(s.prev=s.next){case 0:return a=this.state,r=a.dbc,i=a.currentParts,s.next=3,this.getParseSegment(e);case 3:if(o=s.sent){s.next=9;break}return Object.keys(t).forEach((function(e){t[e]=l.parseMessageEntry(t[e],r)})),Q[e]={messages:t,thumbnails:n,lastUpdated:Date.now(),lastUsed:Date.now()},e>=i[0]&&e<=i[1]&&this.setState({messages:this.addAndRehydrateMessages(t)}),s.abrupt("return");case 9:o.lastUsed=Date.now(),Object.keys(t).forEach((function(n){var a=t[n];if(Q[e].messages[n]){var s=Q[e].messages[n].entries,i=s.length?s[s.length-1]:null;a=l.parseMessageEntry(a,r,i),s=s.concat(a.entries),Q[e].messages[n].entries=s}else a=l.parseMessageEntry(a,r),Q[e].messages[n]=a;t[n]=a})),Q[e].thumbnails=Q[e].thumbnails.concat(n),e>=i[0]&&e<=i[1]&&this.setState({messages:this.addAndRehydrateMessages(t)});case 13:case"end":return s.stop()}}),_callee,this)})));return function addMessagesToDataCache(t,n,a){return e.apply(this,arguments)}}()},{key:"loadMessagesFromCache",value:function(){var e=Object(r.a)(s.a.mark((function _callee3(){var e,t,n,a,i,o,c,d,u,g,m,h,p,b,f,S=this;return s.a.wrap((function _callee3$(v){for(;;)switch(v.prev=v.next){case 0:if(!this.loadMessagesFromCacheRunning){v.next=3;break}return this.loadMessagesFromCacheTimer||(this.loadMessagesFromCacheTimer=Object(w.timeout)((function(){return S.loadMessagesFromCache()}),10)),v.abrupt("return");case 3:for(this.loadMessagesFromCacheRunning=!0,this.loadMessagesFromCacheTimer&&(this.loadMessagesFromCacheTimer(),this.loadMessagesFromCacheTimer=null),e=this.state,t=e.currentParts,n=e.dbc,a=n.lastUpdated,i=Object(l.a)(t,2),o=i[0],c=i[1],d={},u=[],g=!1,m=performance.now(),h=[],p=o,b=c;p<=b;++p)h.push(this.getParseSegment(p));return v.next=16,h.reduce(function(){var e=Object(r.a)(s.a.mark((function _callee2(e,t){var n,r;return s.a.wrap((function _callee2$(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,e;case 2:if(!g){s.next=4;break}return s.abrupt("return");case 4:return s.next=6,t;case 6:if(n=s.sent,S.state.dbc.lastUpdated===a){s.next=10;break}return g||(g=!0,S.loadMessagesFromCacheRunning=!1,console.log("Canceling!"),S.loadMessagesFromCache()),s.abrupt("return");case 10:n&&(r=n.messages,u=u.concat(n.thumbnails),Object.keys(r).forEach((function(e){if(d[e]){var t=r[e].entries,n=d[e].entries;t.length&&t[0].relTime<n[n.length-1].relTime&&console.error("Found out of order messages",t[0],n[n.length-1]),d[e].entries=d[e].entries.concat(r[e].entries)}else d[e]=_objectSpread({},r[e])}))),console.log("Done with",performance.now()-m),m=performance.now();case 13:case"end":return s.stop()}}),_callee2)})));return function(t,n){return e.apply(this,arguments)}}(),Promise.resolve());case 16:if(!g){v.next=18;break}return v.abrupt("return");case 18:Object.keys(this.state.messages).forEach((function(e){d[e]||(d[e]=S.state.messages[e],d[e].entries=[])})),Object.keys(d).forEach((function(e){d[e].frame=n.getMessageFrame(d[e].address)})),f=H.a.findMaxByteStateChangeCount(d),this.setState({maxByteStateChangeCount:f}),Object.keys(d).forEach((function(e){d[e]=H.a.setMessageByteColors(d[e],f)})),console.log("Done with old messages",performance.now()-m),this.setState({messages:d,thumbnails:u}),this.loadMessagesFromCacheRunning=!1;case 26:case"end":return v.stop()}}),_callee3,this)})));return function loadMessagesFromCache(){return e.apply(this,arguments)}}()},{key:"getParseSegment",value:function(){var e=Object(r.a)(s.a.mark((function _callee4(e){return s.a.wrap((function _callee4$(t){for(;;)switch(t.prev=t.next){case 0:if(Q[e]){t.next=2;break}return t.abrupt("return",null);case 2:if(!Q[e].promise){t.next=5;break}return t.next=5,Q[e].promise;case 5:return Q[e].promise=this.getParseSegmentInternal(e),t.abrupt("return",Q[e].promise);case 7:case"end":return t.stop()}}),_callee4,this)})));return function getParseSegment(t){return e.apply(this,arguments)}}()},{key:"getParseSegmentInternal",value:function(){var e=Object(r.a)(s.a.mark((function _callee5(e){var t,n,a,r,i,o;return s.a.wrap((function _callee5$(s){for(;;)switch(s.prev=s.next){case 0:if(t=performance.now(),(n=this.state.dbc).lastUpdated||(n.lastUpdated=Date.now()),a=n.lastUpdated,r=Q[e].messages,i={},Object.keys(r).forEach((function(e){r[e].lastUpdated>=a||(i[e]=r[e])})),!Object.keys(i).length){s.next=12;break}return console.log("Reparsing messages!",Object.keys(i).length),s.next=11,this.reparseMessages(i);case 11:i=s.sent;case 12:return r=_objectSpread({},r,{},i),Q[e].messages=r,(o=performance.now())-t>200&&console.warn("getParseSegment took",e,o-t,Object.keys(r).length),s.abrupt("return",Q[e]);case 17:case"end":return s.stop()}}),_callee5,this)})));return function getParseSegmentInternal(t){return e.apply(this,arguments)}}()},{key:"decacheMessageId",value:function decacheMessageId(e){Object.keys(Q).forEach((function(t){Q[t].messages[e]&&(Q[t].messages[e].lastUpdated=0)}))}},{key:"reparseMessages",value:function(){var e=Object(r.a)(s.a.mark((function _callee6(e){var t,n,a=this;return s.a.wrap((function _callee6$(s){for(;;)switch(s.prev=s.next){case 0:return t=e,(n=this.state.dbc).lastUpdated=n.lastUpdated||Date.now(),Object.keys(t).forEach((function(e){t[e].frame=n.getMessageFrame(t[e].address)})),s.abrupt("return",new Promise((function(e,s){var r=new K;r.onmessage=function(t){var a=t.data.messages;Object.keys(a).forEach((function(e){a[e].lastUpdated=n.lastUpdated,a[e].frame=n.getMessageFrame(a[e].address)})),e(a)},r.postMessage({messages:t,dbcText:n.text(),canStartTime:a.state.firstCanTime})})));case 5:case"end":return s.stop()}}),_callee6,this)})));return function reparseMessages(t){return e.apply(this,arguments)}}()},{key:"parseMessageEntry",value:function parseMessageEntry(e,t,n){var a=e;t.lastUpdated=t.lastUpdated||Date.now(),a.lastUpdated=t.lastUpdated,a.frame=t.getMessageFrame(a.address);var s=n||null,r=[];return a.entries=a.entries.map((function(e){return s=e.hexData?H.a.reparseMessage(t,e,s):H.a.parseMessage(t,e.time,e.address,e.data,e.timeStart,s),r.push(s.byteStateChangeCounts),s=s.msgEntry})),a.byteStateChangeCounts=r.reduce((function(e,t){return e?e.map((function(e,n){return t[n]+e})):t}),null),a}},{key:"showingModal",value:function showingModal(){var e=this.state,t=e.showOnboarding,n=e.showLoadDbc,a=e.showSaveDbc,s=e.showAddSignal,r=e.showEditMessageModal;return t||n||a||s||r}},{key:"showOnboarding",value:function showOnboarding(){this.setState({showOnboarding:!0})}},{key:"hideOnboarding",value:function hideOnboarding(){this.setState({showOnboarding:!1})}},{key:"showLoadDbc",value:function showLoadDbc(){this.setState({showLoadDbc:!0})}},{key:"hideLoadDbc",value:function hideLoadDbc(){this.setState({showLoadDbc:!1})}},{key:"showSaveDbc",value:function showSaveDbc(){this.setState({showSaveDbc:!0})}},{key:"hideSaveDbc",value:function hideSaveDbc(){this.setState({showSaveDbc:!1})}},{key:"updateMessageFrame",value:function updateMessageFrame(e,t){var n=this.state.messages;n[e].frame=t,this.setState({messages:n})}},{key:"persistDbc",value:function persistDbc(e){var t=e.dbcFilename,n=e.dbc,a=this.state.route;a?Object(j.c)(a.fullname,{dbcFilename:t,dbc:n}):Object(j.c)("live",{dbcFilename:t,dbc:n}),this.loadMessagesFromCache()}},{key:"onConfirmedSignalChange",value:function onConfirmedSignalChange(e,t){var n=this,a=this.state,s=a.dbc,r=a.dbcFilename;s.setSignals(e.address,_objectSpread({},t)),this.persistDbc({dbcFilename:r,dbc:s}),this.updateMessageFrame(e.id,s.getMessageFrame(e.address)),this.setState({dbc:s,dbcText:s.text()},(function(){n.decacheMessageId(e.id),n.loadMessagesFromCache()}))}},{key:"onPartChange",value:function onPartChange(e){var t=this.state,n=t.currentParts,a=t.currentPart,s=t.canFrameOffset,r=t.route;if(-1!==s&&e!==a){var i=Math.min(r.proclog,e+1),o=Math.max(0,i-M.h+1);0===o&&(i=Math.min(r.proclog,2));n[1],n[0];n=[o,i],(a=e)===this.state.currentPart&&n[0]===this.state.currentParts[0]&&n[1]===this.state.currentParts[1]||this.setState({currentParts:n,currentPart:a},this.partChangeDebounced)}}},{key:"showEditMessageModal",value:function showEditMessageModal(e){var t=this.state.messages[e];t.frame||(t.frame=this.state.dbc.createFrame(t.address)),this.setState({showEditMessageModal:!0,editMessageModalMessage:e,messages:this.state.messages,dbcText:this.state.dbc.text()})}},{key:"hideEditMessageModal",value:function hideEditMessageModal(){this.setState({showEditMessageModal:!1})}},{key:"onMessageFrameEdited",value:function onMessageFrameEdited(e){var t=this.state,n=t.messages,a=t.dbcFilename,s=t.dbc,r=t.editMessageModalMessage,i=_objectSpread({},n[r]);i.frame=e,s.messages.set(e.id,e),this.persistDbc({dbcFilename:a,dbc:s}),n[r]=i,this.setState({messages:n,dbc:s,dbcText:s.text()}),this.hideEditMessageModal()}},{key:"onSeek",value:function onSeek(e,t){this.setState({seekIndex:e,seekTime:t});var n=~~(t/60);n!==this.state.currentPart&&this.onPartChange(n)}},{key:"onUserSeek",value:function onUserSeek(e){M.k&&this.unloggerClient.seek(this.props.dongleId,this.props.name,e);var t,n=this.state.messages[this.state.selectedMessage];n?-1===(t=n.entries.findIndex((function(t){return t.relTime>=e})))&&(t=0):t=0,this.onSeek(t,e)}},{key:"onMessageSelected",value:function onMessageSelected(e){var t=this.state,n=t.seekTime,a=t.seekIndex,s=t.messages[e];n>0&&s.entries.length>0&&(-1===(a=s.entries.findIndex((function(e){return e.relTime>=n})))&&(a=0),n=s.entries[a].relTime),this.setState({seekTime:n,seekIndex:a,selectedMessage:e})}},{key:"updateSelectedMessages",value:function updateSelectedMessages(e){this.setState({selectedMessages:e})}},{key:"onMessageUnselected",value:function onMessageUnselected(e){this.setState({selectedMessage:null})}},{key:"loginWithGithub",value:function loginWithGithub(){var e=this.state.route;return b.a.createElement("a",{href:k.a(e&&e.fullname?e.fullname:""),className:"button button--dark button--inline"},b.a.createElement("i",{className:"fa fa-github"}),b.a.createElement("span",null," Log in with Github"))}},{key:"lastMessageEntriesById",value:function lastMessageEntriesById(e,t){var n=Object(l.a)(t,2),a=n[0],s=n[1];return e[a]=s.entries[s.entries.length-1],e}},{key:"processStreamedCanMessages",value:function processStreamedCanMessages(e){var t=this.state.dbcText,n=this.state,a=n.firstCanTime,s=n.lastBusTime,r=n.messages,i=n.maxByteStateChangeCount,o=Object.entries(r).reduce(this.lastMessageEntriesById,{}),c=Object.entries(r).reduce((function(e,t){var n=Object(l.a)(t,2),a=n[0],s=n[1];return e[a]=s.byteStateChangeCounts,e}),{});this.canStreamerWorker.postMessage({newCanMessages:e,prevMsgEntries:o,firstCanTime:a,dbcText:t,lastBusTime:s,byteStateChangeCountsByMessage:c,maxByteStateChangeCount:i})}},{key:"firstEntryIndexInsideStreamingWindow",value:function firstEntryIndexInsideStreamingWindow(e){for(var t=e[e.length-1].relTime-M.i,n=0;n<e.length;n++)if(e[n].relTime>t)return n;return 0}},{key:"enforceStreamingMessageWindow",value:function enforceStreamingMessageWindow(e){for(var t=Object.keys(e),n=0;n<t.length;n++){var a=t[n],s=e[a];if(!(s.entries.length<2))if(s.entries[s.entries.length-1].relTime-s.entries[0].relTime>M.i){var r=this.firstEntryIndexInsideStreamingWindow(s.entries);s.entries=s.entries.slice(r),e[a]=s}}return e}},{key:"_onStreamedCanMessagesProcessed",value:function _onStreamedCanMessagesProcessed(e){var t=e.newMessages,n=e.seekTime,a=e.lastBusTime,s=e.firstCanTime,r=e.maxByteStateChangeCount;r<this.state.maxByteStateChangeCount&&(r=this.state.maxByteStateChangeCount);var i=this.addAndRehydrateMessages(t);i=this.enforceStreamingMessageWindow(i);var o=this.state,l=o.seekIndex,c=o.selectedMessages;c.length>0&&void 0!==i[c[0]]&&(l=Math.max(0,i[c[0]].entries.length-1)),this.setState({messages:i,seekTime:n,seekIndex:l,lastBusTime:a,firstCanTime:s,maxByteStateChangeCount:r})}},{key:"onStreamedCanMessagesProcessed",value:function onStreamedCanMessagesProcessed(e){this._onStreamedCanMessagesProcessed(e.data)}},{key:"handlePandaConnect",value:function(){var e=Object(r.a)(s.a.mark((function _callee7(e){var t,n,a,r,i=this;return s.a.wrap((function _callee7$(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({attemptingPandaConnection:!0,live:!0}),(t=Object(j.a)("live"))&&(n=t.dbc,a=t.dbcText,this.setState({dbc:n,dbcText:a})),this.canStreamerWorker=new Z,this.canStreamerWorker.onmessage=this.onStreamedCanMessagesProcessed,r=this.pandaReader.onError((function(e){console.error(e.stack||e),i.setState({attemptingPandaConnection:!1})})),e.prev=6,e.next=9,this.pandaReader.start();case 9:this.setState({showOnboarding:!1,showLoadDbc:!0}),e.next=14;break;case 12:e.prev=12,e.t0=e.catch(6);case 14:this.setState({attemptingPandaConnection:!1}),r();case 16:case"end":return e.stop()}}),_callee7,this,[[6,12]])})));return function handlePandaConnect(t){return e.apply(this,arguments)}}()},{key:"githubSignOut",value:function githubSignOut(e,t){Object(j.e)(),this.setState({isGithubAuthenticated:!1}),e.preventDefault()}},{key:"render",value:function render(){var e=this.state,t=e.route,n=e.messages,a=e.selectedMessages,s=e.currentParts,r=e.dbcFilename,i=e.dbcLastSaved,o=e.seekTime,l=e.seekIndex,c=e.shareUrl,d=e.maxByteStateChangeCount,u=e.live,g=e.thumbnails,m=e.selectedMessage,h=e.canFrameOffset,p=e.firstCanTime,f=e.currentPart,v=e.partsLoaded,_=this.props,O=_.startTime,y=_.segments;return b.a.createElement("div",{id:"cabana",className:E()({"is-showing-modal":this.showingModal()})},this.state.isLoading?b.a.createElement(L.a,{isLoading:this.state.isLoading}):null,b.a.createElement("div",{className:"cabana-header"},b.a.createElement("a",{className:"cabana-header-logo",href:""},"Comma Cabana"),b.a.createElement("div",{className:"cabana-header-account"},this.state.isGithubAuthenticated?b.a.createElement("div",null,b.a.createElement("p",null,"GitHub Authenticated"),b.a.createElement("p",{className:"cabana-header-account-signout",onClick:this.githubSignOut},"Sign out")):this.loginWithGithub())),b.a.createElement("div",{className:"cabana-window"},b.a.createElement(A.a,{url:this.state.route?t.url:null,messages:n,selectedMessages:a,updateSelectedMessages:this.updateSelectedMessages,showEditMessageModal:this.showEditMessageModal,currentParts:s,onMessageSelected:this.onMessageSelected,onMessageUnselected:this.onMessageUnselected,showLoadDbc:this.showLoadDbc,showSaveDbc:this.showSaveDbc,dbcFilename:r,dbcLastSaved:i,dongleId:this.props.dongleId,name:this.props.name,route:t,seekTime:o,seekIndex:l,shareUrl:c,maxByteStateChangeCount:d,isDemo:this.props.isDemo,live:u,saveLog:Object(N.a)(this.downloadLogAsCSV,500)}),t||u?b.a.createElement(B.a,{url:t?t.url:null,live:u,messages:n,thumbnails:g,selectedMessage:m,onConfirmedSignalChange:this.onConfirmedSignalChange,onSeek:this.onSeek,onUserSeek:this.onUserSeek,canFrameOffset:h,firstCanTime:p,seekTime:o,startTime:O,startSegments:y,seekIndex:l,currentParts:s,selectedPart:f,partsLoaded:v,autoplay:this.props.autoplay,showEditMessageModal:this.showEditMessageModal,onPartChange:this.onPartChange,routeStartTime:t?t.start_time:S()(),videoOffset:this.state.firstFrameTime&&this.state.routeInitTime?this.state.firstFrameTime-this.state.routeInitTime:0,partsCount:t?t.proclog:0}):null),this.state.showOnboarding?b.a.createElement(G.a,{handlePandaConnect:this.handlePandaConnect,attemptingPandaConnection:this.state.attemptingPandaConnection,routes:this.state.routes}):null,this.state.showLoadDbc?b.a.createElement(x.a,{onDbcSelected:this.onDbcSelected,handleClose:this.hideLoadDbc,openDbcClient:this.openDbcClient,loginWithGithub:this.loginWithGithub()}):null,this.state.showSaveDbc?b.a.createElement(P.a,{dbc:this.state.dbc,sourceDbcFilename:this.state.dbcFilename,onDbcSaved:this.onDbcSaved,handleClose:this.hideSaveDbc,openDbcClient:this.openDbcClient,hasGithubAuth:null!==this.props.githubAuthToken,loginWithGithub:this.loginWithGithub()}):null,this.state.showEditMessageModal?b.a.createElement(R.a,{handleClose:this.hideEditMessageModal,handleSave:this.onMessageFrameEdited,message:this.state.messages[this.state.editMessageModalMessage]}):null)}}]),CanExplorer}(p.Component)}).call(this,n(18))},225:function(e,t,n){"use strict";n.d(t,"a",(function(){return authorizeUrl}));var a=n(14),s=n(19);function authorizeUrl(e){var t={client_id:a.d,redirect_uri:a.e,scope:"user:email public_repo",state:JSON.stringify({route:e})};return"http://github.com/login/oauth/authorize?".concat(Object(s.c)(t))}},227:function(e,t,n){"use strict";(function(e){var a=n(2),s=n(3),r=n(64),i=n(14),o=function(){function CloudLog(){Object(a.a)(this,CloudLog),r.a.init({token:i.f,no_format:!0,catchall:!1}),this.context={}}return Object(s.a)(CloudLog,[{key:"bind",value:function bind(e){this.context.update(e)}},{key:"emit",value:function emit(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"log";if("undefined"===typeof e.__JEST__){var a={ctx:this.context,created:(new Date).getTime()/1e3,msg:t,src:"JSCloudLog"};"log"===n?r.a.log(a):"warn"===n?r.a.warn(a):"error"===n&&r.a.error(a)}}},{key:"log",value:function log(e){this.emit(e)}},{key:"warn",value:function warn(e){this.emit(e,"warn")}},{key:"error",value:function error(e){this.emit(e,"error")}}]),CloudLog}();t.a=new o}).call(this,n(18))},230:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return v}));var a=n(10),s=n(11),r=n(2),i=n(3),o=n(8),l=n(6),c=n(9),d=n(1),u=n.n(d),g=n(34),m=n(136),h=n(251),p=n(41),b=n(137),f=n(15);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}var S=g.StyleSheet.create({bit:{margin:0,padding:12,userSelect:"none",cursor:"pointer",textAlign:"center",position:"relative"},bitSelectedStyle:{backgroundColor:"rgba(0,119,158,0.5)"},bitSignificance:{fontSize:12,display:"block",position:"absolute",bottom:0,left:0,right:0,margin:"0 auto"},highlightedSignalTitle:{backgroundColor:"rgba(0,0,0,0.2)"}}),v=function(t){function AddSignals(e){var t;Object(r.a)(this,AddSignals),(t=Object(o.a)(this,Object(l.a)(AddSignals).call(this,e))).updateSignalStyles=function(){var e=t.calcSignalStyles(t.state.signals);t.setState({signalStyles:e})},t.onSignalHover=function(e){e&&t.setState({highlightedSignal:e.name},t.updateSignalStyles)},t.onBitHover=function(e,n){var a=t.state,s=a.dragStartBit,r=a.signals,i=a.dragSignal;if(null!==s)if(null!==i){if(r=t.copySignals(r),s===(i=Object.assign(Object.create(i),i)).startBit&&i.size>1){if(i.isLittleEndian){if(e>i.msbBitIndex())return}else if(f.a.bigEndianBitIndex(e)>i.lsbBitNumber())return;var o=e-s;i.isLittleEndian?i.size-=o:null===i.bitDescription(e)?i.size+=Math.abs(o):i.size-=Math.abs(o),i.startBit+=o,r[i.name]=i,s=i.startBit}else if(1===i.size)Math.floor(e/8)===Math.floor(s/8)&&(e>s?i.isLittleEndian?i.size=e-i.startBit:(i.startBit=e,i.size=e-s+1,s=e):i.isLittleEndian?(i.startBit=e,i.size=s-e+1,s=e):(i.size=s-e+1,s=e)),r[i.name]=i;else if(i.isLittleEndian&&s===i.msbBitIndex()){if(e<i.startBit)return;var l=e-s;null===i.bitDescription(e)?i.size+=Math.abs(l):i.size-=Math.abs(l),r[i.name]=i,s=i.msbBitIndex()}else if(!i.isLittleEndian&&s===i.lsbBitIndex()){var c=e-s;null===i.bitDescription(e)?i.size+=Math.abs(c):i.size-=Math.abs(c),r[i.name]=i,s=i.lsbBitIndex()}t.setState({signals:r,dragSignal:i,dragCurrentBit:e,dragStartBit:s})}else t.setState({dragCurrentBit:e});n&&t.onSignalHover(n)},t.onSignalHoverEnd=function(e){e&&t.setState({highlightedSignal:null},t.updateSignalStyles)},t.resetDragState=function(){t.setState({dragStartBit:null,dragSignal:null,dragCurrentBit:null})},t.onTentativeSignalChange=function(e){var n=t.state.signals;n[e.name]=e,t.setState({signals:n})},t.onSignalChange=function(e,n){var a=t.state.signals;for(var s in a)a[s].uid===e.uid&&delete a[s];a[e.name]=e,t.setState({signals:a},t.propagateUpSignalChange)},t.onSignalRemove=function(e){var n=t.state.signals;delete n[e.name],t.setState({signals:n},t.propagateUpSignalChange)},t.onSignalPlotChange=function(e,n){var a=t.props.message;t.props.onSignalPlotChange(e,a.id,n)};var n={};return e.message&&e.message.frame&&e.message.frame.signals&&(n=t.copySignals(e.message.frame.signals)),t.state={bits:[],signals:n,signalStyles:t.calcSignalStyles(n),highlightedSignal:null,dragStartBit:null,dragSignal:null,dragCurrentBit:null},t}return Object(c.a)(AddSignals,t),Object(i.a)(AddSignals,[{key:"copySignals",value:function copySignals(e){return Object.entries(e).reduce((function(e,t){var n=Object(s.a)(t,2),a=n[0],r=n[1];return e[a]=Object.assign(Object.create(r),r),e}),{})}},{key:"shouldComponentUpdate",value:function shouldComponentUpdate(e,t){return e.message.hexData!==this.props.message.hexData||e.messageIndex!==this.props.messageIndex||JSON.stringify(e.plottedSignalUids)!==JSON.stringify(this.props.plottedSignalUids)||JSON.stringify(this.state)!==JSON.stringify(t)}},{key:"signalColorStyle",value:function signalColorStyle(e){var t,n,a=e.getColors(this.props.selectedMessageKey);if(this.state&&this.state.highlightedSignal===e.name){var s=Object(b.a)(a,-.5),r=Object(b.a)(a,.9);t="rgb(".concat(r.join(","),")"),n="rgba(".concat(s.join(","),",0.5)")}else{var i=a.join(",");t="rgb(".concat(i,")"),n="rgba(".concat(i,",0.2)")}return g.StyleSheet.create({signal:{color:t,backgroundColor:n}}).signal}},{key:"calcSignalStyles",value:function calcSignalStyles(e){var t=this,n={};return Object.values(e).forEach((function(e){n[e.name]=t.signalColorStyle(e)})),n}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){if(e.message.address!==this.props.message.address||e.selectedMessageKey!==this.props.selectedMessageKey){var t=e.message.frame?e.message.frame.signals:{};this.setState({signals:this.copySignals(t)},this.updateSignalStyles)}}},{key:"signalForBit",value:function signalForBit(e){return Object.values(this.state.signals).filter((function(t){return null!==t.bitDescription(e)}))[0]}},{key:"signalBitIndex",value:function signalBitIndex(e,t){var n=t.startBit;return t.isLittleEndian||(n=f.a.bigEndianBitIndex(n)),e-n}},{key:"nextNewSignalName",value:function nextNewSignalName(){var e,t=Object.keys(this.state.signals),n=1;do{e="NEW_SIGNAL_".concat(n),n++}while(-1!==t.indexOf(e));return e}},{key:"onBitMouseDown",value:function onBitMouseDown(e,t){this.setState({dragStartBit:e,dragSignal:t||null})}},{key:"createSignal",value:function createSignal(e){var t=e.startBit,n=e.size,s=e.isLittleEndian,r=new p.a({name:this.nextNewSignalName(),startBit:t,size:n,isLittleEndian:s}),i=this.state.signals;(i=function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(a.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},i))[r.name]=r,this.setState({signals:i},this.propagateUpSignalChange)}},{key:"createSignalIfNotExtendingOne",value:function createSignalIfNotExtendingOne(e,t){if(null===this.state.dragSignal){for(var n=e;n<=t;n++)if(void 0!==this.signalForBit(n))return;var a,s,r=Math.floor(t/8)===Math.floor(e/8);a=r||!(!r&&t<e)?e%8<4:e%8>=4;var i=e;r?s=Math.abs(t-e)+1:a?t>e?(i=e,s=t-e+1):(i=t,s=e-t+1):(t<e&&(i=t),s=Math.abs(f.a.bigEndianBitIndex(t)-f.a.bigEndianBitIndex(e))+1),this.createSignal({startBit:i,size:s,isLittleEndian:a})}}},{key:"onBitMouseUp",value:function onBitMouseUp(e,t){if(null!==this.state.dragStartBit){var n=this.state.dragStartBit;e!==n&&this.createSignalIfNotExtendingOne(n,e),this.propagateUpSignalChange(),this.resetDragState()}}},{key:"byteValueHex",value:function byteValueHex(e){var t=this.props.message.entries;return this.props.messageIndex<t.length?t[this.props.messageIndex].hexData.substr(2*e,2):"--"}},{key:"bitValue",value:function bitValue(t,n){var a=this.props.message.entries;if(this.props.messageIndex<a.length){var s=a[this.props.messageIndex],r=e.from(s.hexData,"hex");return t>=r.length?"-":r.readInt8(t)>>n&1}return"-"}},{key:"bitIsContainedInSelection",value:function bitIsContainedInSelection(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.state,a=n.dragStartBit,s=n.dragCurrentBit;if(t||a%8<4)return null!==a&&null!==s&&e>=a&&e<=s;var r=f.a.bigEndianBitIndex(a),i=f.a.bigEndianBitIndex(s),o=f.a.bigEndianBitIndex(e);return null!==a&&null!==s&&o>=r&&o<=i}},{key:"onBitDoubleClick",value:function onBitDoubleClick(e,t){void 0===t&&this.createSignal({startBit:e,size:1,isLittleEndian:!1})}},{key:"renderBitMatrix",value:function renderBitMatrix(){var e,t=this,n=this.props.message,a=[];e=n.frame&&n.frame.size?Math.floor(8*n.frame.size/8):8;for(var s=0;s<e;s++){for(var r=[],i=function _loop(e){var n=8*s+e,a=t.signalForBit(n),i=null,o="";if(a){i=t.state.signalStyles[a.name]||null;var l=a.bitDescription(n);o=l.isMsb?"msb":l.isLsb?"lsb":""}else t.bitIsContainedInSelection(n)&&(i=S.bitSelectedStyle);var c=Object(m.a)("bit",S.bit,i),d=t.bitValue(s,e);r.push(u.a.createElement("td",{key:e.toString(),className:c,onMouseEnter:function onMouseEnter(){return t.onBitHover(n,a)},onMouseLeave:function onMouseLeave(){return t.onSignalHoverEnd(a)},onMouseDown:t.onBitMouseDown.bind(t,n,a),onMouseUp:t.onBitMouseUp.bind(t,n,a),onDoubleClick:function onDoubleClick(){return t.onBitDoubleClick(n,a)}},u.a.createElement("span",null,d),u.a.createElement("span",{className:Object(m.a)(S.bitSignificance)},o)))},o=7;o>=0;o--)i(o);r.push(u.a.createElement("td",{key:"hex-repr"},this.byteValueHex(s))),a.push(u.a.createElement("tr",{key:s.toString()},r))}return u.a.createElement("div",{className:"cabana-explorer-signals-matrix"},u.a.createElement("table",{cellSpacing:0,onMouseLeave:this.resetDragState},u.a.createElement("tbody",null,a)))}},{key:"propagateUpSignalChange",value:function propagateUpSignalChange(){var e=this.state.signals;this.props.onConfirmedSignalChange(this.props.message,this.copySignals(e))}},{key:"render",value:function render(){var e=this.props.selectedMessageKey;return u.a.createElement("div",{className:"cabana-explorer-signals-controller"},0===Object.keys(this.state.signals).length?u.a.createElement("p",null,"Double click or drag to add a signal"):null,this.props.message.entries[this.props.messageIndex]?u.a.createElement("div",{className:"cabana-explorer-signals-time"},u.a.createElement("p",null,"time:"," ",this.props.message.entries[this.props.messageIndex].relTime.toFixed(3))):null,this.props.message.isLogEvent||this.renderBitMatrix(),u.a.createElement(h.a,{isLogEvent:!!this.props.message.isLogEvent,signals:this.state.signals,signalStyles:this.state.signalStyles,highlightedSignal:this.state.highlightedSignal,onSignalHover:this.onSignalHover,onSignalHoverEnd:this.onSignalHoverEnd,onTentativeSignalChange:this.onTentativeSignalChange,onSignalChange:this.onSignalChange,onSignalRemove:this.onSignalRemove,onSignalPlotChange:this.onSignalPlotChange,plottedSignalUids:this.props.plottedSignalUids,selectedMessageKey:e}))}}]),AddSignals}(d.Component)}).call(this,n(21).Buffer)},24:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return X}));var a=n(11),s=n(2),r=n(3),i=n(226),o=n.n(i),l=n(227),c=n(41),d=n(60),u=n(135),g=n(15),m=n(94),h=n(402).UINT64,p=/^CM_ *"(.*)";/,b=/^CM_ *"(.*)/,f=/^BO_ (\w+) (\w+) *: (\w+) (\w+)/,S=/^SG_ (\w+) : (\d+)\|(\d+)@(\d+)([+|-]) \(([0-9.+-eE]+),([0-9.+-eE]+)\) \[([0-9.+-eE]+)\|([0-9.+-eE]+)\] "(.*)" (.*)/,v=/^SG_ (\w+) (\w+) *: (\d+)\|(\d+)@(\d+)([+|-]) \(([0-9.+-eE]+),([0-9.+-eE]+)\) \[([0-9.+-eE]+)\|([0-9.+-eE]+)\] "(.*)" (.*)/,E=/^VAL_ (\w+) (\w+) (.*);/,_=/^VAL_TABLE_ (\w+) (.*);/,O=/^BO_TX_BU_ ([0-9]+) *: *(.+);/,y=/^CM_ SG_ *(\w+) *(\w+) *"(.*)";/,C=/^CM_ SG_ *(\w+) *(\w+) *"(.*)/,T=/^CM_ BO_ *(\w+) *"(.*)";/,D=/^CM_ BO_ *(\w+) *"(.*)/,w=/^BU_:(.*)/,M=/^CM_ BU_ *(\w+) *"(.*)";/,k=/^CM_ BU_ *(\w+) *"(.*)/;function floatOrInt(e){return Number.isInteger(e)?parseInt(e,10):parseFloat(e)}var X=function(){function DBC(e){Object(s.a)(this,DBC),this.boardUnits=[],this.comments=[],this.messages=new Map,void 0!==e&&(this.dbcText=e,this.importDbcString(e))}return Object(r.a)(DBC,[{key:"getMessageFrame",value:function getMessageFrame(e){return m.b(e)?m.a(e):this.messages.get(e)}},{key:"nextNewFrameName",value:function nextNewFrameName(){var e=[],t=!0,n=!1,a=void 0;try{for(var s,r=this.messages.values()[Symbol.iterator]();!(t=(s=r.next()).done);t=!0){var i=s.value;e.push(i.name)}}catch(c){n=!0,a=c}finally{try{t||null==r.return||r.return()}finally{if(n)throw a}}var o,l=1;do{o="NEW_MSG_".concat(l),l++}while(-1!==e.indexOf(o));return o}},{key:"updateBoardUnits",value:function updateBoardUnits(){var e=this.boardUnits.map((function(e){return e.name})),t=Array.from(this.messages.entries()).map((function(e){var t=Object(a.a)(e,2),n=(t[0],t[1]);return Object.values(n.signals)})).reduce((function(e,t){return e.concat(t)}),[]).map((function(e){return e.receiver})).reduce((function(e,t){return e.concat(t)}),[]).filter((function(e,t,n){return n.indexOf(e)===t})).filter((function(t){return-1===e.indexOf(t)})).map((function(e){return new u.a(e)}));this.boardUnits=this.boardUnits.concat(t)}},{key:"text",value:function text(){this.updateBoardUnits();var e='VERSION ""\n\n\n';e+="NS_ :".concat(this._newSymbols()),e+="\n\nBS_:\n";var t=this.boardUnits.map((function(e){return e.text()})).join(" ");e+="\nBU_: ".concat(t,"\n\n\n");var n=[],s=!0,r=!1,i=void 0;try{for(var o,l=this.messages.values()[Symbol.iterator]();!(s=(o=l.next()).done);s=!0){var c=o.value;n.push(c)}}catch(g){r=!0,i=g}finally{try{s||null==l.return||l.return()}finally{if(r)throw i}}e+="".concat(n.map((function(e){return e.text()})).join("\n\n"),"\n\n");var d=n.map((function(e){return[e.id,e.transmitters.slice(1)]})).filter((function(e){var t=Object(a.a)(e,2);t[0];return t[1].length>0}));e+="".concat(d.map((function(e){var t=Object(a.a)(e,2),n=t[0],s=t[1];return"BO_TX_BU_ ".concat(n," : ").concat(s.join(","),";")})).join("\n"),"\n\n\n"),e+=this.boardUnits.filter((function(e){return null!==e.comment})).map((function(e){return"CM_ BU_ ".concat(e.name,' "').concat(e.comment,'";')})).join("\n"),e+=n.filter((function(e){return null!==e.comment})).map((function(e){return"CM_ BO_ ".concat(e.address,' "').concat(e.comment,'";')})).join("\n");var u=n.map((function(e){return Object.values(e.signals).map((function(t){return[e.id,t]}))})).reduce((function(e,t){return e.concat(t)}),[]);return e+="".concat(u.filter((function(e){var t=Object(a.a)(e,2);t[0];return null!==t[1].comment})).map((function(e){var t=Object(a.a)(e,2),n=t[0],s=t[1];return"CM_ SG_ ".concat(n," ").concat(s.name,' "').concat(s.comment,'";')})).join("\n"),"\n"),e+="".concat(u.filter((function(e){var t=Object(a.a)(e,2);t[0];return t[1].valueDescriptions.size>0})).map((function(e){var t=Object(a.a)(e,2),n=t[0];return t[1].valueDescriptionText(n)})).join("\n"),"\n"),e+=this.comments.map((function(e){return'CM_ "'.concat(e,'";')})).join("\n"),"".concat(e.trim(),"\n")}},{key:"getMessageName",value:function getMessageName(e){var t=this.getMessageFrame(e);return t&&t.frame?t.frame.name:null}},{key:"getSignals",value:function getSignals(e){var t=this.getMessageFrame(e);return t?t.signals:{}}},{key:"createFrame",value:function createFrame(e){var t=new d.a({name:this.nextNewFrameName(),id:e,size:8});return this.messages.set(e,t),t}},{key:"setSignals",value:function setSignals(e,t){var n=this.getMessageFrame(e);if(n){var a=Object.assign(Object.create(n),n);a.signals=t,this.messages.set(e,a)}else{var s=this.createFrame(e);s.signals=t,this.messages.set(e,s),this.updateBoardUnits()}}},{key:"addSignal",value:function addSignal(e,t){var n=this.getMessageFrame(e);n&&(n.signals[t.name]=t,this.updateBoardUnits())}},{key:"importDbcString",value:function importDbcString(e){for(var t=[],n=new Map,s=[],r=new Map,i=0,o=null,g=e.split("\n"),m=0;m<g.length;m++){var h=g[m].trim();if(0!==h.length){if(null!=o){var X=o,A=X.type,B=X.data;h=h.replace(/" *;/,"");var G="\n".concat(h.substr(0,h.length));if(-1!==h.indexOf('"')&&(o=null,G=G.substr(0,G.length-1)),"FollowUpSignalComment"===A)B.comment+=G;else if("FollowUpMsgComment"===A){B.comment+=G}else if("FollowUpBoardUnitComment"===A){B.comment+=G}else if("FollowUpDbcComment"===A){var P=this.comments[this.comments.length-1];this.comments[this.comments.length-1]=P+G}}if(0===h.indexOf("BO_ ")){var x=h.match(f);if(null===x){t.push("failed to parse message definition on line ".concat(m+1," -- ").concat(h));continue}var N=x.slice(1),R=Object(a.a)(N,4),L=R[0],j=R[1],I=R[2],U=R[3];i=parseInt(L,0),I=parseInt(I,10);var F=new d.a({name:j,id:i,size:I,transmitters:[U]});n.set(i,F)}else if(0===h.indexOf("SG_")){var z=h.match(S);if(null===z){if(null===(z=h.match(v))){t.push("failed to parse signal definition on line ".concat(m+1," -- ").concat(h));continue}z=z[1]+z.slice(3)}else z=z.slice(1);var H=z,V=Object(a.a)(H,11),W=V[0],Y=V[1],K=V[2],Z=V[3],Q=V[4],J=V[5],q=V[6],$=V[7],ee=V[8],te=V[9],ne=V[10],ae={name:W,startBit:Y=parseInt(Y,10),size:K=parseInt(K,10),isLittleEndian:Z=1===parseInt(Z,10),isSigned:Q="-"===Q,factor:J=floatOrInt(J),offset:q=floatOrInt(q),unit:te,min:$=floatOrInt($),max:ee=floatOrInt(ee),receiver:ne.split(",").map((function(e){return e.trim()}))},se=new c.a(ae);void 0!==n.get(i)?n.get(i).signals[W]=se:l.a.warn("importDbcString: could not add signal: ".concat(W," due to missing message: ").concat(i))}else if(0===h.indexOf("VAL_ ")){var re=h.match(E);if(null!==re){var ie=re.slice(1),oe=Object(a.a)(ie,3),le=oe[0],ce=oe[1],de=oe[2];de=de.split('"').map((function(e){return e.trim()})).filter((function(e){return e.length>0})),le=parseInt(le,10);var ue=n.get(le).signals[ce];if(void 0===ue){t.push("could not find signal for value description on line ".concat(m+1," -- ").concat(h));continue}for(var ge=0;ge<de.length;ge+=2){var me=de[ge].trim(),he=de[ge+1].trim();ue.valueDescriptions.set(me,he)}}else t.push("failed to parse value description on line ".concat(m+1," -- ").concat(h))}else if(0===h.indexOf("VAL_TABLE_ ")){var pe=h.match(_);if(null!==pe){var be=new Map,fe=pe.slice(1),Se=Object(a.a)(fe,2),ve=Se[0],Ee=Se[1];Ee=Ee.split('"').map((function(e){return e.trim()})).filter((function(e){return e.length>0}));for(var _e=0;_e<Ee.length;_e+=2){var Oe=Ee[_e],ye=Ee[_e+1];be.set(Oe,ye)}r.set(ve,be)}else t.push("failed to parse value table on line ".concat(m+1," -- ").concat(h))}else if(0===h.indexOf("BO_TX_BU_ ")){var Ce=h.match(O);if(null!==Ce){var Te=Ce.slice(1),De=Object(a.a)(Te,2),we=De[0],Me=De[1];we=parseInt(we,10);var ke=n.get(we);ke.transmitters.push(Me),n.set(we,ke)}else t.push("failed to parse message transmitter definition on line ".concat(m+1," -- ").concat(h))}else if(0===h.indexOf("CM_ SG_ ")){var Xe=h.match(y),Ae=!1;if(null===Xe&&(Xe=h.match(C),Ae=!0),null===Xe){t.push("failed to parse signal comment on line ".concat(m+1," -- ").concat(h));continue}var Be=Xe.slice(1),Ge=Object(a.a)(Be,3),Pe=Ge[0],xe=Ge[1],Ne=Ge[2];Pe=parseInt(Pe,10);var Re=n.get(Pe);if(void 0===Re){t.push("failed to parse signal comment on line ".concat(m+1," -- ").concat(h,":\n message id ").concat(Pe," does not exist prior to this line"));continue}var Le=Re.signals[xe];if(void 0===Le){t.push("failed to parse signal comment on line ".concat(m+1," -- ").concat(h));continue}Le.comment=Ne,n.set(Pe,Re),Ae&&(o={type:"FollowUpSignalComment",data:Le})}else if(0===h.indexOf("CM_ BO_ ")){var je=h.match(T),Ie=!1;if(null===je&&(Ie=!0,null===(je=h.match(D)))){t.push("failed to message comment on line ".concat(m+1," -- ").concat(h));continue}var Ue=je.slice(1),Fe=Object(a.a)(Ue,2),ze=Fe[0],He=Fe[1];ze=parseInt(ze,10);var Ve=n.get(ze);Ve.comment=He,Ie&&(o={type:"FollowUpMsgComment",data:Ve})}else if(0===h.indexOf("BU_: ")){var We=h.match(w);if(null===We){t.push("failed to parse board unit definition on line ".concat(m+1," -- ").concat(h));continue}var Ye=We.slice(1),Ke=Object(a.a)(Ye,1)[0].split(" ").map((function(e){return e.trim()})).filter((function(e){return e.length>0})).map((function(e){return new u.a(e)}));s=s.concat(Ke)}else if(0===h.indexOf("CM_ BU_ ")){if("continue"===function(){var e=h.match(M),n=!1;if(null===e&&(n=!0,null===(e=h.match(k))))return t.push("failed to parse board unit comment on line ".concat(m+1," -- ").concat(h)),"continue";var r=e.slice(1),i=Object(a.a)(r,2),l=i[0],c=i[1],d=s.find((function(e){return e.name===l}));d&&(d.comment=c),n&&(o={type:"FollowUpBoardUnitComment",data:d})}())continue}else if(0===h.indexOf("CM_ ")){var Ze=h.match(p),Qe=!1;if(null===Ze){if(null===(Ze=h.match(b))){t.push("failed to parse dbc comment on line ".concat(m+1," -- ").concat(h));continue}Qe=!0}var Je=Ze.slice(1),qe=Object(a.a)(Je,1)[0];this.comments.push(qe),Qe&&(o={type:"FollowUpDbcComment",data:qe})}}}t.length,this.messages=n,this.boardUnits=s,this.valueTables=r}},{key:"valueForInt64Signal",value:function valueForInt64Signal(e,t){var n,a,s,r=4*t.length;if(e.isLittleEndian?(n=h(function swapOrder(e,t,n){for(var a=[],s=0;s<e.length;s+=t)for(var r=e.slice(s,s+t),i=t-n;i>-n;i-=n)a.push(r.slice(i,i+n));return a.join("")}(t,16,2),16),a=e.startBit,s=h(a)):(n=h(t,16),a=g.a.bigEndianBitIndex(e.startBit),s=h(r-(a+e.size))),s<0)return null;var i=h(Math.pow(2,e.size)-1),o=n.shiftr(s).and(i).toNumber();return e.isSigned&&o&Math.pow(2,e.size-1)&&(o-=Math.pow(2,e.size)),o=o*e.factor+e.offset}},{key:"valueForInt32Signal",value:function valueForInt32Signal(e,t){var n,a,s;if(e.isLittleEndian)n=64-e.startBit-e.size;else{var r=(-e.startBit-1)%8;r<0&&(r+=8),n=8*Math.floor(e.startBit/8)+r}var i=Math.min(4,Math.floor(e.startBit/8));return e.isLittleEndian?(s=t.readUInt32LE(i),a=e.startBit-8*i):(s=t.readUInt32BE(i),a=32-(n-8*i+e.size)),s=s>>>a&(1<<e.size)-1,e.isSigned&&s>>>e.size-1&&(s-=1<<e.size),s*e.factor+e.offset}},{key:"getSignalValues",value:function getSignalValues(t,n){var a=this;if(!this.messages.has(t)&&!m.b(t))return{};var s=this.getMessageFrame(t),r=e.from(n),i=r;if(8!==r.length){var l=o()(r.toString("hex"),16,"0");i=e.from(l,"hex")}var c=i.toString("hex"),d={};return Object.values(s.signals).forEach((function(e){var t;t=e.size>32?a.valueForInt64Signal(e,c):a.valueForInt32Signal(e,i),d[e.name]=t})),d}},{key:"getChffrMetricMappings",value:function getChffrMetricMappings(){var e=this.comments.find((function(e){return 0===e.indexOf("CHFFR_METRIC")}));return e?e.split(";").map((function(e){return e.trim().split(" ")})).reduce((function(e,t){var n=Object(a.a)(t,6),s=(n[0],n[1]),r=n[2],i=n[3],o=n[4],l=n[5];return e[i]={messageId:parseInt(s,10),signalName:r,factor:parseFloat(o),offset:parseFloat(l)},e}),{}):null}},{key:"_newSymbols",value:function _newSymbols(){return"\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n EV_DATA_\n ENVVAR_DATA_\n SGTYPE_\n SGTYPE_VAL_\n BA_DEF_SGTYPE_\n BA_SGTYPE_\n SIG_TYPE_REF_\n VAL_TABLE_\n SIG_GROUP_\n SIG_VALTYPE_\n SIGTYPE_VALTYPE_\n BO_TX_BU_\n BA_DEF_REL_\n BA_REL_\n BA_DEF_DEF_REL_\n BU_SG_REL_\n BU_EV_REL_\n BU_BO_REL_\n SG_MUL_VAL_"}}]),DBC}()}).call(this,n(21).Buffer)},240:function(e,t,n){"use strict";n.d(t,"a",(function(){return f}));var a=n(2),s=n(3),r=n(8),i=n(6),o=n(7),l=n(9),c=n(1),d=n.n(c),u=(n(32),n(487),n(13)),g=n.n(u),m=n(53),h=n.n(m),p=n(14),b=n(42),f=function(e){function OnboardingModal(e){var t;return Object(a.a)(this,OnboardingModal),(t=Object(r.a)(this,Object(i.a)(OnboardingModal).call(this,e))).state={webUsbEnabled:!!navigator.usb,viewingUsbInstructions:!1,pandaConnected:!1},t.attemptPandaConnection=t.attemptPandaConnection.bind(Object(o.a)(t)),t.toggleUsbInstructions=t.toggleUsbInstructions.bind(Object(o.a)(t)),t.navigateToExplorer=t.navigateToExplorer.bind(Object(o.a)(t)),t}return Object(l.a)(OnboardingModal,e),Object(s.a)(OnboardingModal,[{key:"attemptPandaConnection",value:function attemptPandaConnection(){this.state.webUsbEnabled&&this.props.handlePandaConnect()}},{key:"toggleUsbInstructions",value:function toggleUsbInstructions(){this.setState({viewingUsbInstructions:!this.state.viewingUsbInstructions})}},{key:"navigateToExplorer",value:function navigateToExplorer(){window.location.href=p.b}},{key:"filterRoutesWithCan",value:function filterRoutesWithCan(e){return!0===e.can}},{key:"renderPandaEligibility",value:function renderPandaEligibility(){var e=this.state,t=e.webUsbEnabled,n=e.pandaConnected,a=this.props.attemptingPandaConnection;return t?!n&&a?d.a.createElement("p",null,d.a.createElement("i",{className:"fa fa-spinner animate-spin"}),d.a.createElement("span",{className:"animate-pulse-opacity"},"Waiting for panda USB connection")):void 0:d.a.createElement("p",null,d.a.createElement("i",{className:"fa fa-exclamation-triangle"}),d.a.createElement("a",{onClick:this.toggleUsbInstructions},d.a.createElement("span",null,"WebUSB is not enabled in your Chrome settings")))}},{key:"renderLogin",value:function renderLogin(){return d.a.createElement("button",{onClick:this.navigateToExplorer,className:"button--primary button--kiosk"},d.a.createElement("i",{className:"fa fa-video-camera"}),d.a.createElement("strong",null,h.a.isAuthenticated()?"Find a drive in Explorer":"Log in with Explorer"),d.a.createElement("sup",null,'Click "View CAN Data" while replaying a drive'))}},{key:"renderOnboardingOptions",value:function renderOnboardingOptions(){return d.a.createElement("div",{className:"cabana-onboarding-modes"},d.a.createElement("div",{className:"cabana-onboarding-mode"},this.renderLogin()),d.a.createElement("div",{className:"cabana-onboarding-mode"},d.a.createElement("button",{className:g()("button--secondary button--kiosk",{"is-disabled":!this.state.webUsbEnabled||this.props.attemptingPandaConnection}),onClick:this.attemptPandaConnection},d.a.createElement("i",{className:"fa fa-bolt"}),d.a.createElement("strong",null,"Launch Realtime Streaming"),d.a.createElement("sup",null,"Interactively stream car data over USB with"," ",d.a.createElement("em",null,"panda")),this.renderPandaEligibility())))}},{key:"renderUsbInstructions",value:function renderUsbInstructions(){return d.a.createElement("div",{className:"cabana-onboarding-instructions"},d.a.createElement("button",{className:"button--small button--inverted",onClick:this.toggleUsbInstructions},d.a.createElement("i",{className:"fa fa-chevron-left"}),d.a.createElement("span",null," Go back")),d.a.createElement("h3",null,"Follow these directions to enable WebUSB:"),d.a.createElement("ol",{className:"cabana-onboarding-instructions-list list--bubbled"},d.a.createElement("li",null,d.a.createElement("p",null,d.a.createElement("strong",null,"Open your Chrome settings:")),d.a.createElement("div",{className:"inset"},d.a.createElement("span",null,"chrome://flags/#enable-experimental-web-platform-features"))),d.a.createElement("li",null,d.a.createElement("p",null,d.a.createElement("strong",null,"Enable Experimental Platform features:")),d.a.createElement("img",{alt:"Screenshot of Google Chrome Experimental Platform features",src:OnboardingModal.instructionalImages.step2})),d.a.createElement("li",null,d.a.createElement("p",null,d.a.createElement("strong",null,"Enable WebUSB:")),d.a.createElement("img",{alt:"Screenshot of Google Chrome enable WebUSB",src:OnboardingModal.instructionalImages.step3})),d.a.createElement("li",null,d.a.createElement("p",null,d.a.createElement("strong",null,"Relaunch your Chrome browser and try enabling live mode again.")))))}},{key:"renderModalContent",value:function renderModalContent(){return this.state.viewingUsbInstructions?this.renderUsbInstructions():this.renderOnboardingOptions()}},{key:"renderModalFooter",value:function renderModalFooter(){return d.a.createElement("p",null,d.a.createElement("span",null,"Don't have a"," ",d.a.createElement("a",{href:"https://panda.comma.ai",target:"_blank",rel:"noopener noreferrer"},"panda"),"?"," "),d.a.createElement("span",null,d.a.createElement("a",{href:"https://panda.comma.ai",target:"_blank",rel:"noopener noreferrer"},"Get one here")," "),d.a.createElement("span",null,"or"," ",d.a.createElement("a",{href:"".concat(window.location.href,"?demo=1")},"try the demo"),"."))}},{key:"render",value:function render(){return d.a.createElement(b.a,{title:"Welcome to Cabana",subtitle:"Get started by selecting a drive from Explorer or enabling live mode",footer:this.renderModalFooter(),disableClose:!0,variations:["wide","dark"]},this.renderModalContent())}}]),OnboardingModal}(c.Component);f.instructionalImages={step2:n(488),step3:n(489)}},241:function(e,t,n){"use strict";n.d(t,"a",(function(){return v}));var a=n(4),s=n.n(a),r=n(12),i=n(2),o=n(3),l=n(8),c=n(6),d=n(7),u=n(9),g=n(1),m=n.n(g),h=n(13),p=n.n(h),b=n(242),f=n.n(b),S=(n(59),n(24),n(42)),v=function(e){function SaveDbcModal(e){var t;return Object(i.a)(this,SaveDbcModal),(t=Object(l.a)(this,Object(c.a)(SaveDbcModal).call(this,e))).state={tab:"GitHub",openDbcFork:null,dbcFilename:t.props.sourceDbcFilename,tabs:["GitHub","Download"],commitMessage:"OpenDBC updates"},t.commitToGitHub=t.commitToGitHub.bind(Object(d.a)(t)),t.downloadDbcFile=t.downloadDbcFile.bind(Object(d.a)(t)),t.forkOpenDbcAndWait=t.forkOpenDbcAndWait.bind(Object(d.a)(t)),t.renderForkButton=t.renderForkButton.bind(Object(d.a)(t)),t.renderTabNavigation=t.renderTabNavigation.bind(Object(d.a)(t)),t.renderActions=t.renderActions.bind(Object(d.a)(t)),t}return Object(u.a)(SaveDbcModal,e),Object(o.a)(SaveDbcModal,[{key:"componentWillMount",value:function(){var e=Object(r.a)(s.a.mark((function _callee(){var e;return s.a.wrap((function _callee$(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.props.openDbcClient.getUserOpenDbcFork();case 2:e=t.sent,this.setState({openDbcFork:e});case 4:case"end":return t.stop()}}),_callee,this)})));return function componentWillMount(){return e.apply(this,arguments)}}()},{key:"commitToGitHub",value:function(){var e=Object(r.a)(s.a.mark((function _callee2(){var e,t,n,a;return s.a.wrap((function _callee2$(s){for(;;)switch(s.prev=s.next){case 0:return e=this.state,t=e.openDbcFork,n=e.dbcFilename,a="".concat(n.replace(/\.dbc/g,""),".dbc"),s.next=4,this.props.openDbcClient.commitFile(t,a,this.props.dbc.text(),this.state.commitMessage);case 4:s.sent&&this.props.onDbcSaved(a);case 6:case"end":return s.stop()}}),_callee2,this)})));return function commitToGitHub(){return e.apply(this,arguments)}}()},{key:"downloadDbcFile",value:function(){var e=Object(r.a)(s.a.mark((function _callee3(){var e,t;return s.a.wrap((function _callee3$(n){for(;;)switch(n.prev=n.next){case 0:e=new Blob([this.props.dbc.text()],{type:"text/plain;charset=utf-8"}),t="".concat(this.state.dbcFilename.replace(/\.dbc/g,""),".dbc"),f.a.saveAs(e,t,!0);case 3:case"end":return n.stop()}}),_callee3,this)})));return function downloadDbcFile(){return e.apply(this,arguments)}}()},{key:"forkOpenDbcAndWait",value:function(){var e=Object(r.a)(s.a.mark((function _callee4(){var e,t,n,a=this;return s.a.wrap((function _callee4$(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,this.props.openDbcClient.fork();case 2:s.sent&&(e=!1,t=window.setTimeout((function(){e=!0}),3e4),n=window.setInterval((function(){e?window.clearInterval(n):a.props.openDbcClient.getUserOpenDbcFork().then((function(e){null!==e&&(a.setState({openDbcFork:e}),window.clearInterval(n),window.clearTimeout(t))}))}),3e3));case 4:case"end":return s.stop()}}),_callee4,this)})));return function forkOpenDbcAndWait(){return e.apply(this,arguments)}}()},{key:"primaryActionDisabled",value:function primaryActionDisabled(){var e=this.state.tab;return"GitHub"===e?null!=this.state.openDbcFork&&this.state.dbcFilename.length>0:"Download"===e||void 0}},{key:"renderForkButton",value:function renderForkButton(){return m.a.createElement("button",{onClick:this.forkOpenDbcAndWait},m.a.createElement("i",{className:"fa fa-code-fork"}),m.a.createElement("span",null," Fork OpenDBC"))}},{key:"renderForkStep",value:function renderForkStep(){var e,t=this.state.openDbcFork;return e=null!==t?m.a.createElement("button",{disabled:!0},m.a.createElement("i",{className:"fa fa-code-fork"}),m.a.createElement("span",null," ","Forked:",t)):this.props.hasGithubAuth?this.renderForkButton():this.props.loginWithGithub,m.a.createElement("div",null,null!==t?this.renderForkButton():null,e,m.a.createElement("hr",null))}},{key:"renderFilenameField",value:function renderFilenameField(){var e=this;return m.a.createElement("div",{className:"form-field","data-extension":".dbc"},m.a.createElement("label",{htmlFor:"filename"},m.a.createElement("span",null,"Choose a filename:"),m.a.createElement("sup",null,"Pick a unique name for your car DBC file")),m.a.createElement("input",{type:"text",id:"filename",value:this.state.dbcFilename.replace(/\.dbc/g,""),size:this.state.dbcFilename.length+2,onChange:function onChange(t){return e.setState({dbcFilename:t.target.value})}}))}},{key:"renderTabNavigation",value:function renderTabNavigation(){var e=this;return m.a.createElement("div",{className:"cabana-tabs-navigation"},this.state.tabs.map((function(t){return m.a.createElement("a",{className:p()({"is-active":e.state.tab===t}),onClick:function onClick(){e.setState({tab:t})},key:t},m.a.createElement("span",null,t))})))}},{key:"renderCommitMessage",value:function renderCommitMessage(){var e=this;return m.a.createElement("div",{className:"form-field"},m.a.createElement("label",{htmlFor:"commit-message"},m.a.createElement("span",null,"Commit Message:"),m.a.createElement("sup",null,"Message appears in git logs")),m.a.createElement("input",{type:"text",id:"commit-message",value:this.state.commitMessage,onChange:function onChange(t){return e.setState({commitMessage:t.target.value})}}))}},{key:"renderTabContent",value:function renderTabContent(){var e=this.state.tab;return"GitHub"===e?m.a.createElement("div",null,this.renderForkStep(),this.renderFilenameField(),this.renderCommitMessage()):"Download"===e?m.a.createElement("div",null,this.renderFilenameField()):void 0}},{key:"renderActions",value:function renderActions(){var e=this.state.tab;return"GitHub"===e?m.a.createElement("div",null,m.a.createElement("button",{className:"button--inverted",onClick:this.props.handleClose},m.a.createElement("span",null,"Cancel")),m.a.createElement("button",{className:"button--primary",onClick:this.commitToGitHub},m.a.createElement("span",null,"Commit to GitHub"))):"Download"===e?m.a.createElement("div",null,m.a.createElement("button",{className:"button--inverted",onClick:this.props.handleClose},m.a.createElement("span",null,"Cancel")),m.a.createElement("button",{className:"button--primary",onClick:this.downloadDbcFile},m.a.createElement("span",null,"Download"))):void 0}},{key:"render",value:function render(){return m.a.createElement(S.a,{title:"Save DBC File",subtitle:"Save your progress and output to a DBC file",handleClose:this.props.handleClose,navigation:this.renderTabNavigation(),actions:this.renderActions()},this.renderTabContent())}}]),SaveDbcModal}(g.Component)},244:function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var a=n(2),s=n(3),r=n(8),i=n(6),o=n(7),l=n(9),c=n(1),d=n.n(c),u=n(42),g=function(e){function EditMessageModal(e){var t;return Object(a.a)(this,EditMessageModal),(t=Object(r.a)(this,Object(i.a)(EditMessageModal).call(this,e))).state={messageFrame:e.message.frame.copy()},t.handleSave=t.handleSave.bind(Object(o.a)(t)),t.editTransmitter=t.editTransmitter.bind(Object(o.a)(t)),t.addTransmitter=t.addTransmitter.bind(Object(o.a)(t)),t.renderActions=t.renderActions.bind(Object(o.a)(t)),t}return Object(l.a)(EditMessageModal,e),Object(s.a)(EditMessageModal,[{key:"handleSave",value:function handleSave(){this.props.handleSave(this.state.messageFrame)}},{key:"addTransmitter",value:function addTransmitter(){var e=this.state.messageFrame;e.addTransmitter(),this.setState({messageFrame:e})}},{key:"editTransmitter",value:function editTransmitter(e){}},{key:"renderActions",value:function renderActions(){return d.a.createElement("div",null,d.a.createElement("button",{className:"button--inverted",onClick:this.props.handleClose},"Cancel"),d.a.createElement("button",{className:"button--primary",onClick:this.handleSave},"Save Message"))}},{key:"render",value:function render(){var e=this;return d.a.createElement(u.a,{title:"Edit Message: (".concat(this.props.message.id,")"),subtitle:"Make changes and update defaults of this message",handleClose:this.props.handleClose,handleSave:this.handleSave,actions:this.renderActions()},d.a.createElement("div",{className:"form-field"},d.a.createElement("label",{htmlFor:"message_name"},d.a.createElement("span",null,"Name"),d.a.createElement("sup",null,"Customize the name of this message")),d.a.createElement("input",{type:"text",id:"message_name",value:this.state.messageFrame.name,onChange:function onChange(t){var n=e.state.messageFrame;n.name=t.target.value,e.setState({messageFrame:n})}})),d.a.createElement("div",{className:"form-field"},d.a.createElement("label",{htmlFor:"message_size"},d.a.createElement("span",null,"Size"),d.a.createElement("sup",null,"Add a size parameter to this message")),d.a.createElement("input",{type:"number",id:"message_size",value:this.state.messageFrame.size,onChange:function onChange(t){var n=e.state.messageFrame;t.target.value>8||(n.size=parseInt(t.target.value,10),e.setState({messageFrame:n}))}})),d.a.createElement("div",{className:"form-field u-hidden"},d.a.createElement("label",{htmlFor:"message_transmitters"},d.a.createElement("span",null,"Transmitters"),d.a.createElement("sup",null,"Add the physical ECU units that this message is coming from.")),d.a.createElement("div",{className:"form-field-inset"},d.a.createElement("ul",{className:"form-field-inset-list"},this.state.messageFrame.transmitters.map((function(e){return d.a.createElement("li",{className:"form-field-inset-list-item",key:e},d.a.createElement("div",{className:"form-field-inset-list-item-title"},d.a.createElement("span",null,e)),d.a.createElement("div",{className:"form-field-inset-list-item-action"},d.a.createElement("button",{className:"button--tiny button--alpha"},"Edit")))})),d.a.createElement("button",{className:"button--tiny button--alpha"},d.a.createElement("span",null,d.a.createElement("i",{className:"fa fa-plus"})," ","Add Transmitter"))))))}}]),EditMessageModal}(c.Component)},245:function(e,t,n){"use strict";var a=n(61),s=n(63);function _templateObject2(){var e=Object(a.a)(["\n display: block;\n animation-name: ",";\n animation-duration: 2s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n background-color: ",";\n background-image: linear-gradient(\n to right,\n "," 0,\n "," 50%,\n "," 50%,\n "," 100%\n );\n background-repeat: repeat-x;\n background-size: 25pc 25pc;\n width: 200%;\n position: fixed;\n top: 0;\n left: 0;\n height: 2;\n"]);return _templateObject2=function _templateObject2(){return e},e}function _templateObject(){var e=Object(a.a)(["\n 0% {\n transform: translateX(0)\n }\n to {\n transform: translateX(-400px)\n }\n"]);return _templateObject=function _templateObject(){return e},e}var r=Object(s.b)(_templateObject());t.a=Object(s.a)("div")(_templateObject2(),r,"rgba(74, 242, 161, 1.00)","rgba(140, 169, 197, 1.00)","rgba(140, 169, 197, 1.00)","rgba(74, 242, 161, 1.00)","rgba(74, 242, 161, 1.00)")},246:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var a=n(2),s=n(3),r=n(247),i=n.n(r),o=n(14),l=function(){function UnloggerClient(){Object(a.a)(this,UnloggerClient),this.socket=i()(o.j)}return Object(s.a)(UnloggerClient,[{key:"seek",value:function seek(e,t,n){this.socket.emit("seek",e,t,n)}}]),UnloggerClient}()},248:function(e,t,n){"use strict";function hash(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return(t>>>0).toString(16)}n.d(t,"a",(function(){return hash}))},249:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return loadRetropilotDrive}));var a=n(4),s=n.n(a),r=n(10),i=n(12),o=n(32),l=n.n(o),c=n(92),d=n(24),u=n(28);function loadRetropilotDrive(e,t,n){return _loadRetropilotDrive.apply(this,arguments)}function _loadRetropilotDrive(){return(_loadRetropilotDrive=Object(i.a)(s.a.mark((function _callee(t,n,a){var i,o,g,m,h,p,b;return s.a.wrap((function _callee$(s){for(;;)switch(s.prev=s.next){case 0:if(null!=n&&0!=n.length){s.next=3;break}return e.retropilotLoaded=!1,s.abrupt("return");case 3:return s.next=5,fetch(t+"useradmin/cabana_drive/"+encodeURIComponent(n));case 5:return o=s.sent,s.prev=6,s.next=9,o.json();case 9:g=s.sent,s.next=14;break;case 12:s.prev=12,s.t0=s.catch(6);case 14:if(void 0!=g&&void 0!=g.logUrls){s.next=18;break}return alert(void 0!=g&&void 0!=g.status?g.status:"fetching retropilot drive failed!"),e.retropilotLoaded=!1,s.abrupt("return");case 18:e.retropilotLogUrls=g.logUrls,m=void 0!=g.dbc&&g.dbc.length>0?new d.a(g.dbc):c.a,e.retropilotProps=(i={autoplay:!0,startTime:a,segments:e.retropilotLogUrls.length,isDemo:!0,max:e.retropilotLogUrls.length,name:g.driveIdentifier,dongleId:g.dongleId,dbc:m},Object(r.a)(i,"isDemo",!0),Object(r.a)(i,"dbcFilename",void 0!=g.dbcFilename?g.dbcFilename:"toyota_nodsu_pt_generated.dbc"),i),e.retropilotRoute={fullname:g.name,proclog:e.retropilotProps.max,start_time:l()(e.retropilotProps.name,"YYYY-MM-DD--H-m-s"),url:g.driveUrl},e.retropilotProps.max>0?((h=Object(u.a)(e.retropilotRoute.fullname))&&(p=h.dbcFilename,b=h.dbc,e.retropilotProps.dbc=b,e.retropilotProps.dbcFilename=p),e.retropilotLoaded=!0):e.retropilotLoaded=!1;case 23:case"end":return s.stop()}}),_callee,null,[[6,12]])})))).apply(this,arguments)}}).call(this,n(18))},250:function(e,t,n){"use strict";var a=n(5),s=n(2),r=n(3),i=n(8),o=n(6),l=n(7),c=n(9),d=n(1),u=n.n(d),g=n(13),m=n.n(g),h=n(230),p=n(10),b=n(93),f=n(555);n(41);var S={elementWiseEquals:function elementWiseEquals(e,t){return e.length===t.length&&e.every((function(e,n){return t[n]===e}))},findIndexRight:function findIndexRight(e,t){for(var n=e.length-1;n>=0;n--)if(t(e[n]))return n}},v=n(14);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function _calcGraphData(e,t,n){if(!e)return null;var a=Object.values(e.frame.signals).find((function(e){return e.uid===t}));if(!a)return console.warn("_calcGraphData: no signal",t,e),null;var s=[],r=Math.floor(e.entries.length/v.a);if(0===r)s=e.entries;else{for(var i=0;i<e.entries.length;i+=r)s.push(e.entries[i]);s.push(e.entries[e.entries.length-1])}if(!s.length)return[];var o=a.getColors(e.id);t=e.id+t;var l=s[0].relTime;return s.filter((function(e){return void 0!==e.signals[a.name]})).map((function(n){return n.relTime<l&&(console.log(e),console.error("Found out of order messages")),n.relTime-l>2&&(t=Math.random().toString(36)),l=n.relTime,{x:n.time,relTime:n.relTime,y:n.signals[a.name],unit:a.unit,color:"rgba(".concat(o.join(","),", 0.5)"),signalName:a.name,signalUid:t}}))}var E={_calcGraphData:_calcGraphData,appendNewGraphData:function appendNewGraphData(e,t,n,s){return e.map((function(e){return e.reduce((function(e,t){var n=t.messageId;t.signalUid;return e.push(n),e}),[])})).map((function(e,t){return{plottedMessageIds:e,index:t}})).filter((function(e){var a=e.plottedMessageIds,s=e.index;if(s<t.length){var r=0,i=t[s].series;return i.length>0&&(r=i[t[s].series.length-1].relTime),a.some((function(e){return n[e].entries.length>0&&0===i.length||n[e].entries.some((function(e){return e.relTime>r}))}))}return!1})).map((function(e){var t=e.plottedMessageIds,n=e.index;return{plottedMessageIds:t=t.reduce((function(e,t){return-1===e.indexOf(t)&&e.push(t),e}),[]),index:n}})).forEach((function(a){var s=a.plottedMessageIds,r=a.index,i=e[r].reduce((function(e,t){var n=t.messageId,a=t.signalUid;return e[n]||(e[n]=[]),e[n].push(a),e}),{}),o=t[r].series,l=s.reduce((function(e,t){var n=i[t],a=S.findIndexRight(o,(function(e){return-1!==n.indexOf(e.signalUid)}));return a?e[t]=o[a].relTime:o.length>0?e[t]=o[o.length-1].relTime:e[t]=-1,e}),{}),c=[];s.map((function(e){return{messageId:e,entries:n[e].entries}})).filter((function(e){var t=e.messageId,n=e.entries;return n[n.length-1].relTime>l[t]})).forEach((function(e){var t=e.messageId,a=e.entries,s=a.findIndex((function(e){return e.relTime>l[t]})),r=a.slice(s);i[t].forEach((function(e){var a=_calcGraphData(function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(p.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},n[t],{entries:r}),e);c=c.concat(a)}))}));var d=o.length>0&&s.find((function(e){return n[e].entries.length>0&&o[0].relTime<n[e].entries[0].relTime}));if(t[r]={series:t[r].series.concat(c),updated:Date.now()},d){var u=t[r].series.findIndex((function(e){return e.relTime>n[d].entries[0].relTime}));u&&(t[r].series=t[r].series.slice(u))}})),Object(a.a)(t)},signalColors:function signalColors(e,t){return e.colors.map((function(e){return e^t.address^t.bus}))}},_={$schema:"https://vega.github.io/schema/vega/v5.json",width:400,height:200,padding:{top:5,left:30,right:5,bottom:10},data:[{name:"table"},{name:"segment"},{name:"tooltip",source:"table",transform:[{type:"filter",expr:"abs(datum.relTime - tipTime) <= 0.05"},{type:"aggregate",groupby:["color"],fields:["relTime","y","unit"],ops:["min","argmin","argmin"],as:["min","argmin","argmin"]}]},{name:"ySegmentScale",source:"table",transform:[{type:"filter",expr:"length(segment) != 2 || (datum.relTime >= segment[0] && datum.relTime <= segment[1])"},{type:"extent",field:"y",signal:"ySegment"}]}],scales:[{name:"xscale",type:"linear",range:"width",domain:{data:"table",field:"x"},zero:!1},{name:"xrelscale",type:"linear",range:"width",domain:{data:"table",field:"relTime"},zero:!1,clamp:!0,nice:!0,domainRaw:{signal:"segment"}},{name:"yscale",type:"linear",range:"height",clamp:!0,zero:!1,nice:!0,domain:{signal:"ySegment"}},{name:"color",type:"ordinal",domain:{data:"table",field:"color"},range:{data:"table",field:"color"}}],axes:[{orient:"bottom",scale:"xrelscale",labelOverlap:!0},{orient:"left",scale:"yscale"}],signals:[{name:"tipTime",on:[{events:"mousemove",update:"invert('xrelscale', x())"},{events:"mouseout",update:"null"}]},{name:"clickTime",on:[{events:"click",update:"invert('xrelscale', x())"}]},{name:"videoTime"},{name:"segment",value:{data:"table",field:"relTime"}}],marks:[{type:"group",name:"plot",interactive:!0,encode:{enter:{width:{signal:"width"},height:{signal:"height"},fill:{value:"transparent"}}},signals:[{name:"brush",value:0,on:[{events:"@boundingRect:mousedown",update:"[x(), x()]"},{events:"[@boundingRect:mousedown, window:mouseup] > window:mousemove!",update:"[brush[0], clamp(x(), 0, width)]"},{events:{signal:"delta"},update:"clampRange([anchor[0] + delta, anchor[1] + delta], 0, width)"}]},{name:"anchor",value:null,on:[{events:"@brush:mousedown",update:"slice(brush)"}]},{name:"xdown",value:0,on:[{events:"@brush:mousedown",update:"x()"}]},{name:"xup",value:0,on:[{events:"@brush:mouseup",update:"x()"}]},{name:"delta",value:0,on:[{events:"[@brush:mousedown, window:mouseup] > window:mousemove!",update:"x() - xdown"}]},{name:"segment",push:"outer",on:[{events:"window:mouseup",update:"span(brush) && span(brush) > 15 ? invert('xrelscale', brush) : segment"}]}],marks:[{type:"group",from:{facet:{name:"series",data:"table",groupby:"signalUid"}},marks:[{type:"line",name:"lineMark",from:{data:"series"},interactive:!0,encode:{update:{value:"natural",tension:0,x:{scale:"xrelscale",field:"relTime"},y:{scale:"yscale",field:"y"},detail:{field:"signalUid"}},hover:{fillOpacity:{value:.5}},enter:{clip:{value:!0},stroke:{scale:"color",field:"color"},strokeWidth:{value:2}}}}]},{type:"rect",interactive:!0,name:"brush",encode:{enter:{y:{value:0},height:{signal:"height"},fill:{value:"#333"},fillOpacity:{value:.2}},update:{x:{signal:"brush[0]"},x2:{signal:"brush[1]"}}}},{type:"rule",encode:{update:{y:{value:0},y2:{field:{group:"height"}},stroke:{value:"#000"},strokeWidth:{value:2},x:{scale:"xrelscale",signal:"videoTime",offset:.5}}}},{type:"symbol",from:{data:"tooltip"},encode:{update:{x:{scale:"xrelscale",field:"argmin.relTime"},y:{scale:"yscale",field:"argmin.y"},size:{value:50},fill:{value:"black"}}}},{type:"group",from:{data:"tooltip"},interactive:!1,name:"tooltipGroup",encode:{update:{x:[{test:"inrange(datum.argmin.relTime + 80, domain('xrelscale'))",scale:"xrelscale",field:"argmin.relTime"},{scale:"xrelscale",field:"argmin.relTime",offset:-80}],y:{scale:"yscale",field:"argmin.y"},height:{value:20},width:{value:80},fill:{value:"#fff"},fillOpacity:{value:.85},stroke:{value:"#aaa"},strokeWidth:{value:.5}}},marks:[{type:"text",interactive:!1,encode:{update:{text:{signal:"format(parent.argmin.relTime, ',.2f') + ': ' + format(parent.argmin.y, ',.2f') + ' ' + parent.argmin.unit"},fill:{value:"black"},fontWeight:{value:"bold"},y:{value:20}}}}]},{type:"rect",name:"boundingRect",interactive:!0,encode:{enter:{width:{signal:"width"},height:{signal:"height"},fill:{value:"transparent"}}}}]}]},O=n(33);function CanGraph_ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function CanGraph_objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?CanGraph_ownKeys(n,!0).forEach((function(t){Object(p.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):CanGraph_ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var y={position:"absolute",top:0,left:0},C=function(e){function CanGraph(e){var t;return Object(s.a)(this,CanGraph),(t=Object(i.a)(this,Object(o.a)(CanGraph).call(this,e))).updateBounds=Object(O.a)((function(){t.view.signal("width",t.state.bounds.width-70),t.view.signal("height",.4*(t.state.bounds.width-70)),t.view.run()}),100),t.insertData=Object(O.a)((function(){if(t.view){var e=t.state.data.series,n=t.view.changeset().remove((function(e){return!0})).insert(e);t.view.change("table",n),t.view.run()}else console.log("Cannot insertData")}),250),t.state={plotInnerStyle:null,shiftX:0,shiftY:0,bounds:null,isDataInserted:!1,data:t.getGraphData(e),spec:t.getGraphSpec(e)},t.onNewView=t.onNewView.bind(Object(l.a)(t)),t.onSignalClickTime=t.onSignalClickTime.bind(Object(l.a)(t)),t.onSignalSegment=t.onSignalSegment.bind(Object(l.a)(t)),t.onDragAnchorMouseDown=t.onDragAnchorMouseDown.bind(Object(l.a)(t)),t.onDragAnchorMouseUp=t.onDragAnchorMouseUp.bind(Object(l.a)(t)),t.onDragStart=t.onDragStart.bind(Object(l.a)(t)),t.onPlotResize=t.onPlotResize.bind(Object(l.a)(t)),t.insertData=t.insertData.bind(Object(l.a)(t)),t}return Object(c.a)(CanGraph,e),Object(r.a)(CanGraph,[{key:"getGraphData",value:function getGraphData(e){var t=-1,n=-1,a=e.plottedSignals.map((function(a){var s=a.messageId,r=a.signalUid,i=e.messages[s].entries;if(i.length){var o=i[0].relTime;t=-1===t?o:Math.min(t,o),o=i[i.length-1].relTime,n=Math.max(n,o)}return E._calcGraphData(e.messages[s],r,0)})).reduce((function(e,t){return e.concat(t)}),[]);return{updated:Date.now(),series:a,firstRelTime:t,lastRelTime:n}}},{key:"getGraphSpec",value:function getGraphSpec(e){return CanGraph_objectSpread({},_,{scales:[CanGraph_objectSpread({},_.scales[0],{domainMin:e.segment[0],domainMax:e.segment[1]})].concat(Object(a.a)(_.scales.slice(1)))})}},{key:"segmentIsNew",value:function segmentIsNew(e){var t=this;return e.length!==this.props.segment.length||!e.every((function(e,n){return t.props.segment[n]===e}))}},{key:"visualChanged",value:function visualChanged(e,t){return e.canReceiveGraphDrop!==t.canReceiveGraphDrop||JSON.stringify(e.dragPos)!==JSON.stringify(t.dragPos)}},{key:"onPlotResize",value:function onPlotResize(e){if(this.view){e&&e.bounds?(this.setState({bounds:e.bounds}),e.bounds):this.state.bounds,this.view.runAfter(this.updateBounds)}}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){if(e.dragPos&&JSON.stringify(e.dragPos)!==JSON.stringify(this.props.dragPos)?this.updateStyleFromDragPos(e.dragPos):e.dragPos||null===this.state.plotInnerStyle||this.setState({plotInnerStyle:null}),this.props.messages!==e.messages||this.props.plottedSignal!==e.plottedSignal){console.log("Calculating new data!");var t=this.getGraphData(e);console.log("Inserting new data!"),this.setState({data:t})}this.segmentIsNew(e.segment)&&this.setState({spec:this.getGraphSpec(e)})}},{key:"shouldComponentUpdate",value:function shouldComponentUpdate(e,t){return!this.view||(this.state.spec!==t.spec||(this.state.data!==t.data&&this.insertData(),this.props.currentTime!==e.currentTime&&this.view.signal("videoTime",e.currentTime),this.segmentIsNew(e.segment)&&(e.segment.length>0?this.view.signal("segment",e.segment):this.view.signal("segment",0)),this.view.runAsync(),!1))}},{key:"componentDidUpdate",value:function componentDidUpdate(e,t){this.view&&(this.props.segment.length>0?this.view.signal("segment",this.props.segment):this.view.signal("segment",0),this.view.signal("videoTime",this.props.currentTime),this.view.runAsync())}},{key:"updateStyleFromDragPos",value:function updateStyleFromDragPos(e){var t=e.left,n=e.top,a=CanGraph_objectSpread({},this.state.plotInnerStyle);a.left=t,a.top=n,this.setState({plotInnerStyle:a})}},{key:"onNewView",value:function onNewView(e){this.view=e,this.state.bounds&&this.onPlotResize(),this.props.segment.length>0&&e.signal("segment",this.props.segment),e.signal("videoTime",this.props.currentTime),this.insertData()}},{key:"onSignalClickTime",value:function onSignalClickTime(e,t){void 0!==t&&this.props.onRelativeTimeClick(this.props.messageId,t)}},{key:"onSignalSegment",value:function onSignalSegment(e,t){var n=this;Array.isArray(t)&&(this.props.onSegmentChanged(this.props.messageId,t),this.view&&this.view.runAfter((function(){var e=n.view.getState();e.subcontext[0].signals.brush=0,n.view.setState(e),n.insertData()})))}},{key:"plotInnerStyleFromMouseEvent",value:function plotInnerStyleFromMouseEvent(e){var t=this.state,n=t.shiftX,a=t.shiftY,s=CanGraph_objectSpread({},y),r=this.props.container.getBoundingClientRect(),i=e.clientX-r.left-n,o=e.clientY-r.top-a;return s.left=i,s.top=o,s}},{key:"onDragAnchorMouseDown",value:function onDragAnchorMouseDown(e){var t=this;e.persist();var n=e.clientX-e.target.getBoundingClientRect().left,a=e.clientY-e.target.getBoundingClientRect().top;this.setState({shiftX:n,shiftY:a},(function(){t.setState({plotInnerStyle:t.plotInnerStyleFromMouseEvent(e)})})),this.props.onDragStart(this.props.messageId,this.props.signalSpec.uid,n,a)}},{key:"onDragAnchorMouseUp",value:function onDragAnchorMouseUp(e){this.props.onDragEnd(),this.setState({plotInnerStyle:null,shiftX:0,shiftY:0})}},{key:"onDragStart",value:function onDragStart(e){return e.preventDefault(),!1}},{key:"render",value:function render(){var e=this,t=this.state.plotInnerStyle,n=this.props.canReceiveGraphDrop?"is-droppable":null;return u.a.createElement("div",{className:"cabana-explorer-visuals-plot",ref:this.props.onGraphRefAvailable},u.a.createElement("div",{className:m()("cabana-explorer-visuals-plot-inner",n),style:t||null},u.a.createElement("div",{className:"cabana-explorer-visuals-plot-draganchor",onMouseDown:this.onDragAnchorMouseDown},u.a.createElement("span",{className:"fa fa-bars"})),this.props.plottedSignals.map((function(t){var n=t.messageId,a=t.signalUid,s=t.messageName,r=Object.values(e.props.messages[n].frame.signals).find((function(e){return e.uid===a})),i=r.getColors(n);return u.a.createElement("div",{className:"cabana-explorer-visuals-plot-header",key:"".concat(n,"_").concat(r.uid)},u.a.createElement("div",{className:"cabana-explorer-visuals-plot-header-toggle"},u.a.createElement("button",{className:"button--tiny",onClick:function onClick(){return e.props.unplot(n,a)}},u.a.createElement("span",null,"Hide Plot"))),u.a.createElement("div",{className:"cabana-explorer-visuals-plot-header-copy"},u.a.createElement("div",{className:"cabana-explorer-visuals-plot-message"},u.a.createElement("span",null,s," ",n)),u.a.createElement("div",{className:"cabana-explorer-visuals-plot-signal"},u.a.createElement("div",{className:"cabana-explorer-visuals-plot-signal-color",style:{background:"rgb(".concat(i)}}),u.a.createElement("strong",null,r.name))))})),u.a.createElement(b.a,{bounds:!0,onResize:this.onPlotResize},(function(t){var n=t.measureRef;return u.a.createElement("div",{ref:n,className:"cabana-explorer-visuals-plot-container"},u.a.createElement(f.a,{onNewView:e.onNewView,logLevel:1,signalListeners:{clickTime:e.onSignalClickTime,segment:e.onSignalSegment},renderer:"canvas",spec:e.state.spec,actions:!1,data:{table:e.state.data.series}}))}))))}}]),CanGraph}(d.Component);function CanGraphList_ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}C.emptyTable=[],n(486);var T=function(e){function CanGraphList(e){var t;return Object(s.a)(this,CanGraphList),(t=Object(i.a)(this,Object(o.a)(CanGraphList).call(this,e))).state={draggingSignal:{},dragPos:null,dragShift:null,graphToReceiveDrop:null},t.plotListRef=null,t.plotRefs=[],t.renderSignalPlot=t.renderSignalPlot.bind(Object(l.a)(t)),t.onPlotListRefReady=t.onPlotListRefReady.bind(Object(l.a)(t)),t.onGraphDragStart=t.onGraphDragStart.bind(Object(l.a)(t)),t.onGraphDragEnd=t.onGraphDragEnd.bind(Object(l.a)(t)),t.onMouseMove=t.onMouseMove.bind(Object(l.a)(t)),t}return Object(c.a)(CanGraphList,e),Object(r.a)(CanGraphList,[{key:"onGraphDragStart",value:function onGraphDragStart(e,t,n,a){this.setState({draggingSignal:{messageId:e,signalUid:t},dragShift:{x:n,y:a}})}},{key:"determineDraggingGraph",value:function determineDraggingGraph(){var e=this.state.draggingSignal;return this.plotRefs.find((function(t){var n=t.messageId,a=t.signalUid;return e.messageId===n&&e.signalUid===a}))}},{key:"onMouseMove",value:function onMouseMove(e){var t=this.state.dragShift;if(null!==t){var n=this.plotListRef.getBoundingClientRect(),a=this.determineDraggingGraph();if(a){a.ref.hidden=!0;var s=document.elementFromPoint(e.clientX,e.clientY);a.ref.hidden=!1;var r=s.closest(".cabana-explorer-visuals-plot"),i=this.plotRefs.find((function(e){var t=e.ref,n=e.messageId,s=e.signalUid;return!(n===a.messageId&&s===a.signalUid)&&t.isEqualNode(r)}));i?this.setState({graphToReceiveDrop:i}):this.setState({graphToReceiveDrop:null})}var o=e.clientX-n.left-t.x,l=e.clientY-n.top-t.y;this.setState({dragPos:{left:o,top:l}})}else null!==this.state.graphToReceiveDrop&&this.setState({graphToReceiveDrop:null})}},{key:"onGraphDragEnd",value:function onGraphDragEnd(){null!==this.state.graphToReceiveDrop&&this.props.mergePlots({fromPlot:this.state.draggingSignal,toPlot:this.state.graphToReceiveDrop}),this.setState({draggingSignal:{},dragShift:null,dragPos:null,graphToReceiveDrop:null})}},{key:"addCanGraphRef",value:function addCanGraphRef(e,t,n){if(e){var a=this.plotRefs;a=a.filter((function(e){return!(e.messageId===t&&e.signalUid===n)})).concat([{messageId:t,signalUid:n,ref:e}]),this.plotRefs=a}}},{key:"renderSignalPlot",value:function renderSignalPlot(e,t){var n=this,a=this.state,s=a.draggingSignal,r=a.graphToReceiveDrop,i=e[0],o=i.messageId,l=i.signalUid,c=this.props.messages[o],d=Object.values(c.frame.signals).find((function(e){return e.uid===l}));if(!this.plotListRef)return[];var g=s.signalUid===l&&s.messageId===o,m=r&&r.signalUid===l&&r.messageId===o,h=(e=e.map((function(e){return function CanGraphList_objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?CanGraphList_ownKeys(n,!0).forEach((function(t){Object(p.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):CanGraphList_ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({messageName:n.props.messages[e.messageId].frame.name},e)}))).reduce((function(e,t){var n=t.messageId,a=t.signalUid;return"".concat(e+n,"_").concat(a)}),"");return u.a.createElement(C,{onGraphRefAvailable:function onGraphRefAvailable(e){n.addCanGraphRef(e,o,l)},key:h,unplot:this.props.onSignalUnplotPressed,messages:this.props.messages,messageId:o,messageName:c.frame?c.frame.name:null,signalSpec:Object.assign(Object.create(d),d),onSegmentChanged:this.props.onSegmentChanged,segment:this.props.segment,onRelativeTimeClick:this.props.onGraphTimeClick,currentTime:this.props.seekTime,onDragStart:this.onGraphDragStart,onDragEnd:this.onGraphDragEnd,container:this.plotListRef,dragPos:g?this.state.dragPos:null,canReceiveGraphDrop:m,plottedSignals:e,live:this.props.live})}},{key:"onPlotListRefReady",value:function onPlotListRefReady(e){this.plotListRef=e}},{key:"render",value:function render(){return u.a.createElement("div",{className:"cabana-explorer-visuals-plots",ref:this.onPlotListRefReady,onMouseMove:this.onMouseMove,onMouseLeave:this.onGraphDragEnd,onMouseUp:this.onGraphDragEnd},this.props.plottedSignals.map(this.renderSignalPlot))}}]),CanGraphList}(d.Component),D=n(34),w=n(37),M=n(65),k=n.n(M),X=function(e){function HLS(){var e,t;Object(s.a)(this,HLS);for(var n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(t=Object(i.a)(this,(e=Object(o.a)(HLS)).call.apply(e,[this].concat(a)))).onSeeking=function(){t.props.playing||(t.props.onLoadStart(),t.props.onPlaySeek(t.videoElement.currentTime))},t.shouldInitVideoTime=!0,t.onSeeked=function(){t.props.playing||(t.shouldInitVideoTime&&(t.videoElement.currentTime=t.props.startTime,t.shouldInitVideoTime=!1),t.props.onLoadEnd())},t}return Object(c.a)(HLS,e),Object(r.a)(HLS,[{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){this.videoElement.playbackRate=e.playbackSpeed,e.source!==this.props.source&&this.loadSource(e.source),e.playing?this.videoElement&&(this.videoElement.paused||this.videoElement.currentTime<.01)&&this.videoElement.play():this.videoElement.pause()}},{key:"componentDidMount",value:function componentDidMount(){var e=this;this.player=new k.a({enableWorker:!1,disablePtsDtsCorrectionInMp4Remux:!1}),this.player.on(k.a.Events.ERROR,(function(t,n){if(n.fatal)switch(n.type){case k.a.ErrorTypes.NETWORK_ERROR:console.log("fatal network error encountered, try to recover"),e.player.startLoad();break;case k.a.ErrorTypes.MEDIA_ERROR:console.log("fatal media error encountered, try to recover"),e.player.recoverMediaError();break;default:e.player.destroy(),e.player=null}})),this.loadSource()}},{key:"loadSource",value:function loadSource(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.source;this.videoElement&&(this.player.loadSource(e),this.player.attachMedia(this.videoElement),this.props.onVideoElementAvailable(this.videoElement))}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.player&&(this.player.destroy(),this.player=null)}},{key:"render",value:function render(){var e=this;return u.a.createElement("div",{className:"cabana-explorer-visuals-camera-wrapper",onClick:this.props.onClick},u.a.createElement("video",{ref:function ref(t){e.videoElement=t},autoPlay:this.props.playing,muted:!0,onWaiting:this.props.onLoadStart,onPlaying:this.props.onLoadEnd,onSeeking:this.onSeeking,onSeeked:this.onSeeked}))}}]),HLS}(d.Component),A=function(e){function PlayButton(e){var t;return Object(s.a)(this,PlayButton),(t=Object(i.a)(this,Object(o.a)(PlayButton).call(this,e))).state={hover:!1},t.onClick=t.onClick.bind(Object(l.a)(t)),t}return Object(c.a)(PlayButton,e),Object(r.a)(PlayButton,[{key:"imageSource",value:function imageSource(){var e=this.state.hover,t=this.props.isPlaying;return"".concat("/cabana",t?e?"/img/ic_pause_circle_filled_white_24px.svg":"/img/ic_pause_circle_outline_white_24px.svg":e?"/img/ic_play_circle_filled_white_24px.svg":"/img/ic_play_circle_outline_white_24px.svg")}},{key:"onClick",value:function onClick(e){this.props.isPlaying?this.props.onPause():this.props.onPlay()}},{key:"render",value:function render(){var e=this;return u.a.createElement("img",{src:this.imageSource(),alt:this.props.isPlaying?"Pause":"Play",className:this.props.className,onClick:this.onClick,onMouseOver:function onMouseOver(){return e.setState({hover:!0})},onMouseLeave:function onMouseLeave(){return e.setState({hover:!1})}})}}]),PlayButton}(d.Component),B=function(e){function RouteSeeker(e){var t;return Object(s.a)(this,RouteSeeker),(t=Object(i.a)(this,Object(o.a)(RouteSeeker).call(this,e))).updateDraggingSeek=Object(O.a)((function(e){return t.props.onUserSeek(e)}),250),t.state={seekedBarStyle:RouteSeeker.zeroSeekedBarStyle,markerStyle:RouteSeeker.hiddenMarkerStyle,tooltipStyle:RouteSeeker.hiddenTooltipStyle,ratio:0,tooltipTime:"0:00",isPlaying:!1,isDragging:!1},t.onMouseMove=t.onMouseMove.bind(Object(l.a)(t)),t.onMouseLeave=t.onMouseLeave.bind(Object(l.a)(t)),t.onMouseDown=t.onMouseDown.bind(Object(l.a)(t)),t.onMouseUp=t.onMouseUp.bind(Object(l.a)(t)),t.onClick=t.onClick.bind(Object(l.a)(t)),t.onPlay=t.onPlay.bind(Object(l.a)(t)),t.onPause=t.onPause.bind(Object(l.a)(t)),t.executePlayTimer=t.executePlayTimer.bind(Object(l.a)(t)),t}return Object(c.a)(RouteSeeker,e),Object(r.a)(RouteSeeker,[{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){var t=this.state.ratio;if(JSON.stringify(this.props.segmentIndices)!==JSON.stringify(e.segmentIndices))this.setState({seekedBarStyle:RouteSeeker.zeroSeekedBarStyle,markerStyle:RouteSeeker.hiddenMarkerStyle,ratio:0});else if(e.videoLength!==this.props.videoLength){var n=t*this.props.videoLength/e.videoLength;this.updateSeekedBar(n)}if(this.props.nearestFrameTime!==e.nearestFrameTime){var a=this.props.segmentProgress(e.nearestFrameTime);this.updateSeekedBar(a)}e.playing&&!this.state.isPlaying?this.onPlay():!e.playing&&this.state.isPlaying&&this.onPause()}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.cancelAnimationFrame(this.playTimer)}},{key:"mouseEventXOffsetPercent",value:function mouseEventXOffsetPercent(e){var t=this.progressBar.getBoundingClientRect();return(e.clientX-t.left)/this.progressBar.offsetWidth*100}},{key:"onMouseMove",value:function onMouseMove(e){var t=this.mouseEventXOffsetPercent(e);if(t<0)this.onMouseLeave();else{var n=RouteSeeker.markerWidth,a={display:"",left:"calc(".concat(t,"% - ").concat(n/2,"px)")},s=RouteSeeker.tooltipWidth,r={display:"flex",left:"calc(".concat(t,"% - ").concat(s/2,"px)")},i=Math.max(0,t/100);this.state.isDragging&&(this.updateSeekedBar(i),this.updateDraggingSeek(i)),this.setState({markerStyle:a,tooltipStyle:r,tooltipTime:this.props.ratioTime(i).toFixed(3)})}}},{key:"onMouseLeave",value:function onMouseLeave(e){this.setState({markerStyle:RouteSeeker.hiddenMarkerStyle,tooltipStyle:RouteSeeker.hiddenTooltipStyle,isDragging:!1})}},{key:"updateSeekedBar",value:function updateSeekedBar(e){var t={width:"".concat(100*e,"%")};this.setState({seekedBarStyle:t,ratio:e})}},{key:"onClick",value:function onClick(e){var t=this.mouseEventXOffsetPercent(e)/100;t=Math.min(1,Math.max(0,t)),this.updateSeekedBar(t),this.props.onUserSeek(t)}},{key:"onPlay",value:function onPlay(){this.playTimer=window.requestAnimationFrame(this.executePlayTimer);var e=this.state.ratio;e>=1&&(e=0),this.setState({isPlaying:!0,ratio:e}),this.props.onPlay()}},{key:"executePlayTimer",value:function executePlayTimer(){var e=this.props.videoElement;if(null!==e){var t=this.props,n=t.videoLength,a=t.startTime,s=e.currentTime,r=e.duration;s=roundTime(s),a=roundTime(a),n=roundTime(n),r=roundTime(r);var i=(s-a)/n;i!==this.state.ratio?(i>=1&&this.props.segment&&this.props.segment.length||i<0?(i=0,s=a,this.props.onUserSeek(i)):i>=1&&(e.pause(),this.onPause()),i>=0&&(this.updateSeekedBar(i),this.props.onPlaySeek(s)),this.playTimer=window.requestAnimationFrame(this.executePlayTimer)):this.playTimer=window.requestAnimationFrame(this.executePlayTimer)}else this.playTimer=window.requestAnimationFrame(this.executePlayTimer)}},{key:"onPause",value:function onPause(){window.cancelAnimationFrame(this.playTimer),this.setState({isPlaying:!1}),this.props.onPause()}},{key:"onMouseDown",value:function onMouseDown(){this.state.isDragging||this.setState({isDragging:!0})}},{key:"onMouseUp",value:function onMouseUp(){this.state.isDragging&&this.setState({isDragging:!1})}},{key:"render",value:function render(){var e=this,t=this.state,n=t.seekedBarStyle,a=t.markerStyle,s=t.tooltipStyle;return u.a.createElement("div",{className:"cabana-explorer-visuals-camera-seeker"},u.a.createElement(A,{className:"cabana-explorer-visuals-camera-seeker-playbutton",onPlay:this.onPlay,onPause:this.onPause,isPlaying:this.state.isPlaying}),u.a.createElement("div",{className:"cabana-explorer-visuals-camera-seeker-progress",onMouseMove:this.onMouseMove,onMouseLeave:this.onMouseLeave,onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onClick:this.onClick,ref:function ref(t){return e.progressBar=t}},u.a.createElement("div",{className:"cabana-explorer-visuals-camera-seeker-progress-tooltip",style:s},this.state.tooltipTime),u.a.createElement("div",{className:"cabana-explorer-visuals-camera-seeker-progress-marker",style:a}),u.a.createElement("div",{className:"cabana-explorer-visuals-camera-seeker-progress-inner",style:n})))}}]),RouteSeeker}(d.Component);function roundTime(e){return Math.round(1e3*e)/1e3}B.hiddenMarkerStyle={display:"none",left:0},B.zeroSeekedBarStyle={width:0},B.hiddenTooltipStyle={display:"none",left:0},B.markerWidth=20,B.tooltipWidth=50;var G=D.StyleSheet.create({loadingOverlay:{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",zIndex:3},loadingSpinner:{width:"25%",height:"25%",display:"block"},img:{height:480,display:"block",position:"absolute",zIndex:2},hls:{zIndex:1,height:480,backgroundColor:"rgba(0,0,0,0.9)"},seekBar:{position:"absolute",bottom:0,left:0,width:"100%",zIndex:4}}),P=function(e){function RouteVideoSync(e){var t;return Object(s.a)(this,RouteVideoSync),(t=Object(i.a)(this,Object(o.a)(RouteVideoSync).call(this,e))).state={shouldShowJpeg:!0,isLoading:!0,videoElement:null,source:null},t.onLoadStart=t.onLoadStart.bind(Object(l.a)(t)),t.onLoadEnd=t.onLoadEnd.bind(Object(l.a)(t)),t.segmentProgress=t.segmentProgress.bind(Object(l.a)(t)),t.onVideoElementAvailable=t.onVideoElementAvailable.bind(Object(l.a)(t)),t.onUserSeek=t.onUserSeek.bind(Object(l.a)(t)),t.onPlaySeek=t.onPlaySeek.bind(Object(l.a)(t)),t.ratioTime=t.ratioTime.bind(Object(l.a)(t)),t}return Object(c.a)(RouteVideoSync,e),Object(r.a)(RouteVideoSync,[{key:"componentWillMount",value:function componentWillMount(){var e=this,t=Object(w.video)(this.props.url,"https://cabana-video.azureedge.net");t.getQcameraStreamIndex().then((function(){e.setState({source:t.getQcameraStreamIndexUrl()})})).catch((function(){e.setState({source:t.getRearCameraStreamIndexUrl()})}))}},{key:"componentDidUpdate",value:function componentDidUpdate(e){var t=this.props.userSeekTime,n=this.state.videoElement;e.userSeekTime&&t!==e.userSeekTime&&n&&(n.currentTime=t-this.props.videoOffset)}},{key:"onVideoElementAvailable",value:function onVideoElementAvailable(e){this.setState({videoElement:e})}},{key:"onUserSeek",value:function onUserSeek(e){var t=this.state.videoElement,onUserSeek=this.props.onUserSeek,n=this.ratioTime(e);Number.isNaN(t.duration)||(t.currentTime=n-this.props.videoOffset,0!==e&&function funcSeekToRatio(){onUserSeek(n)}())}},{key:"onPlaySeek",value:function onPlaySeek(e){this.seekTime=e+this.props.videoOffset,this.props.onPlaySeek(this.seekTime)}},{key:"onLoadStart",value:function onLoadStart(){this.setState({shouldShowJpeg:!0,isLoading:!0})}},{key:"onLoadEnd",value:function onLoadEnd(){this.setState({shouldShowJpeg:!1,isLoading:!1})}},{key:"loadingOverlay",value:function loadingOverlay(){return u.a.createElement("div",{className:Object(D.css)(G.loadingOverlay)},u.a.createElement("img",{className:Object(D.css)(G.loadingSpinner),src:"".concat("/cabana","/img/loading.svg"),alt:"Loading video"}))}},{key:"videoLength",value:function videoLength(){return this.props.segment.length?this.props.segment[1]-this.props.segment[0]:this.state.videoElement?this.state.videoElement.duration:0}},{key:"startTime",value:function startTime(){return this.props.segment.length?this.props.segment[0]:0}},{key:"segmentProgress",value:function segmentProgress(e){var t=this.startTime();e<t&&(e=t);var n=(e-t)/this.videoLength();return Math.max(0,Math.min(1,n))}},{key:"ratioTime",value:function ratioTime(e){return e*this.videoLength()+this.startTime()}},{key:"nearestFrameUrl",value:function nearestFrameUrl(){var e=this.props.thumbnails;if(!this.seekTime)return"";for(var t=0,n=e.length;t<n;++t)if(Math.abs(e[t].monoTime-this.seekTime)<5){var s=btoa(String.fromCharCode.apply(String,Object(a.a)(e[t].data)));return"data:image/jpeg;base64,".concat(s)}return""}},{key:"render",value:function render(){var e=this.state,t=e.isLoading,n=e.shouldShowJpeg,a=e.videoElement,s=this.props,r=s.userSeekTime,i=(s.url,s.playSpeed),o=s.playing,l=s.onVideoClick,c=s.segmentIndices,d=s.startTime,g=s.segment;return u.a.createElement("div",{className:"cabana-explorer-visuals-camera"},t?this.loadingOverlay():null,n?u.a.createElement("img",{src:this.nearestFrameUrl(),className:Object(D.css)(G.img),alt:"Camera preview at t = ".concat(Math.round(r))}):null,this.state.source&&u.a.createElement(X,{className:Object(D.css)(G.hls),source:this.state.source,startTime:(d||0)-this.props.videoOffset,videoLength:this.videoLength(),playbackSpeed:i,onVideoElementAvailable:this.onVideoElementAvailable,playing:o,onClick:l,onLoadStart:this.onLoadStart,onLoadEnd:this.onLoadEnd,onUserSeek:this.onUserSeek,onPlaySeek:this.onPlaySeek}),u.a.createElement(B,{className:Object(D.css)(G.seekBar),nearestFrameTime:r,segmentProgress:this.segmentProgress,startTime:this.startTime()-this.props.videoOffset,videoLength:this.videoLength(),segmentIndices:c,onUserSeek:this.onUserSeek,onPlaySeek:this.onPlaySeek,videoElement:a,onPlay:this.props.onPlay,onPause:this.props.onPause,playing:this.props.playing,ratioTime:this.ratioTime,segment:g}))}}]),RouteVideoSync}(d.Component),x=n(11),N=n(239),R=n.n(N),L=function(e){function CanLog(e){var t;return Object(s.a)(this,CanLog),(t=Object(i.a)(this,Object(o.a)(CanLog).call(this,e))).state={length:0,expandedMessages:[],messageHeights:[],allPacketsExpanded:!1},t.renderLogListItemMessage=t.renderLogListItemMessage.bind(Object(l.a)(t)),t.addDisplayedMessages=t.addDisplayedMessages.bind(Object(l.a)(t)),t.renderLogListItem=t.renderLogListItem.bind(Object(l.a)(t)),t.renderLogList=t.renderLogList.bind(Object(l.a)(t)),t.onExpandAllChanged=t.onExpandAllChanged.bind(Object(l.a)(t)),t.toggleExpandAllPackets=t.toggleExpandAllPackets.bind(Object(l.a)(t)),t.toggleSignalPlot=t.toggleSignalPlot.bind(Object(l.a)(t)),t}return Object(c.a)(CanLog,e),Object(r.a)(CanLog,[{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){e.message&&!this.props.message&&this.addDisplayedMessages()}},{key:"shouldComponentUpdate",value:function shouldComponentUpdate(e,t){var n=this.props.message?this.props.message.entries.length:0,a=e.message?e.message.entries.length:0;return this.props.message!==e.message||a!==n||e.messageIndex!==this.props.messageIndex||e.plottedSignals.length!==this.props.plottedSignals.length||JSON.stringify(e.segmentIndices)!==JSON.stringify(this.props.segmentIndices)||JSON.stringify(t)!==JSON.stringify(this.state)||this.props.message!==e.message||void 0!==this.props.message&&void 0!==e.message&&void 0!==this.props.message.frame&&void 0!==e.message.frame&&JSON.stringify(this.props.message.frame)!==JSON.stringify(e.message.frame)}},{key:"addDisplayedMessages",value:function addDisplayedMessages(){var e=this.state.length+CanLog.ITEMS_PER_PAGE;this.setState({length:e})}},{key:"expandMessage",value:function expandMessage(e,t){this.setState({expandedMessages:this.state.expandedMessages.concat([e.time])}),this.props.onMessageExpanded()}},{key:"collapseMessage",value:function collapseMessage(e,t){this.setState({expandedMessages:this.state.expandedMessages.filter((function(t){return t!==e.time}))})}},{key:"isSignalPlotted",value:function isSignalPlotted(e,t){return void 0!==this.props.plottedSignals.find((function(n){return n.some((function(n){return n.messageId===e&&n.signalUid===t}))}))}},{key:"signalValuePretty",value:function signalValuePretty(e,t){return e.isFloat?t.toFixed(3):t}},{key:"isMessageExpanded",value:function isMessageExpanded(e){return-1!==this.state.expandedMessages.indexOf(e.time)}},{key:"toggleSignalPlot",value:function toggleSignalPlot(e,t,n){n?this.props.onSignalUnplotPressed(e,t):this.props.onSignalPlotPressed(e,t)}},{key:"toggleExpandPacketSignals",value:function toggleExpandPacketSignals(e){if(this.props.message.frame){var t=this.state.allPacketsExpanded||this.isMessageExpanded(e),n=Object.keys(this.props.message.frame.signals).length>0;t&&n?this.setState({expandedMessages:this.state.expandedMessages.filter((function(t){return t!==e.time}))}):n&&(this.setState({expandedMessages:this.state.expandedMessages.concat([e.time])}),this.props.onMessageExpanded())}}},{key:"renderLogListItemSignals",value:function renderLogListItemSignals(e){var t=this,n=this.props.message;return u.a.createElement("div",{className:"signals-log-list-signals"},Object.entries(e.signals).map((function(e){var a=Object(x.a)(e,2),s=a[0],r=a[1],i=n.frame.signals[s];if(void 0===i)return null;var o=i.unit.length>0?i.unit:"units",l=t.isSignalPlotted(n.id,i.uid),c=l?null:"button--alpha",d=l?"Hide Plot":"Show Plot";return u.a.createElement("div",{key:s,className:"signals-log-list-signal"},u.a.createElement("div",{className:"signals-log-list-signal-message"},u.a.createElement("span",null,s)),u.a.createElement("div",{className:"signals-log-list-signal-value"},u.a.createElement("span",null,"(",u.a.createElement("strong",null,t.signalValuePretty(i,r))," ",o,")")),u.a.createElement("div",{className:"signals-log-list-signal-action",onClick:function onClick(){t.toggleSignalPlot(n.id,i.uid,l)}},u.a.createElement("button",{className:m()("button--tiny",c)},u.a.createElement("span",null,d))))})))}},{key:"renderLogListItemMessage",value:function renderLogListItemMessage(e,t){var n=this,a=this.props.message,s=this.state.allPacketsExpanded||this.isMessageExpanded(e),r=Object.keys(e.signals).length>0?"has-signals":null,i=s?"is-expanded":null;return u.a.createElement("div",{key:t,className:m()("signals-log-list-item",r,i)},u.a.createElement("div",{className:"signals-log-list-item-header",onClick:function onClick(){n.toggleExpandPacketSignals(e)}},u.a.createElement("div",{className:"signals-log-list-message"},u.a.createElement("strong",null,(a.frame?a.frame.name:null)||a.id)),u.a.createElement("div",{className:"signals-log-list-time"},u.a.createElement("span",null,"[",e.relTime.toFixed(3),"]")),u.a.createElement("div",{className:"signals-log-list-bytes"},u.a.createElement("span",{className:"t-mono"},e.hexData))),u.a.createElement("div",{className:"signals-log-list-item-body"},s?this.renderLogListItemSignals(e):null))}},{key:"renderLogListItem",value:function renderLogListItem(e,t){var n=this.props.messageIndex;return 0===n&&2===this.props.segmentIndices.length&&(n=this.props.segmentIndices[0]),n+e<this.props.message.entries.length?this.renderLogListItemMessage(this.props.message.entries[n+e],t):null}},{key:"renderLogList",value:function renderLogList(e,t){return u.a.createElement("div",{className:"signals-log-list"},u.a.createElement("div",{className:"signals-log-list-header"},u.a.createElement("div",{className:"signals-log-list-message"},"Message"),u.a.createElement("div",{className:"signals-log-list-time"},"Time"),u.a.createElement("div",{className:"signals-log-list-bytes"},"Bytes")),u.a.createElement("div",{className:"signals-log-list-items",ref:t},e))}},{key:"listLength",value:function listLength(){var e=this.props,t=e.segmentIndices,n=e.messageIndex;return n>0?this.props.message.entries.length-n:2===t.length?t[1]-t[0]:this.props.message?this.props.message.entries.length:0}},{key:"onExpandAllChanged",value:function onExpandAllChanged(e){this.setState({allPacketsExpanded:e.target.checked})}},{key:"toggleExpandAllPackets",value:function toggleExpandAllPackets(){this.setState({allPacketsExpanded:!this.state.allPacketsExpanded})}},{key:"render",value:function render(){var e=this.state.allPacketsExpanded?"Collapse All":"Expand All",t=this.state.allPacketsExpanded?null:"button--alpha";return u.a.createElement("div",{className:"cabana-explorer-signals-log"},u.a.createElement("div",{className:"cabana-explorer-signals-log-header"},u.a.createElement("strong",null,"Message Packets"),u.a.createElement("button",{className:m()("button--tiny",t),onClick:this.toggleExpandAllPackets},e)),u.a.createElement("div",{className:"cabana-explorer-signals-log-body"},u.a.createElement(R.a,{itemRenderer:this.renderLogListItem,itemsRenderer:this.renderLogList,length:this.listLength(),pageSize:50,updateWhenThisValueChanges:this.props.messageIndex,type:"variable"})))}}]),CanLog}(d.Component);function findTimeIndex(e,t){return e.findIndex((function(e){return e.time>=t}))}function findRelativeTimeIndex(e,t){return e.findIndex((function(e){return e.relTime>=t}))}L.ITEMS_PER_PAGE=50;var j={findTimeIndex:findTimeIndex,findRelativeTimeIndex:findRelativeTimeIndex,findSegmentIndices:function findSegmentIndices(e,t,n){var a=Object(x.a)(t,2),s=a[0],r=a[1],i=!0===n?findRelativeTimeIndex:findTimeIndex,o=Math.max(0,i(e,s)),l=i(e.slice(o),r),c=l>=0?l+o+1:e.length-1;return[o,Math.max(0,Math.min(c,e.length-1))]}},I=function(e){function PlaySpeedSelector(e){var t;return Object(s.a)(this,PlaySpeedSelector),(t=Object(i.a)(this,Object(o.a)(PlaySpeedSelector).call(this,e))).onChange=t.onChange.bind(Object(l.a)(t)),t}return Object(c.a)(PlaySpeedSelector,e),Object(r.a)(PlaySpeedSelector,[{key:"onChange",value:function onChange(e){this.props.onPlaySpeedChanged&&this.props.onPlaySpeedChanged(Number(e.currentTarget.value))}},{key:"render",value:function render(){return u.a.createElement("div",{style:{display:"inline-block",float:"right",margin:10}},u.a.createElement("label",null,"Play speed:\xa0"),u.a.createElement("select",{id:"playSpeed",style:{width:70},onChange:this.onChange,value:this.props.playSpeed},u.a.createElement("option",{value:"0.1"},"0.1x"),u.a.createElement("option",{value:"0.5"},"0.5x"),u.a.createElement("option",{value:"1"},"1x"),u.a.createElement("option",{value:"2"},"2x")))}}]),PlaySpeedSelector}(d.Component);function clipSegment(e,t,n){var a=e,s=t;if(2===a.length){var r=n.entries.findIndex((function(e){return e.relTime>=a[0]})),i=n.entries.findIndex((function(e){return e.relTime>=a[1]}));if(-1!==r){-1===i&&(i=n.entries.length-1);var o=n.entries[r].relTime,l=n.entries[i].relTime;a=[o,l],s=[r,i]}else a=[],s=[]}return{segment:a,segmentIndices:s}}n.d(t,"a",(function(){return U}));var U=function(e){function Explorer(e){var t;return Object(s.a)(this,Explorer),(t=Object(i.a)(this,Object(o.a)(Explorer).call(this,e))).updateSegment=Object(O.a)((function(e,n){var a=n,s=t.props,r=s.messages,i=s.selectedMessage,o=s.currentParts,l=r[i].entries,c=j.findSegmentIndices(l,a,!0);a[0]===60*o[0]&&a[1]===60*(o[1]+1)&&(a=[],c=[]);var d=t.state.userSeekTime;a.length?(d=Math.max(a[0],d),d=Math.min(a[1],d)):(d=Math.max(60*o[0],d),d=Math.min(60*o[1],d)),t.setState({segment:a,segmentIndices:c,userSeekIndex:c[0],userSeekTime:d})}),250),t.state={plottedSignals:[],segment:e.startSegments||[],segmentIndices:[],shouldShowAddSignal:!0,userSeekIndex:0,userSeekTime:0,playing:e.autoplay,playSpeed:1},t.onSignalPlotPressed=t.onSignalPlotPressed.bind(Object(l.a)(t)),t.onSignalUnplotPressed=t.onSignalUnplotPressed.bind(Object(l.a)(t)),t.onSegmentChanged=t.onSegmentChanged.bind(Object(l.a)(t)),t.showAddSignal=t.showAddSignal.bind(Object(l.a)(t)),t.onGraphTimeClick=t.onGraphTimeClick.bind(Object(l.a)(t)),t.onUserSeek=t.onUserSeek.bind(Object(l.a)(t)),t.onPlaySeek=t.onPlaySeek.bind(Object(l.a)(t)),t.onPlay=t.onPlay.bind(Object(l.a)(t)),t.onPause=t.onPause.bind(Object(l.a)(t)),t.onVideoClick=t.onVideoClick.bind(Object(l.a)(t)),t.onSignalPlotChange=t.onSignalPlotChange.bind(Object(l.a)(t)),t.onKeyDown=t.onKeyDown.bind(Object(l.a)(t)),t.mergePlots=t.mergePlots.bind(Object(l.a)(t)),t.toggleShouldShowAddSignal=t.toggleShouldShowAddSignal.bind(Object(l.a)(t)),t.changePlaySpeed=t.changePlaySpeed.bind(Object(l.a)(t)),t}return Object(c.a)(Explorer,e),Object(r.a)(Explorer,[{key:"componentDidMount",value:function componentDidMount(){document.addEventListener("keydown",this.onKeyDown)}},{key:"componentWillUnmount",value:function componentWillUnmount(){document.removeEventListener("keydown",this.onKeyDown)}},{key:"onKeyDown",value:function onKeyDown(e){27===e.keyCode&&this.resetSegment()}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){var t=e.messages[e.selectedMessage],n=this.props.messages[this.props.selectedMessage],a=this.state.plottedSignals;(0===Object.keys(e.messages).length&&0!==Object.keys(this.props.messages).length&&this.resetSegment(),t&&t.frame&&t!==n)&&(0===Object.keys(t.frame.signals).length&&this.setState({shouldShowAddSignal:!0}));if(a=a.map((function(t){return t.filter((function(t,n){var a=t.messageId,s=t.signalUid,r=!!e.messages[a],i=!0;return r&&(i=Object.values(e.messages[a].frame.signals).some((function(e){return e.uid===s}))),r&&i}))})).filter((function(e){return e.length>0})),this.setState({plottedSignals:a}),e.selectedMessage&&e.selectedMessage!==this.props.selectedMessage){var s=clipSegment(this.state.segment,this.state.segmentIndices,t),r=s.segment,i=s.segmentIndices,o=t.entries[e.seekIndex];o?o.relTime:2===r.length?r[0]:t.entries[0],this.setState({segment:r,segmentIndices:i,userSeekIndex:e.seekIndex})}if(t&&n&&t.entries.length!==n.entries.length){var l=clipSegment(this.state.segment,this.state.segmentIndices,t),c=l.segment,d=l.segmentIndices;this.setState({segment:c,segmentIndices:d})}}},{key:"changePlaySpeed",value:function changePlaySpeed(e){this.setState({playSpeed:e})}},{key:"timeWindow",value:function timeWindow(){var e=this.props,t=e.routeStartTime,n=e.currentParts;if(t){var a=60*n[0],s=60*(n[1]+1),r=t.clone().add(a,"s").format("HH:mm:ss"),i=t.clone().add(s,"s").format("HH:mm:ss");return"".concat(r," - ").concat(i)}return""}},{key:"onSignalPlotPressed",value:function onSignalPlotPressed(e,t){var n=this.state.plottedSignals;n=[[{messageId:e,signalUid:t}]].concat(Object(a.a)(n)),this.setState({plottedSignals:n})}},{key:"onSignalUnplotPressed",value:function onSignalUnplotPressed(e,t){var n=this.state.plottedSignals.map((function(n){return n.filter((function(n){return!(n.messageId===e&&n.signalUid===t)}))})).filter((function(e){return e.length>0}));this.setState({plottedSignals:n})}},{key:"onSegmentChanged",value:function onSegmentChanged(e,t){Array.isArray(t)&&this.updateSegment(e,t)}},{key:"resetSegment",value:function resetSegment(){var e=this.state,t=e.segment,n=e.segmentIndices;(t.length>0||n.length>0)&&this.setState({segment:[],segmentIndices:[],userSeekIndex:0})}},{key:"showAddSignal",value:function showAddSignal(){this.setState({shouldShowAddSignal:!0})}},{key:"toggleShouldShowAddSignal",value:function toggleShouldShowAddSignal(){this.setState({shouldShowAddSignal:!this.state.shouldShowAddSignal})}},{key:"indexFromSeekTime",value:function indexFromSeekTime(e){var t=this.props.messages[this.props.selectedMessage].entries;if(0===t.length)return null;var n=this.state.segmentIndices;if(2===n.length&&n[0]>=0){for(var a=n[0],s=Math.min(t.length-1,n[1]);a<=s;a++)if(t[a].relTime>=e)return a;return n[1]}for(var r=0;r<t.length;r++)if(t[r].relTime>=e)return r;return t.length-1}},{key:"onUserSeek",value:function onUserSeek(e){this.props.onUserSeek(e),this.setState({userSeekTime:e})}},{key:"onPlaySeek",value:function onPlaySeek(e){var t=this.props.messages[this.props.selectedMessage];if(t&&0!==t.entries.length){var n=this.indexFromSeekTime(e),a=e;this.props.onSeek(n,a)}else this.props.onSeek(0,e)}},{key:"onGraphTimeClick",value:function onGraphTimeClick(e,t){this.onUserSeek(t)}},{key:"onPlay",value:function onPlay(){this.setState({playing:!0})}},{key:"onPause",value:function onPause(){this.setState({playing:!1})}},{key:"secondsLoadedRouteRelative",value:function secondsLoadedRouteRelative(e){return 60*(e[1]-e[0]+1)}},{key:"secondsLoaded",value:function secondsLoaded(){return 60*this.props.partsCount}},{key:"onVideoClick",value:function onVideoClick(){var e=!this.state.playing;this.setState({playing:e})}},{key:"seekTime",value:function seekTime(){var e=this.state.userSeekIndex;return this.props.messages[this.props.selectedMessage].entries[e].time}},{key:"onSignalPlotChange",value:function onSignalPlotChange(e,t,n){e?this.onSignalPlotPressed(t,n):this.onSignalUnplotPressed(t,n)}},{key:"renderSelectMessagePrompt",value:function renderSelectMessagePrompt(){return u.a.createElement("div",{className:"cabana-explorer-select-prompt"},u.a.createElement("h1",null,"Select a message"))}},{key:"selectedMessagePlottedSignalUids",value:function selectedMessagePlottedSignalUids(){var e=this;return this.state.plottedSignals.map((function(t){return t.filter((function(t){var n=t.messageId;t.signalUid;return n===e.props.selectedMessage})).map((function(e){return e.signalUid}))})).reduce((function(e,t){return e.concat(t)}),[])}},{key:"renderExplorerSignals",value:function renderExplorerSignals(){var e=this,t=this.props.selectedMessage,n=this.props.messages[t],a=void 0!==n.frame?n.frame.name:"undefined";return u.a.createElement("div",{className:"cabana-explorer-signals-wrapper"},u.a.createElement("div",{className:"cabana-explorer-signals-header"},u.a.createElement("div",{className:"cabana-explorer-signals-header-context"},u.a.createElement("h5",{className:"t-capline"},"Selected Message:"),u.a.createElement("h3",null,a)),u.a.createElement("div",{className:"cabana-explorer-signals-header-action"},u.a.createElement("button",{className:"button--small",onClick:function onClick(){return e.props.showEditMessageModal(t)}},"Edit"))),u.a.createElement("div",{className:"cabana-explorer-signals-subheader",onClick:this.toggleShouldShowAddSignal},u.a.createElement("strong",null,"Edit Signals")),u.a.createElement("div",{className:"cabana-explorer-signals-window"},this.state.shouldShowAddSignal?u.a.createElement(h.a,{onConfirmedSignalChange:this.props.onConfirmedSignalChange,message:this.props.messages[this.props.selectedMessage],onClose:function onClose(){e.setState({shouldShowAddSignal:!1})},messageIndex:this.props.seekIndex,onSignalPlotChange:this.onSignalPlotChange,plottedSignalUids:this.selectedMessagePlottedSignalUids(),selectedMessageKey:t}):null,u.a.createElement(L,{message:this.props.messages[this.props.selectedMessage],messageIndex:this.props.seekIndex,segmentIndices:this.state.segmentIndices,plottedSignals:this.state.plottedSignals,onSignalPlotPressed:this.onSignalPlotPressed,onSignalUnplotPressed:this.onSignalUnplotPressed,showAddSignal:this.showAddSignal,onMessageExpanded:this.onPause})))}},{key:"mergePlots",value:function mergePlots(e){var t=e.fromPlot,n=e.toPlot,a=this.state.plottedSignals,s=a.findIndex((function(e){return e.some((function(e){return e.signalUid===t.signalUid&&e.messageId===t.messageId}))}));a.splice(s,1);var r=a.findIndex((function(e){return e.some((function(e){return e.signalUid===n.signalUid&&e.messageId===n.messageId}))}));a[r]=[t,n],this.setState({plottedSignals:a})}},{key:"render",value:function render(){var e=this,t=this.state.shouldShowAddSignal?"is-expanded":null,n=this.props,a=n.thumbnails,s=n.messages,r=n.startTime,i=this.state.segment;return!i.length&&this.props.currentParts&&(i=[60*this.props.currentParts[0],60*(this.props.currentParts[1]+1)]),u.a.createElement("div",{className:"cabana-explorer"},u.a.createElement("div",{className:m()("cabana-explorer-signals",t)},s[this.props.selectedMessage]?this.renderExplorerSignals():this.renderSelectMessagePrompt()),u.a.createElement("div",{className:"cabana-explorer-visuals"},!1===this.props.live?u.a.createElement("div",null,u.a.createElement("div",{className:"cabana-explorer-visuals-header g-row"},u.a.createElement(I,{playSpeed:this.state.playSpeed,onPlaySpeedChanged:this.changePlaySpeed})),u.a.createElement(P,{message:s[this.props.selectedMessage],segment:this.state.segment,startTime:r,seekIndex:this.props.seekIndex,userSeekIndex:this.state.userSeekIndex,playing:this.state.playing,url:this.props.url,firstCanTime:this.props.firstCanTime,videoOffset:this.props.videoOffset,onVideoClick:this.onVideoClick,onPlaySeek:this.onPlaySeek,onUserSeek:this.onUserSeek,onPlay:this.onPlay,onPause:this.onPause,userSeekTime:this.state.userSeekTime,playSpeed:this.state.playSpeed,thumbnails:a})):null,this.state.segment.length>0?u.a.createElement("div",{className:"cabana-explorer-visuals-segmentreset",onClick:function onClick(){e.resetSegment()}},u.a.createElement("p",null,"Reset Segment")):null,u.a.createElement(T,{plottedSignals:this.state.plottedSignals,messages:s,onGraphTimeClick:this.onGraphTimeClick,seekTime:this.props.seekTime,onSegmentChanged:this.onSegmentChanged,onSignalUnplotPressed:this.onSignalUnplotPressed,segment:i,mergePlots:this.mergePlots,live:this.props.live})))}}]),Explorer}(d.Component)},251:function(e,t,n){"use strict";var a=n(11),s=n(5),r=n(2),i=n(3),o=n(8),l=n(6),c=n(9),d=n(1),u=n.n(d),g=n(13),m=n.n(g),h=(n(41),n(15)),p=function unsignedTransformation(e){return function(t,n){return""!==t&&(t=Number(t)||0)<0&&(t=0),n[e]=t,n}},b=[{field:"name",title:"Name",type:"string"},{field:"size",title:"Size",type:"number",transform:p("size")},{field:"startBit",title:function title(e){return e.isLittleEndian?"Least significant bit":"Most significant bit"},type:"number",transform:p("startBit")},{field:"isLittleEndian",title:"Endianness",type:"option",options:{options:["Little","Big"],optionValues:{Little:!0,Big:!1}},transform:function transform(e,t){if(t.isLittleEndian!==e){var n=t.startBit;if(e){var a=Math.floor(t.startBit/8),s=Math.floor((t.startBit-t.size+1)/8);t.startBit=a===s?t.startBit-t.size+1:h.a.matrixBitNumber(n)}else{var r=Math.floor(t.startBit/8),i=Math.floor((t.startBit+t.size-1)/8);t.startBit=r===i?t.startBit+t.size-1:h.a.bigEndianBitIndex(n)}t.isLittleEndian=e}return t}},{field:"isSigned",title:"Sign",type:"option",options:{options:["Signed","Unsigned"],optionValues:{Signed:!0,Unsigned:!1}}},{field:"factor",title:"Factor",type:"number"},{field:"offset",title:"Offset",type:"number"},{field:"unit",title:"Unit",type:"string"},{field:"comment",title:"Comment",type:"string"},{field:"min",title:"Minimum value",type:"number"},{field:"max",title:"Maximum value",type:"number"}],f=function(e){function Field(){return Object(r.a)(this,Field),Object(o.a)(this,Object(l.a)(Field).apply(this,arguments))}return Object(c.a)(Field,e),Object(i.a)(Field,[{key:"render",value:function render(){var e=this.props,t=e.title,n=e.htmlFor,a=e.children;return u.a.createElement("div",{className:"form-field form-field--small"},u.a.createElement("label",{htmlFor:n},t),a)}}]),Field}(d.Component),S=n(134),v={number:function(e){var t,n=e.fieldSpec,a=e.signal,s=e.isExpanded,r=e.signalEdited,i=e.updateField,o=n.field,l=n.title,c="".concat(a.name,"_").concat(o);if(s){var d=r;if(""!==d){var g=Number(d);d=isNaN(g)?"":g}t=u.a.createElement("input",{id:c,type:"number",value:d,onChange:function onChange(e){i(n,e.target.value)}})}else{var m=a[o];t=u.a.createElement("span",null,m)}return u.a.createElement(f,{title:"function"===typeof l?l(a):l,htmlFor:c},t)},option:function(e){var t,n=e.fieldSpec,a=e.signal,s=e.isExpanded,r=e.signalEdited,i=e.updateField,o=n.field,l=n.title,c="".concat(a.name,"_").concat(o),d=n.options,g=d.options,m=d.optionValues,h=Object(S.a)(m);if(s){var p=g.map((function(e){return u.a.createElement("option",{key:e,value:m[e]},e)}));t=u.a.createElement("select",{id:c,defaultValue:r,onChange:function onChange(e){i(n,"true"===e.target.value)}},p)}else t=u.a.createElement("span",null,h[a[o]]);return u.a.createElement(f,{title:"function"===typeof l?l(a):l,htmlFor:c},t)},string:function(e){var t,n=e.fieldSpec,a=e.signal,s=e.isExpanded,r=e.signalEdited,i=e.updateField,o=n.field,l=n.title,c="".concat(a.name,"_").concat(o);return t=s?u.a.createElement("input",{id:c,type:"text",value:r||"",onChange:function onChange(e){i(n,e.target.value)}}):u.a.createElement("span",null,a[o]),u.a.createElement(f,{title:"function"===typeof l?l(a):l,htmlFor:c},t)}},E=function(e){var t=e.signal,n=e.onSignalRemove,a=e.isExpanded,s=e.getSignalEdited,r=e.update;return u.a.createElement("div",{className:"signals-legend-entry-form"},b.map((function(e){var n=v[e.type];return u.a.createElement("div",{className:"signals-legend-entry-form-field",key:e.field},u.a.createElement(n,{fieldSpec:e,signal:t,isExpanded:a,signalEdited:s(e.field),updateField:r}))})),u.a.createElement("div",{className:"signals-legend-entry-form-remove"},u.a.createElement("button",{className:"button--tiny button--alpha",onClick:function onClick(){return n(t)}},"Remove Signal")))},_=n(61),O=n(63);function _templateObject(){var e=Object(_.a)(["\n display: block;\n height: 100%;\n left: 0;\n position: absolute;\n width: 1.5%;\n opacity: ",";\n background-color: rgb(",");\n"]);return _templateObject=function _templateObject(){return e},e}var y=Object(O.a)("div")(_templateObject(),(function(e){return e.isHighlighted?.5:.3}),(function(e){return e.rgb.join(",")})),C=function(e){function SignalLegendEntry(e){var t;return Object(r.a)(this,SignalLegendEntry),(t=Object(o.a)(this,Object(l.a)(SignalLegendEntry).call(this,e))).updateField=function(e,n){var s=t.state.signalEdited,r=t.props.signal;e.transform?s=e.transform(n,s):s[e.field]=n,t.setState({signalEdited:s});var i=Object.assign(Object.create(r),r);Object.entries(s).forEach((function(e){var t=Object(a.a)(e,2),n=t[0],s=t[1];i[n]=s})),t.props.onSignalChange(i,r)},t.toggleEditing=function(e){if(!t.props.isLogEvent){var n=t.state.signalEdited,s=t.props,r=s.signal,i=s.isExpanded,o=Object.assign(Object.create(r),r);i?(Object.entries(n).forEach((function(e){var t=Object(a.a)(e,2),n=t[0],s=t[1],r=SignalLegendEntry.fieldSpecForName(n);r&&"number"===r.type&&isNaN(parseInt(s,10))&&(s=0),o[n]=s})),t.props.onSignalChange(o,r)):n=o,t.setState({signalEdited:n}),t.props.toggleExpandSignal(r),e.stopPropagation()}},t.toggleSignalPlot=function(e){var n=t.props,a=n.signal,s=n.isPlotted;e.preventDefault(),t.props.onSignalPlotChange(!s,a.uid)},t.getSignalEdited=function(e){return t.state.signalEdited[e]},t.state={signalEdited:Object.assign(Object.create(e.signal),e.signal)},t}return Object(c.a)(SignalLegendEntry,e),Object(i.a)(SignalLegendEntry,[{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){e.signal.equals(this.props.signal)||this.setState({signalEdited:Object.assign(Object.create(e.signal),e.signal)})}},{key:"render",value:function render(){var e=this,t=this.props,n=t.signal,a=t.isHighlighted,s=t.color,r=t.isPlotted,i=t.isExpanded,o=i?"is-expanded":null,l=r?"button":"button--alpha";return u.a.createElement("div",{className:m()("signals-legend-entry",o),onMouseEnter:function onMouseEnter(){return e.props.onSignalHover(n)},onMouseLeave:function onMouseLeave(){return e.props.onSignalHoverEnd(n)}},u.a.createElement(y,{isHighlighted:a,rgb:s}),u.a.createElement("div",{className:"signals-legend-entry-header"},u.a.createElement("div",{className:"signals-legend-entry-header-name",onClick:this.toggleEditing},u.a.createElement("strong",null,n.name)),u.a.createElement("div",{className:"signals-legend-entry-header-action",onClick:this.toggleSignalPlot},u.a.createElement("button",{className:m()("button--tiny",l)},r?"Hide Plot":"Show Plot"))),u.a.createElement("div",{className:"signals-legend-entry-body"},i&&u.a.createElement(E,{signal:n,onSignalRemove:this.props.onSignalRemove,isExpanded:i,getSignalEdited:this.getSignalEdited,update:this.updateField})))}}]),SignalLegendEntry}(d.Component);C.fieldSpecForName=function(e){return b.find((function(t){return t.field===e}))},n.d(t,"a",(function(){return T}));var T=function(e){function SignalLegend(){var e,t;Object(r.a)(this,SignalLegend);for(var n=arguments.length,a=new Array(n),i=0;i<n;i++)a[i]=arguments[i];return(t=Object(o.a)(this,(e=Object(l.a)(SignalLegend)).call.apply(e,[this].concat(a)))).state={expandedSignals:[]},t.toggleExpandSignal=function(e){var n=t.state.expandedSignals;if(n.includes(e.uid)){var a=n.filter((function(t){return t!==e.uid}));t.setState({expandedSignals:a})}else{var r=[].concat(Object(s.a)(n),[e.uid]);t.setState({expandedSignals:r})}},t}return Object(c.a)(SignalLegend,e),Object(i.a)(SignalLegend,[{key:"checkExpandedSignal",value:function checkExpandedSignal(e){return this.state.expandedSignals.includes(e)}},{key:"render",value:function render(){var e=this,t=this.props,n=t.signals,s=t.highlightedSignal,r=t.selectedMessageKey,i=Object.entries(n).sort((function(e,t){var n=Object(a.a)(e,2),s=(n[0],n[1]),r=Object(a.a)(t,2),i=(r[0],r[1]);return s.startBit<i.startBit?-1:1})).map((function(t){var i=Object(a.a)(t,2),o=i[0],l=i[1],c=n[o].getColors(r),d=s===o;return u.a.createElement(C,{isLogEvent:e.props.isLogEvent,key:l.uid,signal:l,isHighlighted:d,color:c,onSignalHover:e.props.onSignalHover,onSignalHoverEnd:e.props.onSignalHoverEnd,onTentativeSignalChange:e.props.onTentativeSignalChange,onSignalChange:e.props.onSignalChange,onSignalRemove:e.props.onSignalRemove,onSignalPlotChange:e.props.onSignalPlotChange,toggleExpandSignal:e.toggleExpandSignal,isPlotted:-1!==e.props.plottedSignalUids.indexOf(l.uid),isExpanded:e.checkExpandedSignal(l.uid)})})).filter((function(e){return null!=e})).reduce((function(e,t){return e.concat(t)}),[]);return u.a.createElement("div",{className:"cabana-explorer-signals-legend"},i)}}]),SignalLegend}(d.Component)},252:function(e,t,n){"use strict";var a=n(2),s=n(3),r=n(8),i=n(6),o=n(7),l=n(9),c=n(1),d=n.n(c),u=n(13),g=n.n(u),m=n(24),h=(n(59),n(42)),p=function(e){function GithubDbcList(e){var t;return Object(a.a)(this,GithubDbcList),(t=Object(r.a)(this,Object(i.a)(GithubDbcList).call(this,e))).state={paths:[],selectedPath:null,pathQuery:""},t.updatePathQuery=t.updatePathQuery.bind(Object(o.a)(t)),t}return Object(l.a)(GithubDbcList,e),Object(s.a)(GithubDbcList,[{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){var t=this;e.repo!==this.props.repo&&this.props.openDbcClient.list(e.repo).then((function(e){t.setState({paths:e,selectedPath:null})}))}},{key:"componentDidMount",value:function componentDidMount(){var e=this;this.props.openDbcClient.list(this.props.repo).then((function(t){t=t.filter((function(e){return-1!==e.indexOf(".dbc")})),e.setState({paths:t})}))}},{key:"updatePathQuery",value:function updatePathQuery(e){this.setState({pathQuery:e.target.value})}},{key:"selectPath",value:function selectPath(e){var t=this;this.setState({selectedPath:e}),this.props.openDbcClient.getDbcContents(e,this.props.repo).then((function(n){t.props.onDbcLoaded(e,n)}))}},{key:"render",value:function render(){var e=this;return d.a.createElement("div",{className:"cabana-dbc-list"},d.a.createElement("div",{className:"cabana-dbc-list-header"},d.a.createElement("a",{href:"https://github.com/".concat(this.props.repo),target:"_blank"},d.a.createElement("i",{className:"fa fa-github"}),d.a.createElement("span",null,this.props.repo)),d.a.createElement("div",{className:"form-field form-field--small"},d.a.createElement("input",{type:"text",placeholder:"Search DBC Files",onChange:this.updatePathQuery}))),d.a.createElement("div",{className:"cabana-dbc-list-files"},this.state.paths.filter((function(t){return""===e.state.pathQuery|t.includes(e.state.pathQuery)})).map((function(t){return d.a.createElement("div",{className:g()("cabana-dbc-list-file",{"is-selected":e.state.selectedPath===t}),onClick:function onClick(){e.selectPath(t)},key:t},d.a.createElement("span",null,t))}))))}}]),GithubDbcList}(c.Component),b=function(e){function DbcUpload(e){var t;return Object(a.a)(this,DbcUpload),(t=Object(r.a)(this,Object(i.a)(DbcUpload).call(this,e))).state={dbcText:""},t.onTextChanged=t.onTextChanged.bind(Object(o.a)(t)),t}return Object(l.a)(DbcUpload,e),Object(s.a)(DbcUpload,[{key:"onTextChanged",value:function onTextChanged(e){var t=e.target.value;this.setState({dbcText:t}),this.props.onDbcLoaded("from paste",t)}},{key:"render",value:function render(){return d.a.createElement("div",{className:"cabana-dbc-upload-raw"},d.a.createElement("div",{className:"form-field"},d.a.createElement("label",{htmlFor:"raw_dbc_upload"},d.a.createElement("span",null,"Raw DBC File:"),d.a.createElement("sup",null,"Paste your DBC text output within this box")),d.a.createElement("textarea",{value:this.state.dbcText,id:"raw_dbc_upload",className:"t-mono",placeholder:"PASTE DBC FILE HERE",onChange:this.onTextChanged})))}}]),DbcUpload}(c.Component);n.d(t,"a",(function(){return f}));var f=function(e){function LoadDbcModal(e){var t;return Object(a.a)(this,LoadDbcModal),(t=Object(r.a)(this,Object(i.a)(LoadDbcModal).call(this,e))).state={tab:"OpenDBC",tabs:["OpenDBC","GitHub","Upload"],dbc:null,dbcSource:null,userOpenDbcRepo:null},t.onDbcLoaded=t.onDbcLoaded.bind(Object(o.a)(t)),t.handleSave=t.handleSave.bind(Object(o.a)(t)),t.renderTabNavigation=t.renderTabNavigation.bind(Object(o.a)(t)),t.renderTabContent=t.renderTabContent.bind(Object(o.a)(t)),t.renderActions=t.renderActions.bind(Object(o.a)(t)),t}return Object(l.a)(LoadDbcModal,e),Object(s.a)(LoadDbcModal,[{key:"componentWillMount",value:function componentWillMount(){var e=this;this.props.openDbcClient.getUserOpenDbcFork().then((function(t){e.setState({userOpenDbcRepo:t})}))}},{key:"onDbcLoaded",value:function onDbcLoaded(e,t){var n=new m.a(t);this.setState({dbcSource:e,dbc:n})}},{key:"handleSave",value:function handleSave(){var e=this.state,t=e.dbc,n=e.dbcSource;null!==t&&this.props.onDbcSelected(n,t)}},{key:"renderTabNavigation",value:function renderTabNavigation(){var e=this;return d.a.createElement("div",{className:"cabana-tabs-navigation"},this.state.tabs.map((function(t){return d.a.createElement("a",{className:g()({"is-active":e.state.tab===t}),onClick:function onClick(){e.setState({tab:t})},key:t},d.a.createElement("span",null,t))})))}},{key:"renderTabContent",value:function renderTabContent(){var e=this.state.tab;return"OpenDBC"===e?d.a.createElement(p,{onDbcLoaded:this.onDbcLoaded,repo:"commaai/opendbc",openDbcClient:this.props.openDbcClient}):"GitHub"===e?this.props.openDbcClient.hasAuth()?null===this.state.userOpenDbcRepo?d.a.createElement("div",null,"Fork it"):d.a.createElement(p,{onDbcLoaded:this.onDbcLoaded,repo:this.state.userOpenDbcRepo,openDbcClient:this.props.openDbcClient}):this.props.loginWithGithub:"Upload"===e?d.a.createElement(b,{onDbcLoaded:this.onDbcLoaded}):void 0}},{key:"renderActions",value:function renderActions(){return d.a.createElement("div",null,d.a.createElement("button",{className:"button--inverted",onClick:this.props.handleClose},d.a.createElement("span",null,"Cancel")),d.a.createElement("button",{className:"button--primary",onClick:this.handleSave},d.a.createElement("span",null,"Load DBC")))}},{key:"render",value:function render(){return d.a.createElement(h.a,{title:"Load DBC File",subtitle:"Modify an existing DBC file with Cabana",handleClose:this.props.handleClose,navigation:this.renderTabNavigation(),actions:this.renderActions()},this.renderTabContent())}}]),LoadDbcModal}(c.Component)},253:function(e,t,n){"use strict";var a=n(11),s=n(2),r=n(3),i=n(8),o=n(6),l=n(7),c=n(9),d=n(1),u=n.n(d),g=n(13),m=n.n(g),h=n(229),p=n.n(h),b=function(e){function MessageBytes(e){var t;return Object(s.a)(this,MessageBytes),(t=Object(i.a)(this,Object(o.a)(MessageBytes).call(this,e))).state={isVisible:!0,lastMessageIndex:0,lastSeekTime:0},t.onVisibilityChange=t.onVisibilityChange.bind(Object(l.a)(t)),t.onCanvasRefAvailable=t.onCanvasRefAvailable.bind(Object(l.a)(t)),t}return Object(c.a)(MessageBytes,e),Object(r.a)(MessageBytes,[{key:"shouldComponentUpdate",value:function shouldComponentUpdate(e,t){if(e.live){var n=e.message.entries[e.message.entries.length-1],a=this.props.message.entries[this.props.message.entries.length-1];return n.hexData!==a.hexData}return e.seekTime!==this.props.seekTime}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){function frameForTime(e){return~~(60*e)}this.props.seekIndex===e.seekIndex&&frameForTime(this.props.seekTime)===frameForTime(e.seekTime)||this.updateCanvas(e)}},{key:"findMostRecentMessage",value:function findMostRecentMessage(e){var t=this.props.message,n=this.state,a=n.lastMessageIndex,s=n.lastSeekTime,r=null;if(e>=s)for(var i=a;i<t.entries.length;++i){var o=t.entries[i];if(o&&o.relTime>=e){r=i;break}}if(r||(r=t.entries.findIndex((function(t){return t.relTime>=e}))),r)return this.setState({lastMessageIndex:r,lastSeekTime:e}),t.entries[r]}},{key:"updateCanvas",value:function updateCanvas(e){var t=e.message,n=e.live,a=e.seekTime;if(this.canvas&&0!==t.entries.length){var s=t.entries[t.entries.length-1];n||(s=this.findMostRecentMessage(a))||(s=t.entries[0]);for(var r=this.canvas.getContext("2d"),i=0;i<t.byteStateChangeCounts.length;++i){var o=s.hexData.substr(2*i,2);r.fillStyle=t.byteColors[i],r.fillRect(20*i,0,20,15),r.font="12px Courier",r.fillStyle="white",o?r.fillText(o,20*i+2,12):r.fillText("-",20*i+7,12)}}}},{key:"onVisibilityChange",value:function onVisibilityChange(e){e!==this.state.isVisible&&this.setState({isVisible:e})}},{key:"onCanvasRefAvailable",value:function onCanvasRefAvailable(e){e&&(this.canvas=e,this.canvas.width=160*window.devicePixelRatio,this.canvas.height=15*window.devicePixelRatio,this.canvas.getContext("2d").scale(window.devicePixelRatio,window.devicePixelRatio))}},{key:"render",value:function render(){return u.a.createElement("canvas",{ref:this.onCanvasRefAvailable,className:"cabana-meta-messages-list-item-bytes-canvas"})}}]),MessageBytes}(d.Component);n.d(t,"a",(function(){return S}));var f=n(412).ckmeans,S=function(e){function Meta(e){var t;Object(s.a)(this,Meta),(t=Object(i.a)(this,Object(o.a)(Meta).call(this,e))).onFilterChanged=t.onFilterChanged.bind(Object(l.a)(t)),t.onFilterFocus=t.onFilterFocus.bind(Object(l.a)(t)),t.onFilterUnfocus=t.onFilterUnfocus.bind(Object(l.a)(t)),t.canMsgFilter=t.canMsgFilter.bind(Object(l.a)(t)),t.logEventMsgFilter=t.logEventMsgFilter.bind(Object(l.a)(t)),t.renderMessageBytes=t.renderMessageBytes.bind(Object(l.a)(t)),t.toggleShowLogEvents=t.toggleShowLogEvents.bind(Object(l.a)(t));var n=e.dbcLastSaved;return t.state={filterText:"Filter",lastSaved:null!==n?t.props.dbcLastSaved.fromNow():null,hoveredMessages:[],orderedMessageKeys:[],showLogEvents:!1},t}return Object(c.a)(Meta,e),Object(r.a)(Meta,[{key:"componentDidMount",value:function componentDidMount(){var e=this;this.lastSavedTimer=setInterval((function(){null!==e.props.dbcLastSaved&&e.setState({lastSaved:e.props.dbcLastSaved.fromNow()})}),3e4)}},{key:"componentWillUnmount",value:function componentWillUnmount(){window.clearInterval(this.lastSavedTimer)}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps(e){e.lastSaved!==this.props.lastSaved&&"object"===typeof e&&this.setState({lastSaved:e.dbcLastSaved.fromNow()});var t=Object.keys(e.messages);if(JSON.stringify(t)!==JSON.stringify(Object.keys(this.props.messages))){var n=this.sortMessages(e.messages);this.setState({hoveredMessages:[],orderedMessageKeys:n})}else if(0===this.state.orderedMessageKeys.length||!this.props.live&&this.props.messages&&e.messages&&this.byteCountsDidUpdate(this.props.messages,e.messages)){var a=this.sortMessages(e.messages);this.setState({orderedMessageKeys:a})}}},{key:"byteCountsDidUpdate",value:function byteCountsDidUpdate(e,t){return Object.entries(t).some((function(t){var n=Object(a.a)(t,2),s=n[0],r=n[1];return JSON.stringify(r.byteStateChangeCounts)!==JSON.stringify(e[s].byteStateChangeCounts)}))}},{key:"sortMessages",value:function sortMessages(e){if(0===Object.keys(e).length)return[];var t=Object.entries(e).reduce((function(e,t){var n=Object(a.a)(t,2),s=(n[0],n[1]),r=s.entries.length.toString();return e[r]?e[r].push(s):e[r]=[s],e}),{}),n=Object.keys(t).map((function(e){return parseInt(e,10)}));return f(n,Math.min(n.length,10)).map((function(e){return e.map((function(e){return t[e.toString()]})).reduce((function(e,t){return e.concat(t)}),[]).sort((function(e,t){return e.address<t.address?1:-1})).map((function(e){return e.id}))})).reduce((function(e,t){return e.concat(t)}),[]).reverse()}},{key:"toggleShowLogEvents",value:function toggleShowLogEvents(){this.setState({showLogEvents:!this.state.showLogEvents})}},{key:"onFilterChanged",value:function onFilterChanged(e){var t=e.target.value;"Filter"===t.trim()&&(t=""),this.setState({filterText:t})}},{key:"onFilterFocus",value:function onFilterFocus(e){"Filter"===this.state.filterText.trim()&&this.setState({filterText:""})}},{key:"onFilterUnfocus",value:function onFilterUnfocus(e){""===this.state.filterText.trim()&&this.setState({filterText:"Filter"})}},{key:"canMsgFilter",value:function canMsgFilter(e){if(!e.isLogEvent){var t=this.state.filterText,n=e.frame?e.frame.name:"";return"Filter"===t||""===t||-1!==e.id.toLowerCase().indexOf(t.toLowerCase())||-1!==n.toLowerCase().indexOf(t.toLowerCase())}}},{key:"logEventMsgFilter",value:function logEventMsgFilter(e){if(e.isLogEvent){var t=this.state.filterText,n=e.frame?e.frame.name:"";return"Filter"===t||""===t||-1!==e.id.toLowerCase().indexOf(t.toLowerCase())||-1!==n.toLowerCase().indexOf(t.toLowerCase())}}},{key:"lastSavedPretty",value:function lastSavedPretty(){return this.props.dbcLastSaved.fromNow()}},{key:"onMessageHover",value:function onMessageHover(e){var t=this.state.hoveredMessages;-1===t.indexOf(e)&&(t.push(e),this.setState({hoveredMessages:t}))}},{key:"onMessageHoverEnd",value:function onMessageHoverEnd(e){var t=this.state.hoveredMessages;t=t.filter((function(t){return t!==e})),this.setState({hoveredMessages:t})}},{key:"onMsgRemoveClick",value:function onMsgRemoveClick(e){var t=this.state.selectedMessages;t=t.filter((function(t){return t!==e})),this.props.onMessageUnselected(e),this.setState({selectedMessages:t})}},{key:"onMessageSelected",value:function onMessageSelected(e){var t=[];t.push(e),this.props.updateSelectedMessages(t),this.props.onMessageSelected(e)}},{key:"orderedMessages",value:function orderedMessages(){var e=this.state.orderedMessageKeys,t=this.props.messages;return e.map((function(e){return t[e]}))}},{key:"selectedMessageClass",value:function selectedMessageClass(e){return this.props.selectedMessages.includes(e)?"is-selected":null}},{key:"renderMessageBytes",value:function renderMessageBytes(e){var t=this;return u.a.createElement("tr",{onClick:function onClick(){t.onMessageSelected(e.id)},key:e.id,className:m()("cabana-meta-messages-list-item",this.selectedMessageClass(e.id))},e.isLogEvent?u.a.createElement("td",{colSpan:"2"},e.id):u.a.createElement(u.a.Fragment,null,u.a.createElement("td",null,e.frame?e.frame.name:"untitled"),u.a.createElement("td",null,e.id)),u.a.createElement("td",null,e.entries.length),u.a.createElement("td",null,u.a.createElement("div",{className:"cabana-meta-messages-list-item-bytes"},u.a.createElement(b,{key:e.id,message:e,seekIndex:this.props.seekIndex,seekTime:this.props.seekTime,live:this.props.live}))))}},{key:"renderCanMessages",value:function renderCanMessages(){return this.orderedMessages().filter(this.canMsgFilter).map(this.renderMessageBytes)}},{key:"renderLogEventMessages",value:function renderLogEventMessages(){return this.orderedMessages().filter(this.logEventMsgFilter).map(this.renderMessageBytes)}},{key:"renderAvailableMessagesList",value:function renderAvailableMessagesList(){return 0===Object.keys(this.props.messages).length?u.a.createElement("p",null,"Loading messages..."):u.a.createElement(u.a.Fragment,null,u.a.createElement("table",{cellPadding:"5"},this.state.showLogEvents&&u.a.createElement(u.a.Fragment,null,u.a.createElement("thead",null,u.a.createElement("tr",null,u.a.createElement("td",{colSpan:"2"},"Name"),u.a.createElement("td",null,"Count"),u.a.createElement("td",null,"Bytes"))),u.a.createElement("tbody",null,this.renderLogEventMessages(),u.a.createElement("tr",null,u.a.createElement("td",{colSpan:"4"},u.a.createElement("hr",null))))),u.a.createElement("thead",null,u.a.createElement("tr",null,u.a.createElement("td",null,"Name"),u.a.createElement("td",null,"ID"),u.a.createElement("td",null,"Count"),u.a.createElement("td",null,"Bytes"))),u.a.createElement("tbody",null,this.renderCanMessages())))}},{key:"saveable",value:function saveable(){try{return"serviceWorker"in navigator&&new ReadableStream&&new WritableStream,"saveable"}catch(e){return!1}}},{key:"render",value:function render(){return u.a.createElement("div",{className:"cabana-meta"},u.a.createElement("div",{className:"cabana-meta-header"},u.a.createElement("h5",{className:"cabana-meta-header-label t-capline"},"Currently editing:"),u.a.createElement("strong",{className:"cabana-meta-header-filename"},this.props.dbcFilename),null!==this.props.dbcLastSaved?u.a.createElement("div",{className:"cabana-meta-header-last-saved"},u.a.createElement("p",null,"Last saved:",this.lastSavedPretty())):null,u.a.createElement("div",{className:"cabana-meta-header-actions ".concat(this.saveable())},u.a.createElement("div",{className:"cabana-meta-header-action"},u.a.createElement("button",{onClick:this.props.showLoadDbc},"Load DBC")),this.saveable()&&u.a.createElement("div",{className:"cabana-meta-header-action"},u.a.createElement("button",{onClick:this.props.saveLog},"Save Log")),this.props.shareUrl?u.a.createElement("div",{className:"cabana-meta-header-action special-wide","data-clipboard-text":this.props.shareUrl,"data-clipboard-action":"copy",ref:function ref(e){return e?new p.a(e):null}},u.a.createElement("a",{className:"button",href:this.props.shareUrl,onClick:function onClick(e){return e.preventDefault()}},"Copy Share Link")):null,u.a.createElement("div",{className:"cabana-meta-header-action"},u.a.createElement("button",{onClick:this.props.showSaveDbc},"Save DBC")))),u.a.createElement("div",{className:"cabana-meta-messages"},u.a.createElement("div",{className:"cabana-meta-messages-header"},u.a.createElement("div",{style:{display:"inline-block",float:"right"}},u.a.createElement("h5",{className:"t-capline"},"Show log events",u.a.createElement("input",{type:"checkbox",onChange:this.toggleShowLogEvents,checked:!!this.state.showLogEvents}))),u.a.createElement("h5",{className:"t-capline"},"Available messages")),u.a.createElement("div",{className:"cabana-meta-messages-window"},u.a.createElement("div",{className:"cabana-meta-messages-filter"},u.a.createElement("div",{className:"form-field form-field--small"},u.a.createElement("input",{type:"text",value:this.state.filterText,onFocus:this.onFilterFocus,onBlur:this.onFilterUnfocus,onChange:this.onFilterChanged}))),u.a.createElement("div",{className:"cabana-meta-messages-list"},this.renderAvailableMessagesList()))))}}]),Meta}(d.Component)},254:function(e,t,n){n(255),e.exports=n(256)},256:function(e,t,n){"use strict";n.r(t);var a=n(218);n(553);Object(a.a)()},28:function(e,t,n){"use strict";n.d(t,"a",(function(){return fetchPersistedDbc})),n.d(t,"c",(function(){return persistDbc})),n.d(t,"b",(function(){return fetchPersistedGithubAuthToken})),n.d(t,"e",(function(){return unpersistGithubAuthToken})),n.d(t,"d",(function(){return persistGithubAuthToken}));var a=n(24);function fetchPersistedDbc(e){var t=window.localStorage.getItem(e);if(null!==t){var n=JSON.parse(t),s=n.dbcFilename,r=n.dbcText;return{dbc:new a.a(r),dbcText:r,dbcFilename:s}}return null}function persistDbc(e,t){var n=t.dbcFilename,a=t.dbc,s=JSON.stringify({dbcFilename:n,dbcText:a.text()});window.localStorage.setItem(e,s)}var s="gh_auth_token";function fetchPersistedGithubAuthToken(){return window.localStorage.getItem(s)}function unpersistGithubAuthToken(){window.localStorage.removeItem(s)}function persistGithubAuthToken(e){return window.localStorage.setItem(s,e)}},285:function(e,t){},33:function(e,t,n){"use strict";function debounce(e,t,n){var a;return function(){var s=this,r=arguments,i=function later(){a=null,n||e.apply(s,r)},o=n&&!a;clearTimeout(a),a=setTimeout(i,t),o&&e.apply(s,r)}}n.d(t,"a",(function(){return debounce}))},41:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(11),s=n(2),r=n(3),i=n(228),o=n.n(i),l=n(15),c=function(){function Signal(e){var t=e.name,n=e.startBit,a=void 0===n?0:n,r=e.size,i=void 0===r?0:r,o=e.isLittleEndian,l=void 0===o||o,c=e.isSigned,d=void 0!==c&&c,u=e.isFloat,g=void 0!==u&&u,m=e.factor,h=void 0===m?1:m,p=e.offset,b=void 0===p?0:p,f=e.unit,S=void 0===f?"":f,v=e.receiver,E=void 0===v?["XXX"]:v,_=e.comment,O=void 0===_?null:_,y=e.multiplex,C=void 0===y?null:y,T=e.min,D=void 0===T?null:T,w=e.max,M=void 0===w?null:w,k=e.valueDescriptions,X=void 0===k?new Map:k;Object(s.a)(this,Signal),Object.assign(this,{name:t,startBit:a,size:i,isLittleEndian:l,isSigned:d,isFloat:g,factor:h,offset:b,unit:S,receiver:E,comment:O,multiplex:C,valueDescriptions:X});var A=Math.random().toString(36);null==D&&(D=this.calculateMin()),null==M&&(M=this.calculateMax());var B=this.generateColors();Object.assign(this,{min:D,max:M,uid:A,_colors:B}),Object.defineProperty(this,"colors",{get:function get(){return console.error("Something is still using the old colors"),B},enumberable:!1})}return Object(r.a)(Signal,[{key:"text",value:function text(){var e=this.multiplex?" ".concat(this.multiplex):"",t=this.isLittleEndian?1:0,n=this.isSigned?"-":"+";return"SG_ ".concat(this.name).concat(e," : ")+"".concat(this.startBit,"|").concat(this.size,"@").concat(t).concat(n)+" (".concat(this.factor,",").concat(this.offset,")")+" [".concat(this.min,"|").concat(this.max,"]")+' "'.concat(this.unit,'" ').concat(this.receiver)}},{key:"valueDescriptionText",value:function valueDescriptionText(e){var t=Array.from(this.valueDescriptions.entries()).reduce((function(e,t){var n=Object(a.a)(t,2),s=n[0],r=n[1];return"".concat(e+s,' "').concat(r,'" ')}),"");return"VAL_ ".concat(e," ").concat(this.name," ").concat(t,";")}},{key:"lsbBitIndex",value:function lsbBitIndex(){if(this.isLittleEndian)return this.startBit;var e=this.lsbBitNumber();return l.a.matrixBitNumber(e)}},{key:"lsbBitNumber",value:function lsbBitNumber(){return l.a.bigEndianBitIndex(this.startBit)+this.size-1}},{key:"msbBitIndex",value:function msbBitIndex(){return this.isLittleEndian?this.startBit+this.size-1:this.startBit}},{key:"littleEndianBitDescription",value:function littleEndianBitDescription(e){var t=[this.startBit,this.startBit+this.size-1];return e<t[0]||e>t[1]?null:{bitNumber:e-t[0],isLsb:e===t[0],isMsb:e===t[1]}}},{key:"bigEndianBitDescription",value:function bigEndianBitDescription(e){var t=l.a.bigEndianBitIndex(this.startBit),n=[t,t+this.size-1],a=l.a.bigEndianBitIndex(e);return a<n[0]||a>n[1]?null:{bitNumber:a,isLsb:a===n[1],isMsb:e===this.startBit,range:n}}},{key:"bitDescription",value:function bitDescription(e){return this.isLittleEndian?this.littleEndianBitDescription(e):this.bigEndianBitDescription(e)}},{key:"calculateRawRange",value:function calculateRawRange(){var e=Math.pow(2,this.size);return this.isSigned&&(e/=2),[this.isSigned?-1*e:0,e-1]}},{key:"calculateMin",value:function calculateMin(){var e=this.calculateRawRange()[0];return this.offset+e*this.factor}},{key:"calculateMax",value:function calculateMax(){var e=this.calculateRawRange()[1];return this.offset+e*this.factor}},{key:"getColors",value:function getColors(e){var t=e.split(":").map((function(e){return 3*(3+Number.parseInt(e,16))%253})),n=this._colors||this.generateColors(),a=0;return n.map((function(e){return t=t.map((function(e){return e^a})),a=t.reduce((function(e,t){return e^t}),e)}))}},{key:"generateColors",value:function generateColors(){return o()({format:"rgbArray"})}},{key:"equals",value:function equals(e){var t=this;return e.name===this.name&&e.startBit===this.startBit&&e.size===this.size&&e.isLittleEndian===this.isLittleEndian&&e.isSigned===this.isSigned&&e.isFloat===this.isFloat&&e.factor===this.factor&&e.offset===this.offset&&e.unit===this.unit&&e.receiver.length===this.receiver.length&&e.receiver.every((function(e,n){return e===t.receiver[n]}))&&e.comment===this.comment&&e.multiplex===this.multiplex}}]),Signal}()},42:function(e,t,n){"use strict";n.d(t,"a",(function(){return h}));var a=n(2),s=n(3),r=n(8),i=n(6),o=n(7),l=n(9),c=n(1),d=n.n(c),u=n(13),g=n.n(u),m=n(93),h=function(e){function Modal(e){var t;return Object(a.a)(this,Modal),(t=Object(r.a)(this,Object(i.a)(Modal).call(this,e))).state={windowHeight:{},modalHeight:{}},t.updateHeights=t.updateHeights.bind(Object(o.a)(t)),t}return Object(l.a)(Modal,e),Object(s.a)(Modal,[{key:"updateHeights",value:function updateHeights(e){this.setState({windowHeight:window.innerHeight}),this.setState({modalHeight:e.bounds.height})}},{key:"readVariationClasses",value:function readVariationClasses(){if(this.props.variations)return this.props.variations.reduce((function(e,t){return"".concat(e,"cabana-modal--").concat(t," ")}),"")}},{key:"checkClosability",value:function checkClosability(){return this.props.disableClose||!1}},{key:"checkYScrollability",value:function checkYScrollability(){return this.state.modalHeight>this.state.windowHeight}},{key:"render",value:function render(){var e=this;return d.a.createElement("div",{className:g()("cabana-modal",this.readVariationClasses(),{"cabana-modal--not-closable":this.checkClosability(),"cabana-modal--scrollable-y":this.checkYScrollability()})},d.a.createElement(m.a,{bounds:!0,onResize:function onResize(t){e.updateHeights(t)}},(function(t){var n=t.measureRef;return d.a.createElement("div",{ref:n,className:"cabana-modal-container"},d.a.createElement("div",{className:"cabana-modal-close-icon",onClick:e.props.handleClose}),d.a.createElement("div",{className:"cabana-modal-header"},d.a.createElement("h1",null,e.props.title),d.a.createElement("p",null,e.props.subtitle)),d.a.createElement("div",{className:"cabana-modal-navigation"},e.props.navigation),d.a.createElement("div",{className:"cabana-modal-body"},d.a.createElement("div",{className:"cabana-modal-body-window"},e.props.children),d.a.createElement("div",{className:"cabana-modal-body-gradient"})),d.a.createElement("div",{className:"cabana-modal-actions"},e.props.actions),d.a.createElement("div",{className:"cabana-modal-footer"},e.props.footer))})),d.a.createElement("div",{className:"cabana-modal-backdrop",onClick:this.props.handleClose}))}}]),Modal}(c.Component)},488:function(e,t,n){e.exports=n.p+"static/media/webusb-enable-experimental-features.e5a08e76.png"},489:function(e,t,n){e.exports=n.p+"static/media/webusb-enable-webusb.aceef6a0.png"},545:function(e,t){},548:function(e,t,n){e.exports=function(){return new Worker(n.p+"beaf0312537cf2a84ceb.worker.js")}},549:function(e,t,n){e.exports=function(){return new Worker(n.p+"66fe2b555037a721fc00.worker.js")}},550:function(e,t,n){e.exports=function(){return new Worker(n.p+"83feda798dbec03978d2.worker.js")}},551:function(e,t,n){e.exports=function(){return new Worker(n.p+"c7de2d6e38fac0f21bad.worker.js")}},552:function(e,t,n){"use strict";new(n(24).a)('\nVERSION ""\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n EV_DATA_\n ENVVAR_DATA_\n SGTYPE_\n SGTYPE_VAL_\n BA_DEF_SGTYPE_\n BA_SGTYPE_\n SIG_TYPE_REF_\n VAL_TABLE_\n SIG_GROUP_\n SIG_VALTYPE_\n SIGTYPE_VALTYPE_\n BO_TX_BU_\n BA_DEF_REL_\n BA_REL_\n BA_DEF_DEF_REL_\n BU_SG_REL_\n BU_EV_REL_\n BU_BO_REL_\n SG_MUL_VAL_\n\nBS_:\n\nBU_: INTERCEPTOR EBCM NEO ADAS PCM EPS VSA SCM BDY XXX\n\n\nBO_ 57 XXX_1: 3 XXX\n\nBO_ 145 XXX_2: 8 XXX\n SG_ LAT_ACCEL : 7|10@0+ (0.02,-512) [-20|20] "m/s2" NEO\n\nBO_ 228 STEERING_CONTROL: 5 ADAS\n SG_ STEER_TORQUE : 7|16@0- (1,0) [-3840|3840] "" EPS\n SG_ STEER_TORQUE_REQUEST : 23|1@0+ (1,0) [0|1] "" EPS\n SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|0] "" EPS\n SG_ COUNTER : 37|2@0+ (1,0) [0|3] "" EPS\n SG_ CHECKSUM : 35|4@0+ (1,0) [0|3] "" EPS\n\nBO_ 304 GAS_PEDAL2: 8 PCM\n SG_ ENGINE_TORQUE_ESTIMATE : 7|16@0- (1,0) [-1000|1000] "Nm" NEO\n SG_ ENGINE_TORQUE_REQUEST : 23|16@0- (1,0) [-1000|1000] "Nm" NEO\n SG_ CAR_GAS : 39|8@0+ (1,0) [0|255] "" NEO\n\nBO_ 316 GAS_PEDAL: 8 PCM\n SG_ CAR_GAS : 39|8@0+ (1,0) [0|255] "" NEO\n\nBO_ 342 STEERING_SENSORS: 6 EPS\n SG_ STEER_ANGLE : 7|16@0- (-0.1,0) [-500|500] "deg" NEO\n SG_ STEER_ANGLE_RATE : 23|16@0- (1,0) [-3000|3000] "deg/s" NEO\n SG_ COUNTER : 45|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 43|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 344 POWERTRAIN_DATA: 8 PCM\n SG_ XMISSION_SPEED : 7|16@0+ (0.002759506,0) [0|70] "m/s" NEO\n SG_ ENGINE_RPM : 23|16@0+ (1,0) [0|15000] "rpm" NEO\n SG_ XMISSION_SPEED2 : 39|16@0+ (0.002759506,0) [0|70] "m/s" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n SG_ ODOMETER : 55|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 380 POWERTRAIN_DATA2: 8 PCM\n SG_ PEDAL_GAS : 7|8@0+ (1,0) [0|255] "" NEO\n SG_ ENGINE_RPM : 23|16@0+ (1,0) [0|15000] "rpm" NEO\n SG_ GAS_PRESSED : 39|1@0+ (1,0) [0|1] "" NEO\n SG_ ACC_STATUS : 38|1@0+ (1,0) [0|1] "rpm" NEO\n SG_ BOH_17C : 37|5@0+ (1,0) [0|1] "rpm" NEO\n SG_ BRAKE_SWITCH : 32|1@0+ (1,0) [0|1] "rpm" NEO\n SG_ BOH2_17C : 47|10@0+ (1,0) [0|1] "rpm" NEO\n SG_ BRAKE_PRESSED : 53|1@0+ (1,0) [0|1] "" NEO\n SG_ BOH3_17C : 52|5@0+ (1,0) [0|1] "rpm" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 398 XXX_3: 3 XXX\n\nBO_ 399 STEER_STATUS: 7 EPS\n SG_ STEER_TORQUE_SENSOR : 7|16@0- (1,0) [-31000|31000] "tbd" NEO\n SG_ STEER_TORQUE_MOTOR : 23|16@0- (1,0) [-31000|31000] "tbd" NEO\n SG_ STEER_STATUS : 39|4@0+ (1,0) [0|15] "" NEO\n SG_ STEER_CONTROL_ACTIVE : 35|1@0+ (1,0) [0|1] "" NEO\n SG_ COUNTER : 53|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 51|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 419 GEARBOX: 8 PCM\n SG_ GEAR : 7|8@0+ (1,0) [0|256] "" NEO\n SG_ GEAR_SHIFTER : 35|4@0+ (1,0) [0|15] "" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 420 VSA_STATUS: 8 VSA\n SG_ USER_BRAKE : 7|16@0+ (0.015625,-1.609375) [0|1000] "" NEO\n SG_ ESP_DISABLED : 28|1@0+ (1,0) [0|1] "" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 422 SCM_BUTTONS: 8 SCM\n SG_ CRUISE_BUTTONS : 7|3@0+ (1,0) [0|7] "" NEO\n SG_ LIGHTS_SETTING : 1|2@0+ (1,0) [0|3] "" NEO\n SG_ MAIN_ON : 47|1@0+ (1,0) [0|1] "" NEO\n SG_ CRUISE_SETTING : 43|2@0+ (1,0) [0|3] "" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 428 XXX_4: 8 XXX\n\nBO_ 432 STANDSTILL: 7 VSA\n SG_ WHEELS_MOVING : 12|1@0+ (1,0) [0|1] "" NEO\n SG_ BRAKE_ERROR_1 : 11|1@0+ (1,0) [0|1] "" NEO\n SG_ BRAKE_ERROR_2 : 9|1@0+ (1,0) [0|1] "" NEO\n SG_ COUNTER : 53|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 51|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 464 WHEEL_SPEEDS: 8 VSA\n SG_ WHEEL_SPEED_FL : 7|15@0+ (0.002759506,0) [0|70] "m/s" NEO\n SG_ WHEEL_SPEED_FR : 8|15@0+ (0.002759506,0) [0|70] "m/s" NEO\n SG_ WHEEL_SPEED_RL : 25|15@0+ (0.002759506,0) [0|70] "m/s" NEO\n SG_ WHEEL_SPEED_RR : 42|15@0+ (0.002759506,0) [0|70] "m/s" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 476 XXX_5: 4 XXX\n\nBO_ 490 VEHICLE_DYNAMICS: 8 VSA\n SG_ LONG_ACCEL : 23|16@0- (0.0015384,0) [-20|20] "m/s2" NEO\n\nBO_ 506 BRAKE_COMMAND: 8 ADAS\n SG_ COMPUTER_BRAKE : 7|10@0+ (0.003906248,0) [0|1] "" EBCM\n SG_ ZEROS_BOH : 13|5@0+ (1,0) [0|1] "" EBCM\n SG_ COMPUTER_BRAKE_REQUEST : 8|1@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_BOH2 : 23|3@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_OVERRIDE : 20|1@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_BOH3 : 19|1@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_FAULT_CMD : 18|1@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_CANCEL_CMD : 17|1@0+ (1,0) [0|1] "" EBCM\n SG_ COMPUTER_BRAKE_REQUEST_2 : 16|1@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_BOH4 : 31|8@0+ (1,0) [0|1] "" EBCM\n SG_ BRAKE_LIGHTS : 39|1@0+ (1,0) [0|1] "" EBCM\n SG_ CRUISE_BOH5 : 38|7@0+ (1,0) [0|1] "" EBCM\n SG_ CHIME : 47|3@0+ (1,0) [0|7] "" EBCM\n SG_ CRUISE_BOH6 : 44|1@0+ (1,0) [0|1] "" EBCM\n SG_ FCW : 43|2@0+ (1,0) [0|3] "" EBCM\n SG_ CRUISE_BOH7 : 41|10@0+ (1,0) [0|0] "" EBCM\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" EBCM\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" EBCM\n\nBO_ 512 GAS_COMMAND: 3 NEO\n SG_ GAS_COMMAND : 7|16@0+ (0.253984064,-83.3) [0|1] "" INTERCEPTOR\n SG_ COUNTER : 21|2@0+ (1,0) [0|3] "" INTERCEPTOR\n SG_ CHECKSUM : 19|4@0+ (1,0) [0|3] "" INTERCEPTOR\n\nBO_ 513 GAS_SENSOR: 5 INTERCEPTOR\n SG_ INTERCEPTOR_GAS : 7|16@0+ (0.253984064,-83.3) [0|1] "" NEO\n SG_ INTERCEPTOR_GAS2 : 23|16@0+ (0.126992032,-83.3) [0|1] "" NEO\n SG_ COUNTER : 37|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 35|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 542 XXX_6: 7 XXX\n\nBO_ 545 XXX_7: 4 XXX\n\nBO_ 597 ROUGH_WHEEL_SPEED: 8 VSA\n SG_ WHEEL_SPEED_FL : 7|8@0+ (1,0) [0|255] "mph" NEO\n SG_ WHEEL_SPEED_FR : 15|8@0+ (1,0) [0|255] "mph" NEO\n SG_ WHEEL_SPEED_RL : 23|8@0+ (1,0) [0|255] "mph" NEO\n SG_ WHEEL_SPEED_RR : 31|8@0+ (1,0) [0|255] "mph" NEO\n SG_ SET_TO_X55 : 47|8@0+ (1,0) [0|255] "" NEO\n\nBO_ 660 SCM_COMMANDS: 8 SCM\n SG_ RIGHT_BLINKER : 6|1@0+ (1,0) [0|1] "" NEO\n SG_ LEFT_BLINKER : 5|1@0+ (1,0) [0|1] "" NEO\n SG_ WIPERS_SPEED : 4|2@0+ (1,0) [0|3] "" NEO\n\nBO_ 773 SEATBELT_STATUS: 7 BDY\n SG_ SEATBELT_DRIVER_LAMP : 7|1@0+ (1,0) [0|1] "" NEO\n SG_ SEATBELT_DRIVER_LATCHED : 13|1@0+ (1,0) [0|1] "" NEO\n SG_ COUNTER : 53|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 51|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 777 XXX_8: 8 XXX\n\nBO_ 780 ACC_HUD: 8 ADAS\n SG_ PCM_SPEED : 7|16@0+ (0.002763889,0) [0|100] "m/s" BDY\n SG_ PCM_GAS : 23|7@0+ (1,0) [0|127] "" BDY\n SG_ ZEROS_BOH : 16|1@0+ (1,0) [0|255] "" BDY\n SG_ CRUISE_SPEED : 31|8@0+ (1,0) [0|255] "" BDY\n SG_ DTC_MODE : 39|1@0+ (1,0) [0|1] "" BDY\n SG_ BOH : 38|1@0+ (1,0) [0|1] "" BDY\n SG_ ACC_PROBLEM : 37|1@0+ (1,0) [0|1] "" BDY\n SG_ FCM_OFF : 36|1@0+ (1,0) [0|1] "" BDY\n SG_ BOH_2 : 35|1@0+ (1,0) [0|1] "" BDY\n SG_ FCM_PROBLEM : 34|1@0+ (1,0) [0|1] "" BDY\n SG_ RADAR_OBSTRUCTED : 33|1@0+ (1,0) [0|1] "" BDY\n SG_ ENABLE_MINI_CAR : 32|1@0+ (1,0) [0|1] "" BDY\n SG_ SET_ME_X03 : 47|2@0+ (1,0) [0|3] "" BDY\n SG_ HUD_LEAD : 45|2@0+ (1,0) [0|3] "" BDY\n SG_ BOH_3 : 43|1@0+ (1,0) [0|3] "" BDY\n SG_ BOH_4 : 42|1@0+ (1,0) [0|3] "" BDY\n SG_ BOH_5 : 41|1@0+ (1,0) [0|3] "" BDY\n SG_ CRUISE_CONTROL_LABEL : 40|1@0+ (1,0) [0|3] "" BDY\n SG_ HUD_DISTANCE_3 : 52|1@0+ (1,0) [0|1] "" BDY\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" BDY\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" BDY\n\nBO_ 800 XXX_9: 8 XXX\n\nBO_ 804 CRUISE: 8 PCM\n SG_ HUD_SPEED_KPH : 7|8@0+ (1,0) [0|255] "kph" NEO\n SG_ HUD_SPEED_MPH : 15|8@0+ (1,0) [0|255] "mph" NEO\n SG_ TRIP_FUEL_CONSUMED : 23|16@0+ (1,0) [0|255] "" NEO\n SG_ CRUISE_SPEED_PCM : 39|8@0+ (1,0) [0|255] "" NEO\n SG_ BOH2 : 47|8@0- (1,0) [0|255] "" NEO\n SG_ BOH3 : 55|8@0+ (1,0) [0|255] "" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 808 XXX_10: 8 XXX\n\nBO_ 819 XXX_11: 7 XXX\n\nBO_ 821 XXX_12: 5 XXX\n\nBO_ 829 LKAS_HUD_2: 5 ADAS\n SG_ CAM_TEMP_HIGH : 7|1@0+ (1,0) [0|255] "" BDY\n SG_ BOH : 23|2@0+ (1,0) [0|4] "" BDY\n SG_ DASHED_LANES : 14|1@0+ (1,0) [0|1] "" BDY\n SG_ DTC : 13|1@0+ (1,0) [0|1] "" BDY\n SG_ LKAS_PROBLEM : 12|1@0+ (1,0) [0|1] "" BDY\n SG_ LKAS_OFF : 11|1@0+ (1,0) [0|1] "" BDY\n SG_ SOLID_LANES : 10|1@0+ (1,0) [0|1] "" BDY\n SG_ LDW_RIGHT : 9|1@0+ (1,0) [0|1] "" BDY\n SG_ STEERING_REQUIRED : 8|1@0+ (1,0) [0|1] "" BDY\n SG_ LDW_PROBLEM : 21|1@0+ (1,0) [0|1] "" BDY\n SG_ BEEP : 17|2@0+ (1,0) [0|1] "" BDY\n SG_ LDW_ON : 28|1@0+ (1,0) [0|1] "" BDY\n SG_ LDW_OFF : 27|1@0+ (1,0) [0|1] "" BDY\n SG_ CLEAN_WINDSHIELD : 26|1@0+ (1,0) [0|1] "" BDY\n SG_ SET_ME_X48 : 31|8@0+ (1,0) [0|255] "" BDY\n SG_ COUNTER : 37|2@0+ (1,0) [0|3] "" BDY\n SG_ CHECKSUM : 35|4@0+ (1,0) [0|3] "" BDY\n\nBO_ 882 XXX_13: 2 XXX\n\nBO_ 884 XXX_14: 7 XXX\n\nBO_ 887 XXX_15: 8 XXX\n\nBO_ 888 XXX_16: 8 XXX\n\nBO_ 892 CRUISE_PARAMS: 8 PCM\n SG_ CRUISE_SPEED_OFFSET : 31|8@0- (0.1,0) [-128|127] "kph" NEO\n\nBO_ 923 XXX_18: 2 XXX\n\nBO_ 929 XXX_19: 4 XXX\n\nBO_ 983 XXX_20: 8 XXX\n\nBO_ 985 XXX_21: 3 XXX\n\nBO_ 1024 XXX_22: 5 XXX\n\nBO_ 1027 XXX_23: 5 XXX\n\nBO_ 1029 DOORS_STATUS: 8 BDY\n SG_ DOOR_OPEN_FL : 37|1@0+ (1,0) [0|1] "" NEO\n SG_ DOOR_OPEN_FR : 38|1@0+ (1,0) [0|1] "" NEO\n SG_ DOOR_OPEN_RL : 39|1@0+ (1,0) [0|1] "" NEO\n SG_ DOOR_OPEN_RR : 40|1@0+ (1,0) [0|1] "" NEO\n SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" NEO\n SG_ CHECKSUM : 59|4@0+ (1,0) [0|3] "" NEO\n\nBO_ 1030 XXX_24: 5 VSA\n\nBO_ 1034 XXX_25: 5 XXX\n\nBO_ 1036 XXX_26: 8 XXX\n\nBO_ 1039 XXX_27: 8 XXX\n\nBO_ 1057 XXX_28: 5 EPS\n\nBO_ 1064 XXX_29: 7 XXX\n\nBO_ 1108 XXX_30: 8 XXX\n\nBO_ 1365 XXX_31: 5 XXX\n\nBO_ 1600 XXX_32: 5 XXX\n\nBO_ 1601 XXX_33: 8 XXX\n\nBO_TX_BU_ 228 : NEO,ADAS;\nBO_TX_BU_ 506 : NEO,ADAS;\nBO_TX_BU_ 780 : NEO,ADAS;\nBO_TX_BU_ 829 : NEO,ADAS;\n\nCM_ SG_ 419 GEAR "10 = reverse, 11 = transition";\nCM_ SG_ 490 LONG_ACCEL "wheel speed derivative, noisy and zero snapping";\nCM_ SG_ 780 CRUISE_SPEED "255 = no speed";\nCM_ SG_ 804 CRUISE_SPEED_PCM "255 = no speed";\nCM_ SG_ 829 BEEP "beeps are pleasant, chimes are for warnngs etc...";\nVAL_ 399 STEER_STATUS 5 "fault" 4 "no_torque_alert_2" 2 "no_torque_alert_1" 0 "normal" ;\nVAL_ 419 GEAR_SHIFTER 10 "S" 4 "D" 3 "N" 2 "R" 1 "P" ;\nVAL_ 422 CRUISE_BUTTONS 7 "tbd" 6 "tbd" 5 "tbd" 4 "accel_res" 3 "decel_set" 2 "cancel" 1 "main" 0 "none" ;\nVAL_ 422 LIGHTS_SETTING 3 "high_beam" 2 "low_beam" 1 "position" 0 "no_lights" ;\nVAL_ 422 CRUISE_SETTING 3 "distance_adj" 2 "tbd" 1 "lkas_button" 0 "none" ;\nVAL_ 506 CHIME 4 "double_chime" 3 "single_chime" 2 "continuous_chime" 1 "repeating_chime" 0 "no_chime" ;\nVAL_ 506 FCW 3 "fcw" 2 "fcw" 1 "fcw" 0 "no_fcw" ;\nVAL_ 780 HUD_LEAD 3 "no_car" 2 "solid_car" 1 "dashed_car" 0 "no_car" ;\nVAL_ 829 BEEP 3 "single_beep" 2 "triple_beep" 1 "repeated_beep" 0 "no_beep" ;\n\nCM_ "CHFFR_METRIC 342 STEER_ANGLE STEER_ANGLE 0.36 180; CHFFR_METRIC 380 ENGINE_RPM ENGINE_RPM 1 0; CHFFR_METRIC 804 ENGINE_TEMPERATURE ENGINE_TEMPERATURE 1 0";\n')},553:function(e,t,n){},59:function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var a=n(11),s=n(4),r=n.n(s),i=n(12),o=n(2),l=n(3),c=n(243),d=n.n(c),u=n(14),g=function(){function OpenDBC(e){Object(o.a)(this,OpenDBC),this.token=e,this.github=new d.a({token:e}),this.sourceRepo=this.github.getRepo("commaai","opendbc"),this.githubUsername=null}return Object(l.a)(OpenDBC,[{key:"hasAuth",value:function hasAuth(){return null!==this.token}},{key:"getGithubUsername",value:function(){var e=Object(i.a)(r.a.mark((function _callee(){var e;return r.a.wrap((function _callee$(t){for(;;)switch(t.prev=t.next){case 0:if(!this.githubUsername){t.next=2;break}return t.abrupt("return",this.githubUsername);case 2:return t.next=4,this.fetchGithubUsername();case 4:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",e);case 7:case"end":return t.stop()}}),_callee,this)})));return function getGithubUsername(){return e.apply(this,arguments)}}()},{key:"fetchGithubUsername",value:function(){var e=Object(i.a)(r.a.mark((function _callee2(){var e,t;return r.a.wrap((function _callee2$(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,this.github.getUser();case 3:if(!(e=n.sent)){n.next=10;break}return n.next=7,e.getProfile();case 7:if(!(t=n.sent)){n.next=10;break}return n.abrupt("return",t.data.login);case 10:n.next=15;break;case 12:return n.prev=12,n.t0=n.catch(0),n.abrupt("return",null);case 15:case"end":return n.stop()}}),_callee2,this,[[0,12]])})));return function fetchGithubUsername(){return e.apply(this,arguments)}}()},{key:"list",value:function(){var e=Object(i.a)(r.a.mark((function _callee3(e){var t,n,s,i,o,l;return r.a.wrap((function _callee3$(r){for(;;)switch(r.prev=r.next){case 0:return void 0===e?t=this.sourceRepo:(n=e.split("/"),s=Object(a.a)(n,2),i=s[0],o=s[1],t=this.github.getRepo(i,o)),r.prev=1,r.next=4,t.getContents("master","");case 4:return l=r.sent,r.abrupt("return",l.data.map((function(e){return e.path})));case 8:return r.prev=8,r.t0=r.catch(1),r.abrupt("return",[]);case 11:case"end":return r.stop()}}),_callee3,this,[[1,8]])})));return function list(t){return e.apply(this,arguments)}}()},{key:"getDbcContents",value:function(){var e=Object(i.a)(r.a.mark((function _callee4(e,t){var n,s,i,o,l,c,d,u;return r.a.wrap((function _callee4$(r){for(;;)switch(r.prev=r.next){case 0:return void 0===t?n=this.sourceRepo:(s=t.split("/"),i=Object(a.a)(s,2),o=i[0],l=i[1],n=this.github.getRepo(o,l)),r.next=3,n.getContents("master",e);case 3:return c=r.sent,d=c.data.download_url,r.next=7,fetch(d,{cache:"no-cache"});case 7:return u=r.sent,r.abrupt("return",u.text());case 9:case"end":return r.stop()}}),_callee4,this)})));return function getDbcContents(t,n){return e.apply(this,arguments)}}()},{key:"repoSourceIsOpenDbc",value:function repoSourceIsOpenDbc(e){return e.source&&e.source.full_name===u.g}},{key:"getUserOpenDbcFork",value:function(){var e=Object(i.a)(r.a.mark((function _callee5(){var e,t,n,a;return r.a.wrap((function _callee5$(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,this.getGithubUsername();case 2:if(e=s.sent){s.next=5;break}return s.abrupt("return",null);case 5:return t=this.github.getRepo(e,"opendbc"),s.next=8,t.getDetails();case 8:if(n=s.sent,a=n.data,!this.repoSourceIsOpenDbc(a)){s.next=12;break}return s.abrupt("return",a.full_name);case 12:return s.abrupt("return",null);case 13:case"end":return s.stop()}}),_callee5,this)})));return function getUserOpenDbcFork(){return e.apply(this,arguments)}}()},{key:"fork",value:function(){var e=Object(i.a)(r.a.mark((function _callee6(){return r.a.wrap((function _callee6$(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sourceRepo.fork();case 2:if(202!==e.sent.status){e.next=5;break}return e.abrupt("return",!0);case 5:return e.abrupt("return",!1);case 6:case"end":return e.stop()}}),_callee6,this)})));return function fork(){return e.apply(this,arguments)}}()},{key:"commitFile",value:function(){var e=Object(i.a)(r.a.mark((function _callee7(e,t,n,s){var i,o,l,c,d,u,g,m,h,p,b,f,S,v,E,_,O;return r.a.wrap((function _callee7$(r){for(;;)switch(r.prev=r.next){case 0:return i=e.split("/"),o=Object(a.a)(i,2),l=o[0],c=o[1],d=this.github.getRepo(l,c),r.next=4,d.getRef("heads/master");case 4:return u=r.sent,g=u.data,r.next=8,d.getCommit(g.object.sha);case 8:return m=r.sent,h=m.data,r.next=12,d.getTree(h.tree.sha);case 12:return p=r.sent,b=p.data,f=[{mode:"100644",path:t,type:"blob",content:n}],r.next=17,d.createTree(f,b.sha);case 17:return S=r.sent,v=S.data,r.next=21,d.commit(h.sha,v.sha,s||"OpenDBC updates");case 21:return E=r.sent,_=E.data,r.next=25,d.updateHead("heads/master",_.sha,!1);case 25:return O=r.sent,r.abrupt("return",200===O.status);case 27:case"end":return r.stop()}}),_callee7,this)})));return function commitFile(t,n,a,s){return e.apply(this,arguments)}}()}]),OpenDBC}()},60:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(2),s=n(3),r=function(){function Frame(e){var t=e.name,n=e.id,s=void 0===n?0:n,r=e.size,i=void 0===r?0:r,o=e.transmitters,l=void 0===o?[]:o,c=e.extended,d=void 0===c?0:c,u=e.comment,g=void 0===u?null:u,m=e.signals,h=void 0===m?{}:m;Object(a.a)(this,Frame),Object.assign(this,{name:t,id:s,size:i,transmitters:l,extended:d,comment:g,signals:h})}return Object(s.a)(Frame,[{key:"nextNewTransmitterName",value:function nextNewTransmitterName(){var e,t=1;do{e="NEW_TRANSMITTER_".concat(t),t++}while(-1!==this.transmitters.indexOf(e));return e}},{key:"addTransmitter",value:function addTransmitter(){var e=this.nextNewTransmitterName();return this.transmitters.push(e),e}},{key:"header",value:function header(){return"BO_ ".concat(this.id," ").concat(this.name,": ").concat(this.size," ")+"".concat(this.transmitters[0]||"XXX")}},{key:"text",value:function text(){var e=Object.values(this.signals).map((function(e){return" ".concat(e.text())})).join("\n");return e.length>0?"".concat(this.header(),"\n").concat(e):this.header()}},{key:"copy",value:function copy(){var copy=Object.assign(Object.create(this),this);return copy}}]),Frame}()},62:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return l}));var a=n(32),s=n.n(a),r=n(92),i=["https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/0/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=8pT88IJhcarT3%2Bv0uaT3aoiMlOsPTru%2Bd%2B1mgCAUNzY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/1/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=RUiRh7VvDbhmGcam619Coz4FC0I%2B1M%2BgHzudTecU8N8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/2/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=vCx3vklGv09VY8Ox9Q8iinB7ZsrpDbsK4BMTkBt4biI%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/3/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=QtgjbhrpyoKHQC%2BIK/Ms0y%2BSh2EtHCAzBTV0BkPBbZ8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/4/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=xL6utQbOCRvdIV21Nq%2BsaxFzqDT4n212HwOSvdBC%2B%2Bg%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/5/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=9uxDaYILbAJRy2fAKYm9flHi237a2qTY8YlNfizTFSs%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/6/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=00Kno8VTcxQdazYL1lK0aVTt7zvnmWDwzbVJJQtXOfc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/7/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=eyTM64llEf6NrhoowAdqF76J7liL4ejq85HfKT7IoRU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/8/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=ashtAt8qucsBP8pBH24RYT4OrzHvBXA3SQPzTslWg10%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/9/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=C%2BvBxxhgscqUQr7dKF1t9wfhpy/16cl4lWsRfirblsM%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/10/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=4fcXFnGSe8TGQYP89H9Z4nEou2uANO3FPekTxUSP89Y%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/11/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=olfTiSNk49Y9tog4XfXHMSmDODNKQedaelfa9zhxyUI%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/12/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=Cea5FxaNoMzZUoPKfJKHSdEvZKgu130KbEYJ65HSHn4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/13/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=W/ycLCiCzfItDQeMDhkwAEl9FQ89UGDVipEIlAyL7fA%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/14/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=aXORJqBiOQda7tZPzwlD%2B4UJHhcWtKj5uoPqsmlTovI%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/15/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=C/OgqnPVkFhY11Ha5TiUkqr3bQyie5ZhIzWi73fxwog%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/16/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=gdzCLOnhMeNYJTE%2BXmuSlwYGVFIuxbsqHvygEKG0H8Q%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/17/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=6JZg3qh2sYdBQxRjA9GyjPv8eRgSsOakEjg0z9EDFZ0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/18/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=SYX7%2BN9npUSEdw2eVHngMAxXm5N5nwVos%2B32RpI675k%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/19/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=cOKcrLoyEUhfWOjIDr/edtvEchBsnEg3ma%2ByCOzf8GY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/20/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=yNMFoLourSvuG0Buor9fuPryheCkknxqvA0CoGVRfQ0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/21/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=f1AfgqSNOeOkthYxmV/bMnG6WaEnRBtrYMu6EaG133k%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/22/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=7PMH8rRci6jYaRHvnvqK24EO/bR06M72OtA0fpM7yiE%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/23/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=0UzWpng3TCr3DQ/dWi5vYLgsLL/yOw%2BQVWdtu3%2BnxH8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/24/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=vlFw7Che8rISI5gyKZoSif6nkN9vThi93cJpyPAJge8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/25/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=uVGejY1C9So%2B4Fc49Ihi5Fj5Tdyi4LofKYQE%2BYPTS5o%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/26/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=Uau%2BAbXw6JQglY/EUXsVj1hAx%2Bx7tS/dxpSij7DyEvQ%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/27/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=pzmqrxkVsy5XikPStD/5OPNrYWadB9qivHRU5nB1pCM%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/28/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=3dajisn7zt3MxhFKNxZgZn1PtUdege4Qh8d7AlCv6V4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/29/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=1NicoYGt%2BUFJbGYhGdTPnFCzYnIV5OHypuD3qzW53Wc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/30/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=1ZGt0PlbGaVeT/82JnG/qsuur04SGNlBbWAOcPvHvGU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/31/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=nDe5iODqha7NAugL0qe%2BnT7HKIqQNDS5vBcaxTHqwHY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/32/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=cBu8MgQvz9dvg7iydERnupmAyuYSas3wY3alT2wmQtQ%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/33/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=RMqrZgILMOZ/EOBwDw/SVTpjmQTFQz91RUQKCdzJYcE%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/34/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=srl6LGcWdQSlMMnuv%2B7aTFTMY4KpR9F%2BXo3XtMIeFSs%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/35/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=x109982KLJzI5CxYp0Txbgc6KWAk0FrP1TKasLbs4xY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/36/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=nEclbIDfZ6kPHJoOol/jXLd9dd5Dak5t4aDYdAc8NT0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/37/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=N4417uFhPrKwfkhPplH/PZvE7nHlPHyOUHUcXtV8ga8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/38/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=V35yVoPP3key5d8XJUk1Hs29RUD63qGDrqtsMTJJvq8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/39/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=qIQOoVL4qOWxXLPhUN/wlNnE0ubo/bcY8kSAeBUaYAY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/40/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=HfcEb0EtuMmzw579abyE8MdE%2BsTfszhXEB%2BRxUU3JH0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/41/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=CcY6L8NEIvMmrtxT46yAkTEV4bpj1022r/oXhaLNzZk%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/42/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=3xqT%2BO8YrFDv6C7U41ToVa5doDhuYKCzK5MxBcXt%2BWc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/43/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=FlIiq6qej5DOD5JnMPWKIbiX2/j8ysbIhBoR%2BtLspZg%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/44/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=2526%2Br0Ish0e9rkOeL3ub0/EfJhng%2BRYIev2PepghHk%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/45/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=vBrFpsNhNuzWhe8uncDkvObJUmeKMC1hQLySOUaex0I%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/46/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=zG6%2BxU3XWzipNxov0fkxEsUH4lyihThJpFjq4XlDnx4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/47/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=8Sw1doUy3u7V/mSkA1bFms54oBcKD8dpFm79vbxnhlY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/48/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=yfnYUwdcrK976YNJEg%2BMJlZbp99ewQjJgsR%2Bl8opCQI%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/49/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=hqEJFHSAekMOVYVlN5sCEgunR0e7M57eCrqB2IMtmKw%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/50/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=pL5GMwiT%2BD72Zk9EuMXwwFfWVF9jMWbTEU0HyCl6xNc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/51/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=gT08LFSoWUTdOGB2d%2BZtDWZQEvlsPkkNKra2T0WjLPU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/52/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=LtMWWoyfUPcFbf42%2BHR/n6iEnr/jocJSEt6LFdfqCKc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/53/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=4hBGTbNueUnHg951XoqyKAx2ZqxvlstfaY2cw9wTyUc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/54/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=p8wj4bI7u/uZOA58Te8U6T0%2BtDrYqeUkhInQuA5Rm94%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/55/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=1FLm5rAamUv8nEaaHjQ2s0SpLWbH5ZhCi8nOw5mfg9w%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/56/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=gcwoay0grLf%2BGAqrBeleuQxO77Hw/1N0pdofnnZB/64%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/57/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=GWFjquKtWJDtSi5op4oh4kV1VWekHkLu3VjO7j2ly/0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/58/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=hLIGYFB6u2l/eAzHeWL7EtM3G7LkzY2sUIJWBweRf8Y%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/59/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=ujjLQ5mblJBh2X%2BHn%2B%2BAbXBUkvU9l/6FKgkFIOqDUWw%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/60/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=9kSUr7Xn1tEanZ/JTjyJ2GZ9GdLKOk7Q0gj8rL6nhdU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/61/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=4lppdcyHqbjjcUJjHigd8id8n4KCwZZ/F8QJqgYPfcw%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/62/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=GhcxMBVVfDxeb0DnH%2BW745r1AK7/6mLIGrV33HTeUbQ%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/63/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=IwL9LtlEIW8kye3wBMSs1tXeJ2/QX3QiTv4NeO8OZcU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/64/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=EQDreY7wGnaCbpUbbVb%2BcIfBvp2oRaAVZjk00skP9vQ%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/65/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=PibH5ZpIvB2LPM/zSntil/CokrDpjC%2B5kfkC0/%2BYjbg%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/66/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=f4iKTgwmMErhnVt8MNGT6JSGqMu4D0Bl5kfn1P5m%2Bgs%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/67/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=uiLbcoMzZ6obysSHcHOzv9DphFInXl94YaYSGfI1CrY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/68/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=NzPA4KuadgoeY7hKvTKo1LXl47AEv0izaxgcU2Y1%2BN4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/69/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=aw%2BuDvwR/HYn7kZ/hHQ0%2Bkae1uOB/mX0aT618O49DvU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/70/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=15b6prxm0DzVlIEn93DCoxmnzr3FAl0R9C9FrSP8R8Y%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/71/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=sKviFsAarezfOAKkqFpbzpVuPsXhsWZmICzES2ivp/A%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/72/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=DRBRZf3KQX%2Bat%2BwMZaMR%2BpGJm%2BREVVe5kcjes4eYBiE%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/73/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=grzo4xrtUJvuJ9VtSx7Eg9rA/ffKzyYBDUYzykjGO8Y%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/74/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=9rf%2B%2BTL/yVd2cVoZNbkj3YClBLv77tGr1HRNii0rO2s%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/75/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=eB2k1u9DlDWb0e0JS4D6UPDtEdPx4RHimI%2BVzy1MhEM%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/76/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=355VfjSkCdkAOjqRMobPbG3GB1JMhFyvq/7dtGheRkM%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/77/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=ZfBc/b%2BWQGryLAEpwC0BtjHijtPghKP2b1b0bzCxehQ%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/78/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=hj6Patnin49Cb7R%2BMeyZGBte6vxHH62HUelOh2bcBbA%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/79/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=Nuk1gxAUd3s4WU7%2B320emlocY2Tie0eMsiEl6xUpSBA%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/80/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=iPZnh/bigsA9iyPjSTjzl5OIdzGfFgmH9IdFwA3mTRw%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/81/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=mKgB9AmAfv8%2BrPJ%2BLTaVA/eD1IYKaICeMwCgSn65jXs%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/82/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=QgmLKKEvf272qOywdLl3BRSogk7oAIeknRThsI%2BbLqY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/83/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=zBdCaBDmhg8aeWHMh3fMdQaXLJkSjaaq6waHoex4yJI%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/84/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=ddv/Q22WEJB1R%2B6bJWZD%2BB3IHKoEzJaYQmayYkHdrlU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/85/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=w3brrO7geBl/0n/jM7W7BZruQMNfM0SorGqiQeyJaBE%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/86/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=3Y2zucu35QtodXd1PDpYfJDK9i%2BY2LVpdjvVa8oYQt4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/87/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=n9ZsshnO5VEAAKVDOmn0AzhizE0y4Lb2iiszjt7Yous%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/88/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=snYOFNllT3jmKfwpiMPWpEV7tfS9RQCVSurDY98bIao%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/89/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=Xtwom5ycw0J57jrzDQPz6OhpWjsFi0nEfqVrkeQrl6A%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/90/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=US8vj1Db7jig7RRlYSnDAZK3UYH4gm42Af6UrzpbryA%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/91/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=nm8WvWPnc8zHKnoqA6NkqX1N93kIx9sPVmcJ5xJiteY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/92/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=wsg/P6/%2BKebsVfM/6lqTiwCsCvPJFQsPUunBOg0MScU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/93/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=H8eCBNN%2Btof3R3lvR6v41BZEjWcDXD7so8j0l03%2B99Y%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/94/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=HjU5sSYU5aeI/t9nCz4NkFiRdA0Tqtnx%2BLxinItdTo4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/95/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=NnunGZoAH/D0cq8n0sQHRlhZ1v1o5JwKk/1UfVAu92c%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/96/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=wCaqsHbtyNHcylPtP9FXxMwhl5YJ97trLhJtePtcLkY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/97/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=j1I%2BZ0CTlxrM956TgrPYrCFJx3D09qrNEGq8BNbqVJ0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/98/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=Gk9jF7lxFRq9nj3UTE0/YlDQBWYdL3ySUdl8gbj1UgE%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/99/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=DiZFcnCI1f47rHaVM9mY9YzZsZA8ToOBHuHgBHtqj9E%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/100/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=e0bEXWFLAeUeRYpFZ8LmBUJM7YKb5u5AyKOlMo7Klf8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/101/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=rpqSuP1Tu0JuR1ELug3T59We2o2wfwa2Xp2WIccz%2Bb8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/102/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=K3l/Hbbjaii3OK/A4nBtgjynG2A69gHnqnjHAwl01CY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/103/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=VtDMGUrEJKdn8he9B1WYnsuM8Zj4z6Nia7iu3oQNL5I%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/104/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=SxNgqjOUa3mx5aX3RIJQVApmd3L4JUP2megVGJ1XKjA%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/105/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=M/XvJE7X/dFSv6Iem%2BhkjIyJVFa22R9N79Xn8UnaCAI%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/106/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=cfreGuFOl0/TWe/fkZ5FEewkpRZXrVU8y94Fa582nb0%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/107/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=GWnZksWyn33Umz1l/c0ZjwkE9NYxdMqmiDRbBPVdlMc%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/108/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=AeUDO3Y/uhyGFvBO8tFpjQlJNoVzTXrxBL2v/eDIqvg%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/109/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=SG2Sy6ggdaW55GZbJwII2RS5REnrCXuw5znrhT%2BdkMQ%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/110/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=oX/xwJpbDDy4jOg%2B4/XIR/ezcN6u9r/6jIsF33OOUw8%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/111/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=2Wfq6bueVjYMfMQta3wjMKtJ3g4B1OF3GmQdzWK8S0M%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/112/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=psxUuVNKxDeu3g5xv3%2BuhdP7rrkP2cOcZ7FJNxRKCh4%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/113/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=1IySoCLFLTECiZHbcqQis4AfGrJRId3hL0Z3uz8VFiE%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/114/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=gwhHD0US%2BbJSdPWg8GWXMW96i3fNfucj2mzx21dTLAM%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/115/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=7IH32d3YfNF01b42I3yTKMtxPO2o9bgZm4Uj0iqYeJM%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/116/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=33QBRPx8hX667YX17JgAfyDz97do8cROISHR/jBw1YU%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/117/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=BhgFg6c74rMFYuxKYZfmgZH6YZGgPb9aEo7IHw5dXhY%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/118/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=TCxgujxDOtvGWsKpheHV0HH1MnbE3x6gSDsQs2Y5S1U%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/119/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=YO0I3SV5PBNpq5zn%2BxOvkfdz8YwHVcPMIovL1h%2BeS/o%3D","https://commadata2.blob.core.windows.net/preserve/3533c53bb29502d1/2019-12-10--01-13-27/120/rlog.bz2?se=2025-01-10T18%3A54%3A24Z&sp=r&sv=2018-03-28&sr=b&rscd=attachment%3B%20filename%3Drlog.bz2&sig=aluzhD7EJgmN1mFZStJACXSLsfJL4vxNBr0RKLxPDWY%3D"],o={max:i.length,name:"2019-12-10--01-13-27",dongleId:"3533c53bb29502d1",dbc:r.a,isDemo:!0,dbcFilename:"toyota_nodsu_pt_generated.dbc"},l={fullname:"3533c53bb29502d1|2019-12-10--01-13-27",proclog:o.max,start_time:s()(o.name,"YYYY-MM-DD--H-m-s"),url:"https://chffrprivate.blob.core.windows.net/chffrprivate3-permanent/v2/3533c53bb29502d1/02505e68c591e4160b38210fa5f8d44a_2019-12-10--01-13-27"}},64:function(e,t,n){"use strict";if("undefined"===typeof a)var a=self;var s=function _indexOf(e,t){for(var n=0;n<e.length;n++)if(t===e[n])return n;return-1},r=function _getAjaxObject(){return"undefined"!==typeof XDomainRequest?new XDomainRequest:new XMLHttpRequest};function LogStream(e){var t,n=e.trace?(Math.random()+Math.PI).toString(36).substring(2,10):null,i=e.page_info,o=e.token,l=e.print,c=e.no_format,d="undefined"===typeof XDomainRequest?e.ssl:"https:"===a.location.protocol;t=(d?"https://":"http://")+(t=a.LEENDPOINT?a.LEENDPOINT:c?"webhook.logentries.com/noformat":"js.logentries.com/v1")+"/logs/"+o;var u=[],g=!1,m=!1,h=function _apiCall(e,n){g=!0;var a=r();a.constructor===XMLHttpRequest?a.onreadystatechange=function(){4===a.readyState&&(a.status>=400?(console.error("Couldn't submit events."),410===a.status&&console.warn("This version of le_js is no longer supported!")):(301===a.status&&console.warn("This version of le_js is deprecated! Consider upgrading."),u.length>0?_apiCall(e,u.shift()):g=!1))}:a.onload=function(){u.length>0?_apiCall(e,u.shift()):g=!1},a.open("POST",t,!0),a.constructor===XMLHttpRequest&&(a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-type","application/json")),a.overrideMimeType&&a.overrideMimeType("text"),a.send(n)},p=function _getEvent(){var e=Array.prototype.slice.call(arguments);if(0===e.length)throw new Error("No arguments!");return 1===e.length?e[0]:e},b=function _agentInfo(){var e=a.navigator||{doNotTrack:void 0},t=a.screen||{};return{url:(a.location||{}).pathname,referrer:document.referrer,screen:{width:t.width,height:t.height},window:{width:a.innerWidth,height:a.innerHeight},browser:{name:e.appName,version:e.appVersion,cookie_enabled:e.cookieEnabled,do_not_track:e.doNotTrack},platform:e.platform}},f=function _rawLog(e){var t=p.apply(this,arguments),a={event:t};return"never"!==i&&(m&&"per-entry"!==i||(m=!0,"undefined"===typeof t.screen&&"undefined"===typeof t.browser&&_rawLog(b()).level("PAGE").send())),n&&(a.trace=n),{level:function level(e){if(l&&"undefined"!==typeof console&&"PAGE"!==e){var t=null;"undefined"!==typeof XDomainRequest&&(t=a.trace+" "+a.event);try{console[e.toLowerCase()].call(console,t||a)}catch(n){console.log(t||a)}}return a.level=e,{send:function send(){var e=[],t=JSON.stringify(a,(function(t,n){if("undefined"===typeof n)return"undefined";if("object"===typeof n&&null!==n){if(-1!==s(e,n))return"<?>";e.push(n)}return n}));g?u.push(t):h(o,t)}}}}};if(e.catchall){var S=a.onerror;a.onerror=function newHandler(e,t,n){return f({error:e,line:n,location:t}).level("ERROR").send(),!!S&&S(e,t,n)}}this.log=f}function Logger(e){var t,n={ssl:!0,catchall:!1,trace:!0,page_info:"never",print:!1,endpoint:null,token:null};if("object"!==typeof e)throw new Error("Invalid parameters for createLogStream()");for(var a in e)n[a]=e[a];if(null===n.token)throw new Error("Token not present.");t=new LogStream(n);var s=function _log(e){if(t)return t.log.apply(this,arguments);throw new Error("You must call LE.init(...) first.")};return{log:function log(){s.apply(this,arguments).level("LOG").send()},warn:function warn(){s.apply(this,arguments).level("WARN").send()},error:function error(){s.apply(this,arguments).level("ERROR").send()},info:function info(){s.apply(this,arguments).level("INFO").send()}}}var i={},o=function _createLogStream(e){if("string"!==typeof e.name)throw new Error("Name not present.");if(i.hasOwnProperty(e.name))throw new Error("A logger with that name already exists!");return i[e.name]=new Logger(e),!0};t.a={init:function _deprecatedInit(e){var t={name:"default"};if("object"===typeof e)for(var n in e)t[n]=e[n];else{if("string"!==typeof e)throw new Error("Invalid parameters for init()");t.token=e}return o(t)},createLogStream:o,to:function _getLogger(e){if(!i.hasOwnProperty(e))throw new Error("Invalid name for logStream");return i[e]},destroy:function _destroyLogStream(e){"undefined"===typeof e&&(e="default"),delete i[e]},log:function log(){for(var e in i)i[e].log.apply(this,arguments)},warn:function warn(){for(var e in i)i[e].warn.apply(this,arguments)},error:function error(){for(var e in i)i[e].error.apply(this,arguments)},info:function info(){for(var e in i)i[e].info.apply(this,arguments)}}},92:function(e,t,n){"use strict";var a=new(n(24).a)('\nCM_ "AUTOGENERATED FILE, DO NOT EDIT"\n\n\nCM_ "Imported file _comma.dbc starts here"\nBO_ 359 STEERING_IPAS_COMMA: 8 IPAS\n SG_ STATE : 7|4@0+ (1,0) [0|15] "" XXX\n SG_ ANGLE : 3|12@0- (1.5,0) [-510|510] "deg" XXX\n SG_ SET_ME_X10 : 23|8@0+ (1,0) [0|255] "" XXX\n SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|255] "" XXX\n SG_ DIRECTION_CMD : 38|2@0+ (1,0) [0|3] "" XXX\n SG_ SET_ME_X40 : 47|8@0+ (1,0) [0|255] "" XXX\n SG_ SET_ME_X00 : 55|8@0+ (1,0) [0|255] "" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nCM BO_ STEERING_IPAS_COMMA "Copy of msg 614 so we can do angle control while the Park Assist ECU is connected (Panda spoofs 614 with 359 on connector J70). Note that addresses 0x266 and 0x167 are checksum-invariant";\n\n BO_ 512 GAS_COMMAND: 6 EON\n SG_ GAS_COMMAND : 7|16@0+ (0.159375,-75.555) [0|1] "" INTERCEPTOR\n SG_ GAS_COMMAND2 : 23|16@0+ (0.159375,-151.111) [0|1] "" INTERCEPTOR\n SG_ ENABLE : 39|1@0+ (1,0) [0|1] "" INTERCEPTOR\n SG_ COUNTER_PEDAL : 35|4@0+ (1,0) [0|15] "" INTERCEPTOR\n SG_ CHECKSUM_PEDAL : 47|8@0+ (1,0) [0|255] "" INTERCEPTOR\n\n BO_ 513 GAS_SENSOR: 6 INTERCEPTOR\n SG_ INTERCEPTOR_GAS : 7|16@0+ (0.159375,-75.555) [0|1] "" EON\n SG_ INTERCEPTOR_GAS2 : 23|16@0+ (0.159375,-151.111) [0|1] "" EON\n SG_ STATE : 39|4@0+ (1,0) [0|15] "" EON\n SG_ COUNTER_PEDAL : 35|4@0+ (1,0) [0|15] "" EON\n SG_ CHECKSUM_PEDAL : 47|8@0+ (1,0) [0|255] "" EON\n\n VAL_ 513 STATE 5 "FAULT_TIMEOUT" 4 "FAULT_STARTUP" 3 "FAULT_SCE" 2 "FAULT_SEND" 1 "FAULT_BAD_CHECKSUM" 0 "NO_FAULT" ;\n\n\nCM_ "Imported file _toyota_2017.dbc starts here"\nVERSION ""\n\n\nNS_ :\n NS_DESC_\n CM_\n BA_DEF_\n BA_\n VAL_\n CAT_DEF_\n CAT_\n FILTER\n BA_DEF_DEF_\n EV_DATA_\n ENVVAR_DATA_\n SGTYPE_\n SGTYPE_VAL_\n BA_DEF_SGTYPE_\n BA_SGTYPE_\n SIG_TYPE_REF_\n VAL_TABLE_\n SIG_GROUP_\n SIG_VALTYPE_\n SIGTYPE_VALTYPE_\n BO_TX_BU_\n BA_DEF_REL_\n BA_REL_\n BA_DEF_DEF_REL_\n BU_SG_REL_\n BU_EV_REL_\n BU_BO_REL_\n SG_MUL_VAL_\n\nBS_:\n\nBU_: XXX DSU HCU EPS IPAS CGW\n\nBO_ 36 KINEMATICS: 8 XXX\n SG_ ACCEL_Y : 33|10@0+ (0.03589,-18.375) [0|65535] "m/s^2" XXX\n SG_ YAW_RATE : 1|10@0+ (0.244,-125) [0|65535] "deg/sec" XXX\n SG_ STEERING_TORQUE : 17|10@0+ (1,-512) [0|65535] "" XXX\n\nBO_ 37 STEER_ANGLE_SENSOR: 8 XXX\n SG_ STEER_ANGLE : 3|12@0- (1.5,0) [-500|500] "deg" XXX\n SG_ STEER_FRACTION : 39|4@0- (0.1,0) [-0.7|0.7] "deg" XXX\n SG_ STEER_RATE : 35|12@0- (1,0) [-2000|2000] "deg/s" XXX\n\nBO_ 166 BRAKE: 8 XXX\n SG_ BRAKE_AMOUNT : 7|8@0+ (1,0) [0|255] "" XXX\n SG_ BRAKE_PEDAL : 23|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 170 WHEEL_SPEEDS: 8 XXX\n SG_ WHEEL_SPEED_FR : 7|16@0+ (0.01,-67.67) [0|250] "kph" XXX\n SG_ WHEEL_SPEED_FL : 23|16@0+ (0.01,-67.67) [0|250] "kph" XXX\n SG_ WHEEL_SPEED_RR : 39|16@0+ (0.01,-67.67) [0|250] "kph" XXX\n SG_ WHEEL_SPEED_RL : 55|16@0+ (0.01,-67.67) [0|250] "kph" XXX\n\nBO_ 180 SPEED: 8 XXX\n SG_ ENCODER : 39|8@0+ (1,0) [0|255] "" XXX\n SG_ SPEED : 47|16@0+ (0.01,0) [0|250] "kph" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 353 DSU_SPEED: 8 XXX\n SG_ FORWARD_SPEED : 15|16@0- (0.00390625,-30) [0|255] "kph" XXX\n\nBO_ 466 PCM_CRUISE: 8 XXX\n SG_ GAS_RELEASED : 4|1@0+ (1,0) [0|1] "" XXX\n SG_ CRUISE_ACTIVE : 5|1@0+ (1,0) [0|1] "" XXX\n SG_ STANDSTILL_ON : 12|1@0+ (1,0) [0|1] "" XXX\n SG_ ACCEL_NET : 23|16@0- (0.001,0) [-20|20] "m/s2" XXX\n SG_ CRUISE_STATE : 55|4@0+ (1,0) [0|15] "" XXX\n SG_ CANCEL_REQ : 49|1@1+ (1,0) [0|1] "" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 467 PCM_CRUISE_2: 8 XXX\n SG_ MAIN_ON : 15|1@0+ (1,0) [0|1] "" XXX\n SG_ LOW_SPEED_LOCKOUT : 14|2@0+ (1,0) [0|3] "kph" XXX\n SG_ SET_SPEED : 23|8@0+ (1,0) [0|255] "kph" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 552 ACCELEROMETER: 8 XXX\n SG_ ACCEL_Z : 22|15@0- (1,0) [0|32767] "" XXX\n SG_ ACCEL_X : 6|15@0- (0.001,0) [-20|20] "m/s2" XXX\n\nBO_ 560 BRAKE_MODULE2: 7 XXX\n SG_ BRAKE_PRESSED : 26|1@0+ (1,0) [0|1] "" XXX\n\nBO_ 614 STEERING_IPAS: 8 IPAS\n SG_ STATE : 7|4@0+ (1,0) [0|15] "" XXX\n SG_ ANGLE : 3|12@0- (1.5,0) [-510|510] "deg" XXX\n SG_ SET_ME_X10 : 23|8@0+ (1,0) [0|255] "" XXX\n SG_ SET_ME_X00 : 31|8@0+ (1,0) [0|255] "" XXX\n SG_ DIRECTION_CMD : 38|2@0+ (1,0) [0|3] "" XXX\n SG_ SET_ME_X40 : 47|8@0+ (1,0) [0|255] "" XXX\n SG_ SET_ME_X00_1 : 55|8@0+ (1,0) [0|255] "" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 643 PRE_COLLISION: 7 DSU\n SG_ COUNTER : 7|8@0+ (1,0) [0|255] "" XXX\n SG_ SET_ME_X00 : 15|8@0+ (1,0) [0|255] "" XXX\n SG_ FORCE : 23|16@0- (2,0) [0|255] "N" XXX\n SG_ SET_ME_X002 : 33|8@0+ (1,0) [0|3] "" XXX\n SG_ BRAKE_STATUS : 39|3@0+ (1,0) [0|255] "" XXX\n SG_ STATE : 36|3@0+ (1,0) [0|255] "" XXX\n SG_ SET_ME_X003 : 40|1@0+ (1,0) [0|1] "" XXX\n SG_ PRECOLLISION_ACTIVE : 41|1@0+ (1,0) [0|255] "" XXX\n SG_ CHECKSUM : 55|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 740 STEERING_LKA: 5 XXX\n SG_ LKA_STATE : 31|8@0+ (1,0) [0|255] "" XXX\n SG_ STEER_REQUEST : 0|1@0+ (1,0) [0|1] "" XXX\n SG_ COUNTER : 6|6@0+ (1,0) [0|63] "" XXX\n SG_ SET_ME_1 : 7|1@0+ (1,0) [0|1] "" XXX\n SG_ STEER_TORQUE_CMD : 15|16@0- (1,0) [0|65535] "" XXX\n SG_ CHECKSUM : 39|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 742 LEAD_INFO: 8 DSU\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" HCU\n SG_ LEAD_REL_SPEED : 23|12@0- (0.025,0) [-100|100] "m/s" HCU\n SG_ LEAD_LONG_DIST : 7|13@0+ (0.05,0) [0|300] "m" HCU\n\nBO_ 835 ACC_CONTROL: 8 DSU\n SG_ ACCEL_CMD : 7|16@0- (0.001,0) [-20|20] "m/s2" HCU\n SG_ SET_ME_X01 : 23|2@0+ (1,0) [0|3] "" HCU\n SG_ DISTANCE : 20|1@0+ (1,0) [0|1] "" XXX\n SG_ MINI_CAR : 21|1@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X3 : 19|4@0+ (1,0) [0|15] "" XXX\n SG_ SET_ME_1 : 30|1@0+ (1,0) [0|1] "" HCU\n SG_ RELEASE_STANDSTILL : 31|1@0+ (1,0) [0|1] "" HCU\n SG_ CANCEL_REQ : 24|1@0+ (1,0) [0|1] "" HCU\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 836 PRE_COLLISION_2: 8 DSU\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|0] "" XXX\n\nBO_ 869 DSU_CRUISE : 7 DSU\n SG_ RES_BTN : 3|1@0+ (1,0) [0|0] "" XXX\n SG_ SET_BTN : 2|1@0+ (1,0) [0|0] "" XXX\n SG_ CANCEL_BTN : 1|1@0+ (1,0) [0|0] "" XXX\n SG_ MAIN_ON : 0|1@0+ (1,0) [0|0] "" XXX\n SG_ SET_SPEED : 15|8@0+ (1,0) [0|0] "km/h" XXX\n SG_ CRUISE_REQUEST : 31|8@0+ (100,-12800) [0|0] "N" XXX\n SG_ LEAD_DISTANCE : 39|8@0+ (1,0) [0|0] "m" XXX\n\nBO_ 921 PCM_CRUISE_SM: 8 XXX\n SG_ MAIN_ON : 4|1@0+ (1,0) [0|1] "" XXX\n SG_ CRUISE_CONTROL_STATE : 11|4@0+ (1,0) [0|15] "" XXX\n SG_ DISTANCE_LINES : 14|2@0+ (1,0) [0|3] "" XXX\n SG_ UI_SET_SPEED : 31|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 951 ESP_CONTROL: 8 ESP\n SG_ TC_DISABLED : 13|1@0+ (1,0) [0|1] "" XXX\n SG_ VSC_DISABLED : 12|2@0+ (1,0) [0|1] "" XXX\n SG_ BRAKE_LIGHTS_ACC : 18|1@0+ (1,0) [0|1] "" XXX\n\nBO_ 1041 ACC_HUD: 8 DSU\n SG_ FCW : 4|1@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X20 : 15|8@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X10 : 39|8@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X80 : 55|8@0+ (1,0) [0|1] "" XXX\n\nBO_ 1042 LKAS_HUD: 8 XXX\n SG_ BARRIERS : 1|2@0+ (1,0) [0|3] "" XXX\n SG_ RIGHT_LINE : 3|2@0+ (1,0) [0|3] "" XXX\n SG_ LEFT_LINE : 5|2@0+ (1,0) [0|3] "" XXX\n SG_ SET_ME_X01 : 7|2@0+ (1,0) [0|3] "" XXX\n SG_ SET_ME_X01_2 : 11|2@0+ (1,0) [0|3] "" XXX\n SG_ LDA_ALERT : 9|2@0+ (1,0) [0|3] "" XXX\n SG_ TWO_BEEPS : 12|1@0+ (1,0) [0|1] "" XXX\n SG_ ADJUSTING_CAMERA : 13|1@0+ (1,0) [0|1] "" XXX\n SG_ LDA_MALFUNCTION : 15|1@0+ (1,0) [0|1] "" XXX\n SG_ REPEATED_BEEPS : 32|1@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X0C : 23|8@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X2C : 47|8@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X38 : 55|8@0+ (1,0) [0|1] "" XXX\n SG_ SET_ME_X02 : 63|8@0+ (1,0) [0|1] "" XXX\n\nBO_ 1043 TIME : 8 CGW\n SG_ YEAR : 7|8@0+ (1,0) [0|0] "year" XXX\n SG_ MONTH : 15|8@0+ (1,0) [0|0] "month" XXX\n SG_ DAY : 23|8@0+ (1,0) [0|0] "day" XXX\n SG_ HOUR : 31|8@0+ (1,0) [0|0] "hour" XXX\n SG_ MINUTE : 39|8@0+ (1,0) [0|0] "minute" XXX\n SG_ GMT_DIFF : 55|1@0+ (1,0) [0|0] "" XXX\n SG_ GMTDIFF_HOURS : 54|4@0+ (1,0) [0|0] "hours" XXX\n SG_ GMTDIFF_MINUTES : 50|6@0+ (1,0) [0|0] "minutes" XXX\n SG_ SUMMER : 60|1@0+ (1,0) [0|0] "" XXX\n\nBO_ 1408 VIN_PART_1: 8 CGW\n SG_ VIN_1 : 7|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_2 : 15|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_3 : 23|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_4 : 31|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_5 : 39|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_6 : 47|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_7 : 55|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_8 : 63|8@0+ (1,0) [0|0] "" XXX\n\nBO_ 1409 VIN_PART_2: 8 CGW\n SG_ VIN_9 : 7|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_10 : 15|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_11 : 23|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_12 : 31|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_13 : 39|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_14 : 47|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_15 : 55|8@0+ (1,0) [0|0] "" XXX\n SG_ VIN_16 : 63|8@0+ (1,0) [0|0] "" XXX\n\nBO_ 1410 VIN_PART_3: 8 CGW\n SG_ VIN_17 : 7|8@0+ (1,0) [0|0] "" XXX\n\nBO_ 1553 UI_SETTING: 8 XXX\n SG_ UNITS : 26|2@0+ (1,0) [0|3] "" XXX\n\nBO_ 1556 STEERING_LEVERS: 8 XXX\n SG_ TURN_SIGNALS : 29|2@0+ (1,0) [0|3] "" XXX\n\nBO_ 1568 SEATS_DOORS: 8 XXX\n SG_ SEATBELT_DRIVER_UNLATCHED : 62|1@0+ (1,0) [0|1] "" XXX\n SG_ DOOR_OPEN_FL : 45|1@0+ (1,0) [0|1] "" XXX\n SG_ DOOR_OPEN_RL : 42|1@0+ (1,0) [0|1] "" XXX\n SG_ DOOR_OPEN_RR : 43|1@0+ (1,0) [0|1] "" XXX\n SG_ DOOR_OPEN_FR : 44|1@0+ (1,0) [0|1] "" XXX\n\nBO_ 1570 LIGHT_STALK: 8 SCM\n SG_ AUTO_HIGH_BEAM : 37|1@0+ (1,0) [0|1] "" XXX\n\nBO_ 1161 RSA1: 8 FCM\n SG_ TSGN1 : 7|8@0+ (1,0) [0|0] "" XXX\n SG_ TSGNGRY1 : 12|3@0+ (1,0) [0|0] "" XXX\n SG_ TSGNHLT1 : 9|2@0+ (1,0) [0|0] "" XXX\n SG_ SPDVAL1 : 23|8@0+ (1,0) [0|0] "kph" XXX\n SG_ SPLSGN1 : 31|4@0+ (1,0) [0|0] "" XXX\n SG_ SPLSGN2 : 27|4@0+ (1,0) [0|0] "" XXX\n SG_ TSGN2 : 39|8@0+ (1,0) [0|0] "" XXX\n SG_ TSGNGRY2 : 44|3@0+ (1,0) [0|0] "" XXX\n SG_ TSGNHLT2 : 41|2@0+ (1,0) [0|0] "" XXX\n SG_ SPDVAL2 : 55|8@0+ (1,0) [0|0] "" XXX\n SG_ BZRRQ_P : 63|2@0+ (1,0) [0|0] "" XXX\n SG_ BZRRQ_A : 61|2@0+ (1,0) [0|0] "" XXX\n SG_ SYNCID1 : 59|4@0+ (1,0) [0|0] "" XXX\n\nBO_ 1162 RSA2: 8 FCM\n SG_ TSGN3 : 7|8@0+ (1,0) [0|0] "" XXX\n SG_ TSGNGRY3 : 12|3@0+ (1,0) [0|0] "" XXX\n SG_ TSGNHLT3 : 9|2@0+ (1,0) [0|0] "" XXX\n SG_ SPLSGN3 : 31|4@0+ (1,0) [0|0] "" XXX\n SG_ SPLSGN4 : 27|4@0+ (1,0) [0|0] "" XXX\n SG_ TSGN4 : 39|8@0+ (1,0) [0|0] "" XXX\n SG_ TSGNGRY4 : 44|3@0+ (1,0) [0|0] "" XXX\n SG_ TSGNHLT4 : 41|2@0+ (1,0) [0|0] "" XXX\n SG_ DPSGNREQ : 54|1@0+ (1,0) [0|0] "" XXX\n SG_ SGNNUMP : 53|3@0+ (1,0) [0|0] "" XXX\n SG_ SGNNUMA : 50|3@0+ (1,0) [0|0] "" XXX\n SG_ SPDUNT : 63|2@0+ (1,0) [0|0] "" XXX\n SG_ TSRWMSG : 61|2@0+ (1,0) [0|0] "" XXX\n SG_ SYNCID2 : 59|4@0+ (1,0) [0|0] "" XXX\n\nBO_ 1163 RSA3: 8 FCM\n SG_ TSREQPD : 7|1@0+ (1,0) [0|0] "" XXX\n SG_ TSRMSW : 6|1@0+ (1,0) [0|0] "" XXX\n SG_ OTSGNNTM : 5|2@0+ (1,0) [0|0] "" XXX\n SG_ NTLVLSPD : 3|2@0+ (1,0) [0|0] "" XXX\n SG_ OVSPNTM : 1|2@0+ (1,0) [0|0] "" XXX\n SG_ OVSPVALL : 11|4@0+ (1,-5) [0|0] "" XXX\n SG_ OVSPVALM : 19|4@0+ (1,-5) [0|0] "" XXX\n SG_ OVSPVALH : 27|4@0+ (1,-5) [0|0] "" XXX\n SG_ TSRSPU : 33|2@0+ (1,0) [0|0] "" XXX\n\nCM_ SG_ 36 ACCEL_Y "unit is tbd";\nCM_ SG_ 36 YAW_RATE "verify";\nCM_ SG_ 36 STEERING_TORQUE "does not seem the steer torque, tbd";\nCM_ SG_ 37 STEER_FRACTION "1/15th of the signal STEER_ANGLE, which is 1.5 deg; note that 0x8 is never set";\nCM_ SG_ 37 STEER_RATE "factor is tbd";\nCM_ SG_ 466 ACCEL_NET "net acceleration produced by the system, given ACCEL_CMD, road grade and other factors";\nCM_ SG_ 467 SET_SPEED "43 kph are shown as 28mph, so conversion isnt perfect";\nCM_ SG_ 467 LOW_SPEED_LOCKOUT "in low speed lockout, system would always disengage below 28mph";\nCM_ SG_ 560 BRAKE_PRESSED "another brake pressed?";\nCM_ SG_ 608 STEER_TORQUE_DRIVER "driver torque";\nCM_ SG_ 608 STEER_OVERRIDE "set when driver torque exceeds a certain value";\nCM_ SG_ 614 ANGLE "set to measured angle when ipas control isn\'t active";\nCM_ SG_ 643 COUNTER "only used on cars that use this msg for cruise control";\nCM_ SG_ 643 BRAKE_STATUS "only used on cars that use this msg for cruise control";\nCM_ SG_ 643 PRECOLLISION_ACTIVE "set 0.5s before any braking";\nCM_ SG_ 921 UI_SET_SPEED "set speed shown in UI with user set unit";\nCM_ SG_ 951 BRAKE_LIGHTS_ACC "brake lights when ACC commands decel";\nCM_ SG_ 1042 SET_ME_1 "unclear what this is, but it\'s always 1 in drive traces";\nCM_ SG_ 1042 REPEATED_BEEPS "recommended for fcw and other important alerts";\nCM_ SG_ 1161 SPDVAL1 "Numbers 0-199 is displayed, 200-254 displays circle without number and 255 is for no limit.";\nCM_ SG_ 1161 SYNCID1 "counter from 1 to f at 1 Hz";\nCM_ SG_ 1161 SPDVAL2 "conditional speed value 70"\nCM_ SG_ 1162 SGNNUMP "1 if SPDVAL1 is set, otherwise 0";\nCM_ SG_ 1162 SYNCID2 "counter from 1 to f at 1 Hz";\nCM_ SG_ 1163 TSREQPD "always 1";\nCM_ SG_ 1163 TSRMSW "always 1";\nCM_ SG_ 1163 OTSGNNTM "always 3";\nCM_ SG_ 1163 NTLVLSPD "always 3";\nCM_ SG_ 1163 OVSPNTM "always 3";\nCM_ SG_ 1163 OVSPVALL "-5 at start then 2 after 2 seconds";\nCM_ SG_ 1163 OVSPVALM "-5 at start then 5 after 2 seconds";\nCM_ SG_ 1163 OVSPVALH "-5 at start then 10 after 2 seconds";\nCM_ SG_ 1163 TSRSPU "always 1";\n\nVAL_ 466 CRUISE_STATE 8 "active" 7 "standstill" 1 "off";\nVAL_ 467 LOW_SPEED_LOCKOUT 2 "low speed locked" 1 "ok";\nVAL_ 614 STATE 3 "enabled" 1 "disabled";\nVAL_ 614 DIRECTION_CMD 3 "right" 2 "center" 1 "left";\nVAL_ 643 STATE 0 "normal" 1 "adaptive_cruise_control" 3 "emergency_braking";\nVAL_ 921 CRUISE_CONTROL_STATE 2 "disabled" 11 "hold" 10 "hold_waiting_user_cmd" 6 "enabled" 5 "faulted";\nVAL_ 1042 LDA_ALERT 3 "hold with continuous beep" 2 "LDA unavailable" 1 "hold" 0 "none";\nVAL_ 1042 BARRIERS 3 "both" 2 "right" 1 "left" 0 "none";\nVAL_ 1042 RIGHT_LINE 3 "orange" 2 "faded" 1 "solid" 0 "none";\nVAL_ 1042 LEFT_LINE 3 "orange" 2 "faded" 1 "solid" 0 "none";\nVAL_ 1553 UNITS 1 "km" 2 "miles";\nVAL_ 1556 TURN_SIGNALS 3 "none" 2 "right" 1 "left";\nVAL_ 1161 TSGN1 1 "speed sign" 0 "none";\nVAL_ 1161 TSGN2 1 "speed sign" 0 "none";\nVAL_ 1161 SPLSGN2 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";\nVAL_ 1162 TSGN3 0 "none" 1 "speed sign" 2 "0 unlimited" 7 "unlimited" 16 "highway" 17 "no highway" 18 "motorway" 19 "no motorway" 20 "in city" 21 "outside city" 22 "pedestrian area" 23 "no pedestrian area" 65 "no overtaking left" 66 "no overtaking right" 67 "overtaking allowed again" 129 "no entry";\nVAL_ 1162 SPLSGN3 15 "conditional blank" 4 "wet road" 5 "rain" 0 "none";\n\n\nCM_ "CHFFR_METRIC 37 STEER_ANGLE STEER_ANGLE 0.36 180";\n\nCM_ "toyota_nodsu_pt.dbc starts here"\n\n\n\nBO_ 401 STEERING_LTA: 8 XXX\n SG_ COUNTER : 7|8@0+ (1,0) [0|255] "" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n SG_ SETME_X3 : 29|2@0+ (1,0) [0|3] "" XXX\n SG_ PERCENTAGE : 39|8@0+ (1,0) [0|255] "" XXX\n SG_ SETME_X64 : 47|8@0+ (1,0) [0|255] "" XXX\n SG_ ANGLE : 55|8@0- (0.5,0) [0|255] "" XXX\n SG_ STEER_ANGLE_CMD : 15|16@0- (0.0573,0) [-540|540] "" XXX\n SG_ STEER_REQUEST : 25|1@0+ (1,0) [0|1] "" XXX\n SG_ BIT : 30|1@0+ (1,0) [0|1] "" XXX\n\nBO_ 550 BRAKE_MODULE: 8 XXX\n SG_ BRAKE_PRESSURE : 0|9@0+ (1,0) [0|511] "" XXX\n SG_ BRAKE_POSITION : 16|9@0+ (1,0) [0|511] "" XXX\n SG_ BRAKE_PRESSED : 37|1@0+ (1,0) [0|1] "" XXX\n\nBO_ 705 GAS_PEDAL: 8 XXX\n SG_ GAS_RELEASED : 3|1@0+ (1,0) [0|1] "" XXX\n SG_ GAS_PEDAL : 55|8@0+ (0.005,0) [0|1] "" XXX\n\nBO_ 608 STEER_TORQUE_SENSOR: 8 XXX\n SG_ STEER_TORQUE_EPS : 47|16@0- (0.73,0) [-20000|20000] "" XXX\n SG_ STEER_TORQUE_DRIVER : 15|16@0- (1,0) [-32768|32767] "" XXX\n SG_ STEER_OVERRIDE : 0|1@0+ (1,0) [0|1] "" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n SG_ STEER_ANGLE : 31|16@0- (0.0573,0) [-500|500] "" XXX\n\nBO_ 610 EPS_STATUS: 8 EPS\n SG_ IPAS_STATE : 3|4@0+ (1,0) [0|15] "" XXX\n SG_ LKA_STATE : 31|7@0+ (1,0) [0|127] "" XXX\n SG_ TYPE : 24|1@0+ (1,0) [0|1] "" XXX\n SG_ CHECKSUM : 63|8@0+ (1,0) [0|255] "" XXX\n\nBO_ 956 GEAR_PACKET: 8 XXX\n SG_ SPORT_ON : 2|1@0+ (1,0) [0|1] "" XXX\n SG_ GEAR : 13|6@0+ (1,0) [0|63] "" XXX\n SG_ ECON_ON : 40|1@0+ (1,0) [0|1] "" XXX\n\nCM_ SG_ 548 BRAKE_PRESSURE "seems prop to pedal force";\nCM_ SG_ 548 BRAKE_POSITION "seems proportional to pedal displacement, unclear the max value of 0x1c8";\nCM_ SG_ 610 TYPE "seems 1 on Corolla, 0 on all others";\nVAL_ 610 IPAS_STATE 5 "override" 3 "enabled" 1 "disabled";\nVAL_ 610 LKA_STATE 25 "temporary_fault" 9 "temporary_fault2" 5 "active" 1 "standby";\nVAL_ 956 GEAR 0 "D" 1 "S" 8 "N" 16 "R" 32 "P";\nVAL_ 956 SPORT_ON 0 "off" 1 "on";\nVAL_ 956 ECON_ON 0 "off" 1 "on";\n');t.a=a},94:function(e,t,n){"use strict";n.d(t,"b",(function(){return isLogAddress})),n.d(t,"a",(function(){return frameForAddress}));var a=n(10),s=n(60),r=n(41);function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(n,!0).forEach((function(t){Object(a.a)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(n).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var i={"CarState:WheelSpeeds":{FrontLeftWheel:shortSignal({index:0,factor:.001}),FrontRightWheel:shortSignal({index:1,factor:.001}),RearLeftWheel:shortSignal({index:2,factor:.001}),RearRightWheel:shortSignal({index:3,factor:.001})},"CarState:Ego":{VEgo:shortSignal({index:0,factor:.001}),AEgo:shortSignal({index:1,factor:.001}),VEgoRaw:shortSignal({index:2,factor:.001}),YawRate:shortSignal({index:3,factor:.001})},"CarState:Controls":{SteeringAngle:longSignal({index:0,factor:.001}),Brake:shortSignal({index:2,factor:.001}),Gas:shortSignal({index:3,factor:.001})},"CarState:Flags":{LeftBlinker:boolSignal({index:0}),RightBlinker:boolSignal({index:1}),GenericToggle:boolSignal({index:2}),DoorOpen:boolSignal({index:3}),SeatbeltUnlatched:boolSignal({index:4}),GasPressed:boolSignal({index:5}),BrakeLights:boolSignal({index:6}),SteeringPressed:boolSignal({index:7}),Standstill:boolSignal({index:8}),"CruiseState.Enabled":boolSignal({index:9}),"CruiseState.Available":boolSignal({index:10}),"CruiseState.Standstill":boolSignal({index:11}),GearShifter:{startBit:15,size:4,unsigned:!0},"CruiseState.Speed":charSignal({index:2})},"UbloxGnss:MeasurementReport":{RcvTow:longSignal({index:0}),GpsWeek:shortSignal({index:2}),LeapSeconds:{startBit:55,size:8},NumMeas:{startBit:63,size:8}},"Health:Data":{Voltage:shortSignal({index:0}),Current:charSignal({index:2}),Started:boolSignal({index:24}),ControlsAllowed:boolSignal({index:25}),GasInterceptorDetected:boolSignal({index:26}),StartedSignalDetected:boolSignal({index:27})},"Thermal:CPU":{Cpu0:shortSignal({index:0,unsigned:!0}),Cpu1:shortSignal({index:1,unsigned:!0}),Cpu2:shortSignal({index:2,unsigned:!0}),Cpu3:shortSignal({index:3,unsigned:!0})},"Thermal:Data":{Mem:shortSignal({index:0,unsigned:!0}),Gpu:shortSignal({index:1,unsigned:!0}),FanSpeed:shortSignal({index:2,unsigned:!0}),BatteryPercent:charSignal({index:6,unsigned:!0}),UsbOnline:boolSignal({index:56}),Started:boolSignal({index:57})},"Thermal:FreeSpace":{FreeSpace:longSignal({index:0,unsigned:!0,factor:1e-9})}},o=[];function longSignal(e){return _objectSpread({},e,{size:32,startBit:32*e.index+7})}function shortSignal(e){return _objectSpread({},e,{size:16,startBit:16*e.index+7})}function charSignal(e){return _objectSpread({},e,{size:8,startBit:8*e.index+7})}function boolSignal(e){return _objectSpread({},e,{size:1,startBit:e.index,unsigned:!0})}function nameForAddress(e){return e>=4096?o[e-4096]:null}function isLogAddress(e){return!!nameForAddress(e)}function frameForAddress(e){var t=nameForAddress(e);return new s.a({id:t,name:t,size:8,signals:i[t]})}Object.keys(i).forEach((function(e){Object.keys(i[e]).forEach((function(t){i[e][t]=function createSignalEntry(e){return new r.a({name:e.name,startBit:e.startBit,size:e.size,isLittleEndian:!1,isSigned:!e.unsigned,factor:e.factor||1,offset:e.offset||0,unit:e.unit||""})}(_objectSpread({name:t},i[e][t]))})),function addressForName(e){var t=o.indexOf(e);if(-1===t)return o.push(e),o.indexOf(e)+4096;return t+4096}(e)}))}},[[254,1,2]]]);
//# sourceMappingURL=main.f2e8c285.chunk.js.map