Changeset 2112768
- Timestamp:
- 06/26/2019 12:29:28 PM (7 years ago)
- Location:
- leadin
- Files:
-
- 89 added
- 3 deleted
- 49 edited
-
assets/banner-1544x500.png (modified) (previous)
-
assets/banner-772x250.png (modified) (previous)
-
assets/screenshot-1.png (modified) (previous)
-
assets/screenshot-3.png (modified) (previous)
-
tags/7.5.3 (added)
-
tags/7.5.3/admin (added)
-
tags/7.5.3/admin/class-leadinadmin.php (added)
-
tags/7.5.3/bin (added)
-
tags/7.5.3/bin/install-wp-tests.sh (added)
-
tags/7.5.3/changelog.txt (added)
-
tags/7.5.3/images (added)
-
tags/7.5.3/images/sprocket.svg (added)
-
tags/7.5.3/inc (added)
-
tags/7.5.3/inc/class-leadin.php (added)
-
tags/7.5.3/inc/leadin-constants.php (added)
-
tags/7.5.3/inc/leadin-disconnect.php (added)
-
tags/7.5.3/inc/leadin-functions.php (added)
-
tags/7.5.3/inc/leadin-mark-outdated.php (added)
-
tags/7.5.3/inc/leadin-registration.php (added)
-
tags/7.5.3/inc/leadin-wp-get.php (added)
-
tags/7.5.3/js (added)
-
tags/7.5.3/js/api (added)
-
tags/7.5.3/js/api/hubspotPluginApi.js (added)
-
tags/7.5.3/js/api/wordpressApi.js (added)
-
tags/7.5.3/js/app.js (added)
-
tags/7.5.3/js/constants (added)
-
tags/7.5.3/js/constants/leadinConfig.js (added)
-
tags/7.5.3/js/constants/selectors.js (added)
-
tags/7.5.3/js/constants/themes.js (added)
-
tags/7.5.3/js/fullscreen.js (added)
-
tags/7.5.3/js/handlers.js (added)
-
tags/7.5.3/js/lib (added)
-
tags/7.5.3/js/lib/EventBus.js (added)
-
tags/7.5.3/js/lib/Interframe.js (added)
-
tags/7.5.3/js/lib/Raven.js (added)
-
tags/7.5.3/js/menu.js (added)
-
tags/7.5.3/js/navigation.js (added)
-
tags/7.5.3/js/utils.js (added)
-
tags/7.5.3/languages (added)
-
tags/7.5.3/languages/leadin-de_AT.mo (added)
-
tags/7.5.3/languages/leadin-de_CH.mo (added)
-
tags/7.5.3/languages/leadin-de_CH_informal.mo (added)
-
tags/7.5.3/languages/leadin-de_DE.mo (added)
-
tags/7.5.3/languages/leadin-de_DE_formal.mo (added)
-
tags/7.5.3/languages/leadin-en.mo (added)
-
tags/7.5.3/languages/leadin-en_AU.mo (added)
-
tags/7.5.3/languages/leadin-en_CA.mo (added)
-
tags/7.5.3/languages/leadin-en_GB.mo (added)
-
tags/7.5.3/languages/leadin-en_NZ.mo (added)
-
tags/7.5.3/languages/leadin-en_US.mo (added)
-
tags/7.5.3/languages/leadin-en_ZA.mo (added)
-
tags/7.5.3/languages/leadin-es_AR.mo (added)
-
tags/7.5.3/languages/leadin-es_CL.mo (added)
-
tags/7.5.3/languages/leadin-es_CO.mo (added)
-
tags/7.5.3/languages/leadin-es_CR.mo (added)
-
tags/7.5.3/languages/leadin-es_ES.mo (added)
-
tags/7.5.3/languages/leadin-es_GT.mo (added)
-
tags/7.5.3/languages/leadin-es_MX.mo (added)
-
tags/7.5.3/languages/leadin-es_PE.mo (added)
-
tags/7.5.3/languages/leadin-es_PR.mo (added)
-
tags/7.5.3/languages/leadin-es_VE.mo (added)
-
tags/7.5.3/languages/leadin-fr_BE.mo (added)
-
tags/7.5.3/languages/leadin-fr_CA.mo (added)
-
tags/7.5.3/languages/leadin-fr_FR.mo (added)
-
tags/7.5.3/languages/leadin-ja.mo (added)
-
tags/7.5.3/languages/leadin-pt_AO.mo (added)
-
tags/7.5.3/languages/leadin-pt_BR.mo (added)
-
tags/7.5.3/languages/leadin-pt_PT.mo (added)
-
tags/7.5.3/languages/leadin-pt_PT_ao90.mo (added)
-
tags/7.5.3/leadin.php (added)
-
tags/7.5.3/license.txt (added)
-
tags/7.5.3/package.json (added)
-
tags/7.5.3/phpunit.xml.dist (added)
-
tags/7.5.3/readme.txt (added)
-
tags/7.5.3/scripts (added)
-
tags/7.5.3/scripts/leadin.js (added)
-
tags/7.5.3/scripts/leadin.js.map (added)
-
tags/7.5.3/style (added)
-
tags/7.5.3/style/hs-font.eot (added)
-
tags/7.5.3/style/hs-font.svg (added)
-
tags/7.5.3/style/hs-font.ttf (added)
-
tags/7.5.3/style/hs-font.woff (added)
-
tags/7.5.3/style/leadin-bridge.css (added)
-
tags/7.5.3/style/leadin.css (added)
-
tags/7.5.3/tests (added)
-
tags/7.5.3/tests/bootstrap.php (added)
-
tags/7.5.3/tests/inc (added)
-
tags/7.5.3/tests/inc/test-leadin-functions.php (added)
-
tags/7.5.3/tests/inc/test-leadin-mark-outdated.php (added)
-
tags/7.5.3/webpack.config.js (added)
-
tags/7.5.3/yarn.lock (added)
-
trunk/.phpcs.xml.dist (deleted)
-
trunk/admin/class-leadinadmin.php (added)
-
trunk/admin/leadin-admin.php (deleted)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/inc/class-leadin.php (modified) (1 diff)
-
trunk/inc/leadin-constants.php (modified) (1 diff)
-
trunk/inc/leadin-disconnect.php (modified) (1 diff)
-
trunk/inc/leadin-functions.php (modified) (7 diffs)
-
trunk/inc/leadin-mark-outdated.php (modified) (1 diff)
-
trunk/inc/leadin-registration.php (modified) (1 diff)
-
trunk/inc/leadin-wp-get.php (modified) (1 diff)
-
trunk/js/app.js (modified) (2 diffs)
-
trunk/js/chatflows.js (deleted)
-
trunk/js/constants/themes.js (modified) (1 diff)
-
trunk/js/menu.js (added)
-
trunk/languages/leadin-de_AT.mo (modified) (previous)
-
trunk/languages/leadin-de_CH.mo (modified) (previous)
-
trunk/languages/leadin-de_CH_informal.mo (modified) (previous)
-
trunk/languages/leadin-de_DE.mo (modified) (previous)
-
trunk/languages/leadin-de_DE_formal.mo (modified) (previous)
-
trunk/languages/leadin-en.mo (modified) (previous)
-
trunk/languages/leadin-en_AU.mo (modified) (previous)
-
trunk/languages/leadin-en_CA.mo (modified) (previous)
-
trunk/languages/leadin-en_GB.mo (modified) (previous)
-
trunk/languages/leadin-en_NZ.mo (modified) (previous)
-
trunk/languages/leadin-en_US.mo (modified) (previous)
-
trunk/languages/leadin-en_ZA.mo (modified) (previous)
-
trunk/languages/leadin-es_AR.mo (modified) (previous)
-
trunk/languages/leadin-es_CL.mo (modified) (previous)
-
trunk/languages/leadin-es_CO.mo (modified) (previous)
-
trunk/languages/leadin-es_CR.mo (modified) (previous)
-
trunk/languages/leadin-es_ES.mo (modified) (previous)
-
trunk/languages/leadin-es_GT.mo (modified) (previous)
-
trunk/languages/leadin-es_MX.mo (modified) (previous)
-
trunk/languages/leadin-es_PE.mo (modified) (previous)
-
trunk/languages/leadin-es_PR.mo (modified) (previous)
-
trunk/languages/leadin-es_VE.mo (modified) (previous)
-
trunk/languages/leadin-fr_BE.mo (modified) (previous)
-
trunk/languages/leadin-fr_CA.mo (modified) (previous)
-
trunk/languages/leadin-fr_FR.mo (modified) (previous)
-
trunk/languages/leadin-ja.mo (modified) (previous)
-
trunk/languages/leadin-pt_AO.mo (modified) (previous)
-
trunk/languages/leadin-pt_BR.mo (modified) (previous)
-
trunk/languages/leadin-pt_PT.mo (modified) (previous)
-
trunk/languages/leadin-pt_PT_ao90.mo (modified) (previous)
-
trunk/leadin.php (modified) (7 diffs)
-
trunk/readme.txt (modified) (7 diffs)
-
trunk/scripts/leadin.js (modified) (1 diff)
-
trunk/scripts/leadin.js.map (modified) (1 diff)
-
trunk/tests/inc/test-leadin-mark-outdated.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
leadin/trunk/changelog.txt
r2106268 r2112768 1 = 7.5.3 (2019.06.26) = 2 - Rename "chatflow" to "live chat" 3 - Update readme.txt 4 - Update banners 5 - Fix themes colors 6 - Refactor code style 7 1 8 = 7.5.2 (2019.06.14) = 2 9 - Add webpack and use ES6 -
leadin/trunk/inc/class-leadin.php
r2097340 r2112768 1 1 <?php 2 2 3 / / =============================================4 // WPLeadIn Class5 // ============================================= 6 class WPLeadIn {3 /** 4 * Leadin Class 5 */ 6 class Leadin { 7 7 8 /**9 * Class constructor10 */11 function __construct() {12 global $pagenow;8 /** 9 * Class constructor 10 */ 11 public function __construct() { 12 global $pagenow; 13 13 14 add_action( 'wp_enqueue_scripts', array($this, 'add_common_frontend_scripts' ) );15 add_action( 'admin_enqueue_scripts', array($this, 'add_common_frontend_scripts' ) );14 add_action( 'wp_enqueue_scripts', array( $this, 'add_common_frontend_scripts' ) ); 15 add_action( 'admin_enqueue_scripts', array( $this, 'add_common_frontend_scripts' ) ); 16 16 17 if ( is_admin() ) {18 if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) {19 $li_wp_admin = new WPLeadInAdmin();20 }21 } else {22 // Adds the leadin-tracking script to wp-login.php page which doesnt hook into the enqueue logic 23 if ( $this->leadin_is_login_or_register_page() ) {24 add_action( 'login_enqueue_scripts', array( $this, 'add_leadin_frontend_scripts' ) );25 } else {26 add_action( 'wp_enqueue_scripts', array( $this, 'add_leadin_frontend_scripts' ) );27 }28 }29 }17 if ( is_admin() ) { 18 if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) { 19 $li_wp_admin = new LeadinAdmin(); 20 } 21 } else { 22 // Adds the leadin-tracking script to wp-login.php page which doesnt hook into the enqueue logic. 23 if ( $this->leadin_is_login_or_register_page() ) { 24 add_action( 'login_enqueue_scripts', array( $this, 'add_leadin_frontend_scripts' ) ); 25 } else { 26 add_action( 'wp_enqueue_scripts', array( $this, 'add_leadin_frontend_scripts' ) ); 27 } 28 } 29 } 30 30 31 // ============================================= 32 // Scripts & Styles 33 // ============================================= 34 /** 35 * Adds front end javascript + initializes ajax object 36 */ 31 // ============================================= 32 // Scripts & Styles 33 // ============================================= 34 /** 35 * Adds front end javascript + initializes ajax object 36 */ 37 public function add_leadin_frontend_scripts() { 38 add_filter( 'script_loader_tag', array( $this, 'leadin_add_embed_script_attributes' ), 10, 2 ); 37 39 38 function add_leadin_frontend_scripts() { 40 $embed_domain = constant( 'LEADIN_SCRIPT_LOADER_DOMAIN' ); 41 $portal_id = get_option( 'leadin_portalId' ); 39 42 40 add_filter( 'script_loader_tag', array( $this, 'leadin_add_embed_script_attributes' ), 10, 2 ); 43 if ( empty( $portal_id ) ) { 44 echo esc_html( '<!-- HubSpot WordPress Plugin v' . LEADIN_PLUGIN_VERSION . ': embed JS disabled as a portalId has not yet been configured -->' ); 45 return; 46 } 41 47 42 $embedDomain = constant( 'LEADIN_SCRIPT_LOADER_DOMAIN' );43 $portalId = get_option( 'leadin_portalId' );48 $embed_url = "//$embed_domain/$portal_id.js?integration=wordpress"; 49 $embed_id = 'leadin-scriptloader-js'; 44 50 45 if ( empty( $portalId ) ) { 46 echo '<!-- HubSpot WordPress Plugin v' . LEADIN_PLUGIN_VERSION . ': embed JS disabled as a portalId has not yet been configured -->'; 47 return; 48 } 51 if ( is_single() ) { 52 $page_type = 'post'; 53 } elseif ( is_front_page() ) { 54 $page_type = 'home'; 55 } elseif ( is_archive() ) { 56 $page_type = 'archive'; 57 } elseif ( $this->leadin_is_login_or_register_page() ) { 58 $page_type = 'login'; 59 } elseif ( is_page() ) { 60 $page_type = 'page'; 61 } else { 62 $page_type = 'other'; 63 } 49 64 50 $embedUrl = '//' . $embedDomain . '/' . $portalId . '.js?integration=wordpress'; 51 $embedId = 'leadin-scriptloader-js'; 65 $leadin_wordpress_info = array( 66 'userRole' => ( is_user_logged_in() ) ? leadin_get_user_role() : 'visitor', 67 'pageType' => $page_type, 68 'leadinPluginVersion' => LEADIN_PLUGIN_VERSION, 69 ); 52 70 53 if ( is_single() ) { 54 $page_type = 'post'; 55 } elseif ( is_front_page() ) { 56 $page_type = 'home'; 57 } elseif ( is_archive() ) { 58 $page_type = 'archive'; 59 } elseif ( $this->leadin_is_login_or_register_page() ) { 60 $page_type = 'login'; 61 } elseif ( is_page() ) { 62 $page_type = 'page'; 63 } else { 64 $page_type = 'other'; 65 } 71 wp_register_script( $embed_id, $embed_url, array( 'jquery' ), LEADIN_PLUGIN_VERSION, true ); 72 wp_localize_script( $embed_id, 'leadin_wordpress', $leadin_wordpress_info ); 73 wp_enqueue_script( $embed_id ); 74 $this->add_page_analytics(); 75 } 66 76 67 $leadin_wordpress_info = array( 68 'userRole' => ( is_user_logged_in() ) ? leadin_get_user_role() : 'visitor', 69 'pageType' => $page_type, 70 'leadinPluginVersion' => LEADIN_PLUGIN_VERSION, 71 ); 77 /** 78 * Add leadin.css 79 */ 80 public function add_common_frontend_scripts() { 81 if ( is_user_logged_in() ) { 82 wp_register_style( 'leadin-css', LEADIN_PATH . '/style/leadin.css', array(), LEADIN_PLUGIN_VERSION ); 83 wp_enqueue_style( 'leadin-css' ); 84 } 85 } 72 86 73 wp_register_script( $embedId, $embedUrl, array( 'jquery' ), false, true ); 74 wp_localize_script( $embedId, 'leadin_wordpress', $leadin_wordpress_info ); 75 wp_enqueue_script( $embedId ); 76 $this->add_page_analytics(); 77 } 87 /** 88 * Add tracking code 89 */ 90 private function add_page_analytics() { 91 ?> 92 <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v'.LEADIN_PLUGIN_VERSION.' --> 93 <script type="text/javascript"> 94 var _hsq = _hsq || []; 95 <?php 96 // Pass along the correct content-type. 97 if ( is_single() ) { 98 echo '_hsq.push(["setContentType", "blog-post"]);' . "\n"; 99 } elseif ( is_archive() || is_search() ) { 100 echo '_hsq.push(["setContentType", "listing-page"]);' . "\n"; 101 } else { 102 echo '_hsq.push(["setContentType", "standard-page"]);' . "\n"; 103 } 104 ?> 105 </script> 106 <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> 107 <?php 108 } 78 109 79 function add_common_frontend_scripts() { 80 if ( is_user_logged_in() ) { 81 wp_register_style( 'leadin-css', LEADIN_PATH.'/style/leadin.css' ); 82 wp_enqueue_style( 'leadin-css' ); 83 } 84 } 110 /** 111 * Action script-loader-tag 112 * 113 * @param string $tag tag name. 114 * @param string $handle handle. 115 */ 116 public function leadin_add_embed_script_attributes( $tag, $handle ) { 117 if ( 'leadin-scriptloader-js' === $handle ) { 118 return str_replace( ' src', ' async defer src', $tag ); 119 } else { 120 return $tag; 121 } 122 } 85 123 86 /* HubSpot page analytics */ 87 function add_page_analytics() { 88 echo "\n".'<!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v'.LEADIN_PLUGIN_VERSION.' -->'."\n"; 89 echo '<script type="text/javascript">'."\n"; 90 91 echo 'var _hsq = _hsq || [];'."\n"; 92 // Pass along the correct content-type 93 if ( is_single () ) { 94 echo '_hsq.push(["setContentType", "blog-post"]);' . "\n"; 95 } else if ( is_archive () || is_search() ) { 96 echo '_hsq.push(["setContentType", "listing-page"]);' . "\n"; 97 } else { 98 echo '_hsq.push(["setContentType", "standard-page"]);' . "\n"; 99 } 100 101 echo '</script>'."\n"; 102 echo '<!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin -->'."\n"; 103 } 104 105 function leadin_add_embed_script_attributes( $tag, $handle ) { 106 if ( $handle == 'leadin-scriptloader-js' ) { 107 return str_replace( ' src', ' async defer src', $tag ); 108 } else { 109 return $tag; 110 } 111 } 112 113 public static function leadin_is_login_or_register_page() { 114 return in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ); 115 } 124 /** 125 * Return true if the current page is login or register 126 */ 127 public static function leadin_is_login_or_register_page() { 128 return in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ), true ); 129 } 116 130 } 117 131 -
leadin/trunk/inc/leadin-constants.php
r2077791 r2112768 2 2 3 3 if ( ! defined( 'LEADIN_UTM_SOURCE' ) ) { 4 define( 'LEADIN_UTM_SOURCE', 'leadin%20repo%20plugin' );4 define( 'LEADIN_UTM_SOURCE', 'leadin%20repo%20plugin' ); 5 5 } 6 6 7 7 if ( ! defined( 'LEADIN_UTM_MEDIUM' ) ) { 8 define( 'LEADIN_UTM_MEDIUM', 'referral' );8 define( 'LEADIN_UTM_MEDIUM', 'referral' ); 9 9 } 10 10 11 11 if ( ! defined( 'LEADIN_UTM_CONTENT' ) ) { 12 define( 'LEADIN_UTM_CONTENT', 'e10' );12 define( 'LEADIN_UTM_CONTENT', 'e10' ); 13 13 } 14 14 15 15 if ( ! defined( 'LEADIN_UTM_CAMPAIGN' ) ) { 16 define( 'LEADIN_UTM_CAMPAIGN', 'one%20click%20updater' );16 define( 'LEADIN_UTM_CAMPAIGN', 'one%20click%20updater' ); 17 17 } -
leadin/trunk/inc/leadin-disconnect.php
r2077791 r2112768 1 1 <?php 2 2 if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { 3 wp_die( '', '', 403 );3 wp_die( '', '', 403 ); 4 4 } 5 5 6 6 if ( is_admin() ) { 7 add_action( 'wp_ajax_leadin_disconnect_ajax', 'leadin_disconnect_ajax' );7 add_action( 'wp_ajax_leadin_disconnect_ajax', 'leadin_disconnect_ajax' ); 8 8 } 9 9 10 /** 11 * AJAX handler to disconnect portal id 12 */ 10 13 function leadin_disconnect_ajax() { 11 if ( get_option( 'leadin_portalId' ) ) {12 delete_option( 'leadin_portalId' );13 delete_option( 'leadin_slumber_mode' );14 delete_option( 'leadin_hapikey' );14 if ( get_option( 'leadin_portalId' ) ) { 15 delete_option( 'leadin_portalId' ); 16 delete_option( 'leadin_slumber_mode' ); 17 delete_option( 'leadin_hapikey' ); 15 18 16 delete_option( 'leadin_accessToken' );17 delete_option( 'leadin_refreshToken' );18 delete_option( 'leadin_oauth_mode' );19 delete_option( 'leadin_userId' );20 delete_option( 'leadin_connectionTimeInMs' );19 delete_option( 'leadin_accessToken' ); 20 delete_option( 'leadin_refreshToken' ); 21 delete_option( 'leadin_oauth_mode' ); 22 delete_option( 'leadin_userId' ); 23 delete_option( 'leadin_connectionTimeInMs' ); 21 24 22 wp_die( '{"message": "Success!"}' ); 23 } else { 24 error_log( 'Disconnect error' ); 25 wp_die( '{"error": "No leadin_portalId found, cannot disconnect."}', '', 400 ); 26 } 27 25 wp_die( '{"message": "Success!"}' ); 26 } else { 27 wp_die( '{"error": "No leadin_portalId found, cannot disconnect."}', '', 400 ); 28 } 28 29 } 29 30 -
leadin/trunk/inc/leadin-functions.php
r2106268 r2112768 1 1 <?php 2 /** 3 * Function file 4 * 5 * @phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_error_log 6 * @phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_print_r 7 */ 2 8 3 9 if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { 4 wp_die( '', '', 403 );10 wp_die( '', '', 403 ); 5 11 } 6 12 7 13 if ( ! defined( 'LEADIN_PORTAL_ID' ) ) { 8 DEFINE( 'LEADIN_PORTAL_ID', intval( get_option( 'leadin_portalId' ) ) );14 DEFINE( 'LEADIN_PORTAL_ID', intval( get_option( 'leadin_portalId' ) ) ); 9 15 } 10 16 … … 12 18 * Logs a debug statement to /wp-content/debug.log 13 19 * 14 * @param string20 * @param string $message message to log. 15 21 */ 16 22 function leadin_log_debug( $message ) { 17 if ( WP_DEBUG === true ) {18 if ( is_array( $message ) || is_object( $message ) ) {19 error_log( print_r( $message, true ) );20 } else {21 error_log( $message );22 }23 }23 if ( WP_DEBUG === true ) { 24 if ( is_array( $message ) || is_object( $message ) ) { 25 error_log( print_r( $message, true ) ); 26 } else { 27 error_log( $message ); 28 } 29 } 24 30 } 25 31 … … 28 34 */ 29 35 function leadin_get_user_role() { 30 global $current_user;36 global $current_user; 31 37 32 $user_roles = $current_user->roles;33 $user_role = array_shift( $user_roles );38 $user_roles = $current_user->roles; 39 $user_role = array_shift( $user_roles ); 34 40 35 return $user_role;41 return $user_role; 36 42 } 37 43 38 44 /** 39 45 * Return query string from object 46 * 47 * @param array $arr query parameters to stringify. 40 48 */ 41 function leadin_http_build_query( $arr) {42 return http_build_query( $arr, null, ini_get('arg_separator.output'), PHP_QUERY_RFC3986 );49 function leadin_http_build_query( $arr ) { 50 return http_build_query( $arr, null, ini_get( 'arg_separator.output' ), PHP_QUERY_RFC3986 ); 43 51 } 44 52 … … 46 54 * Return the given version until the patch version 47 55 * eg: 6.4.2.1-beta => 6.4.2 56 * 57 * @param string $version version. 48 58 */ 49 function leadin_parse_version( $version) {50 preg_match('/^\d+(\.\d+){0,2}/', $version, $match);51 if ( empty( $match ) ) {52 return '';53 }54 return $match[0];59 function leadin_parse_version( $version ) { 60 preg_match( '/^\d+(\.\d+){0,2}/', $version, $match ); 61 if ( empty( $match ) ) { 62 return ''; 63 } 64 return $match[0]; 55 65 } 56 66 67 /** 68 * Return array of query parameters to add to the iframe src 69 */ 57 70 function leadin_get_query_params() { 58 global $wp_version;71 global $wp_version; 59 72 60 return leadin_http_build_query( array( 61 'l' => get_locale(), 62 'php' => leadin_parse_version( phpversion() ), 63 'v' => LEADIN_PLUGIN_VERSION, 64 'wp' => leadin_parse_version( $wp_version ), 65 'theme' => get_option('stylesheet'), 66 ) ); 73 return leadin_http_build_query( 74 array( 75 'l' => get_locale(), 76 'php' => leadin_parse_version( phpversion() ), 77 'v' => LEADIN_PLUGIN_VERSION, 78 'wp' => leadin_parse_version( $wp_version ), 79 'theme' => get_option( 'stylesheet' ), 80 ) 81 ); 67 82 } 68 83 … … 71 86 */ 72 87 function leadin_get_affiliate_code() { 73 $affiliate_link = get_option( 'hubspot_affiliate_code' );74 preg_match('/(?:(?:hubs\.to)|(?:mbsy\.co))\/([a-zA-Z0-9]+)/', $affiliate_link, $matches);75 if (sizeof($matches) === 2) {76 return $matches[1];77 } else {78 return $affiliate_link;79 }88 $affiliate_link = get_option( 'hubspot_affiliate_code' ); 89 preg_match( '/(?:(?:hubs\.to)|(?:mbsy\.co))\/([a-zA-Z0-9]+)/', $affiliate_link, $matches ); 90 if ( count( $matches ) === 2 ) { 91 return $matches[1]; 92 } else { 93 return $affiliate_link; 94 } 80 95 } 81 96 … … 84 99 */ 85 100 function leadin_get_signup_url() { 86 // Get attribution string.87 $acquisition_option = get_option( 'hubspot_acquisition_attribution', '' );88 parse_str( $acquisition_option, $signup_params );89 $signup_params['enableCollectedForms'] = 'true';101 // Get attribution string. 102 $acquisition_option = get_option( 'hubspot_acquisition_attribution', '' ); 103 parse_str( $acquisition_option, $signup_params ); 104 $signup_params['enableCollectedForms'] = 'true'; 90 105 91 // Get leadin query.92 $leadin_query = leadin_get_query_params();93 parse_str( $leadin_query, $leadin_params );106 // Get leadin query. 107 $leadin_query = leadin_get_query_params(); 108 parse_str( $leadin_query, $leadin_params ); 94 109 95 $signup_params = array_merge( $signup_params, $leadin_params );110 $signup_params = array_merge( $signup_params, $leadin_params ); 96 111 97 // Add signup pre-fill info.98 $wp_user= wp_get_current_user();99 $signup_params['firstName'] = $wp_user->user_firstname;100 $signup_params['lastName']= $wp_user->user_lastname;101 $signup_params['email']= $wp_user->user_email;102 $signup_params['company']= get_bloginfo( 'name' );103 $signup_params['domain']= get_site_url();112 // Add signup pre-fill info. 113 $wp_user = wp_get_current_user(); 114 $signup_params['firstName'] = $wp_user->user_firstname; 115 $signup_params['lastName'] = $wp_user->user_lastname; 116 $signup_params['email'] = $wp_user->user_email; 117 $signup_params['company'] = get_bloginfo( 'name' ); 118 $signup_params['domain'] = get_site_url(); 104 119 105 $affiliate_code = leadin_get_affiliate_code();106 $signup_url= LEADIN_SIGNUP_BASE_URL . '/signup/wordpress?';120 $affiliate_code = leadin_get_affiliate_code(); 121 $signup_url = LEADIN_SIGNUP_BASE_URL . '/signup/wordpress?'; 107 122 108 if (LEADIN_SIGNUP_BASE_URL !== LEADIN_BASE_URL) {109 $signup_params['redirectBaseUrl'] = LEADIN_BASE_URL;110 }123 if ( LEADIN_SIGNUP_BASE_URL !== LEADIN_BASE_URL ) { 124 $signup_params['redirectBaseUrl'] = LEADIN_BASE_URL; 125 } 111 126 112 if ($affiliate_code) {113 $signup_url.= leadin_http_build_query( $signup_params );114 $destination_url = rawurlencode($signup_url);115 return "https://mbsy.co/$affiliate_code?url=$destination_url";116 }127 if ( $affiliate_code ) { 128 $signup_url .= leadin_http_build_query( $signup_params ); 129 $destination_url = rawurlencode( $signup_url ); 130 return "https://mbsy.co/$affiliate_code?url=$destination_url"; 131 } 117 132 118 $signup_params['utm_source'] = 'wordpress-plugin';119 $signup_params['utm_medium'] = 'marketplaces';133 $signup_params['utm_source'] = 'wordpress-plugin'; 134 $signup_params['utm_medium'] = 'marketplaces'; 120 135 121 return $signup_url . leadin_http_build_query( $signup_params );136 return $signup_url . leadin_http_build_query( $signup_params ); 122 137 } 123 138 139 /** 140 * Return ajax url 141 */ 124 142 function leadin_get_ajax_url() { 125 $ajaxUrl = get_admin_url( get_current_blog_id(), 'admin-ajax.php' );126 return parse_url( $ajaxUrl )['path'];143 $ajax_url = get_admin_url( get_current_blog_id(), 'admin-ajax.php' ); 144 return parse_url( $ajax_url )['path']; 127 145 } 128 146 … … 134 152 */ 135 153 function leadin_get_iframe_src() { 136 $portal_id = get_option('leadin_portalId');137 $regex = "/^leadin(_|$)/";138 $page= null;154 $portal_id = get_option( 'leadin_portalId' ); 155 $regex = '/^leadin(_|$)/'; 156 $page = null; 139 157 140 if ( isset( $_GET['page'] ) ) {141 $page = $_GET["page"];142 }158 if ( isset( $_GET['page'] ) ) { 159 $page = wp_unslash( $_GET['page'] ); 160 } 143 161 144 if ( empty( $portal_id ) ) {145 return leadin_get_signup_url();146 }162 if ( empty( $portal_id ) ) { 163 return leadin_get_signup_url(); 164 } 147 165 148 $pathname = preg_replace( $regex, "", $page );149 return LEADIN_BASE_URL . "/hubspot-plugin/$portal_id/$pathname?" . leadin_get_query_params();166 $pathname = preg_replace( $regex, '', $page ); 167 return LEADIN_BASE_URL . "/hubspot-plugin/$portal_id/$pathname?" . leadin_get_query_params(); 150 168 } 151 169 170 /** 171 * Get background iframe src 172 */ 152 173 function leadin_get_background_iframe_src() { 153 $portal_id = get_option('leadin_portalId');154 $portal_id_url = '';174 $portal_id = get_option( 'leadin_portalId' ); 175 $portal_id_url = ''; 155 176 156 if ( ! empty( $portal_id ) ) {157 $portal_id_url = "/$portal_id";158 }177 if ( ! empty( $portal_id ) ) { 178 $portal_id_url = "/$portal_id"; 179 } 159 180 160 return LEADIN_BASE_URL . "/hubspot-plugin$portal_id_url/background?" . leadin_get_query_params();181 return LEADIN_BASE_URL . "/hubspot-plugin$portal_id_url/background?" . leadin_get_query_params(); 161 182 } 162 183 163 function leadin_get_form_shortcode($form_id) { 164 $portal_id = get_option('leadin_portalId'); 165 return "[hubspot type=form portal=$portal_id id=$form_id]"; 184 /** 185 * Get shortcode for form 186 * 187 * @param string $form_id form's id. 188 */ 189 function leadin_get_form_shortcode( $form_id ) { 190 $portal_id = get_option( 'leadin_portalId' ); 191 return "[hubspot type=form portal=$portal_id id=$form_id]"; 166 192 } -
leadin/trunk/inc/leadin-mark-outdated.php
r2093795 r2112768 1 1 <?php 2 2 if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { 3 wp_die( '', '', 403 );3 wp_die( '', '', 403 ); 4 4 } 5 5 6 6 if ( is_admin() ) { 7 add_action( 'wp_ajax_leadin_mark_outdated', 'mark_outdated_ajax' );7 add_action( 'wp_ajax_leadin_mark_outdated', 'leadin_mark_outdated_ajax' ); 8 8 } 9 9 10 function mark_outdated_ajax() { 11 update_option( 'leadin_outdated_version', true ); 12 wp_die( '{"message": "Success!"}' ); 10 /** 11 * AJAX handler to set the current version as outdated 12 */ 13 function leadin_mark_outdated_ajax() { 14 update_option( 'leadin_outdated_version', true ); 15 wp_die( '{"message": "Success!"}' ); 13 16 } -
leadin/trunk/inc/leadin-registration.php
r2077791 r2112768 1 1 <?php 2 2 if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { 3 wp_die( '', '', 403 );3 wp_die( '', '', 403 ); 4 4 } 5 5 6 6 if ( is_admin() ) { 7 add_action( 'wp_ajax_leadin_registration_ajax', 'leadin_registration_ajax' ); // Call when user logged in 7 add_action( 'wp_ajax_leadin_registration_ajax', 'leadin_registration_ajax' ); 8 8 } 9 9 10 /** 11 * AJAX handler to connect portal to wordpress 12 */ 10 13 function leadin_registration_ajax() { 11 delete_option( 'leadin_hapikey' );12 $existingPortalId = get_option( 'leadin_portalId' );14 delete_option( 'leadin_hapikey' ); 15 $existing_portal_id = get_option( 'leadin_portalId' ); 13 16 14 if ( ! empty( $existingPortalId ) ) {15 wp_die( '{"error": "Registration is already complete for this portal"}', '', 400 );16 }17 if ( ! empty( $existing_portal_id ) ) { 18 wp_die( '{"error": "Registration is already complete for this portal"}', '', 400 ); 19 } 17 20 18 $requestBody = file_get_contents( 'php://input' );19 $data = json_decode( $requestBody, true );21 $request_body = file_get_contents( 'php://input' ); 22 $data = json_decode( $request_body, true ); 20 23 21 $newPortalId = $data['portalId'];24 $new_portal_id = $data['portalId']; 22 25 23 if ( empty( $newPortalId ) ) { 24 error_log( 'Registration error' ); 26 if ( empty( $new_portal_id ) ) { 27 $error_body = array( 28 'error' => 'Registration missing required fields', 29 'request' => $request_body, 30 ); 25 31 26 $errorBody = array( 27 "error" => "Registration missing required fields", 28 "request" => $requestBody, 29 ); 32 wp_die( json_encode( $error_body ), '', 400 ); 33 } 30 34 31 wp_die( json_encode( $errorBody ), '', 400 ); 32 } 35 $user_id = $data['userId']; 36 $access_token = $data['accessToken']; 37 $refresh_token = $data['refreshToken']; 38 $connection_time_in_ms = $data['connectionTimeInMs']; 33 39 34 $userId = $data['userId']; 35 $accessToken = $data['accessToken']; 36 $refreshToken = $data['refreshToken']; 37 $connectionTimeInMs = $data['connectionTimeInMs']; 40 add_option( 'leadin_portalId', $new_portal_id ); 41 add_option( 'leadin_userId', $user_id ); 42 add_option( 'leadin_accessToken', $access_token ); 43 add_option( 'leadin_refreshToken', $refresh_token ); 44 add_option( 'leadin_connectionTimeInMs', $connection_time_in_ms ); 38 45 39 add_option( 'leadin_portalId', $newPortalId ); 40 add_option( 'leadin_userId', $userId); 41 add_option( 'leadin_accessToken', $accessToken); 42 add_option( 'leadin_refreshToken', $refreshToken); 43 add_option( 'leadin_connectionTimeInMs', $connectionTimeInMs); 44 45 wp_die( '{"message": "Success!"}' ); 46 wp_die( '{"message": "Success!"}' ); 46 47 } -
leadin/trunk/inc/leadin-wp-get.php
r2093795 r2112768 1 1 <?php 2 2 if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { 3 wp_die( '', '', 403 );3 wp_die( '', '', 403 ); 4 4 } 5 5 6 6 if ( is_admin() ) { 7 add_action( 'wp_ajax_leadin_get_portal', 'leadin_get_portal_ajax' );8 add_action( 'wp_ajax_leadin_get_domain', 'leadin_get_domain_ajax' );7 add_action( 'wp_ajax_leadin_get_portal', 'leadin_get_portal_ajax' ); 8 add_action( 'wp_ajax_leadin_get_domain', 'leadin_get_domain_ajax' ); 9 9 } 10 10 11 /** 12 * AJAX handler to get the current connected portal id 13 */ 11 14 function leadin_get_portal_ajax() { 12 $portal_id = get_option( 'leadin_portalId' );13 wp_die( json_encode( array( 'portalId' => $portal_id ) ) );15 $portal_id = get_option( 'leadin_portalId' ); 16 wp_die( json_encode( array( 'portalId' => $portal_id ) ) ); 14 17 } 15 18 19 /** 20 * AJAX handler to get the domain of the WordPress site 21 */ 16 22 function leadin_get_domain_ajax() { 17 $domain = get_site_url();18 wp_die( json_encode( array( 'domain' => $domain ) ) );23 $domain = get_site_url(); 24 wp_die( json_encode( array( 'domain' => $domain ) ) ); 19 25 } -
leadin/trunk/js/app.js
r2106268 r2112768 1 1 import Raven, { configureRaven } from './lib/Raven'; 2 import { initChatflows } from './chatflows';2 import { addExternalLinks } from './menu'; 3 3 import { portalId } from './constants/leadinConfig'; 4 4 import { initInterframe } from './lib/Interframe'; … … 16 16 } 17 17 18 jQuery(document).ready( initChatflows);18 jQuery(document).ready(addExternalLinks); 19 19 } 20 20 -
leadin/trunk/js/constants/themes.js
r2106268 r2112768 492 492 labelTextSize: '18px', 493 493 submitFontColor: '#ffffff', 494 submitColor: '#00 66cc',495 }, 496 chatStyle: { 497 accentColor: '#00 66cc',498 }, 499 onScrollLeadFlowStyle: { 500 color: '#00 66cc',501 }, 502 onExitLeadFlowStyle: { 503 color: '#00 66cc',494 submitColor: '#000000', 495 }, 496 chatStyle: { 497 accentColor: '#000000', 498 }, 499 onScrollLeadFlowStyle: { 500 color: '#000000', 501 }, 502 onExitLeadFlowStyle: { 503 color: '#000000', 504 504 }, 505 505 }, -
leadin/trunk/leadin.php
r2106268 r2112768 4 4 * Plugin URI: http://www.hubspot.com/integrations/wordpress 5 5 * Description: HubSpot’s official WordPress plugin allows you to add forms, popups, and live chat to your website and integrate with the best WordPress CRM. 6 * Version: 7.5. 26 * Version: 7.5.3 7 7 * Author: HubSpot 8 8 * Author URI: http://www.hubspot.com … … 29 29 // ============================================= 30 30 if ( ! defined( 'LEADIN_BASE_PATH' ) ) { 31 define( 'LEADIN_BASE_PATH', __FILE__ );31 define( 'LEADIN_BASE_PATH', __FILE__ ); 32 32 } 33 33 34 34 if ( ! defined( 'LEADIN_PATH' ) ) { 35 define( 'LEADIN_PATH', untrailingslashit( plugins_url( '', LEADIN_BASE_PATH ) ) );35 define( 'LEADIN_PATH', untrailingslashit( plugins_url( '', LEADIN_BASE_PATH ) ) ); 36 36 } 37 37 38 38 if ( ! defined( 'LEADIN_PLUGIN_DIR' ) ) { 39 define( 'LEADIN_PLUGIN_DIR', untrailingslashit( dirname( LEADIN_BASE_PATH ) ) );39 define( 'LEADIN_PLUGIN_DIR', untrailingslashit( dirname( LEADIN_BASE_PATH ) ) ); 40 40 } 41 41 42 42 if ( ! defined( 'LEADIN_PLUGIN_SLUG' ) ) { 43 define( 'LEADIN_PLUGIN_SLUG', basename( dirname( LEADIN_BASE_PATH ) ) );43 define( 'LEADIN_PLUGIN_SLUG', basename( dirname( LEADIN_BASE_PATH ) ) ); 44 44 } 45 45 46 46 if ( file_exists( LEADIN_PLUGIN_DIR . '/inc/leadin-overrides.php' ) ) { 47 require_once LEADIN_PLUGIN_DIR . '/inc/leadin-overrides.php';47 require_once LEADIN_PLUGIN_DIR . '/inc/leadin-overrides.php'; 48 48 } 49 49 50 50 if ( ! defined( 'LEADIN_REQUIRED_WP_VERSION' ) ) { 51 define( 'LEADIN_REQUIRED_WP_VERSION', '4.0' );51 define( 'LEADIN_REQUIRED_WP_VERSION', '4.0' ); 52 52 } 53 53 54 54 if ( ! defined( 'LEADIN_REQUIRED_PHP_VERSION' ) ) { 55 define( 'LEADIN_REQUIRED_PHP_VERSION', '5.6' );55 define( 'LEADIN_REQUIRED_PHP_VERSION', '5.6' ); 56 56 } 57 57 58 58 if ( ! defined( 'LEADIN_DB_VERSION' ) ) { 59 define( 'LEADIN_DB_VERSION', '2.2.5' );59 define( 'LEADIN_DB_VERSION', '2.2.5' ); 60 60 } 61 61 62 62 if ( ! defined( 'LEADIN_PLUGIN_VERSION' ) ) { 63 define( 'LEADIN_PLUGIN_VERSION', '7.5.2' );63 define( 'LEADIN_PLUGIN_VERSION', '7.5.3' ); 64 64 } 65 65 66 66 if ( ! defined( 'LEADIN_SOURCE' ) ) { 67 define( 'LEADIN_SOURCE', 'leadin.com' );67 define( 'LEADIN_SOURCE', 'leadin.com' ); 68 68 } 69 69 70 70 if ( ! defined( 'LEADIN_SCRIPT_LOADER_DOMAIN' ) ) { 71 define( 'LEADIN_SCRIPT_LOADER_DOMAIN', 'js.hs-scripts.com' );71 define( 'LEADIN_SCRIPT_LOADER_DOMAIN', 'js.hs-scripts.com' ); 72 72 } 73 73 74 74 if ( ! defined( 'LEADIN_FORMS_SCRIPT_URL' ) ) { 75 define( 'LEADIN_FORMS_SCRIPT_URL', '//js.hsforms.net/forms/v2.js' );75 define( 'LEADIN_FORMS_SCRIPT_URL', '//js.hsforms.net/forms/v2.js' ); 76 76 } 77 77 78 78 if ( ! defined( 'LEADIN_FORMS_PAYLOAD' ) ) { 79 define( 'LEADIN_FORMS_PAYLOAD', '' );79 define( 'LEADIN_FORMS_PAYLOAD', '' ); 80 80 } 81 81 82 82 if ( ! defined( 'LEADIN_ENV' ) ) { 83 define( 'LEADIN_ENV', 'prod' );83 define( 'LEADIN_ENV', 'prod' ); 84 84 } 85 85 86 86 if ( ! defined( 'LEADIN_BASE_URL' ) ) { 87 define( 'LEADIN_BASE_URL', 'https://app.hubspot.com' );87 define( 'LEADIN_BASE_URL', 'https://app.hubspot.com' ); 88 88 } 89 89 90 90 if ( ! defined( 'LEADIN_SIGNUP_BASE_URL' ) ) { 91 define( 'LEADIN_SIGNUP_BASE_URL', LEADIN_BASE_URL );91 define( 'LEADIN_SIGNUP_BASE_URL', LEADIN_BASE_URL ); 92 92 } 93 93 … … 96 96 // ============================================= 97 97 if ( file_exists( LEADIN_PLUGIN_DIR . '/inc/leadin-constants.php' ) ) { 98 require_once LEADIN_PLUGIN_DIR . '/inc/leadin-constants.php';98 require_once LEADIN_PLUGIN_DIR . '/inc/leadin-constants.php'; 99 99 } 100 100 … … 104 104 require_once LEADIN_PLUGIN_DIR . '/inc/leadin-wp-get.php'; 105 105 require_once LEADIN_PLUGIN_DIR . '/inc/leadin-mark-outdated.php'; 106 require_once LEADIN_PLUGIN_DIR . '/admin/ leadin-admin.php';106 require_once LEADIN_PLUGIN_DIR . '/admin/class-leadinadmin.php'; 107 107 108 108 require_once LEADIN_PLUGIN_DIR . '/inc/class-leadin.php'; … … 114 114 /** 115 115 * Activate the plugin 116 */ 117 function activate_leadin( $network_wide ) { 118 119 // Check activation on entire network or one blog 120 if ( is_multisite() && $network_wide ) { 121 global $wpdb; 122 123 // Get this so we can switch back to it later 124 $current_blog = $wpdb->blogid; 125 // For storing the list of activated blogs 126 $activated = array(); 127 128 // Get all blogs in the network and activate plugin on each one 129 $blog_ids = $wpdb->get_col( 130 "SELECT blog_id FROM $wpdb->blogs" 131 ); 132 foreach ( $blog_ids as $blog_id ) { 133 switch_to_blog( $blog_id ); 134 add_leadin_defaults(); 135 $activated[] = $blog_id; 136 } 137 138 // Switch back to the current blog 139 switch_to_blog( $current_blog ); 140 141 // Store the array for a later function 142 update_site_option( 'leadin_activated', $activated ); 143 } else { 144 add_leadin_defaults(); 145 } 116 * 117 * @param bool $network_wide network_wide. 118 */ 119 function leadin_activate( $network_wide ) { 120 // Check activation on entire network or one blog. 121 if ( is_multisite() && $network_wide ) { 122 global $wpdb; 123 124 // Get this so we can switch back to it later. 125 $current_blog = $wpdb->blogid; 126 // For storing the list of activated blogs. 127 $activated = array(); 128 129 // Get all blogs in the network and activate plugin on each one. 130 $blog_ids = $wpdb->get_col( 131 "SELECT blog_id FROM $wpdb->blogs" 132 ); 133 foreach ( $blog_ids as $blog_id ) { 134 switch_to_blog( $blog_id ); 135 leadin_add_defaults(); 136 $activated[] = $blog_id; 137 } 138 139 // Switch back to the current blog. 140 switch_to_blog( $current_blog ); 141 142 // Store the array for a later function. 143 update_site_option( 'leadin_activated', $activated ); 144 } else { 145 leadin_add_defaults(); 146 } 146 147 } 147 148 … … 149 150 * Check Leadin installation and set options 150 151 */ 151 function add_leadin_defaults() { 152 global $wpdb; 153 $options = get_option( 'leadin_options' ); 154 155 if ( ( $options['li_installed'] != 1 ) || ( ! is_array( $options ) ) ) { 156 $opt = array( 157 'li_installed' => 1, 158 'leadin_version' => LEADIN_PLUGIN_VERSION, 159 'li_email' => get_bloginfo( 'admin_email' ), 160 'li_updates_subscription' => 1, 161 'onboarding_step' => 1, 162 'onboarding_complete' => 0, 163 'ignore_settings_popup' => 0, 164 'data_recovered' => 1, 165 'delete_flags_fixed' => 1, 166 'beta_tester' => 0, 167 'converted_to_tags' => 1, 168 'names_added_to_contacts' => 1, 169 'affiliate_code' => '', 170 ); 171 172 // Add the Pro flag if this is a pro installation 173 if ( ( defined( 'LEADIN_UTM_SOURCE' ) && LEADIN_UTM_SOURCE != 'leadin%20repo%20plugin' ) || ! defined( 'LEADIN_UTM_SOURCE' ) ) { 174 $opt['pro'] = 1; 175 } 176 177 // this is a hack because multisite doesn't recognize local options using either update_option or update_site_option... 178 if ( is_multisite() ) { 179 $multisite_prefix = ( is_multisite() ? $wpdb->prefix : '' ); 180 $wpdb->query( 181 $wpdb->prepare( 182 " 183 INSERT INTO %soptions 184 ( option_name, option_value ) 185 VALUES ('leadin_options', %s)", 186 $multisite_prefix, 187 serialize( $opt ) 188 ) 189 ); 190 // TODO: Glob settings for multisite 191 } else { 192 update_option( 'leadin_options', $opt ); 193 } 194 } 195 196 setcookie( 'ignore_social_share', '1', 2592000, '/' ); 152 function leadin_add_defaults() { 153 global $wpdb; 154 $options = get_option( 'leadin_options' ); 155 156 if ( ( 1 !== $options['li_installed'] ) || ( ! is_array( $options ) ) ) { 157 $opt = array( 158 'li_installed' => 1, 159 'leadin_version' => LEADIN_PLUGIN_VERSION, 160 'li_email' => get_bloginfo( 'admin_email' ), 161 'li_updates_subscription' => 1, 162 'onboarding_step' => 1, 163 'onboarding_complete' => 0, 164 'ignore_settings_popup' => 0, 165 'data_recovered' => 1, 166 'delete_flags_fixed' => 1, 167 'beta_tester' => 0, 168 'converted_to_tags' => 1, 169 'names_added_to_contacts' => 1, 170 'affiliate_code' => '', 171 ); 172 173 // Add the Pro flag if this is a pro installation. 174 if ( ( defined( 'LEADIN_UTM_SOURCE' ) && 'leadin%20repo%20plugin' !== LEADIN_UTM_SOURCE ) || ! defined( 'LEADIN_UTM_SOURCE' ) ) { 175 $opt['pro'] = 1; 176 } 177 178 // this is a hack because multisite doesn't recognize local options using either update_option or update_site_option... 179 if ( is_multisite() ) { 180 $multisite_prefix = ( is_multisite() ? $wpdb->prefix : '' ); 181 $wpdb->query( 182 $wpdb->prepare( 183 "INSERT INTO %soptions ( option_name, option_value ) VALUES ('leadin_options', %s)", 184 $multisite_prefix, 185 serialize( $opt ) 186 ) 187 ); 188 // TODO: Glob settings for multisite. 189 } else { 190 update_option( 'leadin_options', $opt ); 191 } 192 } 193 194 setcookie( 'ignore_social_share', '1', 2592000, '/' ); 197 195 } 198 196 199 197 /** 200 198 * Deactivate Leadin plugin hook 201 */ 202 function deactivate_leadin( $network_wide ) { 203 if ( is_multisite() && $network_wide ) { 204 global $wpdb; 205 206 // Get this so we can switch back to it later 207 $current_blog = $wpdb->blogid; 208 209 // Get all blogs in the network and activate plugin on each one 210 $blog_ids = $wpdb->get_col( 211 "SELECT blog_id FROM $wpdb->blogs" 212 ); 213 foreach ( $blog_ids as $blog_id ) { 214 switch_to_blog( $blog_id ); 215 } 216 217 // Switch back to the current blog 218 switch_to_blog( $current_blog ); 219 } 220 } 221 222 function activate_leadin_on_new_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) { 223 global $wpdb; 224 225 if ( is_plugin_active_for_network( 'leadin/leadin.php' ) ) { 226 $current_blog = $wpdb->blogid; 227 switch_to_blog( $blog_id ); 228 add_leadin_defaults(); 229 switch_to_blog( $current_blog ); 230 } 231 } 232 233 234 //============================================= 235 // Shortcodes 236 //============================================= 237 function addHubspotShortcode($attributes) { 238 $parsedAttributes = shortcode_atts(array( 239 'type' => NULL, 240 'portal' => NULL, 241 'id' => NULL, 242 ), $attributes); 243 244 if ( 245 !isset($parsedAttributes['type']) || 246 !isset($parsedAttributes['portal']) || 247 !isset($parsedAttributes['id']) 248 ) { 249 return; 250 } 251 252 $portalId = $parsedAttributes['portal']; 253 $id = $parsedAttributes['id']; 254 255 switch ($parsedAttributes['type']) { 256 case 'form': 257 return ' 258 <script charset="utf-8" type="text/javascript" src="'.LEADIN_FORMS_SCRIPT_URL.'"></script> 259 <script> 260 hbspt.forms.create({ 261 portalId: '. $portalId . ', 262 formId: "' . $id . '", 263 shortcode: "wp", 264 ' . LEADIN_FORMS_PAYLOAD . ' 265 }); 266 </script> 267 '; 268 case 'cta': 269 return ' 270 <!--HubSpot Call-to-Action Code --> 271 <span class="hs-cta-wrapper" id="hs-cta-wrapper-' . $id . '"> 272 <span class="hs-cta-node hs-cta-' . $id . '" id="'. $id . '"> 273 <!--[if lte IE 8]> 274 <div id="hs-cta-ie-element"></div> 275 <![endif]--> 276 <a href="https://cta-redirect.hubspot.com/cta/redirect/' . $portalId . '/'. $id . '" > 277 <img class="hs-cta-img" id="hs-cta-img-' . $id . '" style="border-width:0px;" src="https://no-cache.hubspot.com/cta/default/' . $portalId . '/' . $id . '.png" alt="New call-to-action"/> 278 </a> 279 </span> 280 <script charset="utf-8" src="//js.hubspot.com/cta/current.js"></script> 281 <script type="text/javascript"> 282 hbspt.cta.load(' . $portalId . ', \''. $id . '\', {}); 283 </script> 284 </span> 285 <!-- end HubSpot Call-to-Action Code --> 286 '; 287 } 199 * 200 * @param bool $network_wide network_wide. 201 */ 202 function leadin_deactivate( $network_wide ) { 203 if ( is_multisite() && $network_wide ) { 204 global $wpdb; 205 206 // Get this so we can switch back to it later. 207 $current_blog = $wpdb->blogid; 208 209 // Get all blogs in the network and activate plugin on each one. 210 $blog_ids = $wpdb->get_col( 211 "SELECT blog_id FROM $wpdb->blogs" 212 ); 213 foreach ( $blog_ids as $blog_id ) { 214 switch_to_blog( $blog_id ); 215 } 216 217 // Switch back to the current blog. 218 switch_to_blog( $current_blog ); 219 } 220 } 221 222 /** 223 * Handler for wpmu_new_blog 224 * 225 * @param any $blog_id read wpmu_new_blog doc. 226 * @param any $user_id read wpmu_new_blog doc. 227 * @param any $domain read wpmu_new_blog doc. 228 * @param any $path read wpmu_new_blog doc. 229 * @param any $site_id read wpmu_new_blog doc. 230 * @param any $meta read wpmu_new_blog doc. 231 */ 232 function leadin_activate_on_new_blog( $blog_id, $user_id, $domain, $path, $site_id, $meta ) { 233 global $wpdb; 234 235 if ( is_plugin_active_for_network( 'leadin/leadin.php' ) ) { 236 $current_blog = $wpdb->blogid; 237 switch_to_blog( $blog_id ); 238 leadin_add_defaults(); 239 switch_to_blog( $current_blog ); 240 } 241 } 242 243 /** 244 * Parse shortcode 245 * 246 * @param array $attributes Shortcode attributes. 247 */ 248 function leadin_add_hubspot_shortcode( $attributes ) { 249 $parsed_attributes = shortcode_atts( 250 array( 251 'type' => null, 252 'portal' => null, 253 'id' => null, 254 ), 255 $attributes 256 ); 257 258 if ( 259 ! isset( $parsed_attributes['type'] ) || 260 ! isset( $parsed_attributes['portal'] ) || 261 ! isset( $parsed_attributes['id'] ) 262 ) { 263 return; 264 } 265 266 $portal_id = $parsed_attributes['portal']; 267 $id = $parsed_attributes['id']; 268 269 switch ( $parsed_attributes['type'] ) { 270 case 'form': 271 return ' 272 <' . 'script charset="utf-8" type="text/javascript" src="' . LEADIN_FORMS_SCRIPT_URL . '"></script> 273 <script> 274 hbspt.forms.create({ 275 portalId: ' . $portal_id . ', 276 formId: "' . $id . '", 277 shortcode: "wp", 278 ' . LEADIN_FORMS_PAYLOAD . ' 279 }); 280 </script> 281 '; 282 case 'cta': 283 return ' 284 <!--HubSpot Call-to-Action Code --> 285 <span class="hs-cta-wrapper" id="hs-cta-wrapper-' . $id . '"> 286 <span class="hs-cta-node hs-cta-' . $id . '" id="' . $id . '"> 287 <!--[if lte IE 8]> 288 <div id="hs-cta-ie-element"></div> 289 <![endif]--> 290 <a href="https://cta-redirect.hubspot.com/cta/redirect/' . $portal_id . '/' . $id . '" > 291 <img class="hs-cta-img" id="hs-cta-img-' . $id . '" style="border-width:0px;" src="https://no-cache.hubspot.com/cta/default/' . $portal_id . '/' . $id . '.png" alt="New call-to-action"/> 292 </a> 293 </span> 294 <' . 'script charset="utf-8" src="//js.hubspot.com/cta/current.js"></script> 295 <script type="text/javascript"> 296 hbspt.cta.load(' . $portal_id . ', \'' . $id . '\', {}); 297 </script> 298 </span> 299 <!-- end HubSpot Call-to-Action Code --> 300 '; 301 } 288 302 } 289 303 … … 291 305 * Checks the stored database version against the current data version + updates if needed 292 306 */ 293 function leadin_init() 294 { 295 load_plugin_textdomain( 'leadin', false, '/leadin/languages' ); 296 $leadin_wp = new WPLeadIn(); 297 add_shortcode('hubspot', 'addHubspotShortcode'); 298 } 299 307 function leadin_init() { 308 load_plugin_textdomain( 'leadin', false, '/leadin/languages' ); 309 $leadin_wp = new Leadin(); 310 add_shortcode( 'hubspot', 'leadin_add_hubspot_shortcode' ); 311 } 300 312 301 313 add_action( 'plugins_loaded', 'leadin_init', 14 ); 302 314 303 315 if ( is_admin() ) { 304 // Activate + install Leadin 305 register_activation_hook( __FILE__, 'activate_leadin' );306 307 // Deactivate Leadin 308 register_deactivation_hook( __FILE__, 'deactivate_leadin' );309 310 // Activate on newly created wpmu blog 311 add_action( 'wpmu_new_blog', 'activate_leadin_on_new_blog', 10, 6 );312 } 313 314 316 // Activate + install Leadin. 317 register_activation_hook( __FILE__, 'leadin_activate' ); 318 319 // Deactivate Leadin. 320 register_deactivation_hook( __FILE__, 'leadin_deactivate' ); 321 322 // Activate on newly created wpmu blog. 323 add_action( 'wpmu_new_blog', 'leadin_activate_on_new_blog', 10, 6 ); 324 } 325 326 -
leadin/trunk/readme.txt
r2106268 r2112768 3 3 License: GPLv3 4 4 License URI: http://www.gnu.org/licenses/gpl.html 5 Tags: forms, popup, live chat, contact form, crm, newsletter, marketing, lead generation, hubspot, mailchimp, constant contact5 Tags: hubspot, crm, forms, popup, live chat, email, contact form, newsletter, marketing, lead generation, mailchimp, constant contact 6 6 Requires at least: 4.0 7 7 Tested up to: 5.2 8 8 Requires PHP: 5.6 9 Stable tag: 7.5. 29 Stable tag: 7.5.3 10 10 11 HubSpot All-In-One Marketing, is a free all-in-one marketing plugin that allows you to easily use HubSpot forms, popups, and live chat on your WordPress site . If you’re already a HubSpot user, the plugin lets you connect your HubSpot account to your website without any code.11 HubSpot All-In-One Marketing, is a free all-in-one marketing plugin that allows you to easily use HubSpot forms, popups, and live chat on your WordPress site and create and send email campaigns. If you’re already a HubSpot user, the plugin lets you connect your HubSpot account to your website without any code. 12 12 13 13 == Description == 14 14 15 *HubSpot All-In-One Marketing is the ultimate free marketing plugin for WordPress if you want to grow your email list, generate leads, and manage all your contacts insideHubSpot’s free CRM.*15 *HubSpot All-In-One Marketing is the ultimate free plugin for WordPress if you want to grow your email list, manage your contacts, and send marketing emails all through HubSpot’s free CRM.* 16 16 17 The free plugin includes lead capture tools like forms, popups, live chat, and an integrated free contact database (CRM). All these features work immediately with no developer help needed.17 The free plugin includes lead capture tools like forms, popups, live chat, and an integrated free contact database (CRM). Once you grow your email list you can also send email campaigns and manage your digital ads through HubSpot. All these features work immediately with no developer help needed. 18 18 19 19 HubSpot All-In-One Marketing automatically captures form submissions from your site and adds them to the fully integrated WordPress CRM, even if they come from a different tool. … … 36 36 *Live Chat & Chatbots: Let your site visitors talk to you* 37 37 38 HubSpot allows you to embed a <a href="https://www.hubspot.com/products/crm/live-chat?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">free live chat</a> module to your website your websiteand let site visitors chat with you. Using the plugin, you can set up the following WordPress live chat modules:38 HubSpot allows you to embed a <a href="https://www.hubspot.com/products/crm/live-chat?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">free live chat</a> module to your website and let site visitors chat with you. Using the plugin, you can set up the following WordPress live chat modules: 39 39 40 Support live chat: Answer questions your customers might have about your business through live chat 41 Sales live chat: Help answer questions your potential customers might have through live chat 42 Automated chatbot: Set up an automated chatbot to respond to your website visitors when you aren’t online to respond to live chat messages 40 - Support live chat: Answer questions your customers might have about your business through live chat 41 - Sales live chat: Help answer questions your potential customers might have through live chat 42 - Automated chatbot: Set up an automated chatbot to respond to your website visitors when you aren’t online to respond to live chat messages 43 44 *Email Marketing* 45 46 Send marketing emails to your contacts. Select an email design from our template library and use our drag and drop email editor to craft and send the perfect email. Then analyze your email performance to see how each contact interacted with your email. 43 47 44 48 *Simple Email Automation* 45 49 46 Send an automated email when someone fills out a form, submits a popup form, or sends a message on live chat. Automate emails are helpful for engaging with your subscribers and customers at the time that matters most: when they’re engaging with you. All emails you send including open and click rates, will be automatically logged in the integrated WordPress CRM so you can see exactly who opens and clicks your emails. 47 50 Send an automated email when someone fills out a form, submits a popup form, or sends a message on live chat. Automated emails are helpful for engaging with your subscribers and customers at the time that matters most: when they’re engaging with you. All emails you send including open and click rates, will be automatically logged in the integrated WordPress CRM so you can see exactly who opens and clicks your emails. 48 51 49 52 *Fully Integrated Customer Relationship Management* … … 61 64 - <a href="https://www.hubspot.com/products/marketing/lead-flows?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">Popups</a>: Add a user-friendly popup form to your WordPress website with ease using HubSpot’s form builder. 62 65 - <a href="https://www.hubspot.com/products/crm/live-chat?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">Live Chat</a>: Add a live chat widget to your WordPress site so visitors can chat with you. 66 - <a href="https://www.hubspot.com/products/marketing/email?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">Email Marketing</a>: Use the drag and drop editor to design and send email campaigns. 63 67 - Simple Email Automation: Send an automated email whenever someone fills out a form or popup or sends a message on live chat. 64 68 - <a href="https://www.hubspot.com/products/crm?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">WordPress CRM</a>: A single simple database for contact management. … … 66 70 67 71 *What do people have to say about HubSpot All-In-One Marketing - Forms, Popups, Live Chat?* 72 73 > "I have been in sales and marketing for over 12 years and literally have NEVER liked one of the contact management tools that I have used... and then HubSpot came along and waved their magic sales wand and made a contact management tool that is actually sales-minded, works great, and integrates seamlessly with WordPress." - Caylin White, Head Marketing Buff, WP Buffs 68 74 69 75 > “HubSpot educates marketers beyond just the anonymous analytics they get from Google Analytics. Instead, it digs down to individual users.” – Michael Shoup, Founder / CEO, 12South Marketing … … 111 117 = What does the plugin do? = 112 118 113 HubSpot All-In-One Marketing allows you to use HubSpot forms, popups, and live chat on your WordPress website. This all-in-one marketing plugin gives you all the tools you need to grow your email list .119 HubSpot All-In-One Marketing allows you to use HubSpot forms, popups, and live chat on your WordPress website. This all-in-one marketing plugin gives you all the tools you need to grow your email list and send email campaigns. 114 120 115 121 = What is HubSpot? = 116 122 117 <a href="https://hubspot.com?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">HubSpot</a> a>provides a suite of marketing, sales, customer service, and CRM products to help you grow your business including.123 <a href="https://hubspot.com?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">HubSpot</a> provides a suite of marketing, sales, customer service, and CRM products to help you grow your business including. 118 124 119 125 = Who should use HubSpot All-In-One Marketing? = … … 150 156 <a href="https://knowledge.hubspot.com/getting-started-with-the-hubspot-crm-free/lead-flows-and-collected-forms-faq?utm_source=wordpress-plugin-listing&utm_campaign=wordpress&utm_medium=marketplaces" target="_blank">Check out this help article</a> for more details. 151 157 158 **What is available in the free email marketing tool?** 159 HubSpot’s free email marketing tool offers 2000 email sends per calendar month, with HubSpot branding. 160 152 161 = My question is not listed. = 153 162 … … 165 174 == Changelog == 166 175 167 - Current version: 7.5. 2168 - Current version release: 2019-06- 14176 - Current version: 7.5.3 177 - Current version release: 2019-06-26 169 178 170 = 7.5.2 (2019.06.14) = 171 - Add webpack and use ES6 172 - Show "complete your signup" banner for WPEngine themes 173 - Auto-generate assets and update styles for WPEngine themes 174 - Handle messages timeout errors 175 - Fix navigation in single page app 176 - Enable non-HubSpot forms by default 177 - Add forms tab in settings 178 - Add form builder to WordPress 179 = 7.5.3 (2019.06.26) = 180 - Rename "chatflow" to "live chat" 181 - Update readme.txt 182 - Update banners 183 - Fix themes colors 184 - Refactor code style 179 185 180 186 = 7.5.0 (2019.05.22) = -
leadin/trunk/scripts/leadin.js
r2106268 r2112768 1 !function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=8)}([function(e,t,o){(function(t){var r=o(3),n="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},a=n.Raven,l=new r;l.noConflict=function(){return n.Raven=a,l},l.afterLoad(),e.exports=l}).call(this,o(1))},function(e,t){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(e){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,o){(function(t){var o="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function r(e){return void 0===e}function n(e){return"[object String]"===Object.prototype.toString.call(e)}function a(){try{return new ErrorEvent(""),!0}catch(e){return!1}}function l(e,t){var o,n;if(r(e.length))for(o in e)i(e,o)&&t.call(null,o,e[o]);else if(n=e.length)for(o=0;o<n;o++)t.call(null,o,e[o])}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e){var t,o,r,a,l,i=[];if(!e||!e.tagName)return"";if(i.push(e.tagName.toLowerCase()),e.id&&i.push("#"+e.id),(t=e.className)&&n(t))for(o=t.split(/\s+/),l=0;l<o.length;l++)i.push("."+o[l]);var s=["type","name","title","alt"];for(l=0;l<s.length;l++)r=s[l],(a=e.getAttribute(r))&&i.push("["+r+'="'+a+'"]');return i.join("")}function c(e,t){return!!(!!e^!!t)}function u(e,t){if(c(e,t))return!1;var o,r,n=e.frames,a=t.frames;if(n.length!==a.length)return!1;for(var l=0;l<n.length;l++)if(o=n[l],r=a[l],o.filename!==r.filename||o.lineno!==r.lineno||o.colno!==r.colno||o.function!==r.function)return!1;return!0}e.exports={isObject:function(e){return"object"==typeof e&&null!==e},isError:function(e){switch({}.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}},isErrorEvent:function(e){return a()&&"[object ErrorEvent]"==={}.toString.call(e)},isUndefined:r,isFunction:function(e){return"function"==typeof e},isString:n,isEmptyObject:function(e){for(var t in e)return!1;return!0},supportsErrorEvent:a,wrappedCallback:function(e){return function(t,o){var r=e(t)||t;return o&&o(r)||r}},each:l,objectMerge:function(e,t){return t?(l(t,function(t,o){e[t]=o}),e):e},truncate:function(e,t){return!t||e.length<=t?e:e.substr(0,t)+"…"},objectFrozen:function(e){return!!Object.isFrozen&&Object.isFrozen(e)},hasKey:i,joinRegExp:function(e){for(var t,o=[],r=0,a=e.length;r<a;r++)n(t=e[r])?o.push(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):t&&t.source&&o.push(t.source);return new RegExp(o.join("|"),"i")},urlencode:function(e){var t=[];return l(e,function(e,o){t.push(encodeURIComponent(e)+"="+encodeURIComponent(o))}),t.join("&")},uuid4:function(){var e=o.crypto||o.msCrypto;if(!r(e)&&e.getRandomValues){var t=new Uint16Array(8);e.getRandomValues(t),t[3]=4095&t[3]|16384,t[4]=16383&t[4]|32768;var n=function(e){for(var t=e.toString(16);t.length<4;)t="0"+t;return t};return n(t[0])+n(t[1])+n(t[2])+n(t[3])+n(t[4])+n(t[5])+n(t[6])+n(t[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},htmlTreeAsString:function(e){for(var t,o=[],r=0,n=0,a=" > ".length;e&&r++<5&&!("html"===(t=s(e))||r>1&&n+o.length*a+t.length>=80);)o.push(t),n+=t.length,e=e.parentNode;return o.reverse().join(" > ")},htmlElementAsString:s,isSameException:function(e,t){return!c(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&u(e.stacktrace,t.stacktrace))},isSameStacktrace:u,parseUrl:function(e){var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};var o=t[6]||"",r=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+o+r}},fill:function(e,t,o,r){var n=e[t];e[t]=o(n),r&&r.push([e,t,n])}}}).call(this,o(1))},function(e,t,o){(function(t){var r=o(4),n=o(5),a=o(6),l=o(2),i=l.isError,s=l.isObject,c=(s=l.isObject,l.isErrorEvent),u=l.isUndefined,f=l.isFunction,p=l.isString,d=l.isEmptyObject,h=l.each,b=l.objectMerge,m=l.truncate,y=l.objectFrozen,g=l.hasKey,v=l.joinRegExp,_=l.urlencode,S=l.uuid4,x=l.htmlTreeAsString,C=l.isSameException,w=l.isSameStacktrace,E=l.parseUrl,F=l.fill,T=o(7).wrapMethod,k="source protocol user pass host port path".split(" "),L=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function O(){return+new Date}var j="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},R=j.document,I=j.navigator;function B(e,t){return f(t)?function(o){return t(o,e)}:t}function M(){for(var e in this._hasJSON=!("object"!=typeof JSON||!JSON.stringify),this._hasDocument=!u(R),this._hasNavigator=!u(I),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],collectWindowErrors:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=j.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=O(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=j.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}M.prototype={VERSION:"3.19.1",debug:!1,TraceKit:r,config:function(e,t){var o=this;if(o._globalServer)return this._logDebug("error","Error: Raven has already been configured"),o;if(!e)return o;var n=o._globalOptions;t&&h(t,function(e,t){"tags"===e||"extra"===e||"user"===e?o._globalContext[e]=t:n[e]=t}),o.setDSN(e),n.ignoreErrors.push(/^Script error\.?$/),n.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),n.ignoreErrors=v(n.ignoreErrors),n.ignoreUrls=!!n.ignoreUrls.length&&v(n.ignoreUrls),n.whitelistUrls=!!n.whitelistUrls.length&&v(n.whitelistUrls),n.includePaths=v(n.includePaths),n.maxBreadcrumbs=Math.max(0,Math.min(n.maxBreadcrumbs||100,100));var a={xhr:!0,console:!0,dom:!0,location:!0},l=n.autoBreadcrumbs;"[object Object]"==={}.toString.call(l)?l=b(a,l):!1!==l&&(l=a),n.autoBreadcrumbs=l;var i={tryCatch:!0},s=n.instrument;return"[object Object]"==={}.toString.call(s)?s=b(i,s):!1!==s&&(s=i),n.instrument=s,r.collectWindowErrors=!!n.collectWindowErrors,o},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(r.report.subscribe(function(){e._handleOnErrorStackInfo.apply(e,arguments)}),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),o=t.path.lastIndexOf("/"),r=t.path.substr(1,o);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(o+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+r+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,o){return f(e)&&(o=t||[],t=e,e=void 0),this.wrap(e,t).apply(this,o)},wrap:function(e,t,o){var r=this;if(u(t)&&!f(e))return e;if(f(e)&&(t=e,e=void 0),!f(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function n(){var n=[],a=arguments.length,l=!e||e&&!1!==e.deep;for(o&&f(o)&&o.apply(this,arguments);a--;)n[a]=l?r.wrap(e,arguments[a]):arguments[a];try{return t.apply(this,n)}catch(t){throw r._ignoreNextOnError(),r.captureException(t,e),t}}for(var a in t)g(t,a)&&(n[a]=t[a]);return n.prototype=t.prototype,t.__raven_wrapper__=n,n.__raven__=!0,n.__inner__=t,n},uninstall:function(){return r.report.uninstall(),this._restoreBuiltIns(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},captureException:function(e,t){var o=!i(e),n=!c(e),a=c(e)&&!e.error;if(o&&n||a)return this.captureMessage(e,b({trimHeadFrames:1,stacktrace:!0},t));c(e)&&(e=e.error),this._lastCapturedException=e;try{var l=r.computeStackTrace(e);this._handleStackInfo(l,t)}catch(t){if(e!==t)throw t}return this},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var o,n=b({message:e+""},t=t||{});try{throw new Error(e)}catch(e){o=e}o.name=null;var a=r.computeStackTrace(o),l=a.stack[1],i=l&&l.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(i))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(i))){if(this._globalOptions.stacktrace||t&&t.stacktrace){t=b({fingerprint:e,trimHeadFrames:(t.trimHeadFrames||0)+1},t);var s=this._prepareFrames(a,t);n.stacktrace={frames:s.reverse()}}return this._send(n),this}}},captureBreadcrumb:function(e){var t=b({timestamp:O()/1e3},e);if(f(this._globalOptions.breadcrumbCallback)){var o=this._globalOptions.breadcrumbCallback(t);if(s(o)&&!d(o))t=o;else if(!1===o)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(n(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=B(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=B(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=B(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=j.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(R){var t=(e=e||{}).eventId||this.lastEventId();if(!t)throw new a("Missing eventId");var o=e.dsn||this._dsn;if(!o)throw new a("Missing DSN");var r=encodeURIComponent,n="";n+="?eventId="+r(t),n+="&dsn="+r(o);var l=e.user||this._globalContext.user;l&&(l.name&&(n+="&name="+r(l.name)),l.email&&(n+="&email="+r(l.email)));var i=this._getGlobalServer(this._parseDSN(o)),s=R.createElement("script");s.async=!0,s.src=i+"/api/embed/error-page/"+n,(R.head||R.body).appendChild(s)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout(function(){e._ignoreOnError-=1})},_triggerEvent:function(e,t){var o,r;if(this._hasDocument){for(r in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),R.createEvent?(o=R.createEvent("HTMLEvents")).initEvent(e,!0,!0):(o=R.createEventObject()).eventType=e,t)g(t,r)&&(o[r]=t[r]);if(R.createEvent)R.dispatchEvent(o);else try{R.fireEvent("on"+o.eventType.toLowerCase(),o)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(o){if(t._keypressTimeout=null,t._lastCapturedEvent!==o){var r;t._lastCapturedEvent=o;try{r=x(o.target)}catch(e){r="<unknown>"}t.captureBreadcrumb({category:"ui."+e,message:r})}}},_keypressEventHandler:function(){var e=this;return function(t){var o;try{o=t.target}catch(e){return}var r=o&&o.tagName;if(r&&("INPUT"===r||"TEXTAREA"===r||o.isContentEditable)){var n=e._keypressTimeout;n||e._breadcrumbEventHandler("input")(t),clearTimeout(n),e._keypressTimeout=setTimeout(function(){e._keypressTimeout=null},1e3)}}},_captureUrlChange:function(e,t){var o=E(this._location.href),r=E(t),n=E(e);this._lastHref=t,o.protocol===r.protocol&&o.host===r.host&&(t=r.relative),o.protocol===n.protocol&&o.host===n.host&&(e=n.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function o(t){return function(o,r){for(var n=new Array(arguments.length),a=0;a<n.length;++a)n[a]=arguments[a];var l=n[0];return f(l)&&(n[0]=e.wrap(l)),t.apply?t.apply(this,n):t(n[0],n[1])}}var r=this._globalOptions.autoBreadcrumbs;function n(o){var n=j[o]&&j[o].prototype;n&&n.hasOwnProperty&&n.hasOwnProperty("addEventListener")&&(F(n,"addEventListener",function(t){return function(n,a,l,i){try{a&&a.handleEvent&&(a.handleEvent=e.wrap(a.handleEvent))}catch(e){}var s,c,u;return r&&r.dom&&("EventTarget"===o||"Node"===o)&&(c=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),s=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?c(e):"keypress"===t?u(e):void 0}}),t.call(this,n,e.wrap(a,void 0,s),l,i)}},t),F(n,"removeEventListener",function(e){return function(t,o,r,n){try{o=o&&(o.__raven_wrapper__?o.__raven_wrapper__:o)}catch(e){}return e.call(this,t,o,r,n)}},t))}F(j,"setTimeout",o,t),F(j,"setInterval",o,t),j.requestAnimationFrame&&F(j,"requestAnimationFrame",function(t){return function(o){return t(e.wrap(o))}},t);for(var a=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],l=0;l<a.length;l++)n(a[l])},_instrumentBreadcrumbs:function(){var e=this,t=this._globalOptions.autoBreadcrumbs,o=e._wrappedBuiltIns;function r(t,o){t in o&&f(o[t])&&F(o,t,function(t){return e.wrap(t)})}if(t.xhr&&"XMLHttpRequest"in j){var n=XMLHttpRequest.prototype;F(n,"open",function(t){return function(o,r){return p(r)&&-1===r.indexOf(e._globalKey)&&(this.__raven_xhr={method:o,url:r,status_code:null}),t.apply(this,arguments)}},o),F(n,"send",function(t){return function(o){var n=this;function a(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var l=["onload","onerror","onprogress"],i=0;i<l.length;i++)r(l[i],n);return"onreadystatechange"in n&&f(n.onreadystatechange)?F(n,"onreadystatechange",function(t){return e.wrap(t,void 0,a)}):n.onreadystatechange=a,t.apply(this,arguments)}},o)}t.xhr&&"fetch"in j&&F(j,"fetch",function(t){return function(o,r){for(var n=new Array(arguments.length),a=0;a<n.length;++a)n[a]=arguments[a];var l,i=n[0],s="GET";"string"==typeof i?l=i:"Request"in j&&i instanceof j.Request?(l=i.url,i.method&&(s=i.method)):l=""+i,n[1]&&n[1].method&&(s=n[1].method);var c={method:s,url:l,status_code:null};return e.captureBreadcrumb({type:"http",category:"fetch",data:c}),t.apply(this,n).then(function(e){return c.status_code=e.status,e})}},o),t.dom&&this._hasDocument&&(R.addEventListener?(R.addEventListener("click",e._breadcrumbEventHandler("click"),!1),R.addEventListener("keypress",e._keypressEventHandler(),!1)):(R.attachEvent("onclick",e._breadcrumbEventHandler("click")),R.attachEvent("onkeypress",e._keypressEventHandler())));var a=j.chrome,l=!(a&&a.app&&a.app.runtime)&&j.history&&history.pushState&&history.replaceState;if(t.location&&l){var i=j.onpopstate;j.onpopstate=function(){var t=e._location.href;if(e._captureUrlChange(e._lastHref,t),i)return i.apply(this,arguments)};var s=function(t){return function(){var o=arguments.length>2?arguments[2]:void 0;return o&&e._captureUrlChange(e._lastHref,o+""),t.apply(this,arguments)}};F(history,"pushState",s,o),F(history,"replaceState",s,o)}if(t.console&&"console"in j&&console.log){var c=function(t,o){e.captureBreadcrumb({message:t,level:o.level,category:"console"})};h(["debug","info","warn","error","log"],function(e,t){T(console,t,c)})}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],o=e[1],r=e[2];t[o]=r}},_drainPlugins:function(){var e=this;h(this._plugins,function(t,o){var r=o[0],n=o[1];r.apply(e,[e].concat(n))})},_parseDSN:function(e){var t=L.exec(e),o={},r=7;try{for(;r--;)o[k[r]]=t[r]||""}catch(t){throw new a("Invalid DSN: "+e)}if(o.pass&&!this._globalOptions.allowSecretKey)throw new a("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return o},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(){this._ignoreOnError||this._handleStackInfo.apply(this,arguments)},_handleStackInfo:function(e,t){var o=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,o,t)},_prepareFrames:function(e,t){var o=this,r=[];if(e.stack&&e.stack.length&&(h(e.stack,function(t,n){var a=o._normalizeFrame(n,e.url);a&&r.push(a)}),t&&t.trimHeadFrames))for(var n=0;n<t.trimHeadFrames&&n<r.length;n++)r[n].in_app=!1;return r=r.slice(0,this._globalOptions.stackTraceLimit)},_normalizeFrame:function(e,t){var o={filename:e.url,lineno:e.line,colno:e.column,function:e.func||"?"};return e.url||(o.filename=t),o.in_app=!(this._globalOptions.includePaths.test&&!this._globalOptions.includePaths.test(o.filename)||/(Raven|TraceKit)\./.test(o.function)||/raven\.(min\.)?js$/.test(o.filename)),o},_processException:function(e,t,o,r,n,a){var l,i=(e?e+": ":"")+(t||"");if((!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(t)&&!this._globalOptions.ignoreErrors.test(i))&&(n&&n.length?(o=n[0].filename||o,n.reverse(),l={frames:n}):o&&(l={frames:[{filename:o,lineno:r,in_app:!0}]}),(!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(o))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(o)))){var s=b({exception:{values:[{type:e,value:t,stacktrace:l}]},culprit:o},a);this._send(s)}},_trimPacket:function(e){var t=this._globalOptions.maxMessageLength;if(e.message&&(e.message=m(e.message,t)),e.exception){var o=e.exception.values[0];o.value=m(o.value,t)}var r=e.request;return r&&(r.url&&(r.url=m(r.url,this._globalOptions.maxUrlLength)),r.Referer&&(r.Referer=m(r.Referer,this._globalOptions.maxUrlLength))),e.breadcrumbs&&e.breadcrumbs.values&&this._trimBreadcrumbs(e.breadcrumbs),e},_trimBreadcrumbs:function(e){for(var t,o,r,n=["to","from","url"],a=0;a<e.values.length;++a)if((o=e.values[a]).hasOwnProperty("data")&&s(o.data)&&!y(o.data)){r=b({},o.data);for(var l=0;l<n.length;++l)t=n[l],r.hasOwnProperty(t)&&r[t]&&(r[t]=m(r[t],this._globalOptions.maxUrlLength));e.values[a].data=r}},_getHttpData:function(){if(this._hasNavigator||this._hasDocument){var e={};return this._hasNavigator&&I.userAgent&&(e.headers={"User-Agent":navigator.userAgent}),this._hasDocument&&(R.location&&R.location.href&&(e.url=R.location.href),R.referrer&&(e.headers||(e.headers={}),e.headers.Referer=R.referrer)),e}},_resetBackoff:function(){this._backoffDuration=0,this._backoffStart=null},_shouldBackoff:function(){return this._backoffDuration&&O()-this._backoffStart<this._backoffDuration},_isRepeatData:function(e){var t=this._lastData;return!(!t||e.message!==t.message||e.culprit!==t.culprit)&&(e.stacktrace||t.stacktrace?w(e.stacktrace,t.stacktrace):!e.exception&&!t.exception||C(e.exception,t.exception))},_setBackoffState:function(e){if(!this._shouldBackoff()){var t=e.status;if(400===t||401===t||429===t){var o;try{o=e.getResponseHeader("Retry-After"),o=1e3*parseInt(o,10)}catch(e){}this._backoffDuration=o||(2*this._backoffDuration||1e3),this._backoffStart=O()}}},_send:function(e){var t=this._globalOptions,o={project:this._globalProject,logger:t.logger,platform:"javascript"},r=this._getHttpData();r&&(o.request=r),e.trimHeadFrames&&delete e.trimHeadFrames,(e=b(o,e)).tags=b(b({},this._globalContext.tags),e.tags),e.extra=b(b({},this._globalContext.extra),e.extra),e.extra["session:duration"]=O()-this._startTime,this._breadcrumbs&&this._breadcrumbs.length>0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),d(e.tags)&&delete e.tags,this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),f(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!d(e)&&(f(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()<t.sampleRate&&this._sendProcessedPayload(e):this._sendProcessedPayload(e)))},_getUuid:function(){return S()},_sendProcessedPayload:function(e,t){var o=this,r=this._globalOptions;if(this.isSetup())if(e=this._trimPacket(e),this._globalOptions.allowDuplicates||!this._isRepeatData(e)){this._lastEventId=e.event_id||(e.event_id=this._getUuid()),this._lastData=e,this._logDebug("debug","Raven about to send:",e);var n={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this._globalKey};this._globalSecret&&(n.sentry_secret=this._globalSecret);var a=e.exception&&e.exception.values[0];this.captureBreadcrumb({category:"sentry",message:a?(a.type?a.type+": ":"")+a.value:e.message,event_id:e.event_id,level:e.level||"error"});var l=this._globalEndpoint;(r.transport||this._makeRequest).call(this,{url:l,auth:n,data:e,options:r,onSuccess:function(){o._resetBackoff(),o._triggerEvent("success",{data:e,src:l}),t&&t()},onError:function(r){o._logDebug("error","Raven transport failed to send: ",r),r.request&&o._setBackoffState(r.request),o._triggerEvent("failure",{data:e,src:l}),r=r||new Error("Raven send failed (no additional details provided)"),t&&t(r)}})}else this._logDebug("warn","Raven dropped repeat event: ",e)},_makeRequest:function(e){var t=j.XMLHttpRequest&&new j.XMLHttpRequest;if(t&&("withCredentials"in t||"undefined"!=typeof XDomainRequest)){var o=e.url;"withCredentials"in t?t.onreadystatechange=function(){if(4===t.readyState)if(200===t.status)e.onSuccess&&e.onSuccess();else if(e.onError){var o=new Error("Sentry error code: "+t.status);o.request=t,e.onError(o)}}:(t=new XDomainRequest,o=o.replace(/^https?:/,""),e.onSuccess&&(t.onload=e.onSuccess),e.onError&&(t.onerror=function(){var o=new Error("Sentry error code: XDomainRequest");o.request=t,e.onError(o)})),t.open("POST",o+"?"+_(e.auth)),t.send(n(e.data))}},_logDebug:function(e){this._originalConsoleMethods[e]&&this.debug&&Function.prototype.apply.call(this._originalConsoleMethods[e],this._originalConsole,[].slice.call(arguments,1))},_mergeContext:function(e,t){u(t)?delete this._globalContext[e]:this._globalContext[e]=b(this._globalContext[e]||{},t)}},M.prototype.setUser=M.prototype.setUserContext,M.prototype.setReleaseContext=M.prototype.setRelease,e.exports=M}).call(this,o(1))},function(e,t,o){(function(t){var r=o(2),n={collectWindowErrors:!0,debug:!1},a="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},l=[].slice,i="?",s=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function c(){return"undefined"==typeof document||null==document.location?"":document.location.href}n.report=function(){var e,t,o=[],u=null,f=null,p=null;function d(e,t){var r=null;if(!t||n.collectWindowErrors){for(var a in o)if(o.hasOwnProperty(a))try{o[a].apply(null,[e].concat(l.call(arguments,2)))}catch(e){r=e}if(r)throw r}}function h(t,o,a,l,u){if(p)n.computeStackTrace.augmentStackTraceWithInitialElement(p,o,a,t),b();else if(u&&r.isError(u))d(n.computeStackTrace(u),!0);else{var f,h={url:o,line:a,column:l},m=void 0,y=t;if("[object String]"==={}.toString.call(t))(f=t.match(s))&&(m=f[1],y=f[2]);h.func=i,d({name:m,message:y,url:c(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function b(){var e=p,t=u;u=null,p=null,f=null,d.apply(null,[e,!1].concat(t))}function m(e,t){var o=l.call(arguments,1);if(p){if(f===e)return;b()}var r=n.computeStackTrace(e);if(p=r,f=e,u=o,setTimeout(function(){f===e&&b()},r.incomplete?2e3:0),!1!==t)throw e}return m.subscribe=function(r){t||(e=a.onerror,a.onerror=h,t=!0),o.push(r)},m.unsubscribe=function(e){for(var t=o.length-1;t>=0;--t)o[t]===e&&o.splice(t,1)},m.uninstall=function(){t&&(a.onerror=e,t=!1,e=void 0),o=[]},m}(),n.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,o,r,n=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,l=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,u=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=e.stack.split("\n"),p=[],d=(/^(.*) is undefined$/.exec(e.message),0),h=f.length;d<h;++d){if(o=n.exec(f[d])){var b=o[2]&&0===o[2].indexOf("native");o[2]&&0===o[2].indexOf("eval")&&(t=u.exec(o[2]))&&(o[2]=t[1],o[3]=t[2],o[4]=t[3]),r={url:b?null:o[2],func:o[1]||i,args:b?[o[2]]:[],line:o[3]?+o[3]:null,column:o[4]?+o[4]:null}}else if(o=l.exec(f[d]))r={url:o[2],func:o[1]||i,args:[],line:+o[3],column:o[4]?+o[4]:null};else{if(!(o=a.exec(f[d])))continue;o[3]&&o[3].indexOf(" > eval")>-1&&(t=s.exec(o[3]))?(o[3]=t[1],o[4]=t[2],o[5]=null):0!==d||o[5]||void 0===e.columnNumber||(p[0].column=e.columnNumber+1),r={url:o[3],func:o[1]||i,args:o[2]?o[2].split(","):[],line:o[4]?+o[4]:null,column:o[5]?+o[5]:null}}!r.func&&r.line&&(r.func=i),p.push(r)}return p.length?{name:e.name,message:e.message,url:c(),stack:p}:null}}function t(e,t,o,r){var n={url:t,line:o};if(n.url&&n.line){if(e.incomplete=!1,n.func||(n.func=i),e.stack.length>0&&e.stack[0].url===n.url){if(e.stack[0].line===n.line)return!1;if(!e.stack[0].line&&e.stack[0].func===n.func)return e.stack[0].line=n.line,!1}return e.stack.unshift(n),e.partial=!0,!0}return e.incomplete=!0,!1}function o(e,a){for(var l,s,u=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,f=[],p={},d=!1,h=o.caller;h&&!d;h=h.caller)if(h!==r&&h!==n.report){if(s={url:null,func:i,line:null,column:null},h.name?s.func=h.name:(l=u.exec(h.toString()))&&(s.func=l[1]),void 0===s.func)try{s.func=l.input.substring(0,l.input.indexOf("{"))}catch(e){}p[""+h]?d=!0:p[""+h]=!0,f.push(s)}a&&f.splice(0,a);var b={name:e.name,message:e.message,url:c(),stack:f};return t(b,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),b}function r(t,r){var a=null;r=null==r?0:+r;try{if(a=e(t))return a}catch(e){if(n.debug)throw e}try{if(a=o(t,r+1))return a}catch(e){if(n.debug)throw e}return{name:t.name,message:t.message,url:c()}}return r.augmentStackTraceWithInitialElement=t,r.computeStackTraceFromStackProp=e,r}(),e.exports=n}).call(this,o(1))},function(e,t){function o(e,t){for(var o=0;o<e.length;++o)if(e[o]===t)return o;return-1}function r(e,t){var r=[],n=[];return null==t&&(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+n.slice(0,o(r,t)).join(".")+"]"}),function(a,l){if(r.length>0){var i=o(r,this);~i?r.splice(i+1):r.push(this),~i?n.splice(i,1/0,a):n.push(a),~o(r,l)&&(l=t.call(this,a,l))}else r.push(l);return null==e?l instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}(l):l:e.call(this,a,l)}}(e.exports=function(e,t,o,n){return JSON.stringify(e,r(t,n),o)}).getSerialize=r},function(e,t){function o(e){this.name="RavenConfigError",this.message=e}o.prototype=new Error,o.prototype.constructor=o,e.exports=o},function(e,t){e.exports={wrapMethod:function(e,t,o){var r=e[t],n=e;if(t in e){var a="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),l=""+e.join(" "),i={level:a,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(l="Assertion failed: "+(e.slice(1).join(" ")||"console.assert"),i.extra.arguments=e.slice(1),o&&o(l,i)):o&&o(l,i),r&&Function.prototype.apply.call(r,n,e)}}}}},function(e,t,o){"use strict";o.r(t);var r=o(0),n=o.n(r),a=window.leadinConfig,l=a.adminUrl,i=a.ajaxUrl,s=a.env,c=a.hubspotBaseUrl,u=a.leadinPluginVersion,f=a.plugins,p=a.phpVersion,d=a.portalId,h=a.theme,b=a.wpVersion,m=window.leadinI18n;var y=n.a;function g(){var e=document.getElementById("toplevel_page_leadin"),t=e&&e.querySelector(".wp-first-item"),o="".concat(c,"/chatflows/").concat(d),r='<li><a href="'.concat(o,'" target="_blank">').concat(m.chatflows,"</a></li>");t&&t.insertAdjacentHTML("afterend",r)}function v(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _(){try{if(window.localStorage.LEADIN_DEBUG){for(var e,t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];o.unshift("[Leadin]"),(e=console).log.apply(e,o)}}catch(e){}}var S={iframe:"#leadin-iframe",allMenuButtons:".toplevel_page_leadin > a, .toplevel_page_leadin > ul > li > a",subMenuButtons:".toplevel_page_leadin > ul > li"},x=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bus=jQuery({})}var t,o,r;return t=e,(o=[{key:"trigger",value:function(){var e;(e=this.bus).trigger.apply(e,arguments)}},{key:"on",value:function(e,t){this.bus.on(e,y.wrap(t))}}])&&v(t.prototype,o),r&&v(t,r),e}()),C=[];function w(e){_("Posting message"),_(JSON.stringify(e)),jQuery(S.iframe)[0].contentWindow.postMessage(JSON.stringify(e),c)}function E(e,t){t||(t="Message Received");var o=Object.assign({},e);o.response=t,w(o)}function F(e){_("Received message"),_(JSON.stringify(e)),e.response&&e._callbackId?function(e){C[e._callbackId-1](e.response)}(e):Object.keys(e).forEach(function(t){x.trigger(t,[e[t],E.bind(null,e)])})}function T(e){if(e.origin===c)try{F(JSON.parse(e.data))}catch(e){}}function k(e,t,o,r,n){var a={url:"".concat(i,"?action=").concat(e),method:t,contentType:"application/json",success:"function"==typeof r?y.wrap(function(e){return r(JSON.parse(e))}):void 0,error:y.wrap(function(e){var t;try{t=JSON.parse(e.responseText).error}catch(o){t=e.responseText}y.captureMessage("AJAX request failed with code ".concat(e.status,": ").concat(t)),"function"==typeof n&&n()})};o&&(a.data=JSON.stringify(o)),jQuery.ajax(a)}function L(e,t,o,r){return k(e,"POST",t,o,r)}function O(e,t,o){return k(e,"GET",null,t,o)}var j,R=function(){return O("leadin_get_portal")},I=!1;function B(){j=setTimeout(function(){R(function(e){e.portalId?location.reload(!0):I||B()},B)},5e3)}var M=L.bind(null,"leadin_disconnect_ajax",{}),N=O.bind(null,"leadin_get_domain"),z=O.bind(null,"leadin_mark_outdated");function D(e){return function(e,t){x.on(e,function(){for(var e=arguments.length,o=new Array(e),r=0;r<e;r++)o[r]=arguments[r];t.apply(null,o.slice(1))})}.bind(null,e)}var U=D("leadin_clear_query_param"),P=D("leadin_connect_portal"),H=D("leadin_disable_navigation"),A=D("leadin_disconnect_portal"),q=D("leadin_enter_fullscreen"),J=D("leadin_exit_fullscreen"),W=D("leadin_get_assets_payload"),K=D("leadin_get_wp_domain"),$=D("leadin_init_navigation"),X=D("leadin_interframe_ready"),Q=D("leadin_mark_outdated"),G=D("leadin_page_reload"),V=D("leadin_upgrade");function Z(e){!function(e,t,o,r,n){n||(n=500);var a=setTimeout(y.wrap(function(){y.captureMessage("LeadinWordpressPlugin postMessage response timeout on message key: ".concat(e)),r()}),n),l={};l[e]=t,l._callbackId=C.push(function(){clearTimeout(a),o.apply(void 0,arguments)}),w(l)}("leadin_change_route",e,null,function(){return location.reload(!0)})}function Y(){function e(){Z(window.location.search.match(/page=leadin_?(\w*)/)[1]),function(){jQuery(S.subMenuButtons).removeClass("current");var e=window.location.search.match(/\?page=leadin_?\w*/)[0];jQuery('a[href="admin.php'.concat(e,'"]')).parent().addClass("current")}()}window.addEventListener("popstate",e),jQuery(S.allMenuButtons).click(function(){event.metaKey||event.altKey||event.shiftKey||(window.history.pushState(null,null,jQuery(this).attr("href")),e(),event.preventDefault())})}var ee={"genesis-sample":{formsStyle:{fontFamily:"Source Sans Pro",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#0073e5"},chatStyle:{accentColor:"#0073e5"},onScrollLeadFlowStyle:{color:"#0073e5"},onExitLeadFlowStyle:{color:"#0073e5"}},"academy-pro":{formsStyle:{fontFamily:"PT Sans",labelTextColor:"#222222",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#e22c2f"},chatStyle:{accentColor:"#e22c2f"},onScrollLeadFlowStyle:{color:"#e22c2f"},onExitLeadFlowStyle:{color:"#e22c2f"}},"agency-pro":{formsStyle:{fontFamily:"EB Garamond",labelTextColor:"#666666",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#d7c603"},chatStyle:{accentColor:"#d7c603"},onScrollLeadFlowStyle:{color:"#d7c603"},onExitLeadFlowStyle:{color:"#d7c603"}},"agentpress-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#1a212b",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#d23836"},chatStyle:{accentColor:"#d23836"},onScrollLeadFlowStyle:{color:"#d23836"},onExitLeadFlowStyle:{color:"#d23836"}},"altitude-pro":{formsStyle:{fontFamily:"Ek Mukta",labelTextColor:"#000000",labelTextSize:"20px",submitFontColor:"#ffffff",submitColor:"#079bc4"},chatStyle:{accentColor:"#079bc4"},onScrollLeadFlowStyle:{color:"#079bc4"},onExitLeadFlowStyle:{color:"#079bc4"}},"ambiance-pro":{formsStyle:{fontFamily:"Merriweather",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#e12727"},chatStyle:{accentColor:"#e12727"},onScrollLeadFlowStyle:{color:"#e12727"},onExitLeadFlowStyle:{color:"#e12727"}},"atmosphere-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#333333",labelTextSize:"20px",submitFontColor:"#ffffff",submitColor:"#333333"},chatStyle:{accentColor:"#333333"},onScrollLeadFlowStyle:{color:"#333333"},onExitLeadFlowStyle:{color:"#333333"}},"author-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"authority-pro":{formsStyle:{fontFamily:"Libre Baskerville",labelTextColor:"#333333",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#000cff"},chatStyle:{accentColor:"#000cff"},onScrollLeadFlowStyle:{color:"#000cff"},onExitLeadFlowStyle:{color:"#000cff"}},"beautiful-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#666666",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#e5554e"},chatStyle:{accentColor:"#e5554e"},onScrollLeadFlowStyle:{color:"#e5554e"},onExitLeadFlowStyle:{color:"#e5554e"}},"breakthrough-pro":{formsStyle:{fontFamily:"Alegreya Sans",labelTextColor:"#4e4756",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#4a4f9b"},chatStyle:{accentColor:"#4a4f9b"},onScrollLeadFlowStyle:{color:"#4a4f9b"},onExitLeadFlowStyle:{color:"#4a4f9b"}},"cafe-pro":{formsStyle:{fontFamily:"Crimson Text",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"daily-dish-pro":{formsStyle:{fontFamily:"Cormorant",labelTextColor:"#000000",labelTextSize:"20px",submitFontColor:"#ffffff",submitColor:"#d9037f"},chatStyle:{accentColor:"#d9037f"},onScrollLeadFlowStyle:{color:"#d9037f"},onExitLeadFlowStyle:{color:"#d9037f"}},"digital-pro":{formsStyle:{fontFamily:"Lora",labelTextColor:"#5b5e5e",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#e85555"},chatStyle:{accentColor:"#e85555"},onScrollLeadFlowStyle:{color:"#e85555"},onExitLeadFlowStyle:{color:"#e85555"}},"education-pro":{formsStyle:{fontFamily:"Roboto Condensed",labelTextColor:"#444444",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#78a7c8"},chatStyle:{accentColor:"#78a7c8"},onScrollLeadFlowStyle:{color:"#78a7c8"},onExitLeadFlowStyle:{color:"#78a7c8"}},"eleven40-pro":{formsStyle:{fontFamily:"Lora",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#ed702b"},chatStyle:{accentColor:"#ed702b"},onScrollLeadFlowStyle:{color:"#ed702b"},onExitLeadFlowStyle:{color:"#ed702b"}},"enterprise-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#777777",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#31b2ed"},chatStyle:{accentColor:"#31b2ed"},onScrollLeadFlowStyle:{color:"#31b2ed"},onExitLeadFlowStyle:{color:"#31b2ed"}},"essence-pro":{formsStyle:{fontFamily:"Alegreya Sans",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#be8100"},chatStyle:{accentColor:"#be8100"},onScrollLeadFlowStyle:{color:"#be8100"},onExitLeadFlowStyle:{color:"#be8100"}},"executive-pro":{formsStyle:{fontFamily:"Open Sans",labelTextColor:"#222222",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#64c9ea"},chatStyle:{accentColor:"#64c9ea"},onScrollLeadFlowStyle:{color:"#64c9ea"},onExitLeadFlowStyle:{color:"#64c9ea"}},"generate-pro":{formsStyle:{fontFamily:"Source Sans Pro",labelTextColor:"#222222",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#eb232f"},chatStyle:{accentColor:"#eb232f"},onScrollLeadFlowStyle:{color:"#eb232f"},onExitLeadFlowStyle:{color:"#eb232f"}},"infinity-pro":{formsStyle:{fontFamily:"Cormorant Garamond",labelTextColor:"#000000",labelTextSize:"22px",submitFontColor:"#ffffff",submitColor:"#d43c67"},chatStyle:{accentColor:"#d43c67"},onScrollLeadFlowStyle:{color:"#d43c67"},onExitLeadFlowStyle:{color:"#d43c67"}},"interior-pro":{formsStyle:{fontFamily:"Lora",labelTextColor:"#777777",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#009092"},chatStyle:{accentColor:"#009092"},onScrollLeadFlowStyle:{color:"#009092"},onExitLeadFlowStyle:{color:"#009092"}},"lifestyle-pro":{formsStyle:{fontFamily:"Droid Sans",labelTextColor:"#767673",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#27968b"},chatStyle:{accentColor:"#27968b"},onScrollLeadFlowStyle:{color:"#27968b"},onExitLeadFlowStyle:{color:"#27968b"}},"magazine-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#222222",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#008285"},chatStyle:{accentColor:"#008285"},onScrollLeadFlowStyle:{color:"#008285"},onExitLeadFlowStyle:{color:"#008285"}},"metro-pro":{formsStyle:{fontFamily:"Helvetica Neue",labelTextColor:"#222222",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#f96e5b"},chatStyle:{accentColor:"#f96e5b"},onScrollLeadFlowStyle:{color:"#f96e5b"},onExitLeadFlowStyle:{color:"#f96e5b"}},"minimum-pro":{formsStyle:{fontFamily:"Roboto Slab",labelTextColor:"#333333",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#0ebfe9"},chatStyle:{accentColor:"#0ebfe9"},onScrollLeadFlowStyle:{color:"#0ebfe9"},onExitLeadFlowStyle:{color:"#0ebfe9"}},"modern-studio-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"monochrome-pro":{formsStyle:{fontFamily:"Muli",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#0066cc"},chatStyle:{accentColor:"#0066cc"},onScrollLeadFlowStyle:{color:"#0066cc"},onExitLeadFlowStyle:{color:"#0066cc"}},"news-pro":{formsStyle:{fontFamily:"Raleway",labelTextColor:"#666666",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#ff0000"},chatStyle:{accentColor:"#ff0000"},onScrollLeadFlowStyle:{color:"#ff0000"},onExitLeadFlowStyle:{color:"#ff0000"}},"no-sidebar-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#333333"},chatStyle:{accentColor:"#333333"},onScrollLeadFlowStyle:{color:"#333333"},onExitLeadFlowStyle:{color:"#333333"}},"outfitter-pro":{formsStyle:{fontFamily:"Noto Sans",labelTextColor:"#546e7a",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"outreach-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#333333",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#6ab446"},chatStyle:{accentColor:"#6ab446"},onScrollLeadFlowStyle:{color:"#6ab446"},onExitLeadFlowStyle:{color:"#6ab446"}},"parallax-pro":{formsStyle:{fontFamily:"Cormorant Garamond",labelTextColor:"#000000",labelTextSize:"22px",submitFontColor:"#ffffff",submitColor:"#00a0af"},chatStyle:{accentColor:"#00a0af"},onScrollLeadFlowStyle:{color:"#00a0af"},onExitLeadFlowStyle:{color:"#00a0af"}},"revolution-pro":{formsStyle:{fontFamily:"Noto Serif SC",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#008080"},chatStyle:{accentColor:"#008080"},onScrollLeadFlowStyle:{color:"#008080"},onExitLeadFlowStyle:{color:"#008080"}},"sixteen-nine-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#1dbec0"},chatStyle:{accentColor:"#1dbec0"},onScrollLeadFlowStyle:{color:"#1dbec0"},onExitLeadFlowStyle:{color:"#1dbec0"}},"smart-passive-income-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#0e763c"},chatStyle:{accentColor:"#0e763c"},onScrollLeadFlowStyle:{color:"#0e763c"},onExitLeadFlowStyle:{color:"#0e763c"}},"wellness-pro":{formsStyle:{fontFamily:"Open Sans",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#5da44f"},chatStyle:{accentColor:"#5da44f"},onScrollLeadFlowStyle:{color:"#5da44f"},onExitLeadFlowStyle:{color:"#5da44f"}},"workstation-pro":{formsStyle:{fontFamily:"Baskerville",labelTextColor:"#222222",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#ff4800"},chatStyle:{accentColor:"#ff4800"},onScrollLeadFlowStyle:{color:"#ff4800"},onExitLeadFlowStyle:{color:"#ff4800"}}};X(function(e,t){t("Interframe Ready")}),P(function(e,t){!function(e,t,o){L("leadin_registration_ajax",{portalId:e},t,o)}(e,function(){clearTimeout(j),I=!0,t({success:!0})},t.bind(null,{success:!1}))}),A(function(e,t){M(t.bind(null,{success:!0}),t.bind(null,{success:!1}))}),Q(function(e,t){z(t)}),V(function(e,t){t(),location.href="".concat(l,"plugins.php")}),G(function(e,t){t(),window.location.reload(!0)}),$(function(e,t){t(),Y()}),H(function(e,t){t(),jQuery(S.allMenuButtons).off("click")}),U(function(e,t){t();var o=window.location.toString();o.indexOf("?")>0&&(o=o.substring(0,o.indexOf("?")));var r="".concat(o,"?page=leadin");window.history.pushState({},"",r)}),K(function(e,t){N(function(e){e.domain&&t(e.domain)})}),W(function(e,t){t({payload:ee[h]})}),q(function(e,t){t(),jQuery(S.iframe).addClass("leadin-iframe-fullscreen")}),J(function(e,t){t(),jQuery(S.iframe).removeClass("leadin-iframe-fullscreen")}),"prod"===s&&(n.a.config("https://[email protected]/1",{instrument:{tryCatch:!1}}).install(),n.a.setTagsContext({leadin:u,php:p,wordpress:b}),n.a.setUserContext({hub:d,plugins:Object.keys(f).map(function(e){return"".concat(e,"#").concat(f[e].Version)}).join(",")})),y.context(function(){window.addEventListener("message",T),-1!==window.location.search.indexOf("page=leadin")&&(d||B()),jQuery(document).ready(g)})}]);1 !function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=8)}([function(e,t,o){(function(t){var r=o(3),n="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},a=n.Raven,l=new r;l.noConflict=function(){return n.Raven=a,l},l.afterLoad(),e.exports=l}).call(this,o(1))},function(e,t){var o;o=function(){return this}();try{o=o||new Function("return this")()}catch(e){"object"==typeof window&&(o=window)}e.exports=o},function(e,t,o){(function(t){var o="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function r(e){return void 0===e}function n(e){return"[object String]"===Object.prototype.toString.call(e)}function a(){try{return new ErrorEvent(""),!0}catch(e){return!1}}function l(e,t){var o,n;if(r(e.length))for(o in e)i(e,o)&&t.call(null,o,e[o]);else if(n=e.length)for(o=0;o<n;o++)t.call(null,o,e[o])}function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e){var t,o,r,a,l,i=[];if(!e||!e.tagName)return"";if(i.push(e.tagName.toLowerCase()),e.id&&i.push("#"+e.id),(t=e.className)&&n(t))for(o=t.split(/\s+/),l=0;l<o.length;l++)i.push("."+o[l]);var s=["type","name","title","alt"];for(l=0;l<s.length;l++)r=s[l],(a=e.getAttribute(r))&&i.push("["+r+'="'+a+'"]');return i.join("")}function c(e,t){return!!(!!e^!!t)}function u(e,t){if(c(e,t))return!1;var o,r,n=e.frames,a=t.frames;if(n.length!==a.length)return!1;for(var l=0;l<n.length;l++)if(o=n[l],r=a[l],o.filename!==r.filename||o.lineno!==r.lineno||o.colno!==r.colno||o.function!==r.function)return!1;return!0}e.exports={isObject:function(e){return"object"==typeof e&&null!==e},isError:function(e){switch({}.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}},isErrorEvent:function(e){return a()&&"[object ErrorEvent]"==={}.toString.call(e)},isUndefined:r,isFunction:function(e){return"function"==typeof e},isString:n,isEmptyObject:function(e){for(var t in e)return!1;return!0},supportsErrorEvent:a,wrappedCallback:function(e){return function(t,o){var r=e(t)||t;return o&&o(r)||r}},each:l,objectMerge:function(e,t){return t?(l(t,function(t,o){e[t]=o}),e):e},truncate:function(e,t){return!t||e.length<=t?e:e.substr(0,t)+"…"},objectFrozen:function(e){return!!Object.isFrozen&&Object.isFrozen(e)},hasKey:i,joinRegExp:function(e){for(var t,o=[],r=0,a=e.length;r<a;r++)n(t=e[r])?o.push(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")):t&&t.source&&o.push(t.source);return new RegExp(o.join("|"),"i")},urlencode:function(e){var t=[];return l(e,function(e,o){t.push(encodeURIComponent(e)+"="+encodeURIComponent(o))}),t.join("&")},uuid4:function(){var e=o.crypto||o.msCrypto;if(!r(e)&&e.getRandomValues){var t=new Uint16Array(8);e.getRandomValues(t),t[3]=4095&t[3]|16384,t[4]=16383&t[4]|32768;var n=function(e){for(var t=e.toString(16);t.length<4;)t="0"+t;return t};return n(t[0])+n(t[1])+n(t[2])+n(t[3])+n(t[4])+n(t[5])+n(t[6])+n(t[7])}return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},htmlTreeAsString:function(e){for(var t,o=[],r=0,n=0,a=" > ".length;e&&r++<5&&!("html"===(t=s(e))||r>1&&n+o.length*a+t.length>=80);)o.push(t),n+=t.length,e=e.parentNode;return o.reverse().join(" > ")},htmlElementAsString:s,isSameException:function(e,t){return!c(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&u(e.stacktrace,t.stacktrace))},isSameStacktrace:u,parseUrl:function(e){var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};var o=t[6]||"",r=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+o+r}},fill:function(e,t,o,r){var n=e[t];e[t]=o(n),r&&r.push([e,t,n])}}}).call(this,o(1))},function(e,t,o){(function(t){var r=o(4),n=o(5),a=o(6),l=o(2),i=l.isError,s=l.isObject,c=(s=l.isObject,l.isErrorEvent),u=l.isUndefined,f=l.isFunction,p=l.isString,d=l.isEmptyObject,h=l.each,b=l.objectMerge,m=l.truncate,y=l.objectFrozen,g=l.hasKey,v=l.joinRegExp,_=l.urlencode,S=l.uuid4,x=l.htmlTreeAsString,C=l.isSameException,w=l.isSameStacktrace,E=l.parseUrl,F=l.fill,T=o(7).wrapMethod,k="source protocol user pass host port path".split(" "),L=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function O(){return+new Date}var j="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},R=j.document,I=j.navigator;function B(e,t){return f(t)?function(o){return t(o,e)}:t}function N(){for(var e in this._hasJSON=!("object"!=typeof JSON||!JSON.stringify),this._hasDocument=!u(R),this._hasNavigator=!u(I),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],collectWindowErrors:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=j.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=O(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=j.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}N.prototype={VERSION:"3.19.1",debug:!1,TraceKit:r,config:function(e,t){var o=this;if(o._globalServer)return this._logDebug("error","Error: Raven has already been configured"),o;if(!e)return o;var n=o._globalOptions;t&&h(t,function(e,t){"tags"===e||"extra"===e||"user"===e?o._globalContext[e]=t:n[e]=t}),o.setDSN(e),n.ignoreErrors.push(/^Script error\.?$/),n.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),n.ignoreErrors=v(n.ignoreErrors),n.ignoreUrls=!!n.ignoreUrls.length&&v(n.ignoreUrls),n.whitelistUrls=!!n.whitelistUrls.length&&v(n.whitelistUrls),n.includePaths=v(n.includePaths),n.maxBreadcrumbs=Math.max(0,Math.min(n.maxBreadcrumbs||100,100));var a={xhr:!0,console:!0,dom:!0,location:!0},l=n.autoBreadcrumbs;"[object Object]"==={}.toString.call(l)?l=b(a,l):!1!==l&&(l=a),n.autoBreadcrumbs=l;var i={tryCatch:!0},s=n.instrument;return"[object Object]"==={}.toString.call(s)?s=b(i,s):!1!==s&&(s=i),n.instrument=s,r.collectWindowErrors=!!n.collectWindowErrors,o},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(r.report.subscribe(function(){e._handleOnErrorStackInfo.apply(e,arguments)}),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),o=t.path.lastIndexOf("/"),r=t.path.substr(1,o);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(o+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+r+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,o){return f(e)&&(o=t||[],t=e,e=void 0),this.wrap(e,t).apply(this,o)},wrap:function(e,t,o){var r=this;if(u(t)&&!f(e))return e;if(f(e)&&(t=e,e=void 0),!f(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function n(){var n=[],a=arguments.length,l=!e||e&&!1!==e.deep;for(o&&f(o)&&o.apply(this,arguments);a--;)n[a]=l?r.wrap(e,arguments[a]):arguments[a];try{return t.apply(this,n)}catch(t){throw r._ignoreNextOnError(),r.captureException(t,e),t}}for(var a in t)g(t,a)&&(n[a]=t[a]);return n.prototype=t.prototype,t.__raven_wrapper__=n,n.__raven__=!0,n.__inner__=t,n},uninstall:function(){return r.report.uninstall(),this._restoreBuiltIns(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},captureException:function(e,t){var o=!i(e),n=!c(e),a=c(e)&&!e.error;if(o&&n||a)return this.captureMessage(e,b({trimHeadFrames:1,stacktrace:!0},t));c(e)&&(e=e.error),this._lastCapturedException=e;try{var l=r.computeStackTrace(e);this._handleStackInfo(l,t)}catch(t){if(e!==t)throw t}return this},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var o,n=b({message:e+""},t=t||{});try{throw new Error(e)}catch(e){o=e}o.name=null;var a=r.computeStackTrace(o),l=a.stack[1],i=l&&l.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(i))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(i))){if(this._globalOptions.stacktrace||t&&t.stacktrace){t=b({fingerprint:e,trimHeadFrames:(t.trimHeadFrames||0)+1},t);var s=this._prepareFrames(a,t);n.stacktrace={frames:s.reverse()}}return this._send(n),this}}},captureBreadcrumb:function(e){var t=b({timestamp:O()/1e3},e);if(f(this._globalOptions.breadcrumbCallback)){var o=this._globalOptions.breadcrumbCallback(t);if(s(o)&&!d(o))t=o;else if(!1===o)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(n(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=B(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=B(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=B(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=j.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(R){var t=(e=e||{}).eventId||this.lastEventId();if(!t)throw new a("Missing eventId");var o=e.dsn||this._dsn;if(!o)throw new a("Missing DSN");var r=encodeURIComponent,n="";n+="?eventId="+r(t),n+="&dsn="+r(o);var l=e.user||this._globalContext.user;l&&(l.name&&(n+="&name="+r(l.name)),l.email&&(n+="&email="+r(l.email)));var i=this._getGlobalServer(this._parseDSN(o)),s=R.createElement("script");s.async=!0,s.src=i+"/api/embed/error-page/"+n,(R.head||R.body).appendChild(s)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout(function(){e._ignoreOnError-=1})},_triggerEvent:function(e,t){var o,r;if(this._hasDocument){for(r in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),R.createEvent?(o=R.createEvent("HTMLEvents")).initEvent(e,!0,!0):(o=R.createEventObject()).eventType=e,t)g(t,r)&&(o[r]=t[r]);if(R.createEvent)R.dispatchEvent(o);else try{R.fireEvent("on"+o.eventType.toLowerCase(),o)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(o){if(t._keypressTimeout=null,t._lastCapturedEvent!==o){var r;t._lastCapturedEvent=o;try{r=x(o.target)}catch(e){r="<unknown>"}t.captureBreadcrumb({category:"ui."+e,message:r})}}},_keypressEventHandler:function(){var e=this;return function(t){var o;try{o=t.target}catch(e){return}var r=o&&o.tagName;if(r&&("INPUT"===r||"TEXTAREA"===r||o.isContentEditable)){var n=e._keypressTimeout;n||e._breadcrumbEventHandler("input")(t),clearTimeout(n),e._keypressTimeout=setTimeout(function(){e._keypressTimeout=null},1e3)}}},_captureUrlChange:function(e,t){var o=E(this._location.href),r=E(t),n=E(e);this._lastHref=t,o.protocol===r.protocol&&o.host===r.host&&(t=r.relative),o.protocol===n.protocol&&o.host===n.host&&(e=n.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function o(t){return function(o,r){for(var n=new Array(arguments.length),a=0;a<n.length;++a)n[a]=arguments[a];var l=n[0];return f(l)&&(n[0]=e.wrap(l)),t.apply?t.apply(this,n):t(n[0],n[1])}}var r=this._globalOptions.autoBreadcrumbs;function n(o){var n=j[o]&&j[o].prototype;n&&n.hasOwnProperty&&n.hasOwnProperty("addEventListener")&&(F(n,"addEventListener",function(t){return function(n,a,l,i){try{a&&a.handleEvent&&(a.handleEvent=e.wrap(a.handleEvent))}catch(e){}var s,c,u;return r&&r.dom&&("EventTarget"===o||"Node"===o)&&(c=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),s=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?c(e):"keypress"===t?u(e):void 0}}),t.call(this,n,e.wrap(a,void 0,s),l,i)}},t),F(n,"removeEventListener",function(e){return function(t,o,r,n){try{o=o&&(o.__raven_wrapper__?o.__raven_wrapper__:o)}catch(e){}return e.call(this,t,o,r,n)}},t))}F(j,"setTimeout",o,t),F(j,"setInterval",o,t),j.requestAnimationFrame&&F(j,"requestAnimationFrame",function(t){return function(o){return t(e.wrap(o))}},t);for(var a=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],l=0;l<a.length;l++)n(a[l])},_instrumentBreadcrumbs:function(){var e=this,t=this._globalOptions.autoBreadcrumbs,o=e._wrappedBuiltIns;function r(t,o){t in o&&f(o[t])&&F(o,t,function(t){return e.wrap(t)})}if(t.xhr&&"XMLHttpRequest"in j){var n=XMLHttpRequest.prototype;F(n,"open",function(t){return function(o,r){return p(r)&&-1===r.indexOf(e._globalKey)&&(this.__raven_xhr={method:o,url:r,status_code:null}),t.apply(this,arguments)}},o),F(n,"send",function(t){return function(o){var n=this;function a(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var l=["onload","onerror","onprogress"],i=0;i<l.length;i++)r(l[i],n);return"onreadystatechange"in n&&f(n.onreadystatechange)?F(n,"onreadystatechange",function(t){return e.wrap(t,void 0,a)}):n.onreadystatechange=a,t.apply(this,arguments)}},o)}t.xhr&&"fetch"in j&&F(j,"fetch",function(t){return function(o,r){for(var n=new Array(arguments.length),a=0;a<n.length;++a)n[a]=arguments[a];var l,i=n[0],s="GET";"string"==typeof i?l=i:"Request"in j&&i instanceof j.Request?(l=i.url,i.method&&(s=i.method)):l=""+i,n[1]&&n[1].method&&(s=n[1].method);var c={method:s,url:l,status_code:null};return e.captureBreadcrumb({type:"http",category:"fetch",data:c}),t.apply(this,n).then(function(e){return c.status_code=e.status,e})}},o),t.dom&&this._hasDocument&&(R.addEventListener?(R.addEventListener("click",e._breadcrumbEventHandler("click"),!1),R.addEventListener("keypress",e._keypressEventHandler(),!1)):(R.attachEvent("onclick",e._breadcrumbEventHandler("click")),R.attachEvent("onkeypress",e._keypressEventHandler())));var a=j.chrome,l=!(a&&a.app&&a.app.runtime)&&j.history&&history.pushState&&history.replaceState;if(t.location&&l){var i=j.onpopstate;j.onpopstate=function(){var t=e._location.href;if(e._captureUrlChange(e._lastHref,t),i)return i.apply(this,arguments)};var s=function(t){return function(){var o=arguments.length>2?arguments[2]:void 0;return o&&e._captureUrlChange(e._lastHref,o+""),t.apply(this,arguments)}};F(history,"pushState",s,o),F(history,"replaceState",s,o)}if(t.console&&"console"in j&&console.log){var c=function(t,o){e.captureBreadcrumb({message:t,level:o.level,category:"console"})};h(["debug","info","warn","error","log"],function(e,t){T(console,t,c)})}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],o=e[1],r=e[2];t[o]=r}},_drainPlugins:function(){var e=this;h(this._plugins,function(t,o){var r=o[0],n=o[1];r.apply(e,[e].concat(n))})},_parseDSN:function(e){var t=L.exec(e),o={},r=7;try{for(;r--;)o[k[r]]=t[r]||""}catch(t){throw new a("Invalid DSN: "+e)}if(o.pass&&!this._globalOptions.allowSecretKey)throw new a("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return o},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(){this._ignoreOnError||this._handleStackInfo.apply(this,arguments)},_handleStackInfo:function(e,t){var o=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,o,t)},_prepareFrames:function(e,t){var o=this,r=[];if(e.stack&&e.stack.length&&(h(e.stack,function(t,n){var a=o._normalizeFrame(n,e.url);a&&r.push(a)}),t&&t.trimHeadFrames))for(var n=0;n<t.trimHeadFrames&&n<r.length;n++)r[n].in_app=!1;return r=r.slice(0,this._globalOptions.stackTraceLimit)},_normalizeFrame:function(e,t){var o={filename:e.url,lineno:e.line,colno:e.column,function:e.func||"?"};return e.url||(o.filename=t),o.in_app=!(this._globalOptions.includePaths.test&&!this._globalOptions.includePaths.test(o.filename)||/(Raven|TraceKit)\./.test(o.function)||/raven\.(min\.)?js$/.test(o.filename)),o},_processException:function(e,t,o,r,n,a){var l,i=(e?e+": ":"")+(t||"");if((!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(t)&&!this._globalOptions.ignoreErrors.test(i))&&(n&&n.length?(o=n[0].filename||o,n.reverse(),l={frames:n}):o&&(l={frames:[{filename:o,lineno:r,in_app:!0}]}),(!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(o))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(o)))){var s=b({exception:{values:[{type:e,value:t,stacktrace:l}]},culprit:o},a);this._send(s)}},_trimPacket:function(e){var t=this._globalOptions.maxMessageLength;if(e.message&&(e.message=m(e.message,t)),e.exception){var o=e.exception.values[0];o.value=m(o.value,t)}var r=e.request;return r&&(r.url&&(r.url=m(r.url,this._globalOptions.maxUrlLength)),r.Referer&&(r.Referer=m(r.Referer,this._globalOptions.maxUrlLength))),e.breadcrumbs&&e.breadcrumbs.values&&this._trimBreadcrumbs(e.breadcrumbs),e},_trimBreadcrumbs:function(e){for(var t,o,r,n=["to","from","url"],a=0;a<e.values.length;++a)if((o=e.values[a]).hasOwnProperty("data")&&s(o.data)&&!y(o.data)){r=b({},o.data);for(var l=0;l<n.length;++l)t=n[l],r.hasOwnProperty(t)&&r[t]&&(r[t]=m(r[t],this._globalOptions.maxUrlLength));e.values[a].data=r}},_getHttpData:function(){if(this._hasNavigator||this._hasDocument){var e={};return this._hasNavigator&&I.userAgent&&(e.headers={"User-Agent":navigator.userAgent}),this._hasDocument&&(R.location&&R.location.href&&(e.url=R.location.href),R.referrer&&(e.headers||(e.headers={}),e.headers.Referer=R.referrer)),e}},_resetBackoff:function(){this._backoffDuration=0,this._backoffStart=null},_shouldBackoff:function(){return this._backoffDuration&&O()-this._backoffStart<this._backoffDuration},_isRepeatData:function(e){var t=this._lastData;return!(!t||e.message!==t.message||e.culprit!==t.culprit)&&(e.stacktrace||t.stacktrace?w(e.stacktrace,t.stacktrace):!e.exception&&!t.exception||C(e.exception,t.exception))},_setBackoffState:function(e){if(!this._shouldBackoff()){var t=e.status;if(400===t||401===t||429===t){var o;try{o=e.getResponseHeader("Retry-After"),o=1e3*parseInt(o,10)}catch(e){}this._backoffDuration=o||(2*this._backoffDuration||1e3),this._backoffStart=O()}}},_send:function(e){var t=this._globalOptions,o={project:this._globalProject,logger:t.logger,platform:"javascript"},r=this._getHttpData();r&&(o.request=r),e.trimHeadFrames&&delete e.trimHeadFrames,(e=b(o,e)).tags=b(b({},this._globalContext.tags),e.tags),e.extra=b(b({},this._globalContext.extra),e.extra),e.extra["session:duration"]=O()-this._startTime,this._breadcrumbs&&this._breadcrumbs.length>0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),d(e.tags)&&delete e.tags,this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),f(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!d(e)&&(f(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()<t.sampleRate&&this._sendProcessedPayload(e):this._sendProcessedPayload(e)))},_getUuid:function(){return S()},_sendProcessedPayload:function(e,t){var o=this,r=this._globalOptions;if(this.isSetup())if(e=this._trimPacket(e),this._globalOptions.allowDuplicates||!this._isRepeatData(e)){this._lastEventId=e.event_id||(e.event_id=this._getUuid()),this._lastData=e,this._logDebug("debug","Raven about to send:",e);var n={sentry_version:"7",sentry_client:"raven-js/"+this.VERSION,sentry_key:this._globalKey};this._globalSecret&&(n.sentry_secret=this._globalSecret);var a=e.exception&&e.exception.values[0];this.captureBreadcrumb({category:"sentry",message:a?(a.type?a.type+": ":"")+a.value:e.message,event_id:e.event_id,level:e.level||"error"});var l=this._globalEndpoint;(r.transport||this._makeRequest).call(this,{url:l,auth:n,data:e,options:r,onSuccess:function(){o._resetBackoff(),o._triggerEvent("success",{data:e,src:l}),t&&t()},onError:function(r){o._logDebug("error","Raven transport failed to send: ",r),r.request&&o._setBackoffState(r.request),o._triggerEvent("failure",{data:e,src:l}),r=r||new Error("Raven send failed (no additional details provided)"),t&&t(r)}})}else this._logDebug("warn","Raven dropped repeat event: ",e)},_makeRequest:function(e){var t=j.XMLHttpRequest&&new j.XMLHttpRequest;if(t&&("withCredentials"in t||"undefined"!=typeof XDomainRequest)){var o=e.url;"withCredentials"in t?t.onreadystatechange=function(){if(4===t.readyState)if(200===t.status)e.onSuccess&&e.onSuccess();else if(e.onError){var o=new Error("Sentry error code: "+t.status);o.request=t,e.onError(o)}}:(t=new XDomainRequest,o=o.replace(/^https?:/,""),e.onSuccess&&(t.onload=e.onSuccess),e.onError&&(t.onerror=function(){var o=new Error("Sentry error code: XDomainRequest");o.request=t,e.onError(o)})),t.open("POST",o+"?"+_(e.auth)),t.send(n(e.data))}},_logDebug:function(e){this._originalConsoleMethods[e]&&this.debug&&Function.prototype.apply.call(this._originalConsoleMethods[e],this._originalConsole,[].slice.call(arguments,1))},_mergeContext:function(e,t){u(t)?delete this._globalContext[e]:this._globalContext[e]=b(this._globalContext[e]||{},t)}},N.prototype.setUser=N.prototype.setUserContext,N.prototype.setReleaseContext=N.prototype.setRelease,e.exports=N}).call(this,o(1))},function(e,t,o){(function(t){var r=o(2),n={collectWindowErrors:!0,debug:!1},a="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},l=[].slice,i="?",s=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function c(){return"undefined"==typeof document||null==document.location?"":document.location.href}n.report=function(){var e,t,o=[],u=null,f=null,p=null;function d(e,t){var r=null;if(!t||n.collectWindowErrors){for(var a in o)if(o.hasOwnProperty(a))try{o[a].apply(null,[e].concat(l.call(arguments,2)))}catch(e){r=e}if(r)throw r}}function h(t,o,a,l,u){if(p)n.computeStackTrace.augmentStackTraceWithInitialElement(p,o,a,t),b();else if(u&&r.isError(u))d(n.computeStackTrace(u),!0);else{var f,h={url:o,line:a,column:l},m=void 0,y=t;if("[object String]"==={}.toString.call(t))(f=t.match(s))&&(m=f[1],y=f[2]);h.func=i,d({name:m,message:y,url:c(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function b(){var e=p,t=u;u=null,p=null,f=null,d.apply(null,[e,!1].concat(t))}function m(e,t){var o=l.call(arguments,1);if(p){if(f===e)return;b()}var r=n.computeStackTrace(e);if(p=r,f=e,u=o,setTimeout(function(){f===e&&b()},r.incomplete?2e3:0),!1!==t)throw e}return m.subscribe=function(r){t||(e=a.onerror,a.onerror=h,t=!0),o.push(r)},m.unsubscribe=function(e){for(var t=o.length-1;t>=0;--t)o[t]===e&&o.splice(t,1)},m.uninstall=function(){t&&(a.onerror=e,t=!1,e=void 0),o=[]},m}(),n.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,o,r,n=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,l=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,u=/\((\S*)(?::(\d+))(?::(\d+))\)/,f=e.stack.split("\n"),p=[],d=(/^(.*) is undefined$/.exec(e.message),0),h=f.length;d<h;++d){if(o=n.exec(f[d])){var b=o[2]&&0===o[2].indexOf("native");o[2]&&0===o[2].indexOf("eval")&&(t=u.exec(o[2]))&&(o[2]=t[1],o[3]=t[2],o[4]=t[3]),r={url:b?null:o[2],func:o[1]||i,args:b?[o[2]]:[],line:o[3]?+o[3]:null,column:o[4]?+o[4]:null}}else if(o=l.exec(f[d]))r={url:o[2],func:o[1]||i,args:[],line:+o[3],column:o[4]?+o[4]:null};else{if(!(o=a.exec(f[d])))continue;o[3]&&o[3].indexOf(" > eval")>-1&&(t=s.exec(o[3]))?(o[3]=t[1],o[4]=t[2],o[5]=null):0!==d||o[5]||void 0===e.columnNumber||(p[0].column=e.columnNumber+1),r={url:o[3],func:o[1]||i,args:o[2]?o[2].split(","):[],line:o[4]?+o[4]:null,column:o[5]?+o[5]:null}}!r.func&&r.line&&(r.func=i),p.push(r)}return p.length?{name:e.name,message:e.message,url:c(),stack:p}:null}}function t(e,t,o,r){var n={url:t,line:o};if(n.url&&n.line){if(e.incomplete=!1,n.func||(n.func=i),e.stack.length>0&&e.stack[0].url===n.url){if(e.stack[0].line===n.line)return!1;if(!e.stack[0].line&&e.stack[0].func===n.func)return e.stack[0].line=n.line,!1}return e.stack.unshift(n),e.partial=!0,!0}return e.incomplete=!0,!1}function o(e,a){for(var l,s,u=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,f=[],p={},d=!1,h=o.caller;h&&!d;h=h.caller)if(h!==r&&h!==n.report){if(s={url:null,func:i,line:null,column:null},h.name?s.func=h.name:(l=u.exec(h.toString()))&&(s.func=l[1]),void 0===s.func)try{s.func=l.input.substring(0,l.input.indexOf("{"))}catch(e){}p[""+h]?d=!0:p[""+h]=!0,f.push(s)}a&&f.splice(0,a);var b={name:e.name,message:e.message,url:c(),stack:f};return t(b,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),b}function r(t,r){var a=null;r=null==r?0:+r;try{if(a=e(t))return a}catch(e){if(n.debug)throw e}try{if(a=o(t,r+1))return a}catch(e){if(n.debug)throw e}return{name:t.name,message:t.message,url:c()}}return r.augmentStackTraceWithInitialElement=t,r.computeStackTraceFromStackProp=e,r}(),e.exports=n}).call(this,o(1))},function(e,t){function o(e,t){for(var o=0;o<e.length;++o)if(e[o]===t)return o;return-1}function r(e,t){var r=[],n=[];return null==t&&(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+n.slice(0,o(r,t)).join(".")+"]"}),function(a,l){if(r.length>0){var i=o(r,this);~i?r.splice(i+1):r.push(this),~i?n.splice(i,1/0,a):n.push(a),~o(r,l)&&(l=t.call(this,a,l))}else r.push(l);return null==e?l instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}(l):l:e.call(this,a,l)}}(e.exports=function(e,t,o,n){return JSON.stringify(e,r(t,n),o)}).getSerialize=r},function(e,t){function o(e){this.name="RavenConfigError",this.message=e}o.prototype=new Error,o.prototype.constructor=o,e.exports=o},function(e,t){e.exports={wrapMethod:function(e,t,o){var r=e[t],n=e;if(t in e){var a="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),l=""+e.join(" "),i={level:a,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(l="Assertion failed: "+(e.slice(1).join(" ")||"console.assert"),i.extra.arguments=e.slice(1),o&&o(l,i)):o&&o(l,i),r&&Function.prototype.apply.call(r,n,e)}}}}},function(e,t,o){"use strict";o.r(t);var r=o(0),n=o.n(r),a=window.leadinConfig,l=a.adminUrl,i=a.ajaxUrl,s=a.env,c=a.hubspotBaseUrl,u=a.leadinPluginVersion,f=a.plugins,p=a.phpVersion,d=a.portalId,h=a.theme,b=a.wpVersion,m=window.leadinI18n;var y=n.a;function g(e,t){jQuery("#toplevel_page_leadin").find("li").last().before('<li><a href="'.concat(t,'" target="_blank">').concat(e,"</a></li>"))}function v(){var e="".concat(c,"/chatflows/").concat(d),t="".concat(c,"/email/").concat(d);g(m.chatflows,e),g(m.email,t)}function _(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function S(){try{if(window.localStorage.LEADIN_DEBUG){for(var e,t=arguments.length,o=new Array(t),r=0;r<t;r++)o[r]=arguments[r];o.unshift("[Leadin]"),(e=console).log.apply(e,o)}}catch(e){}}var x={iframe:"#leadin-iframe",allMenuButtons:".toplevel_page_leadin > a, .toplevel_page_leadin > ul > li > a",subMenuButtons:".toplevel_page_leadin > ul > li"},C=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.bus=jQuery({})}var t,o,r;return t=e,(o=[{key:"trigger",value:function(){var e;(e=this.bus).trigger.apply(e,arguments)}},{key:"on",value:function(e,t){this.bus.on(e,y.wrap(t))}}])&&_(t.prototype,o),r&&_(t,r),e}()),w=[];function E(e){S("Posting message"),S(JSON.stringify(e)),jQuery(x.iframe)[0].contentWindow.postMessage(JSON.stringify(e),c)}function F(e,t){t||(t="Message Received");var o=Object.assign({},e);o.response=t,E(o)}function T(e){S("Received message"),S(JSON.stringify(e)),e.response&&e._callbackId?function(e){w[e._callbackId-1](e.response)}(e):Object.keys(e).forEach(function(t){C.trigger(t,[e[t],F.bind(null,e)])})}function k(e){if(e.origin===c)try{T(JSON.parse(e.data))}catch(e){}}function L(e,t,o,r,n){var a={url:"".concat(i,"?action=").concat(e),method:t,contentType:"application/json",success:"function"==typeof r?y.wrap(function(e){return r(JSON.parse(e))}):void 0,error:y.wrap(function(e){var t;try{t=JSON.parse(e.responseText).error}catch(o){t=e.responseText}y.captureMessage("AJAX request failed with code ".concat(e.status,": ").concat(t)),"function"==typeof n&&n()})};o&&(a.data=JSON.stringify(o)),jQuery.ajax(a)}function O(e,t,o,r){return L(e,"POST",t,o,r)}function j(e,t,o){return L(e,"GET",null,t,o)}var R,I=function(){return j("leadin_get_portal")},B=!1;function N(){R=setTimeout(function(){I(function(e){e.portalId?location.reload(!0):B||N()},N)},5e3)}var z=O.bind(null,"leadin_disconnect_ajax",{}),D=j.bind(null,"leadin_get_domain"),M=j.bind(null,"leadin_mark_outdated");function U(e){return function(e,t){C.on(e,function(){for(var e=arguments.length,o=new Array(e),r=0;r<e;r++)o[r]=arguments[r];t.apply(null,o.slice(1))})}.bind(null,e)}var P=U("leadin_clear_query_param"),H=U("leadin_connect_portal"),A=U("leadin_disable_navigation"),q=U("leadin_disconnect_portal"),J=U("leadin_enter_fullscreen"),W=U("leadin_exit_fullscreen"),K=U("leadin_get_assets_payload"),$=U("leadin_get_wp_domain"),Q=U("leadin_init_navigation"),X=U("leadin_interframe_ready"),G=U("leadin_mark_outdated"),V=U("leadin_page_reload"),Z=U("leadin_upgrade");function Y(e){!function(e,t,o,r,n){n||(n=500);var a=setTimeout(y.wrap(function(){y.captureMessage("LeadinWordpressPlugin postMessage response timeout on message key: ".concat(e)),r()}),n),l={};l[e]=t,l._callbackId=w.push(function(){clearTimeout(a),o.apply(void 0,arguments)}),E(l)}("leadin_change_route",e,null,function(){return location.reload(!0)})}function ee(){function e(){Y(window.location.search.match(/page=leadin_?(\w*)/)[1]),function(){jQuery(x.subMenuButtons).removeClass("current");var e=window.location.search.match(/\?page=leadin_?\w*/)[0];jQuery('a[href="admin.php'.concat(e,'"]')).parent().addClass("current")}()}window.addEventListener("popstate",e),jQuery(x.allMenuButtons).click(function(){event.metaKey||event.altKey||event.shiftKey||(window.history.pushState(null,null,jQuery(this).attr("href")),e(),event.preventDefault())})}var te={"genesis-sample":{formsStyle:{fontFamily:"Source Sans Pro",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#0073e5"},chatStyle:{accentColor:"#0073e5"},onScrollLeadFlowStyle:{color:"#0073e5"},onExitLeadFlowStyle:{color:"#0073e5"}},"academy-pro":{formsStyle:{fontFamily:"PT Sans",labelTextColor:"#222222",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#e22c2f"},chatStyle:{accentColor:"#e22c2f"},onScrollLeadFlowStyle:{color:"#e22c2f"},onExitLeadFlowStyle:{color:"#e22c2f"}},"agency-pro":{formsStyle:{fontFamily:"EB Garamond",labelTextColor:"#666666",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#d7c603"},chatStyle:{accentColor:"#d7c603"},onScrollLeadFlowStyle:{color:"#d7c603"},onExitLeadFlowStyle:{color:"#d7c603"}},"agentpress-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#1a212b",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#d23836"},chatStyle:{accentColor:"#d23836"},onScrollLeadFlowStyle:{color:"#d23836"},onExitLeadFlowStyle:{color:"#d23836"}},"altitude-pro":{formsStyle:{fontFamily:"Ek Mukta",labelTextColor:"#000000",labelTextSize:"20px",submitFontColor:"#ffffff",submitColor:"#079bc4"},chatStyle:{accentColor:"#079bc4"},onScrollLeadFlowStyle:{color:"#079bc4"},onExitLeadFlowStyle:{color:"#079bc4"}},"ambiance-pro":{formsStyle:{fontFamily:"Merriweather",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#e12727"},chatStyle:{accentColor:"#e12727"},onScrollLeadFlowStyle:{color:"#e12727"},onExitLeadFlowStyle:{color:"#e12727"}},"atmosphere-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#333333",labelTextSize:"20px",submitFontColor:"#ffffff",submitColor:"#333333"},chatStyle:{accentColor:"#333333"},onScrollLeadFlowStyle:{color:"#333333"},onExitLeadFlowStyle:{color:"#333333"}},"author-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"authority-pro":{formsStyle:{fontFamily:"Libre Baskerville",labelTextColor:"#333333",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#000cff"},chatStyle:{accentColor:"#000cff"},onScrollLeadFlowStyle:{color:"#000cff"},onExitLeadFlowStyle:{color:"#000cff"}},"beautiful-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#666666",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#e5554e"},chatStyle:{accentColor:"#e5554e"},onScrollLeadFlowStyle:{color:"#e5554e"},onExitLeadFlowStyle:{color:"#e5554e"}},"breakthrough-pro":{formsStyle:{fontFamily:"Alegreya Sans",labelTextColor:"#4e4756",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#4a4f9b"},chatStyle:{accentColor:"#4a4f9b"},onScrollLeadFlowStyle:{color:"#4a4f9b"},onExitLeadFlowStyle:{color:"#4a4f9b"}},"cafe-pro":{formsStyle:{fontFamily:"Crimson Text",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"daily-dish-pro":{formsStyle:{fontFamily:"Cormorant",labelTextColor:"#000000",labelTextSize:"20px",submitFontColor:"#ffffff",submitColor:"#d9037f"},chatStyle:{accentColor:"#d9037f"},onScrollLeadFlowStyle:{color:"#d9037f"},onExitLeadFlowStyle:{color:"#d9037f"}},"digital-pro":{formsStyle:{fontFamily:"Lora",labelTextColor:"#5b5e5e",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#e85555"},chatStyle:{accentColor:"#e85555"},onScrollLeadFlowStyle:{color:"#e85555"},onExitLeadFlowStyle:{color:"#e85555"}},"education-pro":{formsStyle:{fontFamily:"Roboto Condensed",labelTextColor:"#444444",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#78a7c8"},chatStyle:{accentColor:"#78a7c8"},onScrollLeadFlowStyle:{color:"#78a7c8"},onExitLeadFlowStyle:{color:"#78a7c8"}},"eleven40-pro":{formsStyle:{fontFamily:"Lora",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#ed702b"},chatStyle:{accentColor:"#ed702b"},onScrollLeadFlowStyle:{color:"#ed702b"},onExitLeadFlowStyle:{color:"#ed702b"}},"enterprise-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#777777",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#31b2ed"},chatStyle:{accentColor:"#31b2ed"},onScrollLeadFlowStyle:{color:"#31b2ed"},onExitLeadFlowStyle:{color:"#31b2ed"}},"essence-pro":{formsStyle:{fontFamily:"Alegreya Sans",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#be8100"},chatStyle:{accentColor:"#be8100"},onScrollLeadFlowStyle:{color:"#be8100"},onExitLeadFlowStyle:{color:"#be8100"}},"executive-pro":{formsStyle:{fontFamily:"Open Sans",labelTextColor:"#222222",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#64c9ea"},chatStyle:{accentColor:"#64c9ea"},onScrollLeadFlowStyle:{color:"#64c9ea"},onExitLeadFlowStyle:{color:"#64c9ea"}},"generate-pro":{formsStyle:{fontFamily:"Source Sans Pro",labelTextColor:"#222222",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#eb232f"},chatStyle:{accentColor:"#eb232f"},onScrollLeadFlowStyle:{color:"#eb232f"},onExitLeadFlowStyle:{color:"#eb232f"}},"infinity-pro":{formsStyle:{fontFamily:"Cormorant Garamond",labelTextColor:"#000000",labelTextSize:"22px",submitFontColor:"#ffffff",submitColor:"#d43c67"},chatStyle:{accentColor:"#d43c67"},onScrollLeadFlowStyle:{color:"#d43c67"},onExitLeadFlowStyle:{color:"#d43c67"}},"interior-pro":{formsStyle:{fontFamily:"Lora",labelTextColor:"#777777",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#009092"},chatStyle:{accentColor:"#009092"},onScrollLeadFlowStyle:{color:"#009092"},onExitLeadFlowStyle:{color:"#009092"}},"lifestyle-pro":{formsStyle:{fontFamily:"Droid Sans",labelTextColor:"#767673",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#27968b"},chatStyle:{accentColor:"#27968b"},onScrollLeadFlowStyle:{color:"#27968b"},onExitLeadFlowStyle:{color:"#27968b"}},"magazine-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#222222",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#008285"},chatStyle:{accentColor:"#008285"},onScrollLeadFlowStyle:{color:"#008285"},onExitLeadFlowStyle:{color:"#008285"}},"metro-pro":{formsStyle:{fontFamily:"Helvetica Neue",labelTextColor:"#222222",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#f96e5b"},chatStyle:{accentColor:"#f96e5b"},onScrollLeadFlowStyle:{color:"#f96e5b"},onExitLeadFlowStyle:{color:"#f96e5b"}},"minimum-pro":{formsStyle:{fontFamily:"Roboto Slab",labelTextColor:"#333333",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#0ebfe9"},chatStyle:{accentColor:"#0ebfe9"},onScrollLeadFlowStyle:{color:"#0ebfe9"},onExitLeadFlowStyle:{color:"#0ebfe9"}},"modern-studio-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"monochrome-pro":{formsStyle:{fontFamily:"Muli",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"news-pro":{formsStyle:{fontFamily:"Raleway",labelTextColor:"#666666",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#ff0000"},chatStyle:{accentColor:"#ff0000"},onScrollLeadFlowStyle:{color:"#ff0000"},onExitLeadFlowStyle:{color:"#ff0000"}},"no-sidebar-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#333333"},chatStyle:{accentColor:"#333333"},onScrollLeadFlowStyle:{color:"#333333"},onExitLeadFlowStyle:{color:"#333333"}},"outfitter-pro":{formsStyle:{fontFamily:"Noto Sans",labelTextColor:"#546e7a",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#000000"},chatStyle:{accentColor:"#000000"},onScrollLeadFlowStyle:{color:"#000000"},onExitLeadFlowStyle:{color:"#000000"}},"outreach-pro":{formsStyle:{fontFamily:"Lato",labelTextColor:"#333333",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#6ab446"},chatStyle:{accentColor:"#6ab446"},onScrollLeadFlowStyle:{color:"#6ab446"},onExitLeadFlowStyle:{color:"#6ab446"}},"parallax-pro":{formsStyle:{fontFamily:"Cormorant Garamond",labelTextColor:"#000000",labelTextSize:"22px",submitFontColor:"#ffffff",submitColor:"#00a0af"},chatStyle:{accentColor:"#00a0af"},onScrollLeadFlowStyle:{color:"#00a0af"},onExitLeadFlowStyle:{color:"#00a0af"}},"revolution-pro":{formsStyle:{fontFamily:"Noto Serif SC",labelTextColor:"#000000",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#008080"},chatStyle:{accentColor:"#008080"},onScrollLeadFlowStyle:{color:"#008080"},onExitLeadFlowStyle:{color:"#008080"}},"sixteen-nine-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#1dbec0"},chatStyle:{accentColor:"#1dbec0"},onScrollLeadFlowStyle:{color:"#1dbec0"},onExitLeadFlowStyle:{color:"#1dbec0"}},"smart-passive-income-pro":{formsStyle:{fontFamily:"Roboto",labelTextColor:"#333333",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#0e763c"},chatStyle:{accentColor:"#0e763c"},onScrollLeadFlowStyle:{color:"#0e763c"},onExitLeadFlowStyle:{color:"#0e763c"}},"wellness-pro":{formsStyle:{fontFamily:"Open Sans",labelTextColor:"#000000",labelTextSize:"16px",submitFontColor:"#ffffff",submitColor:"#5da44f"},chatStyle:{accentColor:"#5da44f"},onScrollLeadFlowStyle:{color:"#5da44f"},onExitLeadFlowStyle:{color:"#5da44f"}},"workstation-pro":{formsStyle:{fontFamily:"Baskerville",labelTextColor:"#222222",labelTextSize:"18px",submitFontColor:"#ffffff",submitColor:"#ff4800"},chatStyle:{accentColor:"#ff4800"},onScrollLeadFlowStyle:{color:"#ff4800"},onExitLeadFlowStyle:{color:"#ff4800"}}};X(function(e,t){t("Interframe Ready")}),H(function(e,t){!function(e,t,o){O("leadin_registration_ajax",{portalId:e},t,o)}(e,function(){clearTimeout(R),B=!0,t({success:!0})},t.bind(null,{success:!1}))}),q(function(e,t){z(t.bind(null,{success:!0}),t.bind(null,{success:!1}))}),G(function(e,t){M(t)}),Z(function(e,t){t(),location.href="".concat(l,"plugins.php")}),V(function(e,t){t(),window.location.reload(!0)}),Q(function(e,t){t(),ee()}),A(function(e,t){t(),jQuery(x.allMenuButtons).off("click")}),P(function(e,t){t();var o=window.location.toString();o.indexOf("?")>0&&(o=o.substring(0,o.indexOf("?")));var r="".concat(o,"?page=leadin");window.history.pushState({},"",r)}),$(function(e,t){D(function(e){e.domain&&t(e.domain)})}),K(function(e,t){t({payload:te[h]})}),J(function(e,t){t(),jQuery(x.iframe).addClass("leadin-iframe-fullscreen")}),W(function(e,t){t(),jQuery(x.iframe).removeClass("leadin-iframe-fullscreen")}),"prod"===s&&(n.a.config("https://[email protected]/1",{instrument:{tryCatch:!1}}).install(),n.a.setTagsContext({leadin:u,php:p,wordpress:b}),n.a.setUserContext({hub:d,plugins:Object.keys(f).map(function(e){return"".concat(e,"#").concat(f[e].Version)}).join(",")})),y.context(function(){window.addEventListener("message",k),-1!==window.location.search.indexOf("page=leadin")&&(d||N()),jQuery(document).ready(v)})}]); 2 2 //# sourceMappingURL=leadin.js.map -
leadin/trunk/scripts/leadin.js.map
r2106268 r2112768 1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/raven-js/src/singleton.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/raven-js/src/utils.js","webpack:///./node_modules/raven-js/src/raven.js","webpack:///./node_modules/raven-js/vendor/TraceKit/tracekit.js","webpack:///./node_modules/raven-js/vendor/json-stringify-safe/stringify.js","webpack:///./node_modules/raven-js/src/configError.js","webpack:///./node_modules/raven-js/src/console.js","webpack:///./js/constants/leadinConfig.js","webpack:///./js/lib/Raven.js","webpack:///./js/ chatflows.js","webpack:///./js/utils.js","webpack:///./js/constants/selectors.js","webpack:///./js/lib/Interframe.js","webpack:///./js/lib/EventBus.js","webpack:///./js/api/wordpressApi.js","webpack:///./js/api/hubspotPluginApi.js","webpack:///./js/navigation.js","webpack:///./js/constants/themes.js","webpack:///./js/handlers.js","webpack:///./js/fullscreen.js","webpack:///./js/app.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","RavenConstructor","_window","window","self","_Raven","Raven","noConflict","afterLoad","g","this","Function","e","isUndefined","what","isString","toString","supportsErrorEvent","ErrorEvent","each","obj","callback","j","length","hasKey","htmlElementAsString","elem","className","classes","attr","out","tagName","push","toLowerCase","id","split","attrWhitelist","getAttribute","join","isOnlyOneTruthy","a","b","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","isObject","isError","Error","isErrorEvent","isFunction","isEmptyObject","_","wrappedCallback","data","original","normalizedData","objectMerge","obj1","obj2","truncate","str","max","substr","objectFrozen","isFrozen","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","urlencode","pairs","encodeURIComponent","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","Math","random","htmlTreeAsString","nextStr","height","sepLength","parentNode","reverse","isSameException","ex1","ex2","values","type","stacktrace","parseUrl","url","match","query","fragment","protocol","host","path","relative","fill","replacement","track","orig","TraceKit","stringify","RavenConfigError","utils","wrapConsoleMethod","wrapMethod","dsnKeys","dsnPattern","now","Date","_document","document","_navigator","navigator","keepOriginalCallback","method","_hasJSON","JSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","location","_lastHref","href","_resetBackoff","VERSION","debug","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","apply","arguments","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","args","undefined","wrap","_before","__raven__","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","__inner__","uninstall","_restoreBuiltIns","ex","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","trimHeadFrames","stack","computeStackTrace","_handleStackInfo","msg","test","message","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","slice","setUserContext","setExtraContext","extra","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","release","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","setTimeout","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","_breadcrumbEventHandler","evtName","target","category","_keypressEventHandler","isContentEditable","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","wrappedBuiltIns","wrapTimeFn","fn","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","addEventListener","attachEvent","chrome","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","level","builtin","installer","concat","exec","allowSecretKey","port","stackInfo","_processException","frame","_normalizeFrame","in_app","stackInfoUrl","normalized","line","column","function","prefixedMessage","exception","culprit","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","userAgent","headers","User-Agent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","last","_setBackoffState","retry","getResponseHeader","parseInt","baseData","project","platform","serverName","server_name","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","XDomainRequest","onload","onerror","open","send","setUser","setReleaseContext","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","getLocationHref","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastExceptionStack","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","augmentStackTraceWithInitialElement","processLastException","groups","_lastExceptionStack","_lastArgs","rethrow","incomplete","handler","unsubscribe","splice","computeStackTraceFromStackProp","submatch","parts","element","gecko","winjs","geckoEval","chromeEval","lines","isNative","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","input","substring","sourceURL","fileName","lineNumber","description","haystack","needle","serializer","replacer","cycleReplacer","keys","thisPos","Infinity","stringifyError","spaces","getSerialize","constructor","originalConsoleLevel","originalConsole","sentryLevel","leadinConfig","adminUrl","ajaxUrl","env","hubspotBaseUrl","leadinPluginVersion","plugins","phpVersion","portalId","theme","wpVersion","i18n","leadinI18n","initChatflows","leadinMenu","getElementById","firstSubMenu","querySelector","chatflowsUrl","chatflowsHtml","chatflows","insertAdjacentHTML","localStorage","LEADIN_DEBUG","_console","_len","_key","domElements","iframe","allMenuButtons","subMenuButtons","eventBus","EventBus","_classCallCheck","bus","jQuery","_this$bus","trigger","event","on","callbacks","postMessageObject","contentWindow","postMessage","reply","newMessage","assign","handleMessage","_callbackId","handleResponse","forEach","handleMessageEvent","origin","makeRequest","action","payload","success","ajaxPayload","contentType","jqXHR","responseText","ajax","post","portalPollingTimeout","getPortal","stopPortalPolling","startPortalIdPolling","reload","disconnect","getDomain","markAsOutdated","createHandler","onClearQueryParam","onConnect","onDisableNavigation","onDisconnect","onEnterFullScreen","onExitFullScreen","onGetAssetsPayload","onGetDomain","onInitNavigation","onInterframeReady","onMarkAsOutdated","onPageReload","onUpgrade","changeRoute","route","onResponse","onTimeout","timeoutId","initNavigation","handleNavigation","search","removeClass","pageParam","parent","addClass","setSelectedMenuItem","click","metaKey","altKey","shiftKey","preventDefault","themes","genesis-sample","formsStyle","fontFamily","labelTextColor","labelTextSize","submitFontColor","submitColor","chatStyle","accentColor","onScrollLeadFlowStyle","color","onExitLeadFlowStyle","academy-pro","agency-pro","agentpress-pro","altitude-pro","ambiance-pro","atmosphere-pro","author-pro","authority-pro","beautiful-pro","breakthrough-pro","cafe-pro","daily-dish-pro","digital-pro","education-pro","eleven40-pro","enterprise-pro","essence-pro","executive-pro","generate-pro","infinity-pro","interior-pro","lifestyle-pro","magazine-pro","metro-pro","minimum-pro","modern-studio-pro","monochrome-pro","news-pro","no-sidebar-pro","outfitter-pro","outreach-pro","parallax-pro","revolution-pro","sixteen-nine-pro","smart-passive-income-pro","wellness-pro","workstation-pro","connect","off","currentWindowLocation","newWindowLocation","domain","leadin","php","wordpress","hub","map","Version","ready"],"mappings":"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","file":"leadin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\nvar RavenConstructor = require('./raven');\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _Raven = _window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function() {\n _window.Raven = _Raven;\n return Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\n// Yanked from https://git.io/vS8DV re-used under CC0\n// with some tiny modifications\nfunction isError(value) {\n switch ({}.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n}\n\nfunction isErrorEvent(value) {\n return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]';\n}\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isString(what) {\n return Object.prototype.toString.call(what) === '[object String]';\n}\n\nfunction isEmptyObject(what) {\n for (var _ in what) return false; // eslint-disable-line guard-for-in, no-unused-vars\n return true;\n}\n\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction wrappedCallback(callback) {\n function dataCallback(data, original) {\n var normalizedData = callback(data) || data;\n if (original) {\n return original(normalizedData) || normalizedData;\n }\n return normalizedData;\n }\n\n return dataCallback;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value) {\n obj1[key] = value;\n });\n return obj1;\n}\n\n/**\n * This function is only used for react-native.\n * react-native freezes object that have already been sent over the\n * js bridge. We need this function in order to check if the object is frozen.\n * So it's ok that objectFrozen returns false if Object.isFrozen is not\n * supported because it's not relevant for other \"platforms\". See related issue:\n * https://github.com/getsentry/react-native-sentry/issues/57\n */\nfunction objectFrozen(obj) {\n if (!Object.isFrozen) {\n return false;\n }\n return Object.isFrozen(obj);\n}\n\nfunction truncate(str, max) {\n return !max || str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0,\n len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not <a/> href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) return {};\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = _window.crypto || _window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n // eslint-disable-next-line no-undef\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return (\n pad(arr[0]) +\n pad(arr[1]) +\n pad(arr[2]) +\n pad(arr[3]) +\n pad(arr[4]) +\n pad(arr[5]) +\n pad(arr[6]) +\n pad(arr[7])\n );\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n /* eslint no-extra-parens:0*/\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (\n nextStr === 'html' ||\n (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n ) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\n/**\n * Returns true if either a OR b is truthy, but not both\n */\nfunction isOnlyOneTruthy(a, b) {\n return !!(!!a ^ !!b);\n}\n\n/**\n * Returns true if the two input exception interfaces have the same content\n */\nfunction isSameException(ex1, ex2) {\n if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n ex1 = ex1.values[0];\n ex2 = ex2.values[0];\n\n if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n}\n\n/**\n * Returns true if the two input stack trace interfaces have the same content\n */\nfunction isSameStacktrace(stack1, stack2) {\n if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n var frames1 = stack1.frames;\n var frames2 = stack2.frames;\n\n // Exit early if frame count differs\n if (frames1.length !== frames2.length) return false;\n\n // Iterate through every frame; bail out if anything differs\n var a, b;\n for (var i = 0; i < frames1.length; i++) {\n a = frames1[i];\n b = frames2[i];\n if (\n a.filename !== b.filename ||\n a.lineno !== b.lineno ||\n a.colno !== b.colno ||\n a['function'] !== b['function']\n )\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\nfunction fill(obj, name, replacement, track) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\nmodule.exports = {\n isObject: isObject,\n isError: isError,\n isErrorEvent: isErrorEvent,\n isUndefined: isUndefined,\n isFunction: isFunction,\n isString: isString,\n isEmptyObject: isEmptyObject,\n supportsErrorEvent: supportsErrorEvent,\n wrappedCallback: wrappedCallback,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n objectFrozen: objectFrozen,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n isSameException: isSameException,\n isSameStacktrace: isSameStacktrace,\n parseUrl: parseUrl,\n fill: fill\n};\n","/*global XDomainRequest:false */\n\nvar TraceKit = require('../vendor/TraceKit/tracekit');\nvar stringify = require('../vendor/json-stringify-safe/stringify');\nvar RavenConfigError = require('./configError');\n\nvar utils = require('./utils');\nvar isError = utils.isError;\nvar isObject = utils.isObject;\nvar isObject = utils.isObject;\nvar isErrorEvent = utils.isErrorEvent;\nvar isUndefined = utils.isUndefined;\nvar isFunction = utils.isFunction;\nvar isString = utils.isString;\nvar isEmptyObject = utils.isEmptyObject;\nvar each = utils.each;\nvar objectMerge = utils.objectMerge;\nvar truncate = utils.truncate;\nvar objectFrozen = utils.objectFrozen;\nvar hasKey = utils.hasKey;\nvar joinRegExp = utils.joinRegExp;\nvar urlencode = utils.urlencode;\nvar uuid4 = utils.uuid4;\nvar htmlTreeAsString = utils.htmlTreeAsString;\nvar isSameException = utils.isSameException;\nvar isSameStacktrace = utils.isSameStacktrace;\nvar parseUrl = utils.parseUrl;\nvar fill = utils.fill;\n\nvar wrapConsoleMethod = require('./console').wrapMethod;\n\nvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\nfunction now() {\n return +new Date();\n}\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _document = _window.document;\nvar _navigator = _window.navigator;\n\nfunction keepOriginalCallback(original, callback) {\n return isFunction(callback)\n ? function(data) {\n return callback(data, original);\n }\n : callback;\n}\n\n// First, check for JSON support\n// If there is no JSON, we no-op the core features of Raven\n// since JSON is required to encode the payload\nfunction Raven() {\n this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n // Raven can run in contexts where there's no document (react-native)\n this._hasDocument = !isUndefined(_document);\n this._hasNavigator = !isUndefined(_navigator);\n this._lastCapturedException = null;\n this._lastData = null;\n this._lastEventId = null;\n this._globalServer = null;\n this._globalKey = null;\n this._globalProject = null;\n this._globalContext = {};\n this._globalOptions = {\n logger: 'javascript',\n ignoreErrors: [],\n ignoreUrls: [],\n whitelistUrls: [],\n includePaths: [],\n collectWindowErrors: true,\n maxMessageLength: 0,\n\n // By default, truncates URL values to 250 chars\n maxUrlLength: 250,\n stackTraceLimit: 50,\n autoBreadcrumbs: true,\n instrument: true,\n sampleRate: 1\n };\n this._ignoreOnError = 0;\n this._isRavenInstalled = false;\n this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n // capture references to window.console *and* all its methods first\n // before the console plugin has a chance to monkey patch\n this._originalConsole = _window.console || {};\n this._originalConsoleMethods = {};\n this._plugins = [];\n this._startTime = now();\n this._wrappedBuiltIns = [];\n this._breadcrumbs = [];\n this._lastCapturedEvent = null;\n this._keypressTimeout;\n this._location = _window.location;\n this._lastHref = this._location && this._location.href;\n this._resetBackoff();\n\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsole) {\n this._originalConsoleMethods[method] = this._originalConsole[method];\n }\n}\n\n/*\n * The core Raven singleton\n *\n * @this {Raven}\n */\n\nRaven.prototype = {\n // Hardcode version string so that raven source can be loaded directly via\n // webpack (using a build step causes webpack #1617). Grunt verifies that\n // this value matches package.json during build.\n // See: https://github.com/getsentry/raven-js/issues/465\n VERSION: '3.19.1',\n\n debug: false,\n\n TraceKit: TraceKit, // alias to TraceKit\n\n /*\n * Configure Raven with a DSN and extra options\n *\n * @param {string} dsn The public Sentry DSN\n * @param {object} options Set of global options [optional]\n * @return {Raven}\n */\n config: function(dsn, options) {\n var self = this;\n\n if (self._globalServer) {\n this._logDebug('error', 'Error: Raven has already been configured');\n return self;\n }\n if (!dsn) return self;\n\n var globalOptions = self._globalOptions;\n\n // merge in options\n if (options) {\n each(options, function(key, value) {\n // tags and extra are special and need to be put into context\n if (key === 'tags' || key === 'extra' || key === 'user') {\n self._globalContext[key] = value;\n } else {\n globalOptions[key] = value;\n }\n });\n }\n\n self.setDSN(dsn);\n\n // \"Script error.\" is hard coded into browsers for errors that it can't read.\n // this is the result of a script being pulled in from an external domain and CORS.\n globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n // join regexp rules into one big rule\n globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);\n globalOptions.ignoreUrls = globalOptions.ignoreUrls.length\n ? joinRegExp(globalOptions.ignoreUrls)\n : false;\n globalOptions.whitelistUrls = globalOptions.whitelistUrls.length\n ? joinRegExp(globalOptions.whitelistUrls)\n : false;\n globalOptions.includePaths = joinRegExp(globalOptions.includePaths);\n globalOptions.maxBreadcrumbs = Math.max(\n 0,\n Math.min(globalOptions.maxBreadcrumbs || 100, 100)\n ); // default and hard limit is 100\n\n var autoBreadcrumbDefaults = {\n xhr: true,\n console: true,\n dom: true,\n location: true\n };\n\n var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs);\n } else if (autoBreadcrumbs !== false) {\n autoBreadcrumbs = autoBreadcrumbDefaults;\n }\n globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\n var instrumentDefaults = {\n tryCatch: true\n };\n\n var instrument = globalOptions.instrument;\n if ({}.toString.call(instrument) === '[object Object]') {\n instrument = objectMerge(instrumentDefaults, instrument);\n } else if (instrument !== false) {\n instrument = instrumentDefaults;\n }\n globalOptions.instrument = instrument;\n\n TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;\n\n // return for chaining\n return self;\n },\n\n /*\n * Installs a global window.onerror error handler\n * to capture and report uncaught exceptions.\n * At this point, install() is required to be called due\n * to the way TraceKit is set up.\n *\n * @return {Raven}\n */\n install: function() {\n var self = this;\n if (self.isSetup() && !self._isRavenInstalled) {\n TraceKit.report.subscribe(function() {\n self._handleOnErrorStackInfo.apply(self, arguments);\n });\n if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n self._instrumentTryCatch();\n }\n\n if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs();\n\n // Install all of the plugins\n self._drainPlugins();\n\n self._isRavenInstalled = true;\n }\n\n Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n return this;\n },\n\n /*\n * Set the DSN (can be called multiple time unlike config)\n *\n * @param {string} dsn The public Sentry DSN\n */\n setDSN: function(dsn) {\n var self = this,\n uri = self._parseDSN(dsn),\n lastSlash = uri.path.lastIndexOf('/'),\n path = uri.path.substr(1, lastSlash);\n\n self._dsn = dsn;\n self._globalKey = uri.user;\n self._globalSecret = uri.pass && uri.pass.substr(1);\n self._globalProject = uri.path.substr(lastSlash + 1);\n\n self._globalServer = self._getGlobalServer(uri);\n\n self._globalEndpoint =\n self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/';\n\n // Reset backoff state since we may be pointing at a\n // new project/server\n this._resetBackoff();\n },\n\n /*\n * Wrap code within a context so Raven can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n context: function(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = undefined;\n }\n\n return this.wrap(options, func).apply(this, args);\n },\n\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} func A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n wrap: function(options, func, _before) {\n var self = this;\n // 1 argument has been passed, and it's not a function\n // so just return it\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n }\n\n // options is optional\n if (isFunction(options)) {\n func = options;\n options = undefined;\n }\n\n // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n if (!isFunction(func)) {\n return func;\n }\n\n // We don't wanna wrap it twice!\n try {\n if (func.__raven__) {\n return func;\n }\n\n // If this has already been wrapped in the past, return that\n if (func.__raven_wrapper__) {\n return func.__raven_wrapper__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n function wrapped() {\n var args = [],\n i = arguments.length,\n deep = !options || (options && options.deep !== false);\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n }\n\n // Recursively wrap all of a function's arguments that are\n // functions themselves.\n while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n try {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means Raven caught an error invoking your application code. This is\n // expected behavior and NOT indicative of a bug with Raven.js.\n return func.apply(this, args);\n } catch (e) {\n self._ignoreNextOnError();\n self.captureException(e, options);\n throw e;\n }\n }\n\n // copy over properties of the old function\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n wrapped.prototype = func.prototype;\n\n func.__raven_wrapper__ = wrapped;\n // Signal that this function has been wrapped already\n // for both debugging and to prevent it to being wrapped twice\n wrapped.__raven__ = true;\n wrapped.__inner__ = func;\n\n return wrapped;\n },\n\n /*\n * Uninstalls the global error handler.\n *\n * @return {Raven}\n */\n uninstall: function() {\n TraceKit.report.uninstall();\n\n this._restoreBuiltIns();\n\n Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n this._isRavenInstalled = false;\n\n return this;\n },\n\n /*\n * Manually capture an exception and send it over to Sentry\n *\n * @param {error} ex An exception to be logged\n * @param {object} options A specific set of options for this error [optional]\n * @return {Raven}\n */\n captureException: function(ex, options) {\n // Cases for sending ex as a message, rather than an exception\n var isNotError = !isError(ex);\n var isNotErrorEvent = !isErrorEvent(ex);\n var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error;\n\n if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) {\n return this.captureMessage(\n ex,\n objectMerge(\n {\n trimHeadFrames: 1,\n stacktrace: true // if we fall back to captureMessage, default to attempting a new trace\n },\n options\n )\n );\n }\n\n // Get actual Error from ErrorEvent\n if (isErrorEvent(ex)) ex = ex.error;\n\n // Store the raw exception object for potential debugging and introspection\n this._lastCapturedException = ex;\n\n // TraceKit.report will re-raise any exception passed to it,\n // which means you have to wrap it in try/catch. Instead, we\n // can wrap it here and only re-raise if TraceKit.report\n // raises an exception different from the one we asked to\n // report on.\n try {\n var stack = TraceKit.computeStackTrace(ex);\n this._handleStackInfo(stack, options);\n } catch (ex1) {\n if (ex !== ex1) {\n throw ex1;\n }\n }\n\n return this;\n },\n\n /*\n * Manually send a message to Sentry\n *\n * @param {string} msg A plain message to be captured in Sentry\n * @param {object} options A specific set of options for this message [optional]\n * @return {Raven}\n */\n captureMessage: function(msg, options) {\n // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n // early call; we'll error on the side of logging anything called before configuration since it's\n // probably something you should see:\n if (\n !!this._globalOptions.ignoreErrors.test &&\n this._globalOptions.ignoreErrors.test(msg)\n ) {\n return;\n }\n\n options = options || {};\n\n var data = objectMerge(\n {\n message: msg + '' // Make sure it's actually a string\n },\n options\n );\n\n var ex;\n // Generate a \"synthetic\" stack trace from this point.\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n // or if it catches a thrown object without a \"stack\" property.\n try {\n throw new Error(msg);\n } catch (ex1) {\n ex = ex1;\n }\n\n // null exception name so `Error` isn't prefixed to msg\n ex.name = null;\n var stack = TraceKit.computeStackTrace(ex);\n\n // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n var initialCall = stack.stack[1];\n\n var fileurl = (initialCall && initialCall.url) || '';\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n if (this._globalOptions.stacktrace || (options && options.stacktrace)) {\n options = objectMerge(\n {\n // fingerprint on msg, not stack trace (legacy behavior, could be\n // revisited)\n fingerprint: msg,\n // since we know this is a synthetic trace, the top N-most frames\n // MUST be from Raven.js, so mark them as in_app later by setting\n // trimHeadFrames\n trimHeadFrames: (options.trimHeadFrames || 0) + 1\n },\n options\n );\n\n var frames = this._prepareFrames(stack, options);\n data.stacktrace = {\n // Sentry expects frames oldest to newest\n frames: frames.reverse()\n };\n }\n\n // Fire away!\n this._send(data);\n\n return this;\n },\n\n captureBreadcrumb: function(obj) {\n var crumb = objectMerge(\n {\n timestamp: now() / 1000\n },\n obj\n );\n\n if (isFunction(this._globalOptions.breadcrumbCallback)) {\n var result = this._globalOptions.breadcrumbCallback(crumb);\n\n if (isObject(result) && !isEmptyObject(result)) {\n crumb = result;\n } else if (result === false) {\n return this;\n }\n }\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n this._breadcrumbs.shift();\n }\n return this;\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = [].slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the breadcrumbCallback option\n *\n * @param {function} callback The callback to run which allows filtering\n * or mutating breadcrumbs\n * @return {Raven}\n */\n setBreadcrumbCallback: function(callback) {\n var original = this._globalOptions.breadcrumbCallback;\n this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function() {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = _window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function(options) {\n if (\n !_document // doesn't work without a document (React native)\n )\n return;\n\n options = options || {};\n\n var lastEventId = options.eventId || this.lastEventId();\n if (!lastEventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n var dsn = options.dsn || this._dsn;\n if (!dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var qs = '';\n qs += '?eventId=' + encode(lastEventId);\n qs += '&dsn=' + encode(dsn);\n\n var user = options.user || this._globalContext.user;\n if (user) {\n if (user.name) qs += '&name=' + encode(user.name);\n if (user.email) qs += '&email=' + encode(user.email);\n }\n\n var globalServer = this._getGlobalServer(this._parseDSN(dsn));\n\n var script = _document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/' + qs;\n (_document.head || _document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function() {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function() {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument) return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n if (_document.createEvent) {\n evt = _document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = _document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options)\n if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (_document.createEvent) {\n // IE9 if standards\n _document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch (e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function(evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt) return;\n\n self._lastCapturedEvent = evt;\n\n // try/catch both:\n // - accessing evt.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = htmlTreeAsString(evt.target);\n } catch (e) {\n target = '<unknown>';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function(evt) {\n var target;\n try {\n target = evt.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (\n !tagName ||\n (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n )\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function() {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n /**\n * Wrap timer functions and event targets to catch errors and provide\n * better metadata.\n */\n _instrumentTryCatch: function() {\n var self = this;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(originalCallback);\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(\n proto,\n 'addEventListener',\n function(orig) {\n return function(evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(fn.handleEvent);\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n var before, clickHandler, keypressHandler;\n\n if (\n autoBreadcrumbs &&\n autoBreadcrumbs.dom &&\n (global === 'EventTarget' || global === 'Node')\n ) {\n // NOTE: generating multiple handlers per addEventListener invocation, should\n // revisit and verify we can just use one (almost certainly)\n clickHandler = self._breadcrumbEventHandler('click');\n keypressHandler = self._keypressEventHandler();\n before = function(evt) {\n // need to intercept every DOM event in `before` argument, in case that\n // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n // see #724\n if (!evt) return;\n\n var eventType;\n try {\n eventType = evt.type;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n if (eventType === 'click') return clickHandler(evt);\n else if (eventType === 'keypress') return keypressHandler(evt);\n };\n }\n return orig.call(\n this,\n evtName,\n self.wrap(fn, undefined, before),\n capture,\n secure\n );\n };\n },\n wrappedBuiltIns\n );\n fill(\n proto,\n 'removeEventListener',\n function(orig) {\n return function(evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n } catch (e) {\n // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n }\n return orig.call(this, evt, fn, capture, secure);\n };\n },\n wrappedBuiltIns\n );\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n if (_window.requestAnimationFrame) {\n fill(\n _window,\n 'requestAnimationFrame',\n function(orig) {\n return function(cb) {\n return orig(self.wrap(cb));\n };\n },\n wrappedBuiltIns\n );\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload'\n ];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n },\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - XMLHttpRequests\n * - DOM interactions (click/typing)\n * - window.location changes\n * - console\n *\n * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n */\n _instrumentBreadcrumbs: function() {\n var self = this;\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function(orig) {\n return self.wrap(orig);\n }); // intentionally don't track filled methods on XHR instances\n }\n }\n\n if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) {\n var xhrproto = XMLHttpRequest.prototype;\n fill(\n xhrproto,\n 'open',\n function(origOpen) {\n return function(method, url) {\n // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n\n fill(\n xhrproto,\n 'send',\n function(origSend) {\n return function(data) {\n // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(\n xhr,\n 'onreadystatechange',\n function(orig) {\n return self.wrap(orig, undefined, onreadystatechangeHandler);\n } /* intentionally don't track this instrumentation */\n );\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n }\n\n if (autoBreadcrumbs.xhr && 'fetch' in _window) {\n fill(\n _window,\n 'fetch',\n function(origFetch) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n } else if ('Request' in _window && fetchInput instanceof _window.Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n } else {\n url = '' + fetchInput;\n }\n\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n\n var fetchData = {\n method: method,\n url: url,\n status_code: null\n };\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData\n });\n\n return origFetch.apply(this, args).then(function(response) {\n fetchData.status_code = response.status;\n\n return response;\n });\n };\n },\n wrappedBuiltIns\n );\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (autoBreadcrumbs.dom && this._hasDocument) {\n if (_document.addEventListener) {\n _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n _document.addEventListener('keypress', self._keypressEventHandler(), false);\n } else {\n // IE8 Compatibility\n _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n _document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = _window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushAndReplaceState =\n !isChromePackagedApp &&\n _window.history &&\n history.pushState &&\n history.replaceState;\n if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = _window.onpopstate;\n _window.onpopstate = function() {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n var historyReplacementFunction = function(origHistFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origHistFunction.apply(this, arguments);\n };\n };\n\n fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n }\n\n if (autoBreadcrumbs.console && 'console' in _window && console.log) {\n // console\n var consoleMethodCallback = function(msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n },\n\n _restoreBuiltIns: function() {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch (e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError(\n 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n );\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function() {\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo.apply(this, arguments);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var frames = this._prepareFrames(stackInfo, options);\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames,\n options\n );\n },\n\n _prepareFrames: function(stackInfo, options) {\n var self = this;\n var frames = [];\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack, stackInfo.url);\n if (frame) {\n frames.push(frame);\n }\n });\n\n // e.g. frames captured via captureMessage throw\n if (options && options.trimHeadFrames) {\n for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n frames[j].in_app = false;\n }\n }\n }\n frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n return frames;\n },\n\n _normalizeFrame: function(frame, stackInfoUrl) {\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n function: frame.func || '?'\n };\n\n // Case when we don't have any information about the error\n // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n // Generating synthetic error doesn't add any value here\n //\n // We should probably somehow let a user know that they should fix their code\n if (!frame.url) {\n normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n }\n\n normalized.in_app = !// determine if an exception came from outside of our app\n // first we check the global includePaths list.\n (\n (!!this._globalOptions.includePaths.test &&\n !this._globalOptions.includePaths.test(normalized.filename)) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n if (\n !!this._globalOptions.ignoreErrors.test &&\n (this._globalOptions.ignoreErrors.test(message) ||\n this._globalOptions.ignoreErrors.test(prefixedMessage))\n ) {\n return;\n }\n\n var stacktrace;\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [\n {\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }\n ]\n };\n }\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n var data = objectMerge(\n {\n // sentry.interfaces.Exception\n exception: {\n values: [\n {\n type: type,\n value: message,\n stacktrace: stacktrace\n }\n ]\n },\n culprit: fileurl\n },\n options\n );\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n var request = data.request;\n if (request) {\n if (request.url) {\n request.url = truncate(request.url, this._globalOptions.maxUrlLength);\n }\n if (request.Referer) {\n request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);\n }\n }\n\n if (data.breadcrumbs && data.breadcrumbs.values)\n this._trimBreadcrumbs(data.breadcrumbs);\n\n return data;\n },\n\n /**\n * Truncate breadcrumb values (right now just URLs)\n */\n _trimBreadcrumbs: function(breadcrumbs) {\n // known breadcrumb properties with urls\n // TODO: also consider arbitrary prop values that start with (https?)?://\n var urlProps = ['to', 'from', 'url'],\n urlProp,\n crumb,\n data;\n\n for (var i = 0; i < breadcrumbs.values.length; ++i) {\n crumb = breadcrumbs.values[i];\n if (\n !crumb.hasOwnProperty('data') ||\n !isObject(crumb.data) ||\n objectFrozen(crumb.data)\n )\n continue;\n\n data = objectMerge({}, crumb.data);\n for (var j = 0; j < urlProps.length; ++j) {\n urlProp = urlProps[j];\n if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength);\n }\n }\n breadcrumbs.values[i].data = data;\n }\n },\n\n _getHttpData: function() {\n if (!this._hasNavigator && !this._hasDocument) return;\n var httpData = {};\n\n if (this._hasNavigator && _navigator.userAgent) {\n httpData.headers = {\n 'User-Agent': navigator.userAgent\n };\n }\n\n if (this._hasDocument) {\n if (_document.location && _document.location.href) {\n httpData.url = _document.location.href;\n }\n if (_document.referrer) {\n if (!httpData.headers) httpData.headers = {};\n httpData.headers.Referer = _document.referrer;\n }\n }\n\n return httpData;\n },\n\n _resetBackoff: function() {\n this._backoffDuration = 0;\n this._backoffStart = null;\n },\n\n _shouldBackoff: function() {\n return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n },\n\n /**\n * Returns true if the in-process data payload matches the signature\n * of the previously-sent data\n *\n * NOTE: This has to be done at this level because TraceKit can generate\n * data from window.onerror WITHOUT an exception object (IE8, IE9,\n * other old browsers). This can take the form of an \"exception\"\n * data object with a single frame (derived from the onerror args).\n */\n _isRepeatData: function(current) {\n var last = this._lastData;\n\n if (\n !last ||\n current.message !== last.message || // defined for captureMessage\n current.culprit !== last.culprit // defined for captureException/onerror\n )\n return false;\n\n // Stacktrace interface (i.e. from captureMessage)\n if (current.stacktrace || last.stacktrace) {\n return isSameStacktrace(current.stacktrace, last.stacktrace);\n } else if (current.exception || last.exception) {\n // Exception interface (i.e. from captureException/onerror)\n return isSameException(current.exception, last.exception);\n }\n\n return true;\n },\n\n _setBackoffState: function(request) {\n // If we are already in a backoff state, don't change anything\n if (this._shouldBackoff()) {\n return;\n }\n\n var status = request.status;\n\n // 400 - project_id doesn't exist or some other fatal\n // 401 - invalid/revoked dsn\n // 429 - too many requests\n if (!(status === 400 || status === 401 || status === 429)) return;\n\n var retry;\n try {\n // If Retry-After is not in Access-Control-Expose-Headers, most\n // browsers will throw an exception trying to access it\n retry = request.getResponseHeader('Retry-After');\n retry = parseInt(retry, 10) * 1000; // Retry-After is returned in seconds\n } catch (e) {\n /* eslint no-empty:0 */\n }\n\n this._backoffDuration = retry\n ? // If Sentry server returned a Retry-After value, use it\n retry\n : // Otherwise, double the last backoff duration (starts at 1 sec)\n this._backoffDuration * 2 || 1000;\n\n this._backoffStart = now();\n },\n\n _send: function(data) {\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n },\n httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n // If there are no tags/extra, strip the key from the payload alltogther.\n if (isEmptyObject(data.tags)) delete data.tags;\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (\n isFunction(globalOptions.shouldSendCallback) &&\n !globalOptions.shouldSendCallback(data)\n ) {\n return;\n }\n\n // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n // so drop requests until \"cool-off\" period has elapsed.\n if (this._shouldBackoff()) {\n this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n return;\n }\n\n if (typeof globalOptions.sampleRate === 'number') {\n if (Math.random() < globalOptions.sampleRate) {\n this._sendProcessedPayload(data);\n }\n } else {\n this._sendProcessedPayload(data);\n }\n },\n\n _getUuid: function() {\n return uuid4();\n },\n\n _sendProcessedPayload: function(data, callback) {\n var self = this;\n var globalOptions = this._globalOptions;\n\n if (!this.isSetup()) return;\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n // but this would require copying an un-truncated copy of the data packet, which can be\n // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n this._logDebug('warn', 'Raven dropped repeat event: ', data);\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n // Store outbound payload after trim\n this._lastData = data;\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.value\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._resetBackoff();\n\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n callback && callback();\n },\n onError: function failure(error) {\n self._logDebug('error', 'Raven transport failed to send: ', error);\n\n if (error.request) {\n self._setBackoffState(error.request);\n }\n\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n error = error || new Error('Raven send failed (no additional details provided)');\n callback && callback(error);\n }\n });\n },\n\n _makeRequest: function(opts) {\n var request = _window.XMLHttpRequest && new _window.XMLHttpRequest();\n if (!request) return;\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n var url = opts.url;\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function() {\n if (request.readyState !== 4) {\n return;\n } else if (request.status === 200) {\n opts.onSuccess && opts.onSuccess();\n } else if (opts.onError) {\n var err = new Error('Sentry error code: ' + request.status);\n err.request = request;\n opts.onError(err);\n }\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n if (opts.onSuccess) {\n request.onload = opts.onSuccess;\n }\n if (opts.onError) {\n request.onerror = function() {\n var err = new Error('Sentry error code: XDomainRequest');\n err.request = request;\n opts.onError(err);\n };\n }\n }\n\n // NOTE: auth is intentionally sent as part of query string (NOT as custom\n // HTTP header) so as to avoid preflight CORS requests\n request.open('POST', url + '?' + urlencode(opts.auth));\n request.send(stringify(opts.data));\n },\n\n _logDebug: function(level) {\n if (this._originalConsoleMethods[level] && this.debug) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n","var utils = require('../../src/utils');\n\n/*\n TraceKit - Cross brower stack traces\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null) return '';\n\n return document.location.href;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.<string, *>} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(message, url, lineNo, colNo, ex) {\n var stack = null;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n lastExceptionStack,\n url,\n lineNo,\n message\n );\n processLastException();\n } else if (ex && utils.isError(ex)) {\n // non-string `ex` arg; attempt to extract stack trace\n\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(ex);\n notifyHandlers(stack, true);\n } else {\n var location = {\n url: url,\n line: lineNo,\n column: colNo\n };\n\n var name = undefined;\n var msg = message; // must be new var or will modify original `arguments`\n var groups;\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n name: name,\n message: msg,\n url: getLocationHref(),\n stack: [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(function() {\n if (lastException === ex) {\n processLastException();\n }\n }, stack.incomplete ? 2000 : 0);\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n})();\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.<string, *>} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n var chrome = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,\n winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n // Used to additionally parse URL/line/column from eval frames\n geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,\n chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,\n lines = ex.stack.split('\\n'),\n stack = [],\n submatch,\n parts,\n element,\n reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: !isNative ? parts[2] : null,\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.<string, *>} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (\n !stackInfo.stack[0].line &&\n stackInfo.stack[0].func === initial.func\n ) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.<string, *>} Stack trace information.\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (\n var curr = computeStackTraceByWalkingCallerChain.caller;\n curr && !recursion;\n curr = curr.caller\n ) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n line: null,\n column: null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n augmentStackTraceWithInitialElement(\n result,\n ex.sourceURL || ex.fileName,\n ex.line || ex.lineNumber,\n ex.message || ex.description\n );\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n return computeStackTrace;\n})();\n\nmodule.exports = TraceKit;\n","/*\n json-stringify-safe\n Like JSON.stringify, but doesn't throw on circular references.\n\n Originally forked from https://github.com/isaacs/json-stringify-safe\n version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n and IE8 compatibility. Tests for this are in test/vendor.\n\n ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n*/\n\nexports = module.exports = stringify;\nexports.getSerialize = serializer;\n\nfunction indexOf(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) return i;\n }\n return -1;\n}\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n}\n\n// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\nfunction stringifyError(value) {\n var err = {\n // These properties are implemented as magical getters and don't show up in for in\n stack: value.stack,\n message: value.message,\n name: value.name\n };\n\n for (var i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i)) {\n err[i] = value[i];\n }\n }\n\n return err;\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [];\n var keys = [];\n\n if (cycleReplacer == null) {\n cycleReplacer = function(key, value) {\n if (stack[0] === value) {\n return '[Circular ~]';\n }\n return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n };\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = indexOf(stack, this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n if (~indexOf(stack, value)) {\n value = cycleReplacer.call(this, key, value);\n }\n } else {\n stack.push(value);\n }\n\n return replacer == null\n ? value instanceof Error ? stringifyError(value) : value\n : replacer.call(this, key, value);\n };\n}\n","function RavenConfigError(message) {\n this.name = 'RavenConfigError';\n this.message = message;\n}\nRavenConfigError.prototype = new Error();\nRavenConfigError.prototype.constructor = RavenConfigError;\n\nmodule.exports = RavenConfigError;\n","var wrapMethod = function(console, level, callback) {\n var originalConsoleLevel = console[level];\n var originalConsole = console;\n\n if (!(level in console)) {\n return;\n }\n\n var sentryLevel = level === 'warn' ? 'warning' : level;\n\n console[level] = function() {\n var args = [].slice.call(arguments);\n\n var msg = '' + args.join(' ');\n var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};\n\n if (level === 'assert') {\n if (args[0] === false) {\n // Default browsers message\n msg = 'Assertion failed: ' + (args.slice(1).join(' ') || 'console.assert');\n data.extra.arguments = args.slice(1);\n callback && callback(msg, data);\n }\n } else {\n callback && callback(msg, data);\n }\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n // IE9 doesn't allow calling apply on console functions directly\n // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n }\n };\n};\n\nmodule.exports = {\n wrapMethod: wrapMethod\n};\n","const {\n adminUrl,\n ajaxUrl,\n env,\n hubspotBaseUrl,\n leadinPluginVersion,\n plugins,\n phpVersion,\n portalId,\n theme,\n wpVersion,\n} = window.leadinConfig;\n\nconst i18n = window.leadinI18n;\n\nexport {\n adminUrl,\n ajaxUrl,\n env,\n hubspotBaseUrl,\n i18n,\n leadinPluginVersion,\n plugins,\n phpVersion,\n portalId,\n theme,\n wpVersion,\n};\n","import Raven from 'raven-js';\nimport {\n env,\n phpVersion,\n wpVersion,\n leadinPluginVersion,\n portalId,\n plugins,\n} from '../constants/leadinConfig';\n\nexport function configureRaven() {\n if (env !== 'prod') {\n return;\n }\n\n Raven.config(\n 'https://[email protected]/1',\n {\n instrument: {\n tryCatch: false,\n },\n }\n ).install();\n\n Raven.setTagsContext({\n leadin: leadinPluginVersion,\n php: phpVersion,\n wordpress: wpVersion,\n });\n\n Raven.setUserContext({\n hub: portalId,\n plugins: Object.keys(plugins)\n .map(name => `${name}#${plugins[name].Version}`)\n .join(','),\n });\n}\n\nexport default Raven;\n","import { hubspotBaseUrl, portalId, i18n } from './constants/leadinConfig';\n\nexport function initChatflows() {\n const leadinMenu = document.getElementById('toplevel_page_leadin');\n const firstSubMenu = leadinMenu && leadinMenu.querySelector('.wp-first-item');\n const chatflowsUrl = `${hubspotBaseUrl}/chatflows/${portalId}`;\n\n const chatflowsHtml = `<li><a href=\"${chatflowsUrl}\" target=\"_blank\">${\n i18n.chatflows\n }</a></li>`;\n\n if (firstSubMenu) {\n firstSubMenu.insertAdjacentHTML('afterend', chatflowsHtml);\n }\n}\n","export function log(...args) {\n try {\n if (window.localStorage.LEADIN_DEBUG) {\n args.unshift('[Leadin]');\n console.log(...args);\n }\n } catch (e) {\n //\n }\n}\n","export const domElements = {\n iframe: '#leadin-iframe',\n allMenuButtons:\n '.toplevel_page_leadin > a, .toplevel_page_leadin > ul > li > a',\n subMenuButtons: '.toplevel_page_leadin > ul > li',\n};\n","import EventBus from './EventBus';\nimport { log } from '../utils';\nimport { domElements } from '../constants/selectors';\nimport { hubspotBaseUrl } from '../constants/leadinConfig';\nimport Raven from './Raven';\n\nconst eventBus = new EventBus();\nconst callbacks = [];\n\nfunction postMessageObject(message) {\n log('Posting message');\n log(JSON.stringify(message));\n jQuery(domElements.iframe)[0].contentWindow.postMessage(\n JSON.stringify(message),\n hubspotBaseUrl\n );\n}\n\nfunction reply(message, response) {\n if (!response) {\n response = 'Message Received';\n }\n const newMessage = Object.assign({}, message);\n newMessage.response = response;\n postMessageObject(newMessage);\n}\n\nfunction handleResponse(message) {\n callbacks[message._callbackId - 1](message.response);\n}\n\nfunction handleMessage(message) {\n log('Received message');\n log(JSON.stringify(message));\n\n if (message.response && message._callbackId) {\n handleResponse(message);\n } else {\n Object.keys(message).forEach(key => {\n eventBus.trigger(key, [message[key], reply.bind(null, message)]);\n });\n }\n}\n\nfunction handleMessageEvent(event) {\n if (event.origin === hubspotBaseUrl) {\n try {\n const data = JSON.parse(event.data);\n handleMessage(data);\n } catch (e) {\n // Error in parsing message\n }\n }\n}\n\nexport function postMessage(key, payload, onResponse, onTimeout, timeout) {\n if (!timeout) {\n timeout = 500;\n }\n\n const timeoutCallback = function() {\n Raven.captureMessage(\n `LeadinWordpressPlugin postMessage response timeout on message key: ${key}`\n );\n onTimeout();\n };\n\n const timeoutId = setTimeout(Raven.wrap(timeoutCallback), timeout);\n\n const message = {};\n message[key] = payload;\n message._callbackId = callbacks.push((...args) => {\n clearTimeout(timeoutId);\n onResponse(...args);\n });\n postMessageObject(message);\n}\n\nexport function onMessage(key, callback) {\n eventBus.on(key, (...args) => {\n callback.apply(null, args.slice(1));\n });\n}\n\nexport function initInterframe() {\n window.addEventListener('message', handleMessageEvent);\n}\n","import Raven from './Raven';\n\nexport default class EventBus {\n constructor() {\n this.bus = jQuery({});\n }\n\n trigger(...args) {\n this.bus.trigger(...args);\n }\n\n on(event, callback) {\n this.bus.on(event, Raven.wrap(callback));\n }\n}\n","import Raven from '../lib/Raven';\nimport { ajaxUrl } from '../constants/leadinConfig';\n\nfunction makeRequest(action, method, payload, success, error) {\n const url = `${ajaxUrl}?action=${action}`;\n const ajaxPayload = {\n url,\n method,\n contentType: 'application/json',\n success:\n typeof success === 'function'\n ? Raven.wrap(data => success(JSON.parse(data)))\n : undefined,\n error: Raven.wrap(jqXHR => {\n let message;\n try {\n message = JSON.parse(jqXHR.responseText).error;\n } catch (e) {\n message = jqXHR.responseText;\n }\n\n Raven.captureMessage(\n `AJAX request failed with code ${jqXHR.status}: ${message}`\n );\n\n if (typeof error === 'function') {\n error();\n }\n }),\n };\n\n if (payload) {\n ajaxPayload.data = JSON.stringify(payload);\n }\n\n jQuery.ajax(ajaxPayload);\n}\n\nfunction post(action, payload, success, error) {\n return makeRequest(action, 'POST', payload, success, error);\n}\n\nfunction get(action, success, error) {\n return makeRequest(action, 'GET', null, success, error);\n}\n\nconst getPortal = () => get('leadin_get_portal');\nlet portalPollingTimeout;\nlet stopPortalPolling = false;\n\nexport function startPortalIdPolling() {\n portalPollingTimeout = setTimeout(() => {\n getPortal(data => {\n if (data.portalId) {\n location.reload(true);\n } else if (!stopPortalPolling) {\n startPortalIdPolling();\n }\n }, startPortalIdPolling);\n }, 5000);\n}\n\nexport function clearPortalIdPolling() {\n clearTimeout(portalPollingTimeout);\n stopPortalPolling = true;\n}\n\nexport const connect = (portalId, success, error) =>\n post('leadin_registration_ajax', { portalId }, success, error);\n\nexport const disconnect = post.bind(null, 'leadin_disconnect_ajax', {});\nexport const getDomain = get.bind(null, 'leadin_get_domain');\nexport const markAsOutdated = get.bind(null, 'leadin_mark_outdated');\n","import { onMessage, postMessage } from '../lib/Interframe';\n\nfunction createHandler(key) {\n return onMessage.bind(null, key);\n}\n\nexport const onClearQueryParam = createHandler('leadin_clear_query_param');\nexport const onConnect = createHandler('leadin_connect_portal');\nexport const onDisableNavigation = createHandler('leadin_disable_navigation');\nexport const onDisconnect = createHandler('leadin_disconnect_portal');\nexport const onEnterFullScreen = createHandler('leadin_enter_fullscreen');\nexport const onExitFullScreen = createHandler('leadin_exit_fullscreen');\nexport const onGetAssetsPayload = createHandler('leadin_get_assets_payload');\nexport const onGetDomain = createHandler('leadin_get_wp_domain');\nexport const onInitNavigation = createHandler('leadin_init_navigation');\nexport const onInterframeReady = createHandler('leadin_interframe_ready');\nexport const onMarkAsOutdated = createHandler('leadin_mark_outdated');\nexport const onPageReload = createHandler('leadin_page_reload');\nexport const onUpgrade = createHandler('leadin_upgrade');\n\nexport function changeRoute(route) {\n postMessage('leadin_change_route', route, null, () => location.reload(true));\n}\n","import { domElements } from './constants/selectors';\nimport { changeRoute } from './api/hubspotPluginApi';\n\nexport function initNavigation() {\n function setSelectedMenuItem() {\n jQuery(domElements.subMenuButtons).removeClass('current');\n const pageParam = window.location.search.match(/\\?page=leadin_?\\w*/)[0]; // filter page query param\n const selectedElement = jQuery(`a[href=\"admin.php${pageParam}\"]`);\n selectedElement.parent().addClass('current');\n }\n\n function handleNavigation() {\n const appRoute = window.location.search.match(/page=leadin_?(\\w*)/)[1];\n changeRoute(appRoute);\n setSelectedMenuItem();\n }\n\n function handleClick() {\n // Don't interrupt modifier keys\n if (event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n window.history.pushState(null, null, jQuery(this).attr('href'));\n handleNavigation();\n event.preventDefault();\n }\n\n // Browser back and forward events navigation\n window.addEventListener('popstate', handleNavigation);\n\n // Menu Navigation\n jQuery(domElements.allMenuButtons).click(handleClick);\n}\n\nexport function disableNavigation() {\n jQuery(domElements.allMenuButtons).off('click');\n}\n","export default {\n 'genesis-sample': {\n formsStyle: {\n fontFamily: 'Source Sans Pro',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#0073e5',\n },\n chatStyle: {\n accentColor: '#0073e5',\n },\n onScrollLeadFlowStyle: {\n color: '#0073e5',\n },\n onExitLeadFlowStyle: {\n color: '#0073e5',\n },\n },\n 'academy-pro': {\n formsStyle: {\n fontFamily: 'PT Sans',\n labelTextColor: '#222222',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#e22c2f',\n },\n chatStyle: {\n accentColor: '#e22c2f',\n },\n onScrollLeadFlowStyle: {\n color: '#e22c2f',\n },\n onExitLeadFlowStyle: {\n color: '#e22c2f',\n },\n },\n 'agency-pro': {\n formsStyle: {\n fontFamily: 'EB Garamond',\n labelTextColor: '#666666',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#d7c603',\n },\n chatStyle: {\n accentColor: '#d7c603',\n },\n onScrollLeadFlowStyle: {\n color: '#d7c603',\n },\n onExitLeadFlowStyle: {\n color: '#d7c603',\n },\n },\n 'agentpress-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#1a212b',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#d23836',\n },\n chatStyle: {\n accentColor: '#d23836',\n },\n onScrollLeadFlowStyle: {\n color: '#d23836',\n },\n onExitLeadFlowStyle: {\n color: '#d23836',\n },\n },\n 'altitude-pro': {\n formsStyle: {\n fontFamily: 'Ek Mukta',\n labelTextColor: '#000000',\n labelTextSize: '20px',\n submitFontColor: '#ffffff',\n submitColor: '#079bc4',\n },\n chatStyle: {\n accentColor: '#079bc4',\n },\n onScrollLeadFlowStyle: {\n color: '#079bc4',\n },\n onExitLeadFlowStyle: {\n color: '#079bc4',\n },\n },\n 'ambiance-pro': {\n formsStyle: {\n fontFamily: 'Merriweather',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#e12727',\n },\n chatStyle: {\n accentColor: '#e12727',\n },\n onScrollLeadFlowStyle: {\n color: '#e12727',\n },\n onExitLeadFlowStyle: {\n color: '#e12727',\n },\n },\n 'atmosphere-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#333333',\n labelTextSize: '20px',\n submitFontColor: '#ffffff',\n submitColor: '#333333',\n },\n chatStyle: {\n accentColor: '#333333',\n },\n onScrollLeadFlowStyle: {\n color: '#333333',\n },\n onExitLeadFlowStyle: {\n color: '#333333',\n },\n },\n 'author-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'authority-pro': {\n formsStyle: {\n fontFamily: 'Libre Baskerville',\n labelTextColor: '#333333',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#000cff',\n },\n chatStyle: {\n accentColor: '#000cff',\n },\n onScrollLeadFlowStyle: {\n color: '#000cff',\n },\n onExitLeadFlowStyle: {\n color: '#000cff',\n },\n },\n 'beautiful-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#666666',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#e5554e',\n },\n chatStyle: {\n accentColor: '#e5554e',\n },\n onScrollLeadFlowStyle: {\n color: '#e5554e',\n },\n onExitLeadFlowStyle: {\n color: '#e5554e',\n },\n },\n 'breakthrough-pro': {\n formsStyle: {\n fontFamily: 'Alegreya Sans',\n labelTextColor: '#4e4756',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#4a4f9b',\n },\n chatStyle: {\n accentColor: '#4a4f9b',\n },\n onScrollLeadFlowStyle: {\n color: '#4a4f9b',\n },\n onExitLeadFlowStyle: {\n color: '#4a4f9b',\n },\n },\n 'cafe-pro': {\n formsStyle: {\n fontFamily: 'Crimson Text',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'daily-dish-pro': {\n formsStyle: {\n fontFamily: 'Cormorant',\n labelTextColor: '#000000',\n labelTextSize: '20px',\n submitFontColor: '#ffffff',\n submitColor: '#d9037f',\n },\n chatStyle: {\n accentColor: '#d9037f',\n },\n onScrollLeadFlowStyle: {\n color: '#d9037f',\n },\n onExitLeadFlowStyle: {\n color: '#d9037f',\n },\n },\n 'digital-pro': {\n formsStyle: {\n fontFamily: 'Lora',\n labelTextColor: '#5b5e5e',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#e85555',\n },\n chatStyle: {\n accentColor: '#e85555',\n },\n onScrollLeadFlowStyle: {\n color: '#e85555',\n },\n onExitLeadFlowStyle: {\n color: '#e85555',\n },\n },\n 'education-pro': {\n formsStyle: {\n fontFamily: 'Roboto Condensed',\n labelTextColor: '#444444',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#78a7c8',\n },\n chatStyle: {\n accentColor: '#78a7c8',\n },\n onScrollLeadFlowStyle: {\n color: '#78a7c8',\n },\n onExitLeadFlowStyle: {\n color: '#78a7c8',\n },\n },\n 'eleven40-pro': {\n formsStyle: {\n fontFamily: 'Lora',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#ed702b',\n },\n chatStyle: {\n accentColor: '#ed702b',\n },\n onScrollLeadFlowStyle: {\n color: '#ed702b',\n },\n onExitLeadFlowStyle: {\n color: '#ed702b',\n },\n },\n 'enterprise-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#777777',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#31b2ed',\n },\n chatStyle: {\n accentColor: '#31b2ed',\n },\n onScrollLeadFlowStyle: {\n color: '#31b2ed',\n },\n onExitLeadFlowStyle: {\n color: '#31b2ed',\n },\n },\n 'essence-pro': {\n formsStyle: {\n fontFamily: 'Alegreya Sans',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#be8100',\n },\n chatStyle: {\n accentColor: '#be8100',\n },\n onScrollLeadFlowStyle: {\n color: '#be8100',\n },\n onExitLeadFlowStyle: {\n color: '#be8100',\n },\n },\n 'executive-pro': {\n formsStyle: {\n fontFamily: 'Open Sans',\n labelTextColor: '#222222',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#64c9ea',\n },\n chatStyle: {\n accentColor: '#64c9ea',\n },\n onScrollLeadFlowStyle: {\n color: '#64c9ea',\n },\n onExitLeadFlowStyle: {\n color: '#64c9ea',\n },\n },\n 'generate-pro': {\n formsStyle: {\n fontFamily: 'Source Sans Pro',\n labelTextColor: '#222222',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#eb232f',\n },\n chatStyle: {\n accentColor: '#eb232f',\n },\n onScrollLeadFlowStyle: {\n color: '#eb232f',\n },\n onExitLeadFlowStyle: {\n color: '#eb232f',\n },\n },\n 'infinity-pro': {\n formsStyle: {\n fontFamily: 'Cormorant Garamond',\n labelTextColor: '#000000',\n labelTextSize: '22px',\n submitFontColor: '#ffffff',\n submitColor: '#d43c67',\n },\n chatStyle: {\n accentColor: '#d43c67',\n },\n onScrollLeadFlowStyle: {\n color: '#d43c67',\n },\n onExitLeadFlowStyle: {\n color: '#d43c67',\n },\n },\n 'interior-pro': {\n formsStyle: {\n fontFamily: 'Lora',\n labelTextColor: '#777777',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#009092',\n },\n chatStyle: {\n accentColor: '#009092',\n },\n onScrollLeadFlowStyle: {\n color: '#009092',\n },\n onExitLeadFlowStyle: {\n color: '#009092',\n },\n },\n 'lifestyle-pro': {\n formsStyle: {\n fontFamily: 'Droid Sans',\n labelTextColor: '#767673',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#27968b',\n },\n chatStyle: {\n accentColor: '#27968b',\n },\n onScrollLeadFlowStyle: {\n color: '#27968b',\n },\n onExitLeadFlowStyle: {\n color: '#27968b',\n },\n },\n 'magazine-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#222222',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#008285',\n },\n chatStyle: {\n accentColor: '#008285',\n },\n onScrollLeadFlowStyle: {\n color: '#008285',\n },\n onExitLeadFlowStyle: {\n color: '#008285',\n },\n },\n 'metro-pro': {\n formsStyle: {\n fontFamily: 'Helvetica Neue',\n labelTextColor: '#222222',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#f96e5b',\n },\n chatStyle: {\n accentColor: '#f96e5b',\n },\n onScrollLeadFlowStyle: {\n color: '#f96e5b',\n },\n onExitLeadFlowStyle: {\n color: '#f96e5b',\n },\n },\n 'minimum-pro': {\n formsStyle: {\n fontFamily: 'Roboto Slab',\n labelTextColor: '#333333',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#0ebfe9',\n },\n chatStyle: {\n accentColor: '#0ebfe9',\n },\n onScrollLeadFlowStyle: {\n color: '#0ebfe9',\n },\n onExitLeadFlowStyle: {\n color: '#0ebfe9',\n },\n },\n 'modern-studio-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'monochrome-pro': {\n formsStyle: {\n fontFamily: 'Muli',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#0066cc',\n },\n chatStyle: {\n accentColor: '#0066cc',\n },\n onScrollLeadFlowStyle: {\n color: '#0066cc',\n },\n onExitLeadFlowStyle: {\n color: '#0066cc',\n },\n },\n 'news-pro': {\n formsStyle: {\n fontFamily: 'Raleway',\n labelTextColor: '#666666',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#ff0000',\n },\n chatStyle: {\n accentColor: '#ff0000',\n },\n onScrollLeadFlowStyle: {\n color: '#ff0000',\n },\n onExitLeadFlowStyle: {\n color: '#ff0000',\n },\n },\n 'no-sidebar-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#333333',\n },\n chatStyle: {\n accentColor: '#333333',\n },\n onScrollLeadFlowStyle: {\n color: '#333333',\n },\n onExitLeadFlowStyle: {\n color: '#333333',\n },\n },\n 'outfitter-pro': {\n formsStyle: {\n fontFamily: 'Noto Sans',\n labelTextColor: '#546e7a',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'outreach-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#333333',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#6ab446',\n },\n chatStyle: {\n accentColor: '#6ab446',\n },\n onScrollLeadFlowStyle: {\n color: '#6ab446',\n },\n onExitLeadFlowStyle: {\n color: '#6ab446',\n },\n },\n 'parallax-pro': {\n formsStyle: {\n fontFamily: 'Cormorant Garamond',\n labelTextColor: '#000000',\n labelTextSize: '22px',\n submitFontColor: '#ffffff',\n submitColor: '#00a0af',\n },\n chatStyle: {\n accentColor: '#00a0af',\n },\n onScrollLeadFlowStyle: {\n color: '#00a0af',\n },\n onExitLeadFlowStyle: {\n color: '#00a0af',\n },\n },\n 'revolution-pro': {\n formsStyle: {\n fontFamily: 'Noto Serif SC',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#008080',\n },\n chatStyle: {\n accentColor: '#008080',\n },\n onScrollLeadFlowStyle: {\n color: '#008080',\n },\n onExitLeadFlowStyle: {\n color: '#008080',\n },\n },\n 'sixteen-nine-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#1dbec0',\n },\n chatStyle: {\n accentColor: '#1dbec0',\n },\n onScrollLeadFlowStyle: {\n color: '#1dbec0',\n },\n onExitLeadFlowStyle: {\n color: '#1dbec0',\n },\n },\n 'smart-passive-income-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#0e763c',\n },\n chatStyle: {\n accentColor: '#0e763c',\n },\n onScrollLeadFlowStyle: {\n color: '#0e763c',\n },\n onExitLeadFlowStyle: {\n color: '#0e763c',\n },\n },\n 'wellness-pro': {\n formsStyle: {\n fontFamily: 'Open Sans',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#5da44f',\n },\n chatStyle: {\n accentColor: '#5da44f',\n },\n onScrollLeadFlowStyle: {\n color: '#5da44f',\n },\n onExitLeadFlowStyle: {\n color: '#5da44f',\n },\n },\n 'workstation-pro': {\n formsStyle: {\n fontFamily: 'Baskerville',\n labelTextColor: '#222222',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#ff4800',\n },\n chatStyle: {\n accentColor: '#ff4800',\n },\n onScrollLeadFlowStyle: {\n color: '#ff4800',\n },\n onExitLeadFlowStyle: {\n color: '#ff4800',\n },\n },\n};\n","import {\n onInterframeReady,\n onConnect,\n onDisconnect,\n onMarkAsOutdated,\n onUpgrade,\n onPageReload,\n onInitNavigation,\n onDisableNavigation,\n onClearQueryParam,\n onGetDomain,\n onGetAssetsPayload,\n onEnterFullScreen,\n onExitFullScreen,\n} from './api/hubspotPluginApi';\nimport {\n connect,\n disconnect,\n markAsOutdated,\n getDomain,\n clearPortalIdPolling,\n} from './api/wordpressApi';\nimport { adminUrl, theme } from './constants/leadinConfig';\nimport { initNavigation, disableNavigation } from './navigation';\nimport enterFullScreen, { exitFullScreen } from './fullscreen';\nimport themes from './constants/themes';\n\nonInterframeReady((message, reply) => {\n reply('Interframe Ready');\n});\n\nonConnect((portalId, reply) => {\n connect(\n portalId,\n () => {\n clearPortalIdPolling();\n reply({ success: true });\n },\n reply.bind(null, { success: false })\n );\n});\n\nonDisconnect((message, reply) => {\n disconnect(\n reply.bind(null, { success: true }),\n reply.bind(null, { success: false })\n );\n});\n\nonMarkAsOutdated((message, reply) => {\n markAsOutdated(reply);\n});\n\nonUpgrade((message, reply) => {\n reply();\n location.href = `${adminUrl}plugins.php`;\n});\n\nonPageReload((message, reply) => {\n reply();\n window.location.reload(true);\n});\n\nonInitNavigation((message, reply) => {\n reply();\n initNavigation();\n});\n\nonDisableNavigation((message, reply) => {\n reply();\n disableNavigation();\n});\n\nonClearQueryParam((message, reply) => {\n reply();\n let currentWindowLocation = window.location.toString();\n if (currentWindowLocation.indexOf('?') > 0) {\n currentWindowLocation = currentWindowLocation.substring(\n 0,\n currentWindowLocation.indexOf('?')\n );\n }\n const newWindowLocation = `${currentWindowLocation}?page=leadin`;\n window.history.pushState({}, '', newWindowLocation);\n});\n\nonGetDomain((message, reply) => {\n getDomain(data => {\n if (data.domain) {\n reply(data.domain);\n }\n });\n});\n\nonGetAssetsPayload((message, reply) => {\n reply({ payload: themes[theme] });\n});\n\nonEnterFullScreen((message, reply) => {\n reply();\n enterFullScreen();\n});\n\nonExitFullScreen((message, reply) => {\n reply();\n exitFullScreen();\n});\n","import { domElements } from './constants/selectors';\n\nexport default function enterFullScreen() {\n jQuery(domElements.iframe).addClass('leadin-iframe-fullscreen');\n}\n\nexport function exitFullScreen() {\n jQuery(domElements.iframe).removeClass('leadin-iframe-fullscreen');\n}\n","import Raven, { configureRaven } from './lib/Raven';\nimport { initChatflows } from './chatflows';\nimport { portalId } from './constants/leadinConfig';\nimport { initInterframe } from './lib/Interframe';\nimport { startPortalIdPolling } from './api/wordpressApi';\nimport './handlers';\n\nfunction main() {\n initInterframe();\n\n // Enable App Navigation only when viewing the plugin\n if (window.location.search.indexOf('page=leadin') !== -1) {\n if (!portalId) {\n startPortalIdPolling();\n }\n }\n\n jQuery(document).ready(initChatflows);\n}\n\nconfigureRaven();\nRaven.context(main);\n"],"sourceRoot":""}1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/raven-js/src/singleton.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/raven-js/src/utils.js","webpack:///./node_modules/raven-js/src/raven.js","webpack:///./node_modules/raven-js/vendor/TraceKit/tracekit.js","webpack:///./node_modules/raven-js/vendor/json-stringify-safe/stringify.js","webpack:///./node_modules/raven-js/src/configError.js","webpack:///./node_modules/raven-js/src/console.js","webpack:///./js/constants/leadinConfig.js","webpack:///./js/lib/Raven.js","webpack:///./js/menu.js","webpack:///./js/utils.js","webpack:///./js/constants/selectors.js","webpack:///./js/lib/Interframe.js","webpack:///./js/lib/EventBus.js","webpack:///./js/api/wordpressApi.js","webpack:///./js/api/hubspotPluginApi.js","webpack:///./js/navigation.js","webpack:///./js/constants/themes.js","webpack:///./js/handlers.js","webpack:///./js/fullscreen.js","webpack:///./js/app.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","RavenConstructor","_window","window","self","_Raven","Raven","noConflict","afterLoad","g","this","Function","e","isUndefined","what","isString","toString","supportsErrorEvent","ErrorEvent","each","obj","callback","j","length","hasKey","htmlElementAsString","elem","className","classes","attr","out","tagName","push","toLowerCase","id","split","attrWhitelist","getAttribute","join","isOnlyOneTruthy","a","b","isSameStacktrace","stack1","stack2","frames1","frames","frames2","filename","lineno","colno","isObject","isError","Error","isErrorEvent","isFunction","isEmptyObject","_","wrappedCallback","data","original","normalizedData","objectMerge","obj1","obj2","truncate","str","max","substr","objectFrozen","isFrozen","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","urlencode","pairs","encodeURIComponent","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","Math","random","htmlTreeAsString","nextStr","height","sepLength","parentNode","reverse","isSameException","ex1","ex2","values","type","stacktrace","parseUrl","url","match","query","fragment","protocol","host","path","relative","fill","replacement","track","orig","TraceKit","stringify","RavenConfigError","utils","wrapConsoleMethod","wrapMethod","dsnKeys","dsnPattern","now","Date","_document","document","_navigator","navigator","keepOriginalCallback","method","_hasJSON","JSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","logger","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","collectWindowErrors","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","console","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","location","_lastHref","href","_resetBackoff","VERSION","debug","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","xhr","dom","instrumentDefaults","tryCatch","install","isSetup","report","subscribe","_handleOnErrorStackInfo","apply","arguments","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","func","args","undefined","wrap","_before","__raven__","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","__inner__","uninstall","_restoreBuiltIns","ex","isNotError","isNotErrorEvent","isErrorEventWithoutError","error","captureMessage","trimHeadFrames","stack","computeStackTrace","_handleStackInfo","msg","test","message","initialCall","fileurl","fingerprint","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","result","shift","addPlugin","plugin","pluginArgs","slice","setUserContext","setExtraContext","extra","_mergeContext","setTagsContext","tags","clearContext","getContext","parse","setEnvironment","environment","setRelease","release","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastException","lastEventId","ravenNotConfiguredError","RavenConfig","showReportDialog","eventId","encode","qs","email","globalServer","script","createElement","async","src","head","body","appendChild","setTimeout","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","_breadcrumbEventHandler","evtName","target","category","_keypressEventHandler","isContentEditable","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","wrappedBuiltIns","wrapTimeFn","fn","Array","originalCallback","wrapEventTarget","proto","capture","secure","handleEvent","err","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","XMLHttpRequest","origOpen","indexOf","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","status","props","onreadystatechange","origFetch","fetchInput","Request","fetchData","then","response","addEventListener","attachEvent","chrome","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","level","builtin","installer","concat","exec","allowSecretKey","port","stackInfo","_processException","frame","_normalizeFrame","in_app","stackInfoUrl","normalized","line","column","function","prefixedMessage","exception","culprit","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","userAgent","headers","User-Agent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","last","_setBackoffState","retry","getResponseHeader","parseInt","baseData","project","platform","serverName","server_name","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","XDomainRequest","onload","onerror","open","send","setUser","setReleaseContext","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","getLocationHref","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastExceptionStack","notifyHandlers","isWindowError","inner","traceKitWindowOnError","lineNo","colNo","augmentStackTraceWithInitialElement","processLastException","groups","_lastExceptionStack","_lastArgs","rethrow","incomplete","handler","unsubscribe","splice","computeStackTraceFromStackProp","submatch","parts","element","gecko","winjs","geckoEval","chromeEval","lines","isNative","columnNumber","initial","unshift","partial","computeStackTraceByWalkingCallerChain","depth","item","functionName","funcs","recursion","curr","caller","input","substring","sourceURL","fileName","lineNumber","description","haystack","needle","serializer","replacer","cycleReplacer","keys","thisPos","Infinity","stringifyError","spaces","getSerialize","constructor","originalConsoleLevel","originalConsole","sentryLevel","leadinConfig","adminUrl","ajaxUrl","env","hubspotBaseUrl","leadinPluginVersion","plugins","phpVersion","portalId","theme","wpVersion","i18n","leadinI18n","addMenuItem","text","jQuery","find","addExternalLinks","chatflowsUrl","emailUrl","chatflows","localStorage","LEADIN_DEBUG","_console","_len","_key","domElements","iframe","allMenuButtons","subMenuButtons","eventBus","EventBus","_classCallCheck","bus","_this$bus","trigger","event","on","callbacks","postMessageObject","contentWindow","postMessage","reply","newMessage","assign","handleMessage","_callbackId","handleResponse","forEach","handleMessageEvent","origin","makeRequest","action","payload","success","ajaxPayload","contentType","jqXHR","responseText","ajax","post","portalPollingTimeout","getPortal","stopPortalPolling","startPortalIdPolling","reload","disconnect","getDomain","markAsOutdated","createHandler","onClearQueryParam","onConnect","onDisableNavigation","onDisconnect","onEnterFullScreen","onExitFullScreen","onGetAssetsPayload","onGetDomain","onInitNavigation","onInterframeReady","onMarkAsOutdated","onPageReload","onUpgrade","changeRoute","route","onResponse","onTimeout","timeoutId","initNavigation","handleNavigation","search","removeClass","pageParam","parent","addClass","setSelectedMenuItem","click","metaKey","altKey","shiftKey","preventDefault","themes","genesis-sample","formsStyle","fontFamily","labelTextColor","labelTextSize","submitFontColor","submitColor","chatStyle","accentColor","onScrollLeadFlowStyle","color","onExitLeadFlowStyle","academy-pro","agency-pro","agentpress-pro","altitude-pro","ambiance-pro","atmosphere-pro","author-pro","authority-pro","beautiful-pro","breakthrough-pro","cafe-pro","daily-dish-pro","digital-pro","education-pro","eleven40-pro","enterprise-pro","essence-pro","executive-pro","generate-pro","infinity-pro","interior-pro","lifestyle-pro","magazine-pro","metro-pro","minimum-pro","modern-studio-pro","monochrome-pro","news-pro","no-sidebar-pro","outfitter-pro","outreach-pro","parallax-pro","revolution-pro","sixteen-nine-pro","smart-passive-income-pro","wellness-pro","workstation-pro","connect","off","currentWindowLocation","newWindowLocation","domain","leadin","php","wordpress","hub","map","Version","ready"],"mappings":"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","file":"leadin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","/**\n * Enforces a single instance of the Raven client, and the\n * main entry point for Raven. If you are a consumer of the\n * Raven library, you SHOULD load this file (vs raven.js).\n **/\n\nvar RavenConstructor = require('./raven');\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _Raven = _window.Raven;\n\nvar Raven = new RavenConstructor();\n\n/*\n * Allow multiple versions of Raven to be installed.\n * Strip Raven from the global context and returns the instance.\n *\n * @return {Raven}\n */\nRaven.noConflict = function() {\n _window.Raven = _Raven;\n return Raven;\n};\n\nRaven.afterLoad();\n\nmodule.exports = Raven;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction isObject(what) {\n return typeof what === 'object' && what !== null;\n}\n\n// Yanked from https://git.io/vS8DV re-used under CC0\n// with some tiny modifications\nfunction isError(value) {\n switch ({}.toString.call(value)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return value instanceof Error;\n }\n}\n\nfunction isErrorEvent(value) {\n return supportsErrorEvent() && {}.toString.call(value) === '[object ErrorEvent]';\n}\n\nfunction isUndefined(what) {\n return what === void 0;\n}\n\nfunction isFunction(what) {\n return typeof what === 'function';\n}\n\nfunction isString(what) {\n return Object.prototype.toString.call(what) === '[object String]';\n}\n\nfunction isEmptyObject(what) {\n for (var _ in what) return false; // eslint-disable-line guard-for-in, no-unused-vars\n return true;\n}\n\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent(''); // eslint-disable-line no-new\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction wrappedCallback(callback) {\n function dataCallback(data, original) {\n var normalizedData = callback(data) || data;\n if (original) {\n return original(normalizedData) || normalizedData;\n }\n return normalizedData;\n }\n\n return dataCallback;\n}\n\nfunction each(obj, callback) {\n var i, j;\n\n if (isUndefined(obj.length)) {\n for (i in obj) {\n if (hasKey(obj, i)) {\n callback.call(null, i, obj[i]);\n }\n }\n } else {\n j = obj.length;\n if (j) {\n for (i = 0; i < j; i++) {\n callback.call(null, i, obj[i]);\n }\n }\n }\n}\n\nfunction objectMerge(obj1, obj2) {\n if (!obj2) {\n return obj1;\n }\n each(obj2, function(key, value) {\n obj1[key] = value;\n });\n return obj1;\n}\n\n/**\n * This function is only used for react-native.\n * react-native freezes object that have already been sent over the\n * js bridge. We need this function in order to check if the object is frozen.\n * So it's ok that objectFrozen returns false if Object.isFrozen is not\n * supported because it's not relevant for other \"platforms\". See related issue:\n * https://github.com/getsentry/react-native-sentry/issues/57\n */\nfunction objectFrozen(obj) {\n if (!Object.isFrozen) {\n return false;\n }\n return Object.isFrozen(obj);\n}\n\nfunction truncate(str, max) {\n return !max || str.length <= max ? str : str.substr(0, max) + '\\u2026';\n}\n\n/**\n * hasKey, a better form of hasOwnProperty\n * Example: hasKey(MainHostObject, property) === true/false\n *\n * @param {Object} host object to check property\n * @param {string} key to check\n */\nfunction hasKey(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction joinRegExp(patterns) {\n // Combine an array of regular expressions and strings into one large regexp\n // Be mad.\n var sources = [],\n i = 0,\n len = patterns.length,\n pattern;\n\n for (; i < len; i++) {\n pattern = patterns[i];\n if (isString(pattern)) {\n // If it's a string, we need to escape it\n // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n } else if (pattern && pattern.source) {\n // If it's a regexp already, we want to extract the source\n sources.push(pattern.source);\n }\n // Intentionally skip other cases\n }\n return new RegExp(sources.join('|'), 'i');\n}\n\nfunction urlencode(o) {\n var pairs = [];\n each(o, function(key, value) {\n pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n });\n return pairs.join('&');\n}\n\n// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n// intentionally using regex and not <a/> href parsing trick because React Native and other\n// environments where DOM might not be available\nfunction parseUrl(url) {\n var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) return {};\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n protocol: match[2],\n host: match[4],\n path: match[5],\n relative: match[5] + query + fragment // everything minus origin\n };\n}\nfunction uuid4() {\n var crypto = _window.crypto || _window.msCrypto;\n\n if (!isUndefined(crypto) && crypto.getRandomValues) {\n // Use window.crypto API if available\n // eslint-disable-next-line no-undef\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n var pad = function(num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = '0' + v;\n }\n return v;\n };\n\n return (\n pad(arr[0]) +\n pad(arr[1]) +\n pad(arr[2]) +\n pad(arr[3]) +\n pad(arr[4]) +\n pad(arr[5]) +\n pad(arr[6]) +\n pad(arr[7])\n );\n } else {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @param elem\n * @returns {string}\n */\nfunction htmlTreeAsString(elem) {\n /* eslint no-extra-parens:0*/\n var MAX_TRAVERSE_HEIGHT = 5,\n MAX_OUTPUT_LEN = 80,\n out = [],\n height = 0,\n len = 0,\n separator = ' > ',\n sepLength = separator.length,\n nextStr;\n\n while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = htmlElementAsString(elem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (\n nextStr === 'html' ||\n (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n ) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n elem = elem.parentNode;\n }\n\n return out.reverse().join(separator);\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @param HTMLElement\n * @returns {string}\n */\nfunction htmlElementAsString(elem) {\n var out = [],\n className,\n classes,\n key,\n attr,\n i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push('#' + elem.id);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push('.' + classes[i]);\n }\n }\n var attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push('[' + key + '=\"' + attr + '\"]');\n }\n }\n return out.join('');\n}\n\n/**\n * Returns true if either a OR b is truthy, but not both\n */\nfunction isOnlyOneTruthy(a, b) {\n return !!(!!a ^ !!b);\n}\n\n/**\n * Returns true if the two input exception interfaces have the same content\n */\nfunction isSameException(ex1, ex2) {\n if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n ex1 = ex1.values[0];\n ex2 = ex2.values[0];\n\n if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n}\n\n/**\n * Returns true if the two input stack trace interfaces have the same content\n */\nfunction isSameStacktrace(stack1, stack2) {\n if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n var frames1 = stack1.frames;\n var frames2 = stack2.frames;\n\n // Exit early if frame count differs\n if (frames1.length !== frames2.length) return false;\n\n // Iterate through every frame; bail out if anything differs\n var a, b;\n for (var i = 0; i < frames1.length; i++) {\n a = frames1[i];\n b = frames2[i];\n if (\n a.filename !== b.filename ||\n a.lineno !== b.lineno ||\n a.colno !== b.colno ||\n a['function'] !== b['function']\n )\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill a method\n * @param obj object e.g. `document`\n * @param name method name present on object e.g. `addEventListener`\n * @param replacement replacement function\n * @param track {optional} record instrumentation to an array\n */\nfunction fill(obj, name, replacement, track) {\n var orig = obj[name];\n obj[name] = replacement(orig);\n if (track) {\n track.push([obj, name, orig]);\n }\n}\n\nmodule.exports = {\n isObject: isObject,\n isError: isError,\n isErrorEvent: isErrorEvent,\n isUndefined: isUndefined,\n isFunction: isFunction,\n isString: isString,\n isEmptyObject: isEmptyObject,\n supportsErrorEvent: supportsErrorEvent,\n wrappedCallback: wrappedCallback,\n each: each,\n objectMerge: objectMerge,\n truncate: truncate,\n objectFrozen: objectFrozen,\n hasKey: hasKey,\n joinRegExp: joinRegExp,\n urlencode: urlencode,\n uuid4: uuid4,\n htmlTreeAsString: htmlTreeAsString,\n htmlElementAsString: htmlElementAsString,\n isSameException: isSameException,\n isSameStacktrace: isSameStacktrace,\n parseUrl: parseUrl,\n fill: fill\n};\n","/*global XDomainRequest:false */\n\nvar TraceKit = require('../vendor/TraceKit/tracekit');\nvar stringify = require('../vendor/json-stringify-safe/stringify');\nvar RavenConfigError = require('./configError');\n\nvar utils = require('./utils');\nvar isError = utils.isError;\nvar isObject = utils.isObject;\nvar isObject = utils.isObject;\nvar isErrorEvent = utils.isErrorEvent;\nvar isUndefined = utils.isUndefined;\nvar isFunction = utils.isFunction;\nvar isString = utils.isString;\nvar isEmptyObject = utils.isEmptyObject;\nvar each = utils.each;\nvar objectMerge = utils.objectMerge;\nvar truncate = utils.truncate;\nvar objectFrozen = utils.objectFrozen;\nvar hasKey = utils.hasKey;\nvar joinRegExp = utils.joinRegExp;\nvar urlencode = utils.urlencode;\nvar uuid4 = utils.uuid4;\nvar htmlTreeAsString = utils.htmlTreeAsString;\nvar isSameException = utils.isSameException;\nvar isSameStacktrace = utils.isSameStacktrace;\nvar parseUrl = utils.parseUrl;\nvar fill = utils.fill;\n\nvar wrapConsoleMethod = require('./console').wrapMethod;\n\nvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\nfunction now() {\n return +new Date();\n}\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\nvar _document = _window.document;\nvar _navigator = _window.navigator;\n\nfunction keepOriginalCallback(original, callback) {\n return isFunction(callback)\n ? function(data) {\n return callback(data, original);\n }\n : callback;\n}\n\n// First, check for JSON support\n// If there is no JSON, we no-op the core features of Raven\n// since JSON is required to encode the payload\nfunction Raven() {\n this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n // Raven can run in contexts where there's no document (react-native)\n this._hasDocument = !isUndefined(_document);\n this._hasNavigator = !isUndefined(_navigator);\n this._lastCapturedException = null;\n this._lastData = null;\n this._lastEventId = null;\n this._globalServer = null;\n this._globalKey = null;\n this._globalProject = null;\n this._globalContext = {};\n this._globalOptions = {\n logger: 'javascript',\n ignoreErrors: [],\n ignoreUrls: [],\n whitelistUrls: [],\n includePaths: [],\n collectWindowErrors: true,\n maxMessageLength: 0,\n\n // By default, truncates URL values to 250 chars\n maxUrlLength: 250,\n stackTraceLimit: 50,\n autoBreadcrumbs: true,\n instrument: true,\n sampleRate: 1\n };\n this._ignoreOnError = 0;\n this._isRavenInstalled = false;\n this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n // capture references to window.console *and* all its methods first\n // before the console plugin has a chance to monkey patch\n this._originalConsole = _window.console || {};\n this._originalConsoleMethods = {};\n this._plugins = [];\n this._startTime = now();\n this._wrappedBuiltIns = [];\n this._breadcrumbs = [];\n this._lastCapturedEvent = null;\n this._keypressTimeout;\n this._location = _window.location;\n this._lastHref = this._location && this._location.href;\n this._resetBackoff();\n\n // eslint-disable-next-line guard-for-in\n for (var method in this._originalConsole) {\n this._originalConsoleMethods[method] = this._originalConsole[method];\n }\n}\n\n/*\n * The core Raven singleton\n *\n * @this {Raven}\n */\n\nRaven.prototype = {\n // Hardcode version string so that raven source can be loaded directly via\n // webpack (using a build step causes webpack #1617). Grunt verifies that\n // this value matches package.json during build.\n // See: https://github.com/getsentry/raven-js/issues/465\n VERSION: '3.19.1',\n\n debug: false,\n\n TraceKit: TraceKit, // alias to TraceKit\n\n /*\n * Configure Raven with a DSN and extra options\n *\n * @param {string} dsn The public Sentry DSN\n * @param {object} options Set of global options [optional]\n * @return {Raven}\n */\n config: function(dsn, options) {\n var self = this;\n\n if (self._globalServer) {\n this._logDebug('error', 'Error: Raven has already been configured');\n return self;\n }\n if (!dsn) return self;\n\n var globalOptions = self._globalOptions;\n\n // merge in options\n if (options) {\n each(options, function(key, value) {\n // tags and extra are special and need to be put into context\n if (key === 'tags' || key === 'extra' || key === 'user') {\n self._globalContext[key] = value;\n } else {\n globalOptions[key] = value;\n }\n });\n }\n\n self.setDSN(dsn);\n\n // \"Script error.\" is hard coded into browsers for errors that it can't read.\n // this is the result of a script being pulled in from an external domain and CORS.\n globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n // join regexp rules into one big rule\n globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);\n globalOptions.ignoreUrls = globalOptions.ignoreUrls.length\n ? joinRegExp(globalOptions.ignoreUrls)\n : false;\n globalOptions.whitelistUrls = globalOptions.whitelistUrls.length\n ? joinRegExp(globalOptions.whitelistUrls)\n : false;\n globalOptions.includePaths = joinRegExp(globalOptions.includePaths);\n globalOptions.maxBreadcrumbs = Math.max(\n 0,\n Math.min(globalOptions.maxBreadcrumbs || 100, 100)\n ); // default and hard limit is 100\n\n var autoBreadcrumbDefaults = {\n xhr: true,\n console: true,\n dom: true,\n location: true\n };\n\n var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n autoBreadcrumbs = objectMerge(autoBreadcrumbDefaults, autoBreadcrumbs);\n } else if (autoBreadcrumbs !== false) {\n autoBreadcrumbs = autoBreadcrumbDefaults;\n }\n globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\n var instrumentDefaults = {\n tryCatch: true\n };\n\n var instrument = globalOptions.instrument;\n if ({}.toString.call(instrument) === '[object Object]') {\n instrument = objectMerge(instrumentDefaults, instrument);\n } else if (instrument !== false) {\n instrument = instrumentDefaults;\n }\n globalOptions.instrument = instrument;\n\n TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;\n\n // return for chaining\n return self;\n },\n\n /*\n * Installs a global window.onerror error handler\n * to capture and report uncaught exceptions.\n * At this point, install() is required to be called due\n * to the way TraceKit is set up.\n *\n * @return {Raven}\n */\n install: function() {\n var self = this;\n if (self.isSetup() && !self._isRavenInstalled) {\n TraceKit.report.subscribe(function() {\n self._handleOnErrorStackInfo.apply(self, arguments);\n });\n if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n self._instrumentTryCatch();\n }\n\n if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs();\n\n // Install all of the plugins\n self._drainPlugins();\n\n self._isRavenInstalled = true;\n }\n\n Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n return this;\n },\n\n /*\n * Set the DSN (can be called multiple time unlike config)\n *\n * @param {string} dsn The public Sentry DSN\n */\n setDSN: function(dsn) {\n var self = this,\n uri = self._parseDSN(dsn),\n lastSlash = uri.path.lastIndexOf('/'),\n path = uri.path.substr(1, lastSlash);\n\n self._dsn = dsn;\n self._globalKey = uri.user;\n self._globalSecret = uri.pass && uri.pass.substr(1);\n self._globalProject = uri.path.substr(lastSlash + 1);\n\n self._globalServer = self._getGlobalServer(uri);\n\n self._globalEndpoint =\n self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/';\n\n // Reset backoff state since we may be pointing at a\n // new project/server\n this._resetBackoff();\n },\n\n /*\n * Wrap code within a context so Raven can capture errors\n * reliably across domains that is executed immediately.\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The callback to be immediately executed within the context\n * @param {array} args An array of arguments to be called with the callback [optional]\n */\n context: function(options, func, args) {\n if (isFunction(options)) {\n args = func || [];\n func = options;\n options = undefined;\n }\n\n return this.wrap(options, func).apply(this, args);\n },\n\n /*\n * Wrap code within a context and returns back a new function to be executed\n *\n * @param {object} options A specific set of options for this context [optional]\n * @param {function} func The function to be wrapped in a new context\n * @param {function} func A function to call before the try/catch wrapper [optional, private]\n * @return {function} The newly wrapped functions with a context\n */\n wrap: function(options, func, _before) {\n var self = this;\n // 1 argument has been passed, and it's not a function\n // so just return it\n if (isUndefined(func) && !isFunction(options)) {\n return options;\n }\n\n // options is optional\n if (isFunction(options)) {\n func = options;\n options = undefined;\n }\n\n // At this point, we've passed along 2 arguments, and the second one\n // is not a function either, so we'll just return the second argument.\n if (!isFunction(func)) {\n return func;\n }\n\n // We don't wanna wrap it twice!\n try {\n if (func.__raven__) {\n return func;\n }\n\n // If this has already been wrapped in the past, return that\n if (func.__raven_wrapper__) {\n return func.__raven_wrapper__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return func;\n }\n\n function wrapped() {\n var args = [],\n i = arguments.length,\n deep = !options || (options && options.deep !== false);\n\n if (_before && isFunction(_before)) {\n _before.apply(this, arguments);\n }\n\n // Recursively wrap all of a function's arguments that are\n // functions themselves.\n while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n try {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means Raven caught an error invoking your application code. This is\n // expected behavior and NOT indicative of a bug with Raven.js.\n return func.apply(this, args);\n } catch (e) {\n self._ignoreNextOnError();\n self.captureException(e, options);\n throw e;\n }\n }\n\n // copy over properties of the old function\n for (var property in func) {\n if (hasKey(func, property)) {\n wrapped[property] = func[property];\n }\n }\n wrapped.prototype = func.prototype;\n\n func.__raven_wrapper__ = wrapped;\n // Signal that this function has been wrapped already\n // for both debugging and to prevent it to being wrapped twice\n wrapped.__raven__ = true;\n wrapped.__inner__ = func;\n\n return wrapped;\n },\n\n /*\n * Uninstalls the global error handler.\n *\n * @return {Raven}\n */\n uninstall: function() {\n TraceKit.report.uninstall();\n\n this._restoreBuiltIns();\n\n Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n this._isRavenInstalled = false;\n\n return this;\n },\n\n /*\n * Manually capture an exception and send it over to Sentry\n *\n * @param {error} ex An exception to be logged\n * @param {object} options A specific set of options for this error [optional]\n * @return {Raven}\n */\n captureException: function(ex, options) {\n // Cases for sending ex as a message, rather than an exception\n var isNotError = !isError(ex);\n var isNotErrorEvent = !isErrorEvent(ex);\n var isErrorEventWithoutError = isErrorEvent(ex) && !ex.error;\n\n if ((isNotError && isNotErrorEvent) || isErrorEventWithoutError) {\n return this.captureMessage(\n ex,\n objectMerge(\n {\n trimHeadFrames: 1,\n stacktrace: true // if we fall back to captureMessage, default to attempting a new trace\n },\n options\n )\n );\n }\n\n // Get actual Error from ErrorEvent\n if (isErrorEvent(ex)) ex = ex.error;\n\n // Store the raw exception object for potential debugging and introspection\n this._lastCapturedException = ex;\n\n // TraceKit.report will re-raise any exception passed to it,\n // which means you have to wrap it in try/catch. Instead, we\n // can wrap it here and only re-raise if TraceKit.report\n // raises an exception different from the one we asked to\n // report on.\n try {\n var stack = TraceKit.computeStackTrace(ex);\n this._handleStackInfo(stack, options);\n } catch (ex1) {\n if (ex !== ex1) {\n throw ex1;\n }\n }\n\n return this;\n },\n\n /*\n * Manually send a message to Sentry\n *\n * @param {string} msg A plain message to be captured in Sentry\n * @param {object} options A specific set of options for this message [optional]\n * @return {Raven}\n */\n captureMessage: function(msg, options) {\n // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n // early call; we'll error on the side of logging anything called before configuration since it's\n // probably something you should see:\n if (\n !!this._globalOptions.ignoreErrors.test &&\n this._globalOptions.ignoreErrors.test(msg)\n ) {\n return;\n }\n\n options = options || {};\n\n var data = objectMerge(\n {\n message: msg + '' // Make sure it's actually a string\n },\n options\n );\n\n var ex;\n // Generate a \"synthetic\" stack trace from this point.\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n // or if it catches a thrown object without a \"stack\" property.\n try {\n throw new Error(msg);\n } catch (ex1) {\n ex = ex1;\n }\n\n // null exception name so `Error` isn't prefixed to msg\n ex.name = null;\n var stack = TraceKit.computeStackTrace(ex);\n\n // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n var initialCall = stack.stack[1];\n\n var fileurl = (initialCall && initialCall.url) || '';\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n if (this._globalOptions.stacktrace || (options && options.stacktrace)) {\n options = objectMerge(\n {\n // fingerprint on msg, not stack trace (legacy behavior, could be\n // revisited)\n fingerprint: msg,\n // since we know this is a synthetic trace, the top N-most frames\n // MUST be from Raven.js, so mark them as in_app later by setting\n // trimHeadFrames\n trimHeadFrames: (options.trimHeadFrames || 0) + 1\n },\n options\n );\n\n var frames = this._prepareFrames(stack, options);\n data.stacktrace = {\n // Sentry expects frames oldest to newest\n frames: frames.reverse()\n };\n }\n\n // Fire away!\n this._send(data);\n\n return this;\n },\n\n captureBreadcrumb: function(obj) {\n var crumb = objectMerge(\n {\n timestamp: now() / 1000\n },\n obj\n );\n\n if (isFunction(this._globalOptions.breadcrumbCallback)) {\n var result = this._globalOptions.breadcrumbCallback(crumb);\n\n if (isObject(result) && !isEmptyObject(result)) {\n crumb = result;\n } else if (result === false) {\n return this;\n }\n }\n\n this._breadcrumbs.push(crumb);\n if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n this._breadcrumbs.shift();\n }\n return this;\n },\n\n addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n var pluginArgs = [].slice.call(arguments, 1);\n\n this._plugins.push([plugin, pluginArgs]);\n if (this._isRavenInstalled) {\n this._drainPlugins();\n }\n\n return this;\n },\n\n /*\n * Set/clear a user to be sent along with the payload.\n *\n * @param {object} user An object representing user data [optional]\n * @return {Raven}\n */\n setUserContext: function(user) {\n // Intentionally do not merge here since that's an unexpected behavior.\n this._globalContext.user = user;\n\n return this;\n },\n\n /*\n * Merge extra attributes to be sent along with the payload.\n *\n * @param {object} extra An object representing extra data [optional]\n * @return {Raven}\n */\n setExtraContext: function(extra) {\n this._mergeContext('extra', extra);\n\n return this;\n },\n\n /*\n * Merge tags to be sent along with the payload.\n *\n * @param {object} tags An object representing tags [optional]\n * @return {Raven}\n */\n setTagsContext: function(tags) {\n this._mergeContext('tags', tags);\n\n return this;\n },\n\n /*\n * Clear all of the context.\n *\n * @return {Raven}\n */\n clearContext: function() {\n this._globalContext = {};\n\n return this;\n },\n\n /*\n * Get a copy of the current context. This cannot be mutated.\n *\n * @return {object} copy of context\n */\n getContext: function() {\n // lol javascript\n return JSON.parse(stringify(this._globalContext));\n },\n\n /*\n * Set environment of application\n *\n * @param {string} environment Typically something like 'production'.\n * @return {Raven}\n */\n setEnvironment: function(environment) {\n this._globalOptions.environment = environment;\n\n return this;\n },\n\n /*\n * Set release version of application\n *\n * @param {string} release Typically something like a git SHA to identify version\n * @return {Raven}\n */\n setRelease: function(release) {\n this._globalOptions.release = release;\n\n return this;\n },\n\n /*\n * Set the dataCallback option\n *\n * @param {function} callback The callback to run which allows the\n * data blob to be mutated before sending\n * @return {Raven}\n */\n setDataCallback: function(callback) {\n var original = this._globalOptions.dataCallback;\n this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the breadcrumbCallback option\n *\n * @param {function} callback The callback to run which allows filtering\n * or mutating breadcrumbs\n * @return {Raven}\n */\n setBreadcrumbCallback: function(callback) {\n var original = this._globalOptions.breadcrumbCallback;\n this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /*\n * Set the shouldSendCallback option\n *\n * @param {function} callback The callback to run which allows\n * introspecting the blob before sending\n * @return {Raven}\n */\n setShouldSendCallback: function(callback) {\n var original = this._globalOptions.shouldSendCallback;\n this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n return this;\n },\n\n /**\n * Override the default HTTP transport mechanism that transmits data\n * to the Sentry server.\n *\n * @param {function} transport Function invoked instead of the default\n * `makeRequest` handler.\n *\n * @return {Raven}\n */\n setTransport: function(transport) {\n this._globalOptions.transport = transport;\n\n return this;\n },\n\n /*\n * Get the latest raw exception that was captured by Raven.\n *\n * @return {error}\n */\n lastException: function() {\n return this._lastCapturedException;\n },\n\n /*\n * Get the last event id\n *\n * @return {string}\n */\n lastEventId: function() {\n return this._lastEventId;\n },\n\n /*\n * Determine if Raven is setup and ready to go.\n *\n * @return {boolean}\n */\n isSetup: function() {\n if (!this._hasJSON) return false; // needs JSON support\n if (!this._globalServer) {\n if (!this.ravenNotConfiguredError) {\n this.ravenNotConfiguredError = true;\n this._logDebug('error', 'Error: Raven has not been configured.');\n }\n return false;\n }\n return true;\n },\n\n afterLoad: function() {\n // TODO: remove window dependence?\n\n // Attempt to initialize Raven on load\n var RavenConfig = _window.RavenConfig;\n if (RavenConfig) {\n this.config(RavenConfig.dsn, RavenConfig.config).install();\n }\n },\n\n showReportDialog: function(options) {\n if (\n !_document // doesn't work without a document (React native)\n )\n return;\n\n options = options || {};\n\n var lastEventId = options.eventId || this.lastEventId();\n if (!lastEventId) {\n throw new RavenConfigError('Missing eventId');\n }\n\n var dsn = options.dsn || this._dsn;\n if (!dsn) {\n throw new RavenConfigError('Missing DSN');\n }\n\n var encode = encodeURIComponent;\n var qs = '';\n qs += '?eventId=' + encode(lastEventId);\n qs += '&dsn=' + encode(dsn);\n\n var user = options.user || this._globalContext.user;\n if (user) {\n if (user.name) qs += '&name=' + encode(user.name);\n if (user.email) qs += '&email=' + encode(user.email);\n }\n\n var globalServer = this._getGlobalServer(this._parseDSN(dsn));\n\n var script = _document.createElement('script');\n script.async = true;\n script.src = globalServer + '/api/embed/error-page/' + qs;\n (_document.head || _document.body).appendChild(script);\n },\n\n /**** Private functions ****/\n _ignoreNextOnError: function() {\n var self = this;\n this._ignoreOnError += 1;\n setTimeout(function() {\n // onerror should trigger before setTimeout\n self._ignoreOnError -= 1;\n });\n },\n\n _triggerEvent: function(eventType, options) {\n // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n var evt, key;\n\n if (!this._hasDocument) return;\n\n options = options || {};\n\n eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n if (_document.createEvent) {\n evt = _document.createEvent('HTMLEvents');\n evt.initEvent(eventType, true, true);\n } else {\n evt = _document.createEventObject();\n evt.eventType = eventType;\n }\n\n for (key in options)\n if (hasKey(options, key)) {\n evt[key] = options[key];\n }\n\n if (_document.createEvent) {\n // IE9 if standards\n _document.dispatchEvent(evt);\n } else {\n // IE8 regardless of Quirks or Standards\n // IE9 if quirks\n try {\n _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n } catch (e) {\n // Do nothing\n }\n }\n },\n\n /**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param evtName the event name (e.g. \"click\")\n * @returns {Function}\n * @private\n */\n _breadcrumbEventHandler: function(evtName) {\n var self = this;\n return function(evt) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n self._keypressTimeout = null;\n\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (self._lastCapturedEvent === evt) return;\n\n self._lastCapturedEvent = evt;\n\n // try/catch both:\n // - accessing evt.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // can throw an exception in some circumstances.\n var target;\n try {\n target = htmlTreeAsString(evt.target);\n } catch (e) {\n target = '<unknown>';\n }\n\n self.captureBreadcrumb({\n category: 'ui.' + evtName, // e.g. ui.click, ui.input\n message: target\n });\n };\n },\n\n /**\n * Wraps addEventListener to capture keypress UI events\n * @returns {Function}\n * @private\n */\n _keypressEventHandler: function() {\n var self = this,\n debounceDuration = 1000; // milliseconds\n\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function(evt) {\n var target;\n try {\n target = evt.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (\n !tagName ||\n (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n )\n return;\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n var timeout = self._keypressTimeout;\n if (!timeout) {\n self._breadcrumbEventHandler('input')(evt);\n }\n clearTimeout(timeout);\n self._keypressTimeout = setTimeout(function() {\n self._keypressTimeout = null;\n }, debounceDuration);\n };\n },\n\n /**\n * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n * @param to the originating URL\n * @param from the target URL\n * @private\n */\n _captureUrlChange: function(from, to) {\n var parsedLoc = parseUrl(this._location.href);\n var parsedTo = parseUrl(to);\n var parsedFrom = parseUrl(from);\n\n // because onpopstate only tells you the \"new\" (to) value of location.href, and\n // not the previous (from) value, we need to track the value of the current URL\n // state ourselves\n this._lastHref = to;\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n to = parsedTo.relative;\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n from = parsedFrom.relative;\n\n this.captureBreadcrumb({\n category: 'navigation',\n data: {\n to: to,\n from: from\n }\n });\n },\n\n /**\n * Wrap timer functions and event targets to catch errors and provide\n * better metadata.\n */\n _instrumentTryCatch: function() {\n var self = this;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapTimeFn(orig) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n var originalCallback = args[0];\n if (isFunction(originalCallback)) {\n args[0] = self.wrap(originalCallback);\n }\n\n // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n // also supports only two arguments and doesn't care what this is, so we\n // can just call the original function directly.\n if (orig.apply) {\n return orig.apply(this, args);\n } else {\n return orig(args[0], args[1]);\n }\n };\n }\n\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n function wrapEventTarget(global) {\n var proto = _window[global] && _window[global].prototype;\n if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n fill(\n proto,\n 'addEventListener',\n function(orig) {\n return function(evtName, fn, capture, secure) {\n // preserve arity\n try {\n if (fn && fn.handleEvent) {\n fn.handleEvent = self.wrap(fn.handleEvent);\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n // so that we don't have more than one wrapper function\n var before, clickHandler, keypressHandler;\n\n if (\n autoBreadcrumbs &&\n autoBreadcrumbs.dom &&\n (global === 'EventTarget' || global === 'Node')\n ) {\n // NOTE: generating multiple handlers per addEventListener invocation, should\n // revisit and verify we can just use one (almost certainly)\n clickHandler = self._breadcrumbEventHandler('click');\n keypressHandler = self._keypressEventHandler();\n before = function(evt) {\n // need to intercept every DOM event in `before` argument, in case that\n // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n // see #724\n if (!evt) return;\n\n var eventType;\n try {\n eventType = evt.type;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n if (eventType === 'click') return clickHandler(evt);\n else if (eventType === 'keypress') return keypressHandler(evt);\n };\n }\n return orig.call(\n this,\n evtName,\n self.wrap(fn, undefined, before),\n capture,\n secure\n );\n };\n },\n wrappedBuiltIns\n );\n fill(\n proto,\n 'removeEventListener',\n function(orig) {\n return function(evt, fn, capture, secure) {\n try {\n fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n } catch (e) {\n // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n }\n return orig.call(this, evt, fn, capture, secure);\n };\n },\n wrappedBuiltIns\n );\n }\n }\n\n fill(_window, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n fill(_window, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n if (_window.requestAnimationFrame) {\n fill(\n _window,\n 'requestAnimationFrame',\n function(orig) {\n return function(cb) {\n return orig(self.wrap(cb));\n };\n },\n wrappedBuiltIns\n );\n }\n\n // event targets borrowed from bugsnag-js:\n // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n var eventTargets = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload'\n ];\n for (var i = 0; i < eventTargets.length; i++) {\n wrapEventTarget(eventTargets[i]);\n }\n },\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - XMLHttpRequests\n * - DOM interactions (click/typing)\n * - window.location changes\n * - console\n *\n * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n */\n _instrumentBreadcrumbs: function() {\n var self = this;\n var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n var wrappedBuiltIns = self._wrappedBuiltIns;\n\n function wrapProp(prop, xhr) {\n if (prop in xhr && isFunction(xhr[prop])) {\n fill(xhr, prop, function(orig) {\n return self.wrap(orig);\n }); // intentionally don't track filled methods on XHR instances\n }\n }\n\n if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window) {\n var xhrproto = XMLHttpRequest.prototype;\n fill(\n xhrproto,\n 'open',\n function(origOpen) {\n return function(method, url) {\n // preserve arity\n\n // if Sentry key appears in URL, don't capture\n if (isString(url) && url.indexOf(self._globalKey) === -1) {\n this.__raven_xhr = {\n method: method,\n url: url,\n status_code: null\n };\n }\n\n return origOpen.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n\n fill(\n xhrproto,\n 'send',\n function(origSend) {\n return function(data) {\n // preserve arity\n var xhr = this;\n\n function onreadystatechangeHandler() {\n if (xhr.__raven_xhr && xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhr.__raven_xhr.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'xhr',\n data: xhr.__raven_xhr\n });\n }\n }\n\n var props = ['onload', 'onerror', 'onprogress'];\n for (var j = 0; j < props.length; j++) {\n wrapProp(props[j], xhr);\n }\n\n if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) {\n fill(\n xhr,\n 'onreadystatechange',\n function(orig) {\n return self.wrap(orig, undefined, onreadystatechangeHandler);\n } /* intentionally don't track this instrumentation */\n );\n } else {\n // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\n }\n\n return origSend.apply(this, arguments);\n };\n },\n wrappedBuiltIns\n );\n }\n\n if (autoBreadcrumbs.xhr && 'fetch' in _window) {\n fill(\n _window,\n 'fetch',\n function(origFetch) {\n return function(fn, t) {\n // preserve arity\n // Make a copy of the arguments to prevent deoptimization\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = arguments[i];\n }\n\n var fetchInput = args[0];\n var method = 'GET';\n var url;\n\n if (typeof fetchInput === 'string') {\n url = fetchInput;\n } else if ('Request' in _window && fetchInput instanceof _window.Request) {\n url = fetchInput.url;\n if (fetchInput.method) {\n method = fetchInput.method;\n }\n } else {\n url = '' + fetchInput;\n }\n\n if (args[1] && args[1].method) {\n method = args[1].method;\n }\n\n var fetchData = {\n method: method,\n url: url,\n status_code: null\n };\n\n self.captureBreadcrumb({\n type: 'http',\n category: 'fetch',\n data: fetchData\n });\n\n return origFetch.apply(this, args).then(function(response) {\n fetchData.status_code = response.status;\n\n return response;\n });\n };\n },\n wrappedBuiltIns\n );\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n if (autoBreadcrumbs.dom && this._hasDocument) {\n if (_document.addEventListener) {\n _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n _document.addEventListener('keypress', self._keypressEventHandler(), false);\n } else {\n // IE8 Compatibility\n _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n _document.attachEvent('onkeypress', self._keypressEventHandler());\n }\n }\n\n // record navigation (URL) changes\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var chrome = _window.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasPushAndReplaceState =\n !isChromePackagedApp &&\n _window.history &&\n history.pushState &&\n history.replaceState;\n if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n // TODO: remove onpopstate handler on uninstall()\n var oldOnPopState = _window.onpopstate;\n _window.onpopstate = function() {\n var currentHref = self._location.href;\n self._captureUrlChange(self._lastHref, currentHref);\n\n if (oldOnPopState) {\n return oldOnPopState.apply(this, arguments);\n }\n };\n\n var historyReplacementFunction = function(origHistFunction) {\n // note history.pushState.length is 0; intentionally not declaring\n // params to preserve 0 arity\n return function(/* state, title, url */) {\n var url = arguments.length > 2 ? arguments[2] : undefined;\n\n // url argument is optional\n if (url) {\n // coerce to string (this is what pushState does)\n self._captureUrlChange(self._lastHref, url + '');\n }\n\n return origHistFunction.apply(this, arguments);\n };\n };\n\n fill(history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n fill(history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n }\n\n if (autoBreadcrumbs.console && 'console' in _window && console.log) {\n // console\n var consoleMethodCallback = function(msg, data) {\n self.captureBreadcrumb({\n message: msg,\n level: data.level,\n category: 'console'\n });\n };\n\n each(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n wrapConsoleMethod(console, level, consoleMethodCallback);\n });\n }\n },\n\n _restoreBuiltIns: function() {\n // restore any wrapped builtins\n var builtin;\n while (this._wrappedBuiltIns.length) {\n builtin = this._wrappedBuiltIns.shift();\n\n var obj = builtin[0],\n name = builtin[1],\n orig = builtin[2];\n\n obj[name] = orig;\n }\n },\n\n _drainPlugins: function() {\n var self = this;\n\n // FIX ME TODO\n each(this._plugins, function(_, plugin) {\n var installer = plugin[0];\n var args = plugin[1];\n installer.apply(self, [self].concat(args));\n });\n },\n\n _parseDSN: function(str) {\n var m = dsnPattern.exec(str),\n dsn = {},\n i = 7;\n\n try {\n while (i--) dsn[dsnKeys[i]] = m[i] || '';\n } catch (e) {\n throw new RavenConfigError('Invalid DSN: ' + str);\n }\n\n if (dsn.pass && !this._globalOptions.allowSecretKey) {\n throw new RavenConfigError(\n 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n );\n }\n\n return dsn;\n },\n\n _getGlobalServer: function(uri) {\n // assemble the endpoint from the uri pieces\n var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n if (uri.protocol) {\n globalServer = uri.protocol + ':' + globalServer;\n }\n return globalServer;\n },\n\n _handleOnErrorStackInfo: function() {\n // if we are intentionally ignoring errors via onerror, bail out\n if (!this._ignoreOnError) {\n this._handleStackInfo.apply(this, arguments);\n }\n },\n\n _handleStackInfo: function(stackInfo, options) {\n var frames = this._prepareFrames(stackInfo, options);\n\n this._triggerEvent('handle', {\n stackInfo: stackInfo,\n options: options\n });\n\n this._processException(\n stackInfo.name,\n stackInfo.message,\n stackInfo.url,\n stackInfo.lineno,\n frames,\n options\n );\n },\n\n _prepareFrames: function(stackInfo, options) {\n var self = this;\n var frames = [];\n if (stackInfo.stack && stackInfo.stack.length) {\n each(stackInfo.stack, function(i, stack) {\n var frame = self._normalizeFrame(stack, stackInfo.url);\n if (frame) {\n frames.push(frame);\n }\n });\n\n // e.g. frames captured via captureMessage throw\n if (options && options.trimHeadFrames) {\n for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n frames[j].in_app = false;\n }\n }\n }\n frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n return frames;\n },\n\n _normalizeFrame: function(frame, stackInfoUrl) {\n // normalize the frames data\n var normalized = {\n filename: frame.url,\n lineno: frame.line,\n colno: frame.column,\n function: frame.func || '?'\n };\n\n // Case when we don't have any information about the error\n // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n // Generating synthetic error doesn't add any value here\n //\n // We should probably somehow let a user know that they should fix their code\n if (!frame.url) {\n normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n }\n\n normalized.in_app = !// determine if an exception came from outside of our app\n // first we check the global includePaths list.\n (\n (!!this._globalOptions.includePaths.test &&\n !this._globalOptions.includePaths.test(normalized.filename)) ||\n // Now we check for fun, if the function name is Raven or TraceKit\n /(Raven|TraceKit)\\./.test(normalized['function']) ||\n // finally, we do a last ditch effort and check for raven.min.js\n /raven\\.(min\\.)?js$/.test(normalized.filename)\n );\n\n return normalized;\n },\n\n _processException: function(type, message, fileurl, lineno, frames, options) {\n var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n if (\n !!this._globalOptions.ignoreErrors.test &&\n (this._globalOptions.ignoreErrors.test(message) ||\n this._globalOptions.ignoreErrors.test(prefixedMessage))\n ) {\n return;\n }\n\n var stacktrace;\n\n if (frames && frames.length) {\n fileurl = frames[0].filename || fileurl;\n // Sentry expects frames oldest to newest\n // and JS sends them as newest to oldest\n frames.reverse();\n stacktrace = {frames: frames};\n } else if (fileurl) {\n stacktrace = {\n frames: [\n {\n filename: fileurl,\n lineno: lineno,\n in_app: true\n }\n ]\n };\n }\n\n if (\n !!this._globalOptions.ignoreUrls.test &&\n this._globalOptions.ignoreUrls.test(fileurl)\n ) {\n return;\n }\n\n if (\n !!this._globalOptions.whitelistUrls.test &&\n !this._globalOptions.whitelistUrls.test(fileurl)\n ) {\n return;\n }\n\n var data = objectMerge(\n {\n // sentry.interfaces.Exception\n exception: {\n values: [\n {\n type: type,\n value: message,\n stacktrace: stacktrace\n }\n ]\n },\n culprit: fileurl\n },\n options\n );\n\n // Fire away!\n this._send(data);\n },\n\n _trimPacket: function(data) {\n // For now, we only want to truncate the two different messages\n // but this could/should be expanded to just trim everything\n var max = this._globalOptions.maxMessageLength;\n if (data.message) {\n data.message = truncate(data.message, max);\n }\n if (data.exception) {\n var exception = data.exception.values[0];\n exception.value = truncate(exception.value, max);\n }\n\n var request = data.request;\n if (request) {\n if (request.url) {\n request.url = truncate(request.url, this._globalOptions.maxUrlLength);\n }\n if (request.Referer) {\n request.Referer = truncate(request.Referer, this._globalOptions.maxUrlLength);\n }\n }\n\n if (data.breadcrumbs && data.breadcrumbs.values)\n this._trimBreadcrumbs(data.breadcrumbs);\n\n return data;\n },\n\n /**\n * Truncate breadcrumb values (right now just URLs)\n */\n _trimBreadcrumbs: function(breadcrumbs) {\n // known breadcrumb properties with urls\n // TODO: also consider arbitrary prop values that start with (https?)?://\n var urlProps = ['to', 'from', 'url'],\n urlProp,\n crumb,\n data;\n\n for (var i = 0; i < breadcrumbs.values.length; ++i) {\n crumb = breadcrumbs.values[i];\n if (\n !crumb.hasOwnProperty('data') ||\n !isObject(crumb.data) ||\n objectFrozen(crumb.data)\n )\n continue;\n\n data = objectMerge({}, crumb.data);\n for (var j = 0; j < urlProps.length; ++j) {\n urlProp = urlProps[j];\n if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n data[urlProp] = truncate(data[urlProp], this._globalOptions.maxUrlLength);\n }\n }\n breadcrumbs.values[i].data = data;\n }\n },\n\n _getHttpData: function() {\n if (!this._hasNavigator && !this._hasDocument) return;\n var httpData = {};\n\n if (this._hasNavigator && _navigator.userAgent) {\n httpData.headers = {\n 'User-Agent': navigator.userAgent\n };\n }\n\n if (this._hasDocument) {\n if (_document.location && _document.location.href) {\n httpData.url = _document.location.href;\n }\n if (_document.referrer) {\n if (!httpData.headers) httpData.headers = {};\n httpData.headers.Referer = _document.referrer;\n }\n }\n\n return httpData;\n },\n\n _resetBackoff: function() {\n this._backoffDuration = 0;\n this._backoffStart = null;\n },\n\n _shouldBackoff: function() {\n return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n },\n\n /**\n * Returns true if the in-process data payload matches the signature\n * of the previously-sent data\n *\n * NOTE: This has to be done at this level because TraceKit can generate\n * data from window.onerror WITHOUT an exception object (IE8, IE9,\n * other old browsers). This can take the form of an \"exception\"\n * data object with a single frame (derived from the onerror args).\n */\n _isRepeatData: function(current) {\n var last = this._lastData;\n\n if (\n !last ||\n current.message !== last.message || // defined for captureMessage\n current.culprit !== last.culprit // defined for captureException/onerror\n )\n return false;\n\n // Stacktrace interface (i.e. from captureMessage)\n if (current.stacktrace || last.stacktrace) {\n return isSameStacktrace(current.stacktrace, last.stacktrace);\n } else if (current.exception || last.exception) {\n // Exception interface (i.e. from captureException/onerror)\n return isSameException(current.exception, last.exception);\n }\n\n return true;\n },\n\n _setBackoffState: function(request) {\n // If we are already in a backoff state, don't change anything\n if (this._shouldBackoff()) {\n return;\n }\n\n var status = request.status;\n\n // 400 - project_id doesn't exist or some other fatal\n // 401 - invalid/revoked dsn\n // 429 - too many requests\n if (!(status === 400 || status === 401 || status === 429)) return;\n\n var retry;\n try {\n // If Retry-After is not in Access-Control-Expose-Headers, most\n // browsers will throw an exception trying to access it\n retry = request.getResponseHeader('Retry-After');\n retry = parseInt(retry, 10) * 1000; // Retry-After is returned in seconds\n } catch (e) {\n /* eslint no-empty:0 */\n }\n\n this._backoffDuration = retry\n ? // If Sentry server returned a Retry-After value, use it\n retry\n : // Otherwise, double the last backoff duration (starts at 1 sec)\n this._backoffDuration * 2 || 1000;\n\n this._backoffStart = now();\n },\n\n _send: function(data) {\n var globalOptions = this._globalOptions;\n\n var baseData = {\n project: this._globalProject,\n logger: globalOptions.logger,\n platform: 'javascript'\n },\n httpData = this._getHttpData();\n\n if (httpData) {\n baseData.request = httpData;\n }\n\n // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n data = objectMerge(baseData, data);\n\n // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n data.tags = objectMerge(objectMerge({}, this._globalContext.tags), data.tags);\n data.extra = objectMerge(objectMerge({}, this._globalContext.extra), data.extra);\n\n // Send along our own collected metadata with extra\n data.extra['session:duration'] = now() - this._startTime;\n\n if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n // intentionally make shallow copy so that additions\n // to breadcrumbs aren't accidentally sent in this request\n data.breadcrumbs = {\n values: [].slice.call(this._breadcrumbs, 0)\n };\n }\n\n // If there are no tags/extra, strip the key from the payload alltogther.\n if (isEmptyObject(data.tags)) delete data.tags;\n\n if (this._globalContext.user) {\n // sentry.interfaces.User\n data.user = this._globalContext.user;\n }\n\n // Include the environment if it's defined in globalOptions\n if (globalOptions.environment) data.environment = globalOptions.environment;\n\n // Include the release if it's defined in globalOptions\n if (globalOptions.release) data.release = globalOptions.release;\n\n // Include server_name if it's defined in globalOptions\n if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n if (isFunction(globalOptions.dataCallback)) {\n data = globalOptions.dataCallback(data) || data;\n }\n\n // Why??????????\n if (!data || isEmptyObject(data)) {\n return;\n }\n\n // Check if the request should be filtered or not\n if (\n isFunction(globalOptions.shouldSendCallback) &&\n !globalOptions.shouldSendCallback(data)\n ) {\n return;\n }\n\n // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n // so drop requests until \"cool-off\" period has elapsed.\n if (this._shouldBackoff()) {\n this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n return;\n }\n\n if (typeof globalOptions.sampleRate === 'number') {\n if (Math.random() < globalOptions.sampleRate) {\n this._sendProcessedPayload(data);\n }\n } else {\n this._sendProcessedPayload(data);\n }\n },\n\n _getUuid: function() {\n return uuid4();\n },\n\n _sendProcessedPayload: function(data, callback) {\n var self = this;\n var globalOptions = this._globalOptions;\n\n if (!this.isSetup()) return;\n\n // Try and clean up the packet before sending by truncating long values\n data = this._trimPacket(data);\n\n // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n // but this would require copying an un-truncated copy of the data packet, which can be\n // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n this._logDebug('warn', 'Raven dropped repeat event: ', data);\n return;\n }\n\n // Send along an event_id if not explicitly passed.\n // This event_id can be used to reference the error within Sentry itself.\n // Set lastEventId after we know the error should actually be sent\n this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n // Store outbound payload after trim\n this._lastData = data;\n\n this._logDebug('debug', 'Raven about to send:', data);\n\n var auth = {\n sentry_version: '7',\n sentry_client: 'raven-js/' + this.VERSION,\n sentry_key: this._globalKey\n };\n\n if (this._globalSecret) {\n auth.sentry_secret = this._globalSecret;\n }\n\n var exception = data.exception && data.exception.values[0];\n this.captureBreadcrumb({\n category: 'sentry',\n message: exception\n ? (exception.type ? exception.type + ': ' : '') + exception.value\n : data.message,\n event_id: data.event_id,\n level: data.level || 'error' // presume error unless specified\n });\n\n var url = this._globalEndpoint;\n (globalOptions.transport || this._makeRequest).call(this, {\n url: url,\n auth: auth,\n data: data,\n options: globalOptions,\n onSuccess: function success() {\n self._resetBackoff();\n\n self._triggerEvent('success', {\n data: data,\n src: url\n });\n callback && callback();\n },\n onError: function failure(error) {\n self._logDebug('error', 'Raven transport failed to send: ', error);\n\n if (error.request) {\n self._setBackoffState(error.request);\n }\n\n self._triggerEvent('failure', {\n data: data,\n src: url\n });\n error = error || new Error('Raven send failed (no additional details provided)');\n callback && callback(error);\n }\n });\n },\n\n _makeRequest: function(opts) {\n var request = _window.XMLHttpRequest && new _window.XMLHttpRequest();\n if (!request) return;\n\n // if browser doesn't support CORS (e.g. IE7), we are out of luck\n var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n if (!hasCORS) return;\n\n var url = opts.url;\n\n if ('withCredentials' in request) {\n request.onreadystatechange = function() {\n if (request.readyState !== 4) {\n return;\n } else if (request.status === 200) {\n opts.onSuccess && opts.onSuccess();\n } else if (opts.onError) {\n var err = new Error('Sentry error code: ' + request.status);\n err.request = request;\n opts.onError(err);\n }\n };\n } else {\n request = new XDomainRequest();\n // xdomainrequest cannot go http -> https (or vice versa),\n // so always use protocol relative\n url = url.replace(/^https?:/, '');\n\n // onreadystatechange not supported by XDomainRequest\n if (opts.onSuccess) {\n request.onload = opts.onSuccess;\n }\n if (opts.onError) {\n request.onerror = function() {\n var err = new Error('Sentry error code: XDomainRequest');\n err.request = request;\n opts.onError(err);\n };\n }\n }\n\n // NOTE: auth is intentionally sent as part of query string (NOT as custom\n // HTTP header) so as to avoid preflight CORS requests\n request.open('POST', url + '?' + urlencode(opts.auth));\n request.send(stringify(opts.data));\n },\n\n _logDebug: function(level) {\n if (this._originalConsoleMethods[level] && this.debug) {\n // In IE<10 console methods do not have their own 'apply' method\n Function.prototype.apply.call(\n this._originalConsoleMethods[level],\n this._originalConsole,\n [].slice.call(arguments, 1)\n );\n }\n },\n\n _mergeContext: function(key, context) {\n if (isUndefined(context)) {\n delete this._globalContext[key];\n } else {\n this._globalContext[key] = objectMerge(this._globalContext[key] || {}, context);\n }\n }\n};\n\n// Deprecations\nRaven.prototype.setUser = Raven.prototype.setUserContext;\nRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\nmodule.exports = Raven;\n","var utils = require('../../src/utils');\n\n/*\n TraceKit - Cross brower stack traces\n\n This was originally forked from github.com/occ/TraceKit, but has since been\n largely re-written and is now maintained as part of raven-js. Tests for\n this are in test/vendor.\n\n MIT license\n*/\n\nvar TraceKit = {\n collectWindowErrors: true,\n debug: false\n};\n\n// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\nvar _window =\n typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n// global reference to slice\nvar _slice = [].slice;\nvar UNKNOWN_FUNCTION = '?';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\nfunction getLocationHref() {\n if (typeof document === 'undefined' || document.location == null) return '';\n\n return document.location.href;\n}\n\n/**\n * TraceKit.report: cross-browser processing of unhandled exceptions\n *\n * Syntax:\n * TraceKit.report.subscribe(function(stackInfo) { ... })\n * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n * TraceKit.report(exception)\n * try { ...code... } catch(ex) { TraceKit.report(ex); }\n *\n * Supports:\n * - Firefox: full stack trace with line numbers, plus column number\n * on top frame; column number is not guaranteed\n * - Opera: full stack trace with line and column numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n * - IE: line and column number for the top frame only; some frames\n * may be missing, and column number is not guaranteed\n *\n * In theory, TraceKit should work on all of the following versions:\n * - IE5.5+ (only 8.0 tested)\n * - Firefox 0.9+ (only 3.5+ tested)\n * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n * Exceptions Have Stacktrace to be enabled in opera:config)\n * - Safari 3+ (only 4+ tested)\n * - Chrome 1+ (only 5+ tested)\n * - Konqueror 3.5+ (untested)\n *\n * Requires TraceKit.computeStackTrace.\n *\n * Tries to catch all unhandled exceptions and report them to the\n * subscribed handlers. Please note that TraceKit.report will rethrow the\n * exception. This is REQUIRED in order to get a useful stack trace in IE.\n * If the exception does not reach the top of the browser, you will only\n * get a stack trace from the point where TraceKit.report was called.\n *\n * Handlers receive a stackInfo object as described in the\n * TraceKit.computeStackTrace docs.\n */\nTraceKit.report = (function reportModuleWrapper() {\n var handlers = [],\n lastArgs = null,\n lastException = null,\n lastExceptionStack = null;\n\n /**\n * Add a crash handler.\n * @param {Function} handler\n */\n function subscribe(handler) {\n installGlobalHandler();\n handlers.push(handler);\n }\n\n /**\n * Remove a crash handler.\n * @param {Function} handler\n */\n function unsubscribe(handler) {\n for (var i = handlers.length - 1; i >= 0; --i) {\n if (handlers[i] === handler) {\n handlers.splice(i, 1);\n }\n }\n }\n\n /**\n * Remove all crash handlers.\n */\n function unsubscribeAll() {\n uninstallGlobalHandler();\n handlers = [];\n }\n\n /**\n * Dispatch stack information to all handlers.\n * @param {Object.<string, *>} stack\n */\n function notifyHandlers(stack, isWindowError) {\n var exception = null;\n if (isWindowError && !TraceKit.collectWindowErrors) {\n return;\n }\n for (var i in handlers) {\n if (handlers.hasOwnProperty(i)) {\n try {\n handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n } catch (inner) {\n exception = inner;\n }\n }\n }\n\n if (exception) {\n throw exception;\n }\n }\n\n var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n /**\n * Ensures all global unhandled exceptions are recorded.\n * Supported by Gecko and IE.\n * @param {string} message Error message.\n * @param {string} url URL of script that generated the exception.\n * @param {(number|string)} lineNo The line number at which the error\n * occurred.\n * @param {?(number|string)} colNo The column number at which the error\n * occurred.\n * @param {?Error} ex The actual Error object.\n */\n function traceKitWindowOnError(message, url, lineNo, colNo, ex) {\n var stack = null;\n\n if (lastExceptionStack) {\n TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n lastExceptionStack,\n url,\n lineNo,\n message\n );\n processLastException();\n } else if (ex && utils.isError(ex)) {\n // non-string `ex` arg; attempt to extract stack trace\n\n // New chrome and blink send along a real error object\n // Let's just report that like a normal error.\n // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n stack = TraceKit.computeStackTrace(ex);\n notifyHandlers(stack, true);\n } else {\n var location = {\n url: url,\n line: lineNo,\n column: colNo\n };\n\n var name = undefined;\n var msg = message; // must be new var or will modify original `arguments`\n var groups;\n if ({}.toString.call(message) === '[object String]') {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n msg = groups[2];\n }\n }\n\n location.func = UNKNOWN_FUNCTION;\n\n stack = {\n name: name,\n message: msg,\n url: getLocationHref(),\n stack: [location]\n };\n notifyHandlers(stack, true);\n }\n\n if (_oldOnerrorHandler) {\n return _oldOnerrorHandler.apply(this, arguments);\n }\n\n return false;\n }\n\n function installGlobalHandler() {\n if (_onErrorHandlerInstalled) {\n return;\n }\n _oldOnerrorHandler = _window.onerror;\n _window.onerror = traceKitWindowOnError;\n _onErrorHandlerInstalled = true;\n }\n\n function uninstallGlobalHandler() {\n if (!_onErrorHandlerInstalled) {\n return;\n }\n _window.onerror = _oldOnerrorHandler;\n _onErrorHandlerInstalled = false;\n _oldOnerrorHandler = undefined;\n }\n\n function processLastException() {\n var _lastExceptionStack = lastExceptionStack,\n _lastArgs = lastArgs;\n lastArgs = null;\n lastExceptionStack = null;\n lastException = null;\n notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n }\n\n /**\n * Reports an unhandled Error to TraceKit.\n * @param {Error} ex\n * @param {?boolean} rethrow If false, do not re-throw the exception.\n * Only used for window.onerror to not cause an infinite loop of\n * rethrowing.\n */\n function report(ex, rethrow) {\n var args = _slice.call(arguments, 1);\n if (lastExceptionStack) {\n if (lastException === ex) {\n return; // already caught by an inner catch block, ignore\n } else {\n processLastException();\n }\n }\n\n var stack = TraceKit.computeStackTrace(ex);\n lastExceptionStack = stack;\n lastException = ex;\n lastArgs = args;\n\n // If the stack trace is incomplete, wait for 2 seconds for\n // slow slow IE to see if onerror occurs or not before reporting\n // this exception; otherwise, we will end up with an incomplete\n // stack trace\n setTimeout(function() {\n if (lastException === ex) {\n processLastException();\n }\n }, stack.incomplete ? 2000 : 0);\n\n if (rethrow !== false) {\n throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n }\n }\n\n report.subscribe = subscribe;\n report.unsubscribe = unsubscribe;\n report.uninstall = unsubscribeAll;\n return report;\n})();\n\n/**\n * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n *\n * Syntax:\n * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n * Returns:\n * s.name - exception name\n * s.message - exception message\n * s.stack[i].url - JavaScript or HTML file URL\n * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n * s.stack[i].args - arguments passed to the function, if known\n * s.stack[i].line - line number, if known\n * s.stack[i].column - column number, if known\n *\n * Supports:\n * - Firefox: full stack trace with line numbers and unreliable column\n * number on top frame\n * - Opera 10: full stack trace with line and column numbers\n * - Opera 9-: full stack trace with line numbers\n * - Chrome: full stack trace with line and column numbers\n * - Safari: line and column number for the topmost stacktrace element\n * only\n * - IE: no line numbers whatsoever\n *\n * Tries to guess names of anonymous functions by looking for assignments\n * in the source code. In IE and Safari, we have to guess source file names\n * by searching for function bodies inside all page scripts. This will not\n * work for scripts that are loaded cross-domain.\n * Here be dragons: some function names may be guessed incorrectly, and\n * duplicate functions may be mismatched.\n *\n * TraceKit.computeStackTrace should only be used for tracing purposes.\n * Logging of unhandled exceptions should be done with TraceKit.report,\n * which builds on top of TraceKit.computeStackTrace and provides better\n * IE support by utilizing the window.onerror event to retrieve information\n * about the top of the stack.\n *\n * Note: In IE and Safari, no stack trace is recorded on the Error object,\n * so computeStackTrace instead walks its *own* chain of callers.\n * This means that:\n * * in Safari, some methods may be missing from the stack trace;\n * * in IE, the topmost function in the stack trace will always be the\n * caller of computeStackTrace.\n *\n * This is okay for tracing (because you are likely to be calling\n * computeStackTrace from the function you want to be the topmost element\n * of the stack trace anyway), but not okay for logging unhandled\n * exceptions (because your catch block will likely be far away from the\n * inner function that actually caused the exception).\n *\n */\nTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n // Contents of Exception in various browsers.\n //\n // SAFARI:\n // ex.message = Can't find variable: qq\n // ex.line = 59\n // ex.sourceId = 580238192\n // ex.sourceURL = http://...\n // ex.expressionBeginOffset = 96\n // ex.expressionCaretOffset = 98\n // ex.expressionEndOffset = 98\n // ex.name = ReferenceError\n //\n // FIREFOX:\n // ex.message = qq is not defined\n // ex.fileName = http://...\n // ex.lineNumber = 59\n // ex.columnNumber = 69\n // ex.stack = ...stack trace... (see the example below)\n // ex.name = ReferenceError\n //\n // CHROME:\n // ex.message = qq is not defined\n // ex.name = ReferenceError\n // ex.type = not_defined\n // ex.arguments = ['aa']\n // ex.stack = ...stack trace...\n //\n // INTERNET EXPLORER:\n // ex.message = ...\n // ex.name = ReferenceError\n //\n // OPERA:\n // ex.message = ...message... (see the example below)\n // ex.name = ReferenceError\n // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n /**\n * Computes stack trace information from the stack property.\n * Chrome and Gecko use this property.\n * @param {Error} ex\n * @return {?Object.<string, *>} Stack trace information.\n */\n function computeStackTraceFromStackProp(ex) {\n if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n var chrome = /^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,\n winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n // Used to additionally parse URL/line/column from eval frames\n geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,\n chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,\n lines = ex.stack.split('\\n'),\n stack = [],\n submatch,\n parts,\n element,\n reference = /^(.*) is undefined$/.exec(ex.message);\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n url: !isNative ? parts[2] : null,\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = null; // no column when eval\n } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n }\n\n /**\n * Adds information about the first frame to incomplete stack traces.\n * Safari and IE require this to get complete data on the first frame.\n * @param {Object.<string, *>} stackInfo Stack trace information from\n * one of the compute* methods.\n * @param {string} url The URL of the script that caused an error.\n * @param {(number|string)} lineNo The line number of the script that\n * caused an error.\n * @param {string=} message The error generated by the browser, which\n * hopefully contains the name of the object that caused the error.\n * @return {boolean} Whether or not the stack information was\n * augmented.\n */\n function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n var initial = {\n url: url,\n line: lineNo\n };\n\n if (initial.url && initial.line) {\n stackInfo.incomplete = false;\n\n if (!initial.func) {\n initial.func = UNKNOWN_FUNCTION;\n }\n\n if (stackInfo.stack.length > 0) {\n if (stackInfo.stack[0].url === initial.url) {\n if (stackInfo.stack[0].line === initial.line) {\n return false; // already in stack trace\n } else if (\n !stackInfo.stack[0].line &&\n stackInfo.stack[0].func === initial.func\n ) {\n stackInfo.stack[0].line = initial.line;\n return false;\n }\n }\n }\n\n stackInfo.stack.unshift(initial);\n stackInfo.partial = true;\n return true;\n } else {\n stackInfo.incomplete = true;\n }\n\n return false;\n }\n\n /**\n * Computes stack trace information by walking the arguments.caller\n * chain at the time the exception occurred. This will cause earlier\n * frames to be missed but is the only way to get any stack trace in\n * Safari and IE. The top frame is restored by\n * {@link augmentStackTraceWithInitialElement}.\n * @param {Error} ex\n * @return {?Object.<string, *>} Stack trace information.\n */\n function computeStackTraceByWalkingCallerChain(ex, depth) {\n var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n stack = [],\n funcs = {},\n recursion = false,\n parts,\n item,\n source;\n\n for (\n var curr = computeStackTraceByWalkingCallerChain.caller;\n curr && !recursion;\n curr = curr.caller\n ) {\n if (curr === computeStackTrace || curr === TraceKit.report) {\n // console.log('skipping internal function');\n continue;\n }\n\n item = {\n url: null,\n func: UNKNOWN_FUNCTION,\n line: null,\n column: null\n };\n\n if (curr.name) {\n item.func = curr.name;\n } else if ((parts = functionName.exec(curr.toString()))) {\n item.func = parts[1];\n }\n\n if (typeof item.func === 'undefined') {\n try {\n item.func = parts.input.substring(0, parts.input.indexOf('{'));\n } catch (e) {}\n }\n\n if (funcs['' + curr]) {\n recursion = true;\n } else {\n funcs['' + curr] = true;\n }\n\n stack.push(item);\n }\n\n if (depth) {\n // console.log('depth is ' + depth);\n // console.log('stack is ' + stack.length);\n stack.splice(0, depth);\n }\n\n var result = {\n name: ex.name,\n message: ex.message,\n url: getLocationHref(),\n stack: stack\n };\n augmentStackTraceWithInitialElement(\n result,\n ex.sourceURL || ex.fileName,\n ex.line || ex.lineNumber,\n ex.message || ex.description\n );\n return result;\n }\n\n /**\n * Computes a stack trace for an exception.\n * @param {Error} ex\n * @param {(string|number)=} depth\n */\n function computeStackTrace(ex, depth) {\n var stack = null;\n depth = depth == null ? 0 : +depth;\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n\n try {\n stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n if (stack) {\n return stack;\n }\n } catch (e) {\n if (TraceKit.debug) {\n throw e;\n }\n }\n return {\n name: ex.name,\n message: ex.message,\n url: getLocationHref()\n };\n }\n\n computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n return computeStackTrace;\n})();\n\nmodule.exports = TraceKit;\n","/*\n json-stringify-safe\n Like JSON.stringify, but doesn't throw on circular references.\n\n Originally forked from https://github.com/isaacs/json-stringify-safe\n version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n and IE8 compatibility. Tests for this are in test/vendor.\n\n ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n*/\n\nexports = module.exports = stringify;\nexports.getSerialize = serializer;\n\nfunction indexOf(haystack, needle) {\n for (var i = 0; i < haystack.length; ++i) {\n if (haystack[i] === needle) return i;\n }\n return -1;\n}\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n}\n\n// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\nfunction stringifyError(value) {\n var err = {\n // These properties are implemented as magical getters and don't show up in for in\n stack: value.stack,\n message: value.message,\n name: value.name\n };\n\n for (var i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i)) {\n err[i] = value[i];\n }\n }\n\n return err;\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [];\n var keys = [];\n\n if (cycleReplacer == null) {\n cycleReplacer = function(key, value) {\n if (stack[0] === value) {\n return '[Circular ~]';\n }\n return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n };\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = indexOf(stack, this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n if (~indexOf(stack, value)) {\n value = cycleReplacer.call(this, key, value);\n }\n } else {\n stack.push(value);\n }\n\n return replacer == null\n ? value instanceof Error ? stringifyError(value) : value\n : replacer.call(this, key, value);\n };\n}\n","function RavenConfigError(message) {\n this.name = 'RavenConfigError';\n this.message = message;\n}\nRavenConfigError.prototype = new Error();\nRavenConfigError.prototype.constructor = RavenConfigError;\n\nmodule.exports = RavenConfigError;\n","var wrapMethod = function(console, level, callback) {\n var originalConsoleLevel = console[level];\n var originalConsole = console;\n\n if (!(level in console)) {\n return;\n }\n\n var sentryLevel = level === 'warn' ? 'warning' : level;\n\n console[level] = function() {\n var args = [].slice.call(arguments);\n\n var msg = '' + args.join(' ');\n var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};\n\n if (level === 'assert') {\n if (args[0] === false) {\n // Default browsers message\n msg = 'Assertion failed: ' + (args.slice(1).join(' ') || 'console.assert');\n data.extra.arguments = args.slice(1);\n callback && callback(msg, data);\n }\n } else {\n callback && callback(msg, data);\n }\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n // IE9 doesn't allow calling apply on console functions directly\n // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n }\n };\n};\n\nmodule.exports = {\n wrapMethod: wrapMethod\n};\n","const {\n adminUrl,\n ajaxUrl,\n env,\n hubspotBaseUrl,\n leadinPluginVersion,\n plugins,\n phpVersion,\n portalId,\n theme,\n wpVersion,\n} = window.leadinConfig;\n\nconst i18n = window.leadinI18n;\n\nexport {\n adminUrl,\n ajaxUrl,\n env,\n hubspotBaseUrl,\n i18n,\n leadinPluginVersion,\n plugins,\n phpVersion,\n portalId,\n theme,\n wpVersion,\n};\n","import Raven from 'raven-js';\nimport {\n env,\n phpVersion,\n wpVersion,\n leadinPluginVersion,\n portalId,\n plugins,\n} from '../constants/leadinConfig';\n\nexport function configureRaven() {\n if (env !== 'prod') {\n return;\n }\n\n Raven.config(\n 'https://[email protected]/1',\n {\n instrument: {\n tryCatch: false,\n },\n }\n ).install();\n\n Raven.setTagsContext({\n leadin: leadinPluginVersion,\n php: phpVersion,\n wordpress: wpVersion,\n });\n\n Raven.setUserContext({\n hub: portalId,\n plugins: Object.keys(plugins)\n .map(name => `${name}#${plugins[name].Version}`)\n .join(','),\n });\n}\n\nexport default Raven;\n","import { hubspotBaseUrl, portalId, i18n } from './constants/leadinConfig';\n\nfunction addMenuItem(text, href) {\n jQuery('#toplevel_page_leadin')\n .find('li')\n .last()\n .before(`<li><a href=\"${href}\" target=\"_blank\">${text}</a></li>`);\n}\n\nexport function addExternalLinks() {\n const chatflowsUrl = `${hubspotBaseUrl}/chatflows/${portalId}`;\n const emailUrl = `${hubspotBaseUrl}/email/${portalId}`;\n addMenuItem(i18n.chatflows, chatflowsUrl);\n addMenuItem(i18n.email, emailUrl);\n}\n","export function log(...args) {\n try {\n if (window.localStorage.LEADIN_DEBUG) {\n args.unshift('[Leadin]');\n console.log(...args);\n }\n } catch (e) {\n //\n }\n}\n","export const domElements = {\n iframe: '#leadin-iframe',\n allMenuButtons:\n '.toplevel_page_leadin > a, .toplevel_page_leadin > ul > li > a',\n subMenuButtons: '.toplevel_page_leadin > ul > li',\n};\n","import EventBus from './EventBus';\nimport { log } from '../utils';\nimport { domElements } from '../constants/selectors';\nimport { hubspotBaseUrl } from '../constants/leadinConfig';\nimport Raven from './Raven';\n\nconst eventBus = new EventBus();\nconst callbacks = [];\n\nfunction postMessageObject(message) {\n log('Posting message');\n log(JSON.stringify(message));\n jQuery(domElements.iframe)[0].contentWindow.postMessage(\n JSON.stringify(message),\n hubspotBaseUrl\n );\n}\n\nfunction reply(message, response) {\n if (!response) {\n response = 'Message Received';\n }\n const newMessage = Object.assign({}, message);\n newMessage.response = response;\n postMessageObject(newMessage);\n}\n\nfunction handleResponse(message) {\n callbacks[message._callbackId - 1](message.response);\n}\n\nfunction handleMessage(message) {\n log('Received message');\n log(JSON.stringify(message));\n\n if (message.response && message._callbackId) {\n handleResponse(message);\n } else {\n Object.keys(message).forEach(key => {\n eventBus.trigger(key, [message[key], reply.bind(null, message)]);\n });\n }\n}\n\nfunction handleMessageEvent(event) {\n if (event.origin === hubspotBaseUrl) {\n try {\n const data = JSON.parse(event.data);\n handleMessage(data);\n } catch (e) {\n // Error in parsing message\n }\n }\n}\n\nexport function postMessage(key, payload, onResponse, onTimeout, timeout) {\n if (!timeout) {\n timeout = 500;\n }\n\n const timeoutCallback = function() {\n Raven.captureMessage(\n `LeadinWordpressPlugin postMessage response timeout on message key: ${key}`\n );\n onTimeout();\n };\n\n const timeoutId = setTimeout(Raven.wrap(timeoutCallback), timeout);\n\n const message = {};\n message[key] = payload;\n message._callbackId = callbacks.push((...args) => {\n clearTimeout(timeoutId);\n onResponse(...args);\n });\n postMessageObject(message);\n}\n\nexport function onMessage(key, callback) {\n eventBus.on(key, (...args) => {\n callback.apply(null, args.slice(1));\n });\n}\n\nexport function initInterframe() {\n window.addEventListener('message', handleMessageEvent);\n}\n","import Raven from './Raven';\n\nexport default class EventBus {\n constructor() {\n this.bus = jQuery({});\n }\n\n trigger(...args) {\n this.bus.trigger(...args);\n }\n\n on(event, callback) {\n this.bus.on(event, Raven.wrap(callback));\n }\n}\n","import Raven from '../lib/Raven';\nimport { ajaxUrl } from '../constants/leadinConfig';\n\nfunction makeRequest(action, method, payload, success, error) {\n const url = `${ajaxUrl}?action=${action}`;\n const ajaxPayload = {\n url,\n method,\n contentType: 'application/json',\n success:\n typeof success === 'function'\n ? Raven.wrap(data => success(JSON.parse(data)))\n : undefined,\n error: Raven.wrap(jqXHR => {\n let message;\n try {\n message = JSON.parse(jqXHR.responseText).error;\n } catch (e) {\n message = jqXHR.responseText;\n }\n\n Raven.captureMessage(\n `AJAX request failed with code ${jqXHR.status}: ${message}`\n );\n\n if (typeof error === 'function') {\n error();\n }\n }),\n };\n\n if (payload) {\n ajaxPayload.data = JSON.stringify(payload);\n }\n\n jQuery.ajax(ajaxPayload);\n}\n\nfunction post(action, payload, success, error) {\n return makeRequest(action, 'POST', payload, success, error);\n}\n\nfunction get(action, success, error) {\n return makeRequest(action, 'GET', null, success, error);\n}\n\nconst getPortal = () => get('leadin_get_portal');\nlet portalPollingTimeout;\nlet stopPortalPolling = false;\n\nexport function startPortalIdPolling() {\n portalPollingTimeout = setTimeout(() => {\n getPortal(data => {\n if (data.portalId) {\n location.reload(true);\n } else if (!stopPortalPolling) {\n startPortalIdPolling();\n }\n }, startPortalIdPolling);\n }, 5000);\n}\n\nexport function clearPortalIdPolling() {\n clearTimeout(portalPollingTimeout);\n stopPortalPolling = true;\n}\n\nexport const connect = (portalId, success, error) =>\n post('leadin_registration_ajax', { portalId }, success, error);\n\nexport const disconnect = post.bind(null, 'leadin_disconnect_ajax', {});\nexport const getDomain = get.bind(null, 'leadin_get_domain');\nexport const markAsOutdated = get.bind(null, 'leadin_mark_outdated');\n","import { onMessage, postMessage } from '../lib/Interframe';\n\nfunction createHandler(key) {\n return onMessage.bind(null, key);\n}\n\nexport const onClearQueryParam = createHandler('leadin_clear_query_param');\nexport const onConnect = createHandler('leadin_connect_portal');\nexport const onDisableNavigation = createHandler('leadin_disable_navigation');\nexport const onDisconnect = createHandler('leadin_disconnect_portal');\nexport const onEnterFullScreen = createHandler('leadin_enter_fullscreen');\nexport const onExitFullScreen = createHandler('leadin_exit_fullscreen');\nexport const onGetAssetsPayload = createHandler('leadin_get_assets_payload');\nexport const onGetDomain = createHandler('leadin_get_wp_domain');\nexport const onInitNavigation = createHandler('leadin_init_navigation');\nexport const onInterframeReady = createHandler('leadin_interframe_ready');\nexport const onMarkAsOutdated = createHandler('leadin_mark_outdated');\nexport const onPageReload = createHandler('leadin_page_reload');\nexport const onUpgrade = createHandler('leadin_upgrade');\n\nexport function changeRoute(route) {\n postMessage('leadin_change_route', route, null, () => location.reload(true));\n}\n","import { domElements } from './constants/selectors';\nimport { changeRoute } from './api/hubspotPluginApi';\n\nexport function initNavigation() {\n function setSelectedMenuItem() {\n jQuery(domElements.subMenuButtons).removeClass('current');\n const pageParam = window.location.search.match(/\\?page=leadin_?\\w*/)[0]; // filter page query param\n const selectedElement = jQuery(`a[href=\"admin.php${pageParam}\"]`);\n selectedElement.parent().addClass('current');\n }\n\n function handleNavigation() {\n const appRoute = window.location.search.match(/page=leadin_?(\\w*)/)[1];\n changeRoute(appRoute);\n setSelectedMenuItem();\n }\n\n function handleClick() {\n // Don't interrupt modifier keys\n if (event.metaKey || event.altKey || event.shiftKey) {\n return;\n }\n window.history.pushState(null, null, jQuery(this).attr('href'));\n handleNavigation();\n event.preventDefault();\n }\n\n // Browser back and forward events navigation\n window.addEventListener('popstate', handleNavigation);\n\n // Menu Navigation\n jQuery(domElements.allMenuButtons).click(handleClick);\n}\n\nexport function disableNavigation() {\n jQuery(domElements.allMenuButtons).off('click');\n}\n","export default {\n 'genesis-sample': {\n formsStyle: {\n fontFamily: 'Source Sans Pro',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#0073e5',\n },\n chatStyle: {\n accentColor: '#0073e5',\n },\n onScrollLeadFlowStyle: {\n color: '#0073e5',\n },\n onExitLeadFlowStyle: {\n color: '#0073e5',\n },\n },\n 'academy-pro': {\n formsStyle: {\n fontFamily: 'PT Sans',\n labelTextColor: '#222222',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#e22c2f',\n },\n chatStyle: {\n accentColor: '#e22c2f',\n },\n onScrollLeadFlowStyle: {\n color: '#e22c2f',\n },\n onExitLeadFlowStyle: {\n color: '#e22c2f',\n },\n },\n 'agency-pro': {\n formsStyle: {\n fontFamily: 'EB Garamond',\n labelTextColor: '#666666',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#d7c603',\n },\n chatStyle: {\n accentColor: '#d7c603',\n },\n onScrollLeadFlowStyle: {\n color: '#d7c603',\n },\n onExitLeadFlowStyle: {\n color: '#d7c603',\n },\n },\n 'agentpress-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#1a212b',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#d23836',\n },\n chatStyle: {\n accentColor: '#d23836',\n },\n onScrollLeadFlowStyle: {\n color: '#d23836',\n },\n onExitLeadFlowStyle: {\n color: '#d23836',\n },\n },\n 'altitude-pro': {\n formsStyle: {\n fontFamily: 'Ek Mukta',\n labelTextColor: '#000000',\n labelTextSize: '20px',\n submitFontColor: '#ffffff',\n submitColor: '#079bc4',\n },\n chatStyle: {\n accentColor: '#079bc4',\n },\n onScrollLeadFlowStyle: {\n color: '#079bc4',\n },\n onExitLeadFlowStyle: {\n color: '#079bc4',\n },\n },\n 'ambiance-pro': {\n formsStyle: {\n fontFamily: 'Merriweather',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#e12727',\n },\n chatStyle: {\n accentColor: '#e12727',\n },\n onScrollLeadFlowStyle: {\n color: '#e12727',\n },\n onExitLeadFlowStyle: {\n color: '#e12727',\n },\n },\n 'atmosphere-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#333333',\n labelTextSize: '20px',\n submitFontColor: '#ffffff',\n submitColor: '#333333',\n },\n chatStyle: {\n accentColor: '#333333',\n },\n onScrollLeadFlowStyle: {\n color: '#333333',\n },\n onExitLeadFlowStyle: {\n color: '#333333',\n },\n },\n 'author-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'authority-pro': {\n formsStyle: {\n fontFamily: 'Libre Baskerville',\n labelTextColor: '#333333',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#000cff',\n },\n chatStyle: {\n accentColor: '#000cff',\n },\n onScrollLeadFlowStyle: {\n color: '#000cff',\n },\n onExitLeadFlowStyle: {\n color: '#000cff',\n },\n },\n 'beautiful-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#666666',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#e5554e',\n },\n chatStyle: {\n accentColor: '#e5554e',\n },\n onScrollLeadFlowStyle: {\n color: '#e5554e',\n },\n onExitLeadFlowStyle: {\n color: '#e5554e',\n },\n },\n 'breakthrough-pro': {\n formsStyle: {\n fontFamily: 'Alegreya Sans',\n labelTextColor: '#4e4756',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#4a4f9b',\n },\n chatStyle: {\n accentColor: '#4a4f9b',\n },\n onScrollLeadFlowStyle: {\n color: '#4a4f9b',\n },\n onExitLeadFlowStyle: {\n color: '#4a4f9b',\n },\n },\n 'cafe-pro': {\n formsStyle: {\n fontFamily: 'Crimson Text',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'daily-dish-pro': {\n formsStyle: {\n fontFamily: 'Cormorant',\n labelTextColor: '#000000',\n labelTextSize: '20px',\n submitFontColor: '#ffffff',\n submitColor: '#d9037f',\n },\n chatStyle: {\n accentColor: '#d9037f',\n },\n onScrollLeadFlowStyle: {\n color: '#d9037f',\n },\n onExitLeadFlowStyle: {\n color: '#d9037f',\n },\n },\n 'digital-pro': {\n formsStyle: {\n fontFamily: 'Lora',\n labelTextColor: '#5b5e5e',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#e85555',\n },\n chatStyle: {\n accentColor: '#e85555',\n },\n onScrollLeadFlowStyle: {\n color: '#e85555',\n },\n onExitLeadFlowStyle: {\n color: '#e85555',\n },\n },\n 'education-pro': {\n formsStyle: {\n fontFamily: 'Roboto Condensed',\n labelTextColor: '#444444',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#78a7c8',\n },\n chatStyle: {\n accentColor: '#78a7c8',\n },\n onScrollLeadFlowStyle: {\n color: '#78a7c8',\n },\n onExitLeadFlowStyle: {\n color: '#78a7c8',\n },\n },\n 'eleven40-pro': {\n formsStyle: {\n fontFamily: 'Lora',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#ed702b',\n },\n chatStyle: {\n accentColor: '#ed702b',\n },\n onScrollLeadFlowStyle: {\n color: '#ed702b',\n },\n onExitLeadFlowStyle: {\n color: '#ed702b',\n },\n },\n 'enterprise-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#777777',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#31b2ed',\n },\n chatStyle: {\n accentColor: '#31b2ed',\n },\n onScrollLeadFlowStyle: {\n color: '#31b2ed',\n },\n onExitLeadFlowStyle: {\n color: '#31b2ed',\n },\n },\n 'essence-pro': {\n formsStyle: {\n fontFamily: 'Alegreya Sans',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#be8100',\n },\n chatStyle: {\n accentColor: '#be8100',\n },\n onScrollLeadFlowStyle: {\n color: '#be8100',\n },\n onExitLeadFlowStyle: {\n color: '#be8100',\n },\n },\n 'executive-pro': {\n formsStyle: {\n fontFamily: 'Open Sans',\n labelTextColor: '#222222',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#64c9ea',\n },\n chatStyle: {\n accentColor: '#64c9ea',\n },\n onScrollLeadFlowStyle: {\n color: '#64c9ea',\n },\n onExitLeadFlowStyle: {\n color: '#64c9ea',\n },\n },\n 'generate-pro': {\n formsStyle: {\n fontFamily: 'Source Sans Pro',\n labelTextColor: '#222222',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#eb232f',\n },\n chatStyle: {\n accentColor: '#eb232f',\n },\n onScrollLeadFlowStyle: {\n color: '#eb232f',\n },\n onExitLeadFlowStyle: {\n color: '#eb232f',\n },\n },\n 'infinity-pro': {\n formsStyle: {\n fontFamily: 'Cormorant Garamond',\n labelTextColor: '#000000',\n labelTextSize: '22px',\n submitFontColor: '#ffffff',\n submitColor: '#d43c67',\n },\n chatStyle: {\n accentColor: '#d43c67',\n },\n onScrollLeadFlowStyle: {\n color: '#d43c67',\n },\n onExitLeadFlowStyle: {\n color: '#d43c67',\n },\n },\n 'interior-pro': {\n formsStyle: {\n fontFamily: 'Lora',\n labelTextColor: '#777777',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#009092',\n },\n chatStyle: {\n accentColor: '#009092',\n },\n onScrollLeadFlowStyle: {\n color: '#009092',\n },\n onExitLeadFlowStyle: {\n color: '#009092',\n },\n },\n 'lifestyle-pro': {\n formsStyle: {\n fontFamily: 'Droid Sans',\n labelTextColor: '#767673',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#27968b',\n },\n chatStyle: {\n accentColor: '#27968b',\n },\n onScrollLeadFlowStyle: {\n color: '#27968b',\n },\n onExitLeadFlowStyle: {\n color: '#27968b',\n },\n },\n 'magazine-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#222222',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#008285',\n },\n chatStyle: {\n accentColor: '#008285',\n },\n onScrollLeadFlowStyle: {\n color: '#008285',\n },\n onExitLeadFlowStyle: {\n color: '#008285',\n },\n },\n 'metro-pro': {\n formsStyle: {\n fontFamily: 'Helvetica Neue',\n labelTextColor: '#222222',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#f96e5b',\n },\n chatStyle: {\n accentColor: '#f96e5b',\n },\n onScrollLeadFlowStyle: {\n color: '#f96e5b',\n },\n onExitLeadFlowStyle: {\n color: '#f96e5b',\n },\n },\n 'minimum-pro': {\n formsStyle: {\n fontFamily: 'Roboto Slab',\n labelTextColor: '#333333',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#0ebfe9',\n },\n chatStyle: {\n accentColor: '#0ebfe9',\n },\n onScrollLeadFlowStyle: {\n color: '#0ebfe9',\n },\n onExitLeadFlowStyle: {\n color: '#0ebfe9',\n },\n },\n 'modern-studio-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'monochrome-pro': {\n formsStyle: {\n fontFamily: 'Muli',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'news-pro': {\n formsStyle: {\n fontFamily: 'Raleway',\n labelTextColor: '#666666',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#ff0000',\n },\n chatStyle: {\n accentColor: '#ff0000',\n },\n onScrollLeadFlowStyle: {\n color: '#ff0000',\n },\n onExitLeadFlowStyle: {\n color: '#ff0000',\n },\n },\n 'no-sidebar-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#333333',\n },\n chatStyle: {\n accentColor: '#333333',\n },\n onScrollLeadFlowStyle: {\n color: '#333333',\n },\n onExitLeadFlowStyle: {\n color: '#333333',\n },\n },\n 'outfitter-pro': {\n formsStyle: {\n fontFamily: 'Noto Sans',\n labelTextColor: '#546e7a',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#000000',\n },\n chatStyle: {\n accentColor: '#000000',\n },\n onScrollLeadFlowStyle: {\n color: '#000000',\n },\n onExitLeadFlowStyle: {\n color: '#000000',\n },\n },\n 'outreach-pro': {\n formsStyle: {\n fontFamily: 'Lato',\n labelTextColor: '#333333',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#6ab446',\n },\n chatStyle: {\n accentColor: '#6ab446',\n },\n onScrollLeadFlowStyle: {\n color: '#6ab446',\n },\n onExitLeadFlowStyle: {\n color: '#6ab446',\n },\n },\n 'parallax-pro': {\n formsStyle: {\n fontFamily: 'Cormorant Garamond',\n labelTextColor: '#000000',\n labelTextSize: '22px',\n submitFontColor: '#ffffff',\n submitColor: '#00a0af',\n },\n chatStyle: {\n accentColor: '#00a0af',\n },\n onScrollLeadFlowStyle: {\n color: '#00a0af',\n },\n onExitLeadFlowStyle: {\n color: '#00a0af',\n },\n },\n 'revolution-pro': {\n formsStyle: {\n fontFamily: 'Noto Serif SC',\n labelTextColor: '#000000',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#008080',\n },\n chatStyle: {\n accentColor: '#008080',\n },\n onScrollLeadFlowStyle: {\n color: '#008080',\n },\n onExitLeadFlowStyle: {\n color: '#008080',\n },\n },\n 'sixteen-nine-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#1dbec0',\n },\n chatStyle: {\n accentColor: '#1dbec0',\n },\n onScrollLeadFlowStyle: {\n color: '#1dbec0',\n },\n onExitLeadFlowStyle: {\n color: '#1dbec0',\n },\n },\n 'smart-passive-income-pro': {\n formsStyle: {\n fontFamily: 'Roboto',\n labelTextColor: '#333333',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#0e763c',\n },\n chatStyle: {\n accentColor: '#0e763c',\n },\n onScrollLeadFlowStyle: {\n color: '#0e763c',\n },\n onExitLeadFlowStyle: {\n color: '#0e763c',\n },\n },\n 'wellness-pro': {\n formsStyle: {\n fontFamily: 'Open Sans',\n labelTextColor: '#000000',\n labelTextSize: '16px',\n submitFontColor: '#ffffff',\n submitColor: '#5da44f',\n },\n chatStyle: {\n accentColor: '#5da44f',\n },\n onScrollLeadFlowStyle: {\n color: '#5da44f',\n },\n onExitLeadFlowStyle: {\n color: '#5da44f',\n },\n },\n 'workstation-pro': {\n formsStyle: {\n fontFamily: 'Baskerville',\n labelTextColor: '#222222',\n labelTextSize: '18px',\n submitFontColor: '#ffffff',\n submitColor: '#ff4800',\n },\n chatStyle: {\n accentColor: '#ff4800',\n },\n onScrollLeadFlowStyle: {\n color: '#ff4800',\n },\n onExitLeadFlowStyle: {\n color: '#ff4800',\n },\n },\n};\n","import {\n onInterframeReady,\n onConnect,\n onDisconnect,\n onMarkAsOutdated,\n onUpgrade,\n onPageReload,\n onInitNavigation,\n onDisableNavigation,\n onClearQueryParam,\n onGetDomain,\n onGetAssetsPayload,\n onEnterFullScreen,\n onExitFullScreen,\n} from './api/hubspotPluginApi';\nimport {\n connect,\n disconnect,\n markAsOutdated,\n getDomain,\n clearPortalIdPolling,\n} from './api/wordpressApi';\nimport { adminUrl, theme } from './constants/leadinConfig';\nimport { initNavigation, disableNavigation } from './navigation';\nimport enterFullScreen, { exitFullScreen } from './fullscreen';\nimport themes from './constants/themes';\n\nonInterframeReady((message, reply) => {\n reply('Interframe Ready');\n});\n\nonConnect((portalId, reply) => {\n connect(\n portalId,\n () => {\n clearPortalIdPolling();\n reply({ success: true });\n },\n reply.bind(null, { success: false })\n );\n});\n\nonDisconnect((message, reply) => {\n disconnect(\n reply.bind(null, { success: true }),\n reply.bind(null, { success: false })\n );\n});\n\nonMarkAsOutdated((message, reply) => {\n markAsOutdated(reply);\n});\n\nonUpgrade((message, reply) => {\n reply();\n location.href = `${adminUrl}plugins.php`;\n});\n\nonPageReload((message, reply) => {\n reply();\n window.location.reload(true);\n});\n\nonInitNavigation((message, reply) => {\n reply();\n initNavigation();\n});\n\nonDisableNavigation((message, reply) => {\n reply();\n disableNavigation();\n});\n\nonClearQueryParam((message, reply) => {\n reply();\n let currentWindowLocation = window.location.toString();\n if (currentWindowLocation.indexOf('?') > 0) {\n currentWindowLocation = currentWindowLocation.substring(\n 0,\n currentWindowLocation.indexOf('?')\n );\n }\n const newWindowLocation = `${currentWindowLocation}?page=leadin`;\n window.history.pushState({}, '', newWindowLocation);\n});\n\nonGetDomain((message, reply) => {\n getDomain(data => {\n if (data.domain) {\n reply(data.domain);\n }\n });\n});\n\nonGetAssetsPayload((message, reply) => {\n reply({ payload: themes[theme] });\n});\n\nonEnterFullScreen((message, reply) => {\n reply();\n enterFullScreen();\n});\n\nonExitFullScreen((message, reply) => {\n reply();\n exitFullScreen();\n});\n","import { domElements } from './constants/selectors';\n\nexport default function enterFullScreen() {\n jQuery(domElements.iframe).addClass('leadin-iframe-fullscreen');\n}\n\nexport function exitFullScreen() {\n jQuery(domElements.iframe).removeClass('leadin-iframe-fullscreen');\n}\n","import Raven, { configureRaven } from './lib/Raven';\nimport { addExternalLinks } from './menu';\nimport { portalId } from './constants/leadinConfig';\nimport { initInterframe } from './lib/Interframe';\nimport { startPortalIdPolling } from './api/wordpressApi';\nimport './handlers';\n\nfunction main() {\n initInterframe();\n\n // Enable App Navigation only when viewing the plugin\n if (window.location.search.indexOf('page=leadin') !== -1) {\n if (!portalId) {\n startPortalIdPolling();\n }\n }\n\n jQuery(document).ready(addExternalLinks);\n}\n\nconfigureRaven();\nRaven.context(main);\n"],"sourceRoot":""} -
leadin/trunk/tests/inc/test-leadin-mark-outdated.php
r2097340 r2112768 15 15 */ 16 16 public function test_mark_outdated_ajax() { 17 18 17 $this->assertFalse( get_option( 'leadin_outdated_version', false ) ); 18 $response; 19 19 20 20 try { 21 mark_outdated_ajax(); 22 } catch ( WPDieException $e ) {} 21 leadin_mark_outdated_ajax(); 22 } catch ( WPDieException $e ) { 23 $response = $e; 24 } 23 25 24 $this->assertTrue( isset( $ e ) );25 $array = json_decode( $ e->getMessage() );26 $this->assertTrue( isset( $response ) ); 27 $array = json_decode( $response->getMessage() ); 26 28 $this->assertTrue( isset( $array ) ); 27 29 $this->assertTrue( get_option( 'leadin_outdated_version', false ) );
Note: See TracChangeset
for help on using the changeset viewer.