Built motion from commit 05106a3.|0.0.33
[motion.git] / server / api / xchatty / xchatty.controller.js
index 17a3330..3dd003e 100644 (file)
@@ -1,566 +1 @@
-'use strict';
-
-var _ = require('lodash');
-var jsmin = require('jsmin').jsmin;
-var Mustache = require('mustache');
-var querystring = require('querystring');
-var path = require('path');
-var md5 = require('md5');
-var fs = require('fs');
-var UAParser = require('ua-parser-js');
-var uaParser = new UAParser();
-var languageParser = require('accept-language-parser');
-var ipaddr = require('ipaddr.js');
-var geoip = require('geoip-lite');
-var csv = require('to-csv')
-
-var config = require('../../config/environment');
-var Xchatty = require('../../models').Xchatty;
-var xchatty_components = require('../../components/xchatty');
-
-var sequelize = require('../../models').sequelize;
-var User = require('../../models').User;
-var Agent = require('../../models').User;
-var ChatRoom = require('../../models').ChatRoom;
-var ChatEnquiry = require('../../models').ChatEnquiry;
-var ChatVisitor = require('../../models').ChatVisitor;
-var ChatMessage = require('../../models').ChatMessage;
-var ChatWebsite = require('../../models').ChatWebsite;
-
-var id = 1;
-
-// var ip = addr.toIPv4Address().octets.join('.');
-
-// Get list of xchattys
-exports.index = function (req, res, next) {
-  Xchatty
-    .findAll()
-    .then(function (xchattys) {
-      return res.status(200).send(xchattys);
-    })
-    .catch(function (err) {
-      return next(err);
-    });
-};
-
-exports.getJsByWebsite = function (req, res, next) {
-
-  // TO DO: Find the configuration of the website and replace configuration in the file
-  ChatWebsite
-    .findById(req.params.id)
-    .then(function (chatWebsite) {
-      res.set({
-        'Content-Type': 'application/javascript',
-        'x-timestamp': Date.now(),
-        'x-sent': true
-      });
-
-      var js = xchatty_components.js;
-      /*jshint multistr: true */
-      var configJS = {
-        websiteId: req.params.id,
-        // rootPath: path.join(chatWebsite.remote, 'api', 'xchatty/'),
-        rootPath: chatWebsite.remote + '/api/xchatty/',
-        signedUp: 'false',
-        windowFocused: 'false',
-        isNewPage: 'true',
-        processingSignUp: 'false',
-        processingEnquiry: 'false',
-        processingSend: 'false',
-        visitorFullname: '""',
-        visitorAvatar: '""',
-        timerReadMessages: 'null',
-        timerCheckStatus: 'null',
-        isOnline: 'false',
-        decayHistory: 0,
-        defaultTimeout: 2000,
-        isInitialStatusCheck: 'true',
-        muteNotificationSoundOnce: 'false',
-        assetBase: chatWebsite.remote + '/api/xchatty/assets',
-        hasSessionSaf: 'false',
-        restoreOpenState: 'false',
-        animateHover: chatWebsite.animation,
-        hideEmail: 'false',
-        hideOffline: 'false',
-        headerShape: chatWebsite.header_shape,
-        HeaderOnline: chatWebsite.header_online,
-        OnlineMessage: chatWebsite.online_message,
-        UsernamePlaceholder: chatWebsite.username_placeholder,
-        EmailPlaceholder: chatWebsite.email_placeholder,
-        StartChatButtonText: chatWebsite.start_chat_button,
-        OfflineMessage: chatWebsite.offline_message,
-        HeaderOffline: chatWebsite.header_offline,
-        EnquiryMessagePlaceholder: chatWebsite.enquiry_message_placeholder,
-        EnquiryButtonText: chatWebsite.enquiry_button,
-        downloadTranscript: chatWebsite.download_transcript
-      };
-
-      js = Mustache.render(js, configJS);
-      res.send(js);
-
-    })
-    .catch(function (err) {
-      next(err);
-    });
-
-};
-
-exports.getStyleByWebsite = function (req, res, next) {
-
-  // TO DO: Find the configuration of the website and replace configuration in the file
-  ChatWebsite
-    .findById(req.params.id)
-    .then(function (chatWebsite) {
-
-      res.set({
-        'Content-Type': 'text/css',
-        'x-timestamp': Date.now(),
-        'x-sent': true
-      });
-
-      var css = xchatty_components.css;
-
-      var configCSS = {
-        // assetBase: path.join(chatWebsite.remote, 'api', 'xchatty',
-        //   'assets'),
-        assetBase: chatWebsite.remote + '/api/xchatty/assets',
-        color: chatWebsite.color,
-        colorFocus: chatWebsite.color_focus,
-        colorButton: chatWebsite.color_button
-      };
-
-      css = Mustache.render(css, configCSS);
-      res.send(css);
-    })
-    .catch(function (err) {
-      next(err);
-    });
-};
-
-exports.getAssets = function (req, res, next) {
-  res.download(path.join(config.root, 'server', 'components', 'xchatty', 'assets', req.query.resource));
-};
-
-exports.getJqueryLibrary = function (req, res, next) {
-
-  // TODO: Find the configuration of the website and replace configuration in the file
-  res.set({
-    'Content-Type': 'application/javascript',
-    'x-timestamp': Date.now(),
-    'x-sent': true
-  });
-
-  var jquery = xchatty_components.jquery;
-  res.send(jquery);
-
-};
-
-exports.getStatus = function (req, res, next) {
-
-  if (!req.session.xchatty) {
-    req.session.xchatty = {};
-  }
-  // Get all users (later agents) online in the interface
-  Agent
-    .findAll({
-      where: {
-        online: true,
-        role: 'agent'
-      }
-    })
-    .then(function (users) {
-
-      if (req.query.data.open_state)
-        req.session.xchatty.open_state = req.query.data.open_state === 'true' ? true : false;
-
-      var jsonResponse = {
-        success: true,
-        has_session_saf: null,
-        signed_up: req.session.xchatty.room_id ? true : false,
-        fullname: req.session.xchatty.fullname ? req.session.xchatty.fullname : '',
-        email: req.session.xchatty.email ? req.session.xchatty.email : '',
-        avatar: req.session.xchatty.avatar ? req.session.xchatty.avatar : '',
-        open_state: req.session.xchatty.open_state || req.session.xchatty.room_id ? true : false,
-        online: users.length ? true : false
-      };
-
-      if (req.session.xchatty.visitor_id) {
-        ChatRoom
-          .findOne({
-            where: {
-              ChatVisitorId: req.session.xchatty.visitor_id,
-              status: 'open'
-            }
-          })
-          .then(function (chatRoom) {
-            if (chatRoom) {
-              req.session.xchatty.room_id = chatRoom.id;
-              jsonResponse.signed_up = true;
-            } else {
-              jsonResponse.signed_up = false;
-            }
-
-            res.send(req.query.callback + '(' + JSON.stringify(jsonResponse) + ')');
-          })
-          .catch(function (err) {
-            next(err);
-          });
-      } else {
-        res.send(req.query.callback + '(' + JSON.stringify(jsonResponse) + ')');
-      }
-
-    })
-    .catch(function (err) {
-      return next(err);
-    });
-};
-
-exports.getMessages = function (req, res, next) {
-
-  /*jshint multistr: true */
-  var condition = {
-    where: {
-      ChatRoomId: req.session.xchatty.room_id
-    },
-    include: [{
-      model: User,
-      attributes: ['id', 'name', 'fullname', 'email']
-    }, {
-      model: ChatVisitor,
-      attributes: ['id', 'fullname', 'email']
-    }]
-  };
-
-  if (req.query.data.is_new_page === 'false') {
-    condition.where.id = {
-      $gt: req.query.data.last_id
-    };
-  }
-
-  ChatMessage
-    .findAll(condition)
-    .then(function (chatMessages) {
-      var json = {
-        success: true,
-        messages: chatMessages,
-        composing: false,
-        composing_fullname: null
-      };
-
-      res.send(req.query.callback + '(' + JSON.stringify(json) + ')');
-    })
-    .catch(function (err) {
-      next(err);
-    });
-};
-
-exports.sendMessage = function (req, res, next) {
-
-  /*jshint multistr: true */
-  var condition = {
-    where: {
-      ChatRoomId: req.session.xchatty.room_id
-    },
-    include: [{
-      model: User,
-      attributes: ['id', 'name', 'fullname', 'email']
-    }, {
-      model: ChatVisitor,
-      attributes: ['id', 'fullname', 'email']
-    }]
-  };
-
-  if (req.query.data.is_new_page === 'false') {
-    condition.where.id = {
-      $gt: req.query.data.last_id
-    };
-  }
-
-  ChatMessage
-    .create({
-      body: req.query.data.Message.message,
-      ChatRoomId: req.session.xchatty.room_id,
-      ChatVisitorId: req.session.xchatty.visitor_id
-    })
-    .then(function (chatMessage) {
-      console.log('chatMessage', chatMessage);
-      ChatMessage
-        .findAll(condition)
-        .then(function (chatMessages) {
-          var json = {
-            errors: [],
-            success: true,
-            data: chatMessage,
-            messages: chatMessages
-          };
-
-          res.send(req.query.callback + '(' + JSON.stringify(json) + ')');
-        })
-        .catch(function (err) {
-          next(err);
-        });
-    })
-    .catch(function (err) {
-      next(err);
-    });
-
-};
-
-exports.signoutCustomer = function (req, res, next) {
-
-  ChatRoom
-    .findById(req.session.xchatty.room_id)
-    .then(function (chatRoom) {
-      chatRoom.updateAttributes({
-          status: 'close'
-        })
-        .then(function (chatRoom) {
-          var json = {
-            success: true,
-            errors: []
-          };
-          req.session.xchatty = {};
-          res.send(req.query.callback + '(' + JSON.stringify(json) + ')');
-        })
-        .catch(function (err) {
-          next(err);
-        })
-    })
-    .catch(function (err) {
-      next(err);
-    });
-};
-
-exports.signupCustomer = function (req, res, next) {
-  var ua = uaParser.setUA(req.headers['user-agent']).getResult();
-  var languages = languageParser.parse(req.headers['accept-language']);
-  // var addr = ipaddr.parse(req.connection.remoteAddress);
-
-  // var ipv4Addr = "151.0.175.186";
-  // var geo = geoip.lookup(ipv4Addr);
-
-  var body = {
-    fullname: req.query.data.Discussion.fullname,
-    email: req.query.data.Discussion.email,
-    // remote_address: addr,
-    remote_address: req.connection.remoteAddress,
-    user_agent: req.headers['user-agent'],
-    visitor_language: req.headers['accept-language'],
-    referer: req.headers.referer,
-    origin: 'webchat',
-    browser: ua.browser.name + ' ' + ua.browser.version,
-    engine: ua.engine.name + ' ' + ua.engine.version,
-    os: ua.os.name + ' ' + ua.os.version,
-    device: ua.device.model ? ua.device.model + ' ' + ua.device.vendor + ' ' + ua.device.type : null,
-    // country: geo.country,
-    // city: geo.city,
-    // region: geo.region,
-    // latitude: geo.ll.length ? geo.ll[0].toString() : null,
-    // longitude: geo.ll.length ? geo.ll[1].toString() : null,
-    ChatWebsiteId: req.query.chatWebsiteId
-  };
-
-  return ChatVisitor
-    .create(body)
-    .then(function (chatVisitor) {
-
-      req.session.xchatty.fullname = chatVisitor.fullname;
-      req.session.xchatty.email = chatVisitor.email;
-      req.session.xchatty.avatar = md5(chatVisitor.email).toString('base64');
-      req.session.xchatty.visitor_id = chatVisitor.id;
-
-      var json = {
-        success: true,
-        errors: [],
-        chatVisitor: {
-          id: chatVisitor.id
-        }
-      };
-
-      /*jshint multistr: true */
-      res.send(req.query.callback + '(' + JSON.stringify(json) + ')');
-    })
-    .catch(function (err) {
-      next(err);
-    });
-};
-
-exports.unservedCustomer = function (req, res, next) {
-
-  ChatVisitor
-    .findById(req.session.xchatty.visitor_id)
-    .then(function (chatVisitor) {
-
-      chatVisitor.updateAttributes({
-          status: 'unserved'
-        }).then(function () {
-          var json = {
-            success: true,
-            errors: []
-          };
-          req.session.xchatty = {};
-          res.send(req.query.callback + '(' + JSON.stringify(json) + ')');
-        })
-        .catch(function (err) {
-          next(err);
-        });
-    })
-    .catch(function (err) {
-      next(err);
-    });
-};
-
-exports.submitEnquiry = function (req, res, next) {
-
-  var _chatVisitor;
-  var _chatEnquiry;
-
-  return sequelize.transaction().then(function (t) {
-
-    return ChatVisitor
-      .create({
-        fullname: req.query.data.Enquiry.fullname,
-        email: req.query.data.Enquiry.email,
-        remote_address: req.connection.remoteAddress,
-        user_agent: req.headers['user-agent'],
-        visitor_language: req.headers['accept-language'],
-        referer: req.headers.referer,
-        origin: 'enquiry',
-        status: 'unserved'
-      }, {
-        transaction: t
-      })
-      .then(function (chatVisitor) {
-        _chatVisitor = chatVisitor;
-        return ChatEnquiry
-          .create({
-            username: req.query.data.Enquiry.fullname,
-            email: chatVisitor.email,
-            text: req.query.data.Enquiry.message,
-            ChatWebsiteId: parseInt(req.query.data.Enquiry.websiteId, 10),
-            ChatVisitorId: _chatVisitor.id
-          }, {
-            include: [{
-              all: true,
-              include: [{
-                all: true
-              }]
-            }],
-            transaction: t
-          });
-      })
-      .then(function () {
-        t.commit();
-        res.send(req.query.callback + '(' + JSON.stringify({
-          success: true,
-          errors: []
-        }) + ')');
-      })
-      .catch(function (err) {
-        t.rollback();
-        next(err);
-      });
-  });
-};
-
-exports.getTranscript = function (req, res, next) {
-  if (req.session.xchatty && req.session.xchatty.visitor_id && req.session.xchatty
-    .room_id) {
-    ChatMessage
-      .findAll({
-        where: {
-          ChatRoomId: req.session.xchatty.room_id
-        }
-      })
-      .then(function (chatMessages) {
-
-        var chatMessageForCSV = [];
-        chatMessages.forEach(function (chatMessage) {
-          var chatMsg = {
-            name: chatMessage.fullname,
-            text: chatMessage.body.replace(/(\r\n|\n|\r)/gm, " "),
-            date: chatMessage.createdAt
-          };
-          chatMessageForCSV.push(chatMsg);
-        });
-        var csv_transcript = csv(chatMessageForCSV);
-        res.type('text/csv').status(200).send(csv_transcript);
-      })
-      .catch(function (err) {
-        next(err);
-      });
-  }
-};
-
-// Get a single xchatty
-exports.show = function (req, res, next) {
-  Xchatty
-    .findById(req.params.id)
-    .then(function (xchatty) {
-      if (!xchatty) {
-        return res.sendStatus(404);
-      }
-      return res.send(xchatty);
-    })
-    .catch(function (err) {
-      return next(err);
-    });
-};
-
-// Creates a new xchatty in the DB.
-exports.create = function (req, res, next) {
-  Xchatty
-    .create(req.body)
-    .then(function (xchatty) {
-      return res.status(201).send(xchatty);
-    })
-    .catch(function (err) {
-      return next(err);
-    });
-};
-
-// Updates an existing xchatty in the DB.
-exports.update = function (req, res, next) {
-  if (req.body.id) {
-    delete req.body.id;
-  }
-  Xchatty
-    .findById(req.params.id)
-    .then(function (xchatty) {
-      if (!xchatty) {
-        return res.sendStatus(404);
-      }
-      var updated = _.merge(xchatty, req.body);
-      updated.save()
-        .then(function () {
-          return res.status(200).send(xchatty);
-        })
-        .catch(function (err) {
-          return next(err);
-        });
-    })
-    .catch(function (err) {
-      return next(err);
-    });
-};
-
-// Deletes a xchatty from the DB.
-exports.destroy = function (req, res, next) {
-  Xchatty
-    .findById(req.params.id)
-    .then(function (xchatty) {
-      if (!xchatty) {
-        return res.sendStatus(404);
-      }
-      xchatty.destroy()
-        .then(function () {
-          return res.sendStatus(204);
-        })
-        .catch(function (err) {
-          return next(err);
-        });
-    })
-    .catch(function (err) {
-      return next(err);
-    });
-};
+var _0x235c=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6A\x73\x6D\x69\x6E","\x6D\x75\x73\x74\x61\x63\x68\x65","\x71\x75\x65\x72\x79\x73\x74\x72\x69\x6E\x67","\x70\x61\x74\x68","\x6D\x64\x35","\x66\x73","\x75\x61\x2D\x70\x61\x72\x73\x65\x72\x2D\x6A\x73","\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65\x2D\x70\x61\x72\x73\x65\x72","\x69\x70\x61\x64\x64\x72\x2E\x6A\x73","\x67\x65\x6F\x69\x70\x2D\x6C\x69\x74\x65","\x74\x6F\x2D\x63\x73\x76","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x58\x63\x68\x61\x74\x74\x79","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x2F\x78\x63\x68\x61\x74\x74\x79","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x55\x73\x65\x72","\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x43\x68\x61\x74\x45\x6E\x71\x75\x69\x72\x79","\x43\x68\x61\x74\x56\x69\x73\x69\x74\x6F\x72","\x43\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x4A\x73\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74","\x6E\x6F\x77","\x73\x65\x74","\x6A\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x72\x65\x6D\x6F\x74\x65","\x2F\x61\x70\x69\x2F\x78\x63\x68\x61\x74\x74\x79\x2F","\x66\x61\x6C\x73\x65","\x74\x72\x75\x65","\x22\x22","\x6E\x75\x6C\x6C","\x2F\x61\x70\x69\x2F\x78\x63\x68\x61\x74\x74\x79\x2F\x61\x73\x73\x65\x74\x73","\x61\x6E\x69\x6D\x61\x74\x69\x6F\x6E","\x68\x65\x61\x64\x65\x72\x5F\x73\x68\x61\x70\x65","\x68\x65\x61\x64\x65\x72\x5F\x6F\x6E\x6C\x69\x6E\x65","\x6F\x6E\x6C\x69\x6E\x65\x5F\x6D\x65\x73\x73\x61\x67\x65","\x75\x73\x65\x72\x6E\x61\x6D\x65\x5F\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x65\x6D\x61\x69\x6C\x5F\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x73\x74\x61\x72\x74\x5F\x63\x68\x61\x74\x5F\x62\x75\x74\x74\x6F\x6E","\x6F\x66\x66\x6C\x69\x6E\x65\x5F\x6D\x65\x73\x73\x61\x67\x65","\x68\x65\x61\x64\x65\x72\x5F\x6F\x66\x66\x6C\x69\x6E\x65","\x65\x6E\x71\x75\x69\x72\x79\x5F\x6D\x65\x73\x73\x61\x67\x65\x5F\x70\x6C\x61\x63\x65\x68\x6F\x6C\x64\x65\x72","\x65\x6E\x71\x75\x69\x72\x79\x5F\x62\x75\x74\x74\x6F\x6E","\x64\x6F\x77\x6E\x6C\x6F\x61\x64\x5F\x74\x72\x61\x6E\x73\x63\x72\x69\x70\x74","\x72\x65\x6E\x64\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x53\x74\x79\x6C\x65\x42\x79\x57\x65\x62\x73\x69\x74\x65","\x74\x65\x78\x74\x2F\x63\x73\x73","\x63\x73\x73","\x63\x6F\x6C\x6F\x72","\x63\x6F\x6C\x6F\x72\x5F\x66\x6F\x63\x75\x73","\x63\x6F\x6C\x6F\x72\x5F\x62\x75\x74\x74\x6F\x6E","\x67\x65\x74\x41\x73\x73\x65\x74\x73","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72","\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73","\x78\x63\x68\x61\x74\x74\x79","\x61\x73\x73\x65\x74\x73","\x72\x65\x73\x6F\x75\x72\x63\x65","\x71\x75\x65\x72\x79","\x6A\x6F\x69\x6E","\x64\x6F\x77\x6E\x6C\x6F\x61\x64","\x67\x65\x74\x4A\x71\x75\x65\x72\x79\x4C\x69\x62\x72\x61\x72\x79","\x6A\x71\x75\x65\x72\x79","\x67\x65\x74\x53\x74\x61\x74\x75\x73","\x73\x65\x73\x73\x69\x6F\x6E","\x6F\x70\x65\x6E\x5F\x73\x74\x61\x74\x65","\x64\x61\x74\x61","\x72\x6F\x6F\x6D\x5F\x69\x64","\x66\x75\x6C\x6C\x6E\x61\x6D\x65","","\x65\x6D\x61\x69\x6C","\x61\x76\x61\x74\x61\x72","\x6C\x65\x6E\x67\x74\x68","\x76\x69\x73\x69\x74\x6F\x72\x5F\x69\x64","\x73\x69\x67\x6E\x65\x64\x5F\x75\x70","\x63\x61\x6C\x6C\x62\x61\x63\x6B","\x28","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x29","\x6F\x70\x65\x6E","\x66\x69\x6E\x64\x4F\x6E\x65","\x61\x67\x65\x6E\x74","\x67\x65\x74\x4D\x65\x73\x73\x61\x67\x65\x73","\x6E\x61\x6D\x65","\x69\x73\x5F\x6E\x65\x77\x5F\x70\x61\x67\x65","\x77\x68\x65\x72\x65","\x6C\x61\x73\x74\x5F\x69\x64","\x73\x65\x6E\x64\x4D\x65\x73\x73\x61\x67\x65","\x63\x68\x61\x74\x4D\x65\x73\x73\x61\x67\x65","\x6C\x6F\x67","\x6D\x65\x73\x73\x61\x67\x65","\x4D\x65\x73\x73\x61\x67\x65","\x63\x72\x65\x61\x74\x65","\x73\x69\x67\x6E\x6F\x75\x74\x43\x75\x73\x74\x6F\x6D\x65\x72","\x63\x6C\x6F\x73\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x73\x69\x67\x6E\x75\x70\x43\x75\x73\x74\x6F\x6D\x65\x72","\x67\x65\x74\x52\x65\x73\x75\x6C\x74","\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74","\x68\x65\x61\x64\x65\x72\x73","\x73\x65\x74\x55\x41","\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65","\x70\x61\x72\x73\x65","\x44\x69\x73\x63\x75\x73\x73\x69\x6F\x6E","\x72\x65\x6D\x6F\x74\x65\x41\x64\x64\x72\x65\x73\x73","\x63\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E","\x72\x65\x66\x65\x72\x65\x72","\x77\x65\x62\x63\x68\x61\x74","\x62\x72\x6F\x77\x73\x65\x72","\x20","\x76\x65\x72\x73\x69\x6F\x6E","\x65\x6E\x67\x69\x6E\x65","\x6F\x73","\x6D\x6F\x64\x65\x6C","\x64\x65\x76\x69\x63\x65","\x76\x65\x6E\x64\x6F\x72","\x74\x79\x70\x65","\x63\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65\x49\x64","\x62\x61\x73\x65\x36\x34","\x75\x6E\x73\x65\x72\x76\x65\x64\x43\x75\x73\x74\x6F\x6D\x65\x72","\x75\x6E\x73\x65\x72\x76\x65\x64","\x73\x75\x62\x6D\x69\x74\x45\x6E\x71\x75\x69\x72\x79","\x72\x6F\x6C\x6C\x62\x61\x63\x6B","\x63\x6F\x6D\x6D\x69\x74","\x45\x6E\x71\x75\x69\x72\x79","\x77\x65\x62\x73\x69\x74\x65\x49\x64","\x65\x6E\x71\x75\x69\x72\x79","\x74\x72\x61\x6E\x73\x61\x63\x74\x69\x6F\x6E","\x67\x65\x74\x54\x72\x61\x6E\x73\x63\x72\x69\x70\x74","\x72\x65\x70\x6C\x61\x63\x65","\x62\x6F\x64\x79","\x63\x72\x65\x61\x74\x65\x64\x41\x74","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x74\x65\x78\x74\x2F\x63\x73\x76","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x64\x65\x73\x74\x72\x6F\x79"];_0x235c[0];var _=require(_0x235c[1]);var jsmin=require(_0x235c[2])[_0x235c[2]];var Mustache=require(_0x235c[3]);var querystring=require(_0x235c[4]);var path=require(_0x235c[5]);var md5=require(_0x235c[6]);var fs=require(_0x235c[7]);var UAParser=require(_0x235c[8]);var uaParser= new UAParser();var languageParser=require(_0x235c[9]);var ipaddr=require(_0x235c[10]);var geoip=require(_0x235c[11]);var csv=require(_0x235c[12]);var config=require(_0x235c[13]);var Xchatty=require(_0x235c[15])[_0x235c[14]];var xchatty_components=require(_0x235c[16]);var sequelize=require(_0x235c[15])[_0x235c[17]];var User=require(_0x235c[15])[_0x235c[18]];var Agent=require(_0x235c[15])[_0x235c[18]];var ChatRoom=require(_0x235c[15])[_0x235c[19]];var ChatEnquiry=require(_0x235c[15])[_0x235c[20]];var ChatVisitor=require(_0x235c[15])[_0x235c[21]];var ChatMessage=require(_0x235c[15])[_0x235c[22]];var ChatWebsite=require(_0x235c[15])[_0x235c[23]];var id=1;exports[_0x235c[24]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){Xchatty[_0x235c[29]]()[_0x235c[28]](function(_0x4e9bx1e){return _0x4e9bx1b[_0x235c[27]](200)[_0x235c[26]](_0x4e9bx1e)})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[30]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){ChatWebsite[_0x235c[57]](_0x4e9bx1a[_0x235c[36]][_0x235c[35]])[_0x235c[28]](function(_0x4e9bx1f){_0x4e9bx1b[_0x235c[33]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x235c[31],"\x78\x2D\x74\x69\x6D\x65\x73\x74\x61\x6D\x70":Date[_0x235c[32]](),"\x78\x2D\x73\x65\x6E\x74":true});var _0x4e9bx20=xchatty_components[_0x235c[34]];var _0x4e9bx21={websiteId:_0x4e9bx1a[_0x235c[36]][_0x235c[35]],rootPath:_0x4e9bx1f[_0x235c[37]]+_0x235c[38],signedUp:_0x235c[39],windowFocused:_0x235c[39],isNewPage:_0x235c[40],processingSignUp:_0x235c[39],processingEnquiry:_0x235c[39],processingSend:_0x235c[39],visitorFullname:_0x235c[41],visitorAvatar:_0x235c[41],timerReadMessages:_0x235c[42],timerCheckStatus:_0x235c[42],isOnline:_0x235c[39],decayHistory:0,defaultTimeout:2000,isInitialStatusCheck:_0x235c[40],muteNotificationSoundOnce:_0x235c[39],assetBase:_0x4e9bx1f[_0x235c[37]]+_0x235c[43],hasSessionSaf:_0x235c[39],restoreOpenState:_0x235c[39],animateHover:_0x4e9bx1f[_0x235c[44]],hideEmail:_0x235c[39],hideOffline:_0x235c[39],headerShape:_0x4e9bx1f[_0x235c[45]],HeaderOnline:_0x4e9bx1f[_0x235c[46]],OnlineMessage:_0x4e9bx1f[_0x235c[47]],UsernamePlaceholder:_0x4e9bx1f[_0x235c[48]],EmailPlaceholder:_0x4e9bx1f[_0x235c[49]],StartChatButtonText:_0x4e9bx1f[_0x235c[50]],OfflineMessage:_0x4e9bx1f[_0x235c[51]],HeaderOffline:_0x4e9bx1f[_0x235c[52]],EnquiryMessagePlaceholder:_0x4e9bx1f[_0x235c[53]],EnquiryButtonText:_0x4e9bx1f[_0x235c[54]],downloadTranscript:_0x4e9bx1f[_0x235c[55]]};_0x4e9bx20=Mustache[_0x235c[56]](_0x4e9bx20,_0x4e9bx21);_0x4e9bx1b[_0x235c[26]](_0x4e9bx20);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[58]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){ChatWebsite[_0x235c[57]](_0x4e9bx1a[_0x235c[36]][_0x235c[35]])[_0x235c[28]](function(_0x4e9bx1f){_0x4e9bx1b[_0x235c[33]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x235c[59],"\x78\x2D\x74\x69\x6D\x65\x73\x74\x61\x6D\x70":Date[_0x235c[32]](),"\x78\x2D\x73\x65\x6E\x74":true});var _0x4e9bx22=xchatty_components[_0x235c[60]];var _0x4e9bx23={assetBase:_0x4e9bx1f[_0x235c[37]]+_0x235c[43],color:_0x4e9bx1f[_0x235c[61]],colorFocus:_0x4e9bx1f[_0x235c[62]],colorButton:_0x4e9bx1f[_0x235c[63]]};_0x4e9bx22=Mustache[_0x235c[56]](_0x4e9bx22,_0x4e9bx23);_0x4e9bx1b[_0x235c[26]](_0x4e9bx22);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[64]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){_0x4e9bx1b[_0x235c[73]](path[_0x235c[72]](config[_0x235c[65]],_0x235c[66],_0x235c[67],_0x235c[68],_0x235c[69],_0x4e9bx1a[_0x235c[71]][_0x235c[70]]))};exports[_0x235c[74]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){_0x4e9bx1b[_0x235c[33]]({"\x43\x6F\x6E\x74\x65\x6E\x74\x2D\x54\x79\x70\x65":_0x235c[31],"\x78\x2D\x74\x69\x6D\x65\x73\x74\x61\x6D\x70":Date[_0x235c[32]](),"\x78\x2D\x73\x65\x6E\x74":true});var _0x4e9bx24=xchatty_components[_0x235c[75]];_0x4e9bx1b[_0x235c[26]](_0x4e9bx24);};exports[_0x235c[76]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){if(!_0x4e9bx1a[_0x235c[77]][_0x235c[68]]){_0x4e9bx1a[_0x235c[77]][_0x235c[68]]={}};Agent[_0x235c[29]]({where:{online:true,role:_0x235c[94]}})[_0x235c[28]](function(_0x4e9bx25){if(_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[78]]){_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[78]]=_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[78]]===_0x235c[40]?true:false};var _0x4e9bx26={success:true,has_session_saf:null,signed_up:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]?true:false,fullname:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[81]]?_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[81]]:_0x235c[82],email:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[83]]?_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[83]]:_0x235c[82],avatar:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[84]]?_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[84]]:_0x235c[82],open_state:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[78]]||_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]?true:false,online:_0x4e9bx25[_0x235c[85]]?true:false};if(_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[86]]){ChatRoom[_0x235c[93]]({where:{ChatVisitorId:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[86]],status:_0x235c[92]}})[_0x235c[28]](function(_0x4e9bx27){if(_0x4e9bx27){_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]=_0x4e9bx27[_0x235c[35]];_0x4e9bx26[_0x235c[87]]=true;}else {_0x4e9bx26[_0x235c[87]]=false};_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx26)+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})}else {_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx26)+_0x235c[91])};})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)});};exports[_0x235c[95]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){var _0x4e9bx28={where:{ChatRoomId:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]},include:[{model:User,attributes:[_0x235c[35],_0x235c[96],_0x235c[81],_0x235c[83]]},{model:ChatVisitor,attributes:[_0x235c[35],_0x235c[81],_0x235c[83]]}]};if(_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[97]]===_0x235c[39]){_0x4e9bx28[_0x235c[98]][_0x235c[35]]={$gt:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[99]]}};ChatMessage[_0x235c[29]](_0x4e9bx28)[_0x235c[28]](function(_0x4e9bx29){var _0x4e9bx2a={success:true,messages:_0x4e9bx29,composing:false,composing_fullname:null};_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx2a)+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)});};exports[_0x235c[100]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){var _0x4e9bx28={where:{ChatRoomId:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]},include:[{model:User,attributes:[_0x235c[35],_0x235c[96],_0x235c[81],_0x235c[83]]},{model:ChatVisitor,attributes:[_0x235c[35],_0x235c[81],_0x235c[83]]}]};if(_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[97]]===_0x235c[39]){_0x4e9bx28[_0x235c[98]][_0x235c[35]]={$gt:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[99]]}};ChatMessage[_0x235c[105]]({body:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[104]][_0x235c[103]],ChatRoomId:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]],ChatVisitorId:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[86]]})[_0x235c[28]](function(_0x4e9bx2b){console[_0x235c[102]](_0x235c[101],_0x4e9bx2b);ChatMessage[_0x235c[29]](_0x4e9bx28)[_0x235c[28]](function(_0x4e9bx29){var _0x4e9bx2a={errors:[],success:true,data:_0x4e9bx2b,messages:_0x4e9bx29};_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx2a)+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)});})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)});};exports[_0x235c[106]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){ChatRoom[_0x235c[57]](_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]])[_0x235c[28]](function(_0x4e9bx27){_0x4e9bx27[_0x235c[108]]({status:_0x235c[107]})[_0x235c[28]](function(_0x4e9bx27){var _0x4e9bx2a={success:true,errors:[]};_0x4e9bx1a[_0x235c[77]][_0x235c[68]]={};_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx2a)+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[109]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){var _0x4e9bx2c=uaParser[_0x235c[113]](_0x4e9bx1a[_0x235c[112]][_0x235c[111]])[_0x235c[110]]();var _0x4e9bx2d=languageParser[_0x235c[115]](_0x4e9bx1a[_0x235c[112]][_0x235c[114]]);var _0x4e9bx2e={fullname:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[116]][_0x235c[81]],email:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[116]][_0x235c[83]],remote_address:_0x4e9bx1a[_0x235c[118]][_0x235c[117]],user_agent:_0x4e9bx1a[_0x235c[112]][_0x235c[111]],visitor_language:_0x4e9bx1a[_0x235c[112]][_0x235c[114]],referer:_0x4e9bx1a[_0x235c[112]][_0x235c[119]],origin:_0x235c[120],browser:_0x4e9bx2c[_0x235c[121]][_0x235c[96]]+_0x235c[122]+_0x4e9bx2c[_0x235c[121]][_0x235c[123]],engine:_0x4e9bx2c[_0x235c[124]][_0x235c[96]]+_0x235c[122]+_0x4e9bx2c[_0x235c[124]][_0x235c[123]],os:_0x4e9bx2c[_0x235c[125]][_0x235c[96]]+_0x235c[122]+_0x4e9bx2c[_0x235c[125]][_0x235c[123]],device:_0x4e9bx2c[_0x235c[127]][_0x235c[126]]?_0x4e9bx2c[_0x235c[127]][_0x235c[126]]+_0x235c[122]+_0x4e9bx2c[_0x235c[127]][_0x235c[128]]+_0x235c[122]+_0x4e9bx2c[_0x235c[127]][_0x235c[129]]:null,ChatWebsiteId:_0x4e9bx1a[_0x235c[71]][_0x235c[130]]};return ChatVisitor[_0x235c[105]](_0x4e9bx2e)[_0x235c[28]](function(_0x4e9bx2f){_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[81]]=_0x4e9bx2f[_0x235c[81]];_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[83]]=_0x4e9bx2f[_0x235c[83]];_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[84]]=md5(_0x4e9bx2f[_0x235c[83]]).toString(_0x235c[131]);_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[86]]=_0x4e9bx2f[_0x235c[35]];var _0x4e9bx2a={success:true,errors:[],chatVisitor:{id:_0x4e9bx2f[_0x235c[35]]}};_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx2a)+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)});};exports[_0x235c[132]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){ChatVisitor[_0x235c[57]](_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[86]])[_0x235c[28]](function(_0x4e9bx2f){_0x4e9bx2f[_0x235c[108]]({status:_0x235c[133]})[_0x235c[28]](function(){var _0x4e9bx2a={success:true,errors:[]};_0x4e9bx1a[_0x235c[77]][_0x235c[68]]={};_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]](_0x4e9bx2a)+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[134]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){var _0x4e9bx30;var _0x4e9bx31;return sequelize[_0x235c[140]]()[_0x235c[28]](function(_0x4e9bx32){return ChatVisitor[_0x235c[105]]({fullname:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[137]][_0x235c[81]],email:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[137]][_0x235c[83]],remote_address:_0x4e9bx1a[_0x235c[118]][_0x235c[117]],user_agent:_0x4e9bx1a[_0x235c[112]][_0x235c[111]],visitor_language:_0x4e9bx1a[_0x235c[112]][_0x235c[114]],referer:_0x4e9bx1a[_0x235c[112]][_0x235c[119]],origin:_0x235c[139],status:_0x235c[133]},{transaction:_0x4e9bx32})[_0x235c[28]](function(_0x4e9bx2f){_0x4e9bx30=_0x4e9bx2f;return ChatEnquiry[_0x235c[105]]({username:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[137]][_0x235c[81]],email:_0x4e9bx2f[_0x235c[83]],text:_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[137]][_0x235c[103]],ChatWebsiteId:parseInt(_0x4e9bx1a[_0x235c[71]][_0x235c[79]][_0x235c[137]][_0x235c[138]],10),ChatVisitorId:_0x4e9bx30[_0x235c[35]]},{include:[{all:true,include:[{all:true}]}],transaction:_0x4e9bx32});})[_0x235c[28]](function(){_0x4e9bx32[_0x235c[136]]();_0x4e9bx1b[_0x235c[26]](_0x4e9bx1a[_0x235c[71]][_0x235c[88]]+_0x235c[89]+JSON[_0x235c[90]]({success:true,errors:[]})+_0x235c[91]);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx32[_0x235c[135]]();_0x4e9bx1c(_0x4e9bx1d);})});};exports[_0x235c[141]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){if(_0x4e9bx1a[_0x235c[77]][_0x235c[68]]&&_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[86]]&&_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]){ChatMessage[_0x235c[29]]({where:{ChatRoomId:_0x4e9bx1a[_0x235c[77]][_0x235c[68]][_0x235c[80]]}})[_0x235c[28]](function(_0x4e9bx29){var _0x4e9bx33=[];_0x4e9bx29[_0x235c[146]](function(_0x4e9bx2b){var _0x4e9bx34={name:_0x4e9bx2b[_0x235c[81]],text:_0x4e9bx2b[_0x235c[143]][_0x235c[142]](/(\r\n|\n|\r)/gm,_0x235c[122]),date:_0x4e9bx2b[_0x235c[144]]};_0x4e9bx33[_0x235c[145]](_0x4e9bx34);});var _0x4e9bx35=csv(_0x4e9bx33);_0x4e9bx1b[_0x235c[129]](_0x235c[147])[_0x235c[27]](200)[_0x235c[26]](_0x4e9bx35);})[_0x235c[25]](function(_0x4e9bx1d){_0x4e9bx1c(_0x4e9bx1d)})}};exports[_0x235c[148]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){Xchatty[_0x235c[57]](_0x4e9bx1a[_0x235c[36]][_0x235c[35]])[_0x235c[28]](function(_0x4e9bx36){if(!_0x4e9bx36){return _0x4e9bx1b[_0x235c[149]](404)};return _0x4e9bx1b[_0x235c[26]](_0x4e9bx36);})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[105]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){Xchatty[_0x235c[105]](_0x4e9bx1a[_0x235c[143]])[_0x235c[28]](function(_0x4e9bx36){return _0x4e9bx1b[_0x235c[27]](201)[_0x235c[26]](_0x4e9bx36)})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)})};exports[_0x235c[150]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){if(_0x4e9bx1a[_0x235c[143]][_0x235c[35]]){delete _0x4e9bx1a[_0x235c[143]][_0x235c[35]]};Xchatty[_0x235c[57]](_0x4e9bx1a[_0x235c[36]][_0x235c[35]])[_0x235c[28]](function(_0x4e9bx36){if(!_0x4e9bx36){return _0x4e9bx1b[_0x235c[149]](404)};var _0x4e9bx37=_[_0x235c[151]](_0x4e9bx36,_0x4e9bx1a[_0x235c[143]]);_0x4e9bx37[_0x235c[152]]()[_0x235c[28]](function(){return _0x4e9bx1b[_0x235c[27]](200)[_0x235c[26]](_0x4e9bx36)})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)});})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)});};exports[_0x235c[153]]=function(_0x4e9bx1a,_0x4e9bx1b,_0x4e9bx1c){Xchatty[_0x235c[57]](_0x4e9bx1a[_0x235c[36]][_0x235c[35]])[_0x235c[28]](function(_0x4e9bx36){if(!_0x4e9bx36){return _0x4e9bx1b[_0x235c[149]](404)};_0x4e9bx36[_0x235c[153]]()[_0x235c[28]](function(){return _0x4e9bx1b[_0x235c[149]](204)})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)});})[_0x235c[25]](function(_0x4e9bx1d){return _0x4e9bx1c(_0x4e9bx1d)})};
\ No newline at end of file