<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">var AddonConnector = new function(){

  var self = this;

  var isConnectionEstablished = false;

  var lastMessageId = 0;

  // messageId - callback data associations
  var messagesCallbacks = {};



  this.sendMessage = function( data, callback ){
    sendMessage( data, callback );
  };

  this.isConnected = function(){
    return isConnectionEstablished;
  };

  function sendMessage( data, callback ){
    var messageId = ++lastMessageId;
    var msg = {
      id: messageId,
      type: "EverHelperExtMessage",
      data: data
    };

    if( callback ){
      messagesCallbacks[ messageId ] = {
        time: new Date().getTime(),
        callback: callback
      };
    }
    window.postMessage(msg, "*");
  }

  function connect(){

    if( isConnectionEstablished ){
      return;
    }

    sendMessage( {
      action: "connect"
    }, function(){

      isConnectionEstablished = true;

    } );

  }

  window.addEventListener &amp;&amp; window.addEventListener("message", function(event){


      if (event.source &amp;&amp; event.source != window){
      return;
    }

      if (event.data.data &amp;&amp; event.data.type &amp;&amp; (event.data.type == "EverHelperExtMessage")) {

      var data = event.data.data;

      if( !data.action ){
        return;
      }

      switch( data.action ){

        case "_response":

          if( messagesCallbacks[ event.data.responseToId ] ){
            messagesCallbacks[ event.data.responseToId ].callback( data );
            delete messagesCallbacks[ event.data.responseToId ];
          }

        break;

      }

    }

  });

  // starting cleanup callbacks interval
  setInterval( function(){
    var maxTTL = 60 * 1000;
    if(window.Config) {
      maxTTL = Config.maxLifeTimeAddonConnectorCallback;
    }
    var now = new Date().getTime();

    for( var messageId in messagesCallbacks ){
      var data = messagesCallbacks[ messageId ];

      if( now - data.time &gt;= maxTTL ){
        delete messagesCallbacks[ messageId ];
      }
    }

  }, 60 * 1000 );

  $(function(){
    connect();
  });

};</pre></body></html>