Initial skeleton commit

This commit is contained in:
agatha 2023-12-02 14:49:13 -05:00
commit 44362f32ab
42 changed files with 1581 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.idea/
venv/
__pycache__/
*.py[cod]

2
README.md Normal file
View File

@ -0,0 +1,2 @@
# stockbot-buyvm
Send alerts when [BuyVM](https://buyvm.net) has KVM slices in stock.

0
tests/__init__.py Normal file
View File

958
tests/data/stock.html Normal file
View File

@ -0,0 +1,958 @@
<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<title>Shopping Cart - FranTech</title>
<link href="stock_files/theme.css" rel="stylesheet">
<link href="stock_files/theme-custom.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script src="stock_files/twk-main.js" charset="UTF-8" crossorigin="*"></script><script src="stock_files/twk-vendor.js" charset="UTF-8" crossorigin="*"></script><script src="stock_files/twk-chunk-vendors.js" charset="UTF-8" crossorigin="*"></script><script src="stock_files/twk-chunk-common.js" charset="UTF-8" crossorigin="*"></script><script src="stock_files/twk-runtime.js" charset="UTF-8" crossorigin="*"></script><script src="stock_files/twk-app.js" charset="UTF-8" crossorigin="*"></script><script type="text/javascript" async="" src="stock_files/s.js"></script><script async="" src="stock_files/default.js" charset="UTF-8" crossorigin="*"></script><script type="text/javascript">
var csrfToken = 'a15ccdee288f9ed308b7b01f0a6e3a97796b33ab',
markdownGuide = 'Markdown Guide',
locale = 'en',
saved = 'saved',
saving = 'autosaving',
whmcsBaseUrl = "",
requiredText = 'Required',
recaptchaSiteKey = "";
</script>
<script src="stock_files/scripts.min.js"></script>
<script src="stock_files/core.min.js"></script>
<!-- Dynamic Template Compatibility -->
<!-- Please update your theme to include or have a comment on the following to negate dynamic inclusion -->
<link rel="stylesheet" type="text/css" href="stock_files/fontawesome-all.min.css">
<script charset="utf-8" src="stock_files/twk-chunk-2c776523.js"></script><script charset="utf-8" src="stock_files/twk-chunk-9294da6c.js"></script><script charset="utf-8" src="stock_files/twk-chunk-2d0b383d.js"></script><script charset="utf-8" src="stock_files/twk-chunk-48f3b594.js"></script><script charset="utf-8" src="stock_files/twk-chunk-4fe9d5dd.js"></script><script charset="utf-8" src="stock_files/twk-chunk-2d0b9454.js"></script><script charset="utf-8" src="stock_files/twk-chunk-24d8db78.js"></script><style type="text/css">#sc0tacu2pqrg1701482451366 {outline:none !important;
visibility:visible !important;
resize:none !important;
box-shadow:none !important;
overflow:visible !important;
background:none !important;
opacity:1 !important;
filter:alpha(opacity=100) !important;
-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity 1}) !important;
-mz-opacity:1 !important;
-khtml-opacity:1 !important;
top:auto !important;
right:0px !important;
bottom:0px !important;
left:auto !important;
position:fixed !important;
border:0 !important;
min-height:0px !important;
min-width:0px !important;
max-height:none !important;
max-width:none !important;
padding:0px !important;
margin:0px !important;
-moz-transition-property:none !important;
-webkit-transition-property:none !important;
-o-transition-property:none !important;
transition-property:none !important;
transform:none !important;
-webkit-transform:none !important;
-ms-transform:none !important;
width:auto !important;
height:auto !important;
display:none !important;
z-index:2000000000 !important;
background-color:transparent !important;
cursor:none !important;
float:none !important;
border-radius:unset !important;
pointer-events:auto !important;
clip:auto !important;
color-scheme:light !important;}#sc0tacu2pqrg1701482451366.widget-hidden {display: none !important;}#sc0tacu2pqrg1701482451366.widget-visible {display: block !important;}
@media print{
#sc0tacu2pqrg1701482451366.widget-visible {
display: none !important;
}
}</style><script src="stock_files/emojione.min.js" type="text/javascript" async="" defer="defer"></script><script src="stock_files/emojione.min.js" type="text/javascript" async="" defer="defer"></script><style type="text/css">@keyframes tawkMaxOpen{0%{opacity:0;transform:translate(0, 30px);;}to{opacity:1;transform:translate(0, 0px);}}@-moz-keyframes tawkMaxOpen{0%{opacity:0;transform:translate(0, 30px);;}to{opacity:1;transform:translate(0, 0px);}}@-webkit-keyframes tawkMaxOpen{0%{opacity:0;transform:translate(0, 30px);;}to{opacity:1;transform:translate(0, 0px);}}#vettgh8d7gpg1701482451388.open{animation : tawkMaxOpen .25s ease!important;}@keyframes tawkMaxClose{from{opacity: 1;transform:translate(0, 0px);;}to{opacity: 0;transform:translate(0, 30px);;}}@-moz-keyframes tawkMaxClose{from{opacity: 1;transform:translate(0, 0px);;}to{opacity: 0;transform:translate(0, 30px);;}}@-webkit-keyframes tawkMaxClose{from{opacity: 1;transform:translate(0, 0px);;}to{opacity: 0;transform:translate(0, 30px);;}}#vettgh8d7gpg1701482451388.closed{animation: tawkMaxClose .25s ease!important}</style></head>
<body class="lagom lagom-not-portal lagom-layout-condensed lagom-layout-banner page-products" data-phone-cc-input="1">
<div class="app-nav app-nav-condensed hidden-print">
<section id="header">
<div class="container">
<button type="button" class="navbar-toggle">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="https://my.frantech.ca/index.php" class="logo"><img src="stock_files/logo.png" title="FranTech" alt="FranTech"></a>
<ul class="top-nav">
<li>
<a href="https://my.frantech.ca/cart.php?a=view">
<i class="lm lm-basket"></i>
</a>
</li>
<li menuitemname="Account" class="dropdown account " id="Secondary_Navbar-Account">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fas fa-ticket lm lm-user"></i> <span class="item-text">My Account</span>
<b class="ls ls-caret"></b>
</a>
<ul class="dropdown-menu dropdown-menu-right">
<li menuitemname="Login" class=" " id="Secondary_Navbar-Account-Login">
<a href="https://my.frantech.ca/clientarea.php">
Login
</a>
</li>
<li menuitemname="Register" class=" " id="Secondary_Navbar-Account-Register">
<a href="https://my.frantech.ca/register.php">
Register
</a>
</li>
<li menuitemname="Divider" class="nav-divider " id="Secondary_Navbar-Account-Divider">
<a href="">
-----
</a>
</li>
<li menuitemname="Forgot Password?" class=" " id="Secondary_Navbar-Account-Forgot_Password?">
<a href="https://my.frantech.ca/index.php?rp=/password/reset/begin">
Forgot Password?
</a>
</li>
</ul>
</li>
</ul>
</div>
</section>
<section id="main-menu">
<nav id="nav" class="navbar navbar-default navbar-main no-lang" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
Menu
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="navbar-collapse" id="primary-nav">
<ul class="nav navbar-nav">
<li menuitemname="Home" class=" home-item " id="Primary_Navbar-Home">
<a href="https://my.frantech.ca/index.php">
<i class="fas fa-ticket lm lm-home"></i> <span>Home</span>
</a>
</li>
<li menuitemname="Store" class="dropdown " id="Primary_Navbar-Store">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fas fa-ticket lm lm-basket"></i> <span>Store</span>
<b class="ls ls-caret"></b>
</a>
<ul class="dropdown-menu ">
<li menuitemname="Browse Products Services" class=" " id="Primary_Navbar-Store-Browse_Products_Services">
<a href="https://my.frantech.ca/cart.php">
Browse All
</a>
</li>
<li menuitemname="Shop Divider 1" class="nav-divider " id="Primary_Navbar-Store-Shop_Divider_1">
<a href="">
-----
</a>
</li>
<li menuitemname="Las Vegas - AMD RYZEN KVM" class=" " id="Primary_Navbar-Store-Las_Vegas_-_AMD_RYZEN_KVM">
<a href="https://my.frantech.ca/cart.php?gid=37">
Las Vegas - AMD RYZEN KVM
</a>
</li>
<li menuitemname="New York - AMD RYZEN KVM" class=" " id="Primary_Navbar-Store-New_York_-_AMD_RYZEN_KVM">
<a href="https://my.frantech.ca/cart.php?gid=38">
New York - AMD RYZEN KVM
</a>
</li>
<li menuitemname="Miami - AMD RYZEN KVM" class=" " id="Primary_Navbar-Store-Miami_-_AMD_RYZEN_KVM">
<a href="https://my.frantech.ca/cart.php?gid=48">
Miami - AMD RYZEN KVM
</a>
</li>
<li menuitemname="Luxembourg - AMD RYZEN KVM" class=" " id="Primary_Navbar-Store-Luxembourg_-_AMD_RYZEN_KVM">
<a href="https://my.frantech.ca/cart.php?gid=39">
Luxembourg - AMD RYZEN KVM
</a>
</li>
<li menuitemname="Las Vegas - Block Storage Slabs" class=" " id="Primary_Navbar-Store-Las_Vegas_-_Block_Storage_Slabs">
<a href="https://my.frantech.ca/cart.php?gid=42">
Las Vegas - Block Storage Slabs
</a>
</li>
<li menuitemname="New York - Block Storage Slabs" class=" " id="Primary_Navbar-Store-New_York_-_Block_Storage_Slabs">
<a href="https://my.frantech.ca/cart.php?gid=45">
New York - Block Storage Slabs
</a>
</li>
<li menuitemname="Miami - Block Storage Slabs" class=" " id="Primary_Navbar-Store-Miami_-_Block_Storage_Slabs">
<a href="https://my.frantech.ca/cart.php?gid=49">
Miami - Block Storage Slabs
</a>
</li>
<li menuitemname="Luxembourg - Block Storage Slabs" class=" " id="Primary_Navbar-Store-Luxembourg_-_Block_Storage_Slabs">
<a href="https://my.frantech.ca/cart.php?gid=46">
Luxembourg - Block Storage Slabs
</a>
</li>
<li menuitemname="Luxembourg - Webhosting" class=" " id="Primary_Navbar-Store-Luxembourg_-_Webhosting">
<a href="https://my.frantech.ca/cart.php?gid=33">
Luxembourg - Webhosting
</a>
</li>
<li menuitemname="Luxembourg - Reseller Webhosting" class=" " id="Primary_Navbar-Store-Luxembourg_-_Reseller_Webhosting">
<a href="https://my.frantech.ca/cart.php?gid=34">
Luxembourg - Reseller Webhosting
</a>
</li>
<li menuitemname="Las Vegas - Webhosting" class=" " id="Primary_Navbar-Store-Las_Vegas_-_Webhosting">
<a href="https://my.frantech.ca/cart.php?gid=17">
Las Vegas - Webhosting
</a>
</li>
<li menuitemname="Las Vegas - Reseller Webhosting" class=" " id="Primary_Navbar-Store-Las_Vegas_-_Reseller_Webhosting">
<a href="https://my.frantech.ca/cart.php?gid=27">
Las Vegas - Reseller Webhosting
</a>
</li>
<li menuitemname="Addon Licenses" class=" " id="Primary_Navbar-Store-Addon_Licenses">
<a href="https://my.frantech.ca/cart.php?gid=40">
Addon Licenses
</a>
</li>
<li menuitemname="Free Software Licenses" class=" " id="Primary_Navbar-Store-Free_Software_Licenses">
<a href="https://my.frantech.ca/cart.php?gid=43">
Free Software Licenses
</a>
</li>
<li menuitemname="Offloaded SQL" class=" " id="Primary_Navbar-Store-Offloaded_SQL">
<a href="https://my.frantech.ca/cart.php?gid=19">
Offloaded SQL
</a>
</li>
<li menuitemname="Networking" class=" " id="Primary_Navbar-Store-Networking">
<a href="https://my.frantech.ca/cart.php?gid=44">
Networking
</a>
</li>
</ul>
</li>
<li menuitemname="Stallion" class=" " id="Primary_Navbar-Stallion">
<a href="https://manage.buyvm.net/">
<span>Stallion</span>
</a>
</li>
<li menuitemname="Knowledgebase" class=" " id="Primary_Navbar-Knowledgebase">
<a href="https://my.frantech.ca/index.php?rp=/knowledgebase">
<i class="fas fa-ticket ls ls-document-info"></i> <span>Knowledgebase</span>
</a>
</li>
<li menuitemname="Affiliates" class=" " id="Primary_Navbar-Affiliates">
<a href="https://my.frantech.ca/affiliates.php">
<i class="fas fa-ticket lm lm-bar-graph"></i> <span>Affiliates</span>
</a>
</li>
<li menuitemname="Contact Us" class=" " id="Primary_Navbar-Contact_Us">
<a href="https://my.frantech.ca/contact.php">
<i class="fas fa-ticket lm lm-envelope"></i> <span>Contact Us</span>
</a>
</li>
</ul>
<div class="navbar-nav navbar-right">
<a href="https://my.frantech.ca/cart.php?a=view" class="btn btn-link btn-icon"><i class="lm lm-basket"></i></a> <a href="https://my.frantech.ca/register.php" class="btn btn-default btn-outline">Register</a> <a href="https://my.frantech.ca/login.php" class="btn btn-primary">Login</a>
</div>
</div><!-- /.navbar-collapse -->
</div>
</nav>
</section>
</div>
<div class="app-header main-header header-lined ">
<div class="container">
<h1>
Las Vegas - AMD RYZEN KVM
</h1>
<h4 style="color: #ffffff;">Powered by Ryzen 3900X CPUs and NVME Storage!</h4>
</div>
</div>
<div class="app-main">
<div class="main-body ">
<div class="container">
<div class="main-grid row">
<script type="text/javascript" src="stock_files/order.min.js"></script>
<div class="col-md-3 pull-md-left main-sidebar sidebar hidden-xs hidden-sm">
<div menuitemname="Categories" class="panel panel-sidebar">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fas fa-shopping-cart"></i>&nbsp;
Categories
<i class="fa fa-chevron-up panel-minimise pull-right"></i>
</h3>
</div>
<div class="list-group">
<a menuitemname="Las Vegas - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=37" class="list-group-item active" id="Secondary_Sidebar-Categories-Las_Vegas_-_AMD_RYZEN_KVM">
<i class="ls ls-box"></i>
Las Vegas - AMD RYZEN KVM
</a>
<a menuitemname="New York - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=38" class="list-group-item" id="Secondary_Sidebar-Categories-New_York_-_AMD_RYZEN_KVM">
<i class="ls ls-box"></i>
New York - AMD RYZEN KVM
</a>
<a menuitemname="Miami - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=48" class="list-group-item" id="Secondary_Sidebar-Categories-Miami_-_AMD_RYZEN_KVM">
<i class="ls ls-box"></i>
Miami - AMD RYZEN KVM
</a>
<a menuitemname="Luxembourg - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=39" class="list-group-item" id="Secondary_Sidebar-Categories-Luxembourg_-_AMD_RYZEN_KVM">
<i class="ls ls-box"></i>
Luxembourg - AMD RYZEN KVM
</a>
<a menuitemname="Las Vegas - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=42" class="list-group-item" id="Secondary_Sidebar-Categories-Las_Vegas_-_Block_Storage_Slabs">
<i class="ls ls-box"></i>
Las Vegas - Block Storage Slabs
</a>
<a menuitemname="New York - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=45" class="list-group-item" id="Secondary_Sidebar-Categories-New_York_-_Block_Storage_Slabs">
<i class="ls ls-box"></i>
New York - Block Storage Slabs
</a>
<a menuitemname="Miami - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=49" class="list-group-item" id="Secondary_Sidebar-Categories-Miami_-_Block_Storage_Slabs">
<i class="ls ls-box"></i>
Miami - Block Storage Slabs
</a>
<a menuitemname="Luxembourg - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=46" class="list-group-item" id="Secondary_Sidebar-Categories-Luxembourg_-_Block_Storage_Slabs">
<i class="ls ls-box"></i>
Luxembourg - Block Storage Slabs
</a>
<a menuitemname="Luxembourg - Webhosting" href="https://my.frantech.ca/cart.php?gid=33" class="list-group-item" id="Secondary_Sidebar-Categories-Luxembourg_-_Webhosting">
<i class="ls ls-box"></i>
Luxembourg - Webhosting
</a>
<a menuitemname="Luxembourg - Reseller Webhosting" href="https://my.frantech.ca/cart.php?gid=34" class="list-group-item" id="Secondary_Sidebar-Categories-Luxembourg_-_Reseller_Webhosting">
<i class="ls ls-box"></i>
Luxembourg - Reseller Webhosting
</a>
<a menuitemname="Las Vegas - Webhosting" href="https://my.frantech.ca/cart.php?gid=17" class="list-group-item" id="Secondary_Sidebar-Categories-Las_Vegas_-_Webhosting">
<i class="ls ls-box"></i>
Las Vegas - Webhosting
</a>
<a menuitemname="Las Vegas - Reseller Webhosting" href="https://my.frantech.ca/cart.php?gid=27" class="list-group-item" id="Secondary_Sidebar-Categories-Las_Vegas_-_Reseller_Webhosting">
<i class="ls ls-box"></i>
Las Vegas - Reseller Webhosting
</a>
<a menuitemname="Addon Licenses" href="https://my.frantech.ca/cart.php?gid=40" class="list-group-item" id="Secondary_Sidebar-Categories-Addon_Licenses">
<i class="ls ls-box"></i>
Addon Licenses
</a>
<a menuitemname="Free Software Licenses" href="https://my.frantech.ca/cart.php?gid=43" class="list-group-item" id="Secondary_Sidebar-Categories-Free_Software_Licenses">
<i class="ls ls-box"></i>
Free Software Licenses
</a>
<a menuitemname="Offloaded SQL" href="https://my.frantech.ca/cart.php?gid=19" class="list-group-item" id="Secondary_Sidebar-Categories-Offloaded_SQL">
<i class="ls ls-box"></i>
Offloaded SQL
</a>
<a menuitemname="Networking" href="https://my.frantech.ca/cart.php?gid=44" class="list-group-item" id="Secondary_Sidebar-Categories-Networking">
<i class="ls ls-box"></i>
Networking
</a>
</div>
</div>
<div menuitemname="Actions" class="panel panel-sidebar">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fas fa-plus"></i>&nbsp;
Actions
<i class="fa fa-chevron-up panel-minimise pull-right"></i>
</h3>
</div>
<div class="list-group">
<a menuitemname="View Cart" href="https://my.frantech.ca/cart.php?a=view" class="list-group-item" id="Secondary_Sidebar-Actions-View_Cart">
<i class="fas fa-ticket ls ls-basket"></i>&nbsp;
View Cart
</a>
</div>
</div>
</div>
<div class="main-content col-md-9 pull-md-right">
<div class="categories-collapsed visible-xs visible-sm clearfix">
<div class="pull-left form-inline">
<div class="dropdown">
<a href="#" data-toggle="dropdown" class="btn btn-default">Las Vegas - AMD RYZEN KVM<i class="ls ls-caret"></i></a>
<ul class="dropdown-menu ps">
<li class="dropdown-title h6">Categories</li>
<li>
<a menuitemname="Las Vegas - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=37" class=" active" id="Secondary_Sidebar-Categories-Las_Vegas_-_AMD_RYZEN_KVM">
Las Vegas - AMD RYZEN KVM
</a>
</li>
<li>
<a menuitemname="New York - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=38" class="" id="Secondary_Sidebar-Categories-New_York_-_AMD_RYZEN_KVM">
New York - AMD RYZEN KVM
</a>
</li>
<li>
<a menuitemname="Miami - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=48" class="" id="Secondary_Sidebar-Categories-Miami_-_AMD_RYZEN_KVM">
Miami - AMD RYZEN KVM
</a>
</li>
<li>
<a menuitemname="Luxembourg - AMD RYZEN KVM" href="https://my.frantech.ca/cart.php?gid=39" class="" id="Secondary_Sidebar-Categories-Luxembourg_-_AMD_RYZEN_KVM">
Luxembourg - AMD RYZEN KVM
</a>
</li>
<li>
<a menuitemname="Las Vegas - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=42" class="" id="Secondary_Sidebar-Categories-Las_Vegas_-_Block_Storage_Slabs">
Las Vegas - Block Storage Slabs
</a>
</li>
<li>
<a menuitemname="New York - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=45" class="" id="Secondary_Sidebar-Categories-New_York_-_Block_Storage_Slabs">
New York - Block Storage Slabs
</a>
</li>
<li>
<a menuitemname="Miami - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=49" class="" id="Secondary_Sidebar-Categories-Miami_-_Block_Storage_Slabs">
Miami - Block Storage Slabs
</a>
</li>
<li>
<a menuitemname="Luxembourg - Block Storage Slabs" href="https://my.frantech.ca/cart.php?gid=46" class="" id="Secondary_Sidebar-Categories-Luxembourg_-_Block_Storage_Slabs">
Luxembourg - Block Storage Slabs
</a>
</li>
<li>
<a menuitemname="Luxembourg - Webhosting" href="https://my.frantech.ca/cart.php?gid=33" class="" id="Secondary_Sidebar-Categories-Luxembourg_-_Webhosting">
Luxembourg - Webhosting
</a>
</li>
<li>
<a menuitemname="Luxembourg - Reseller Webhosting" href="https://my.frantech.ca/cart.php?gid=34" class="" id="Secondary_Sidebar-Categories-Luxembourg_-_Reseller_Webhosting">
Luxembourg - Reseller Webhosting
</a>
</li>
<li>
<a menuitemname="Las Vegas - Webhosting" href="https://my.frantech.ca/cart.php?gid=17" class="" id="Secondary_Sidebar-Categories-Las_Vegas_-_Webhosting">
Las Vegas - Webhosting
</a>
</li>
<li>
<a menuitemname="Las Vegas - Reseller Webhosting" href="https://my.frantech.ca/cart.php?gid=27" class="" id="Secondary_Sidebar-Categories-Las_Vegas_-_Reseller_Webhosting">
Las Vegas - Reseller Webhosting
</a>
</li>
<li>
<a menuitemname="Addon Licenses" href="https://my.frantech.ca/cart.php?gid=40" class="" id="Secondary_Sidebar-Categories-Addon_Licenses">
Addon Licenses
</a>
</li>
<li>
<a menuitemname="Free Software Licenses" href="https://my.frantech.ca/cart.php?gid=43" class="" id="Secondary_Sidebar-Categories-Free_Software_Licenses">
Free Software Licenses
</a>
</li>
<li>
<a menuitemname="Offloaded SQL" href="https://my.frantech.ca/cart.php?gid=19" class="" id="Secondary_Sidebar-Categories-Offloaded_SQL">
Offloaded SQL
</a>
</li>
<li>
<a menuitemname="Networking" href="https://my.frantech.ca/cart.php?gid=44" class="" id="Secondary_Sidebar-Categories-Networking">
Networking
</a>
</li>
<li class="dropdown-title h6">Actions</li>
<li>
<a menuitemname="View Cart" href="https://my.frantech.ca/cart.php?a=view" class="" id="Secondary_Sidebar-Actions-View_Cart">
View Cart
</a>
</li>
<div class="ps__rail-x" style="left: 0px; bottom: 0px;"><div class="ps__thumb-x" tabindex="0" style="left: 0px; width: 0px;"></div></div><div class="ps__rail-y" style="top: 0px; right: 0px;"><div class="ps__thumb-y" tabindex="0" style="top: 0px; height: 0px;"></div></div></ul>
</div>
</div>
</div>
<div class="products" id="products">
<div class="row row-eq-height row-eq-height-sm">
<div class="col-lg-4 col-sm-6">
<div class="package " id="product1">
<h3 class="package-name">LV RYZEN KVM 1GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>3.50 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>1GB</b> DDR4 RAM</li><li><b>1 CPU Core</b> @ 3.9Ghz+</li><li><b>20GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1411" class="btn btn-lg btn-primary" id="product1-order-button">
Order Now
</a>
<div class="package-qty">
-1 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product2">
<h3 class="package-name">LV RYZEN KVM 2GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>7.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>2GB</b> DDR4 RAM</li><li><b>1 CPU Core</b> @ 3.9Ghz+</li><li><b>40GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1402" class="btn btn-lg btn-primary" id="product2-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product3">
<h3 class="package-name">LV RYZEN KVM 4GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>15.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>4GB</b> DDR4 RAM</li><li><b>1 CPU Core</b> @ 3.9Ghz+</li><li><b>80GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1403" class="btn btn-lg btn-primary" id="product3-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product4">
<h3 class="package-name">LV RYZEN KVM 8GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>30.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>8GB</b> DDR4 RAM</li><li><b>2 CPU Core</b> @ 3.9Ghz+</li><li><b>160GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1404" class="btn btn-lg btn-primary" id="product4-order-button">
Order Now
</a>
<div class="package-qty">
-1 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product5">
<h3 class="package-name">LV RYZEN KVM 12GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>45.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>12GB</b> DDR4 RAM</li><li><b>3 CPU Core</b> @ 3.9Ghz+</li><li><b>240GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1405" class="btn btn-lg btn-primary" id="product5-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product6">
<h3 class="package-name">LV RYZEN KVM 16GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>60.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>16GB</b> DDR4 RAM</li><li><b>4 CPU Core</b> @ 3.9Ghz+</li><li><b>320GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1406" class="btn btn-lg btn-primary" id="product6-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product7">
<h3 class="package-name">LV RYZEN KVM 20GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>75.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>20GB</b> DDR4 RAM</li><li><b>5 CPU Core</b> @ 3.9Ghz+</li><li><b>400GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1407" class="btn btn-lg btn-primary" id="product7-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product8">
<h3 class="package-name">LV RYZEN KVM 24GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>90.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>24GB</b> DDR4 RAM</li><li><b>6 CPU Core</b> @ 3.9Ghz+</li><li><b>480GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1408" class="btn btn-lg btn-primary" id="product8-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product9">
<h3 class="package-name">LV RYZEN KVM 28GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>105.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>28GB</b> DDR4 RAM</li><li><b>7 CPU Core</b> @ 3.9Ghz+</li><li><b>560GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1409" class="btn btn-lg btn-primary" id="product9-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-sm-6">
<div class="package " id="product10">
<h3 class="package-name">LV RYZEN KVM 32GB</h3>
<div class="package-price">
<div class="package-starting-from ">Starting from</div>
<div class="price"><span class="price-prefix">$</span>120.00 USD<span class="price-cycle">/mo</span></div>
</div>
<div class="package-content">
<p></p><ul class="package-features"><li><b>32GB</b> DDR4 RAM</li><li><b>8 CPU Core</b> @ 3.9Ghz+</li><li><b>640GB</b> NVME Storage</li><li><b>1 IPv4 + /48 IPv6</b></li><li><b>1000Mbit</b> Unmetered BW</li><li><b>DDOS Protection</b> Available</li><li><b>BGP Sessions</b> Available</li></ul><br>
<p></p>
</div>
<div class="package-footer">
<a href="https://my.frantech.ca/cart.php?a=add&amp;pid=1410" class="btn btn-lg btn-primary" id="product10-order-button">
Order Now
</a>
<div class="package-qty">
0 Available
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
</div>
</div>
<div class="main-footer hidden-print">
<div class="container">
<div class="footer-content">
<p>Copyright © 2023 FranTech. All Rights Reserved.</p>
</div>
<a href="#" class="back-to-top btn btn-sm btn-icon"><i class="lm lm-go-top"></i></a>
</div>
</div>
<div class="modal system-modal fade" id="modalAjax" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="lm lm-close"></i></button>
<h3 class="modal-title"></h3>
</div>
<div class="modal-body">
<div class="loader">
<div class="spinner ">
<div class="rect1"></div>
<div class="rect2"></div>
<div class="rect3"></div>
<div class="rect4"></div>
<div class="rect5"></div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary modal-submit">
Submit
</button>
<button type="button" class="btn btn-default" data-dismiss="modal">
Cancel
</button>
</div>
</div>
</div>
</div>
<form action="#" id="frmGeneratePassword" class="form-horizontal">
<div class="modal fade" id="modalGeneratePassword">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="lm lm-close"></i></button>
<h3 class="modal-title">
Generate Password
</h3>
</div>
<div class="modal-body">
<div class="alert alert-danger hidden" id="generatePwLengthError">
Please enter a number between 8 and 64 for the password length
</div>
<div class="form-group">
<label for="generatePwLength" class="col-sm-4 control-label">Password Length</label>
<div class="col-sm-8">
<input type="number" min="8" value="12" step="1" class="form-control input-inline input-inline-100" id="inputGeneratePasswordLength">
</div>
</div>
<div class="form-group">
<label for="generatePwOutput" class="col-sm-4 control-label">Generated Password</label>
<div class="col-sm-8">
<input type="text" class="form-control" id="inputGeneratePasswordOutput">
</div>
</div>
<div class="row">
<div class="col-sm-8 col-sm-offset-4">
<button type="submit" class="btn btn-default btn-sm">
<i class="fa fa-plus fa-fw"></i>
Generate new password
</button>
<button type="button" class="btn btn-default btn-sm copy-to-clipboard" data-clipboard-target="#inputGeneratePasswordOutput">
<img src="stock_files/clippy.svg" alt="Copy to clipboard" width="15">
</button>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
Close
</button>
<button type="button" class="btn btn-primary" id="btnGeneratePasswordInsert" data-clipboard-target="#inputGeneratePasswordOutput">
Copy to clipboard &amp; Insert
</button>
</div>
</div>
</div>
</div>
</form>
</div>
<script type="text/javascript" src="stock_files/Untitled.es"></script>
<a id="livechat" href="#" class="btn btn-primary btn-large">CHAT WITH SALES <i class="fas fa-comment icon-white" style="padding-left: 10px;"></i> </a>
<script type="text/javascript">
$(document).ready(function() {
<!--Start of Tawk.to Script-->
var $_Tawk_API = {};
$_Tawk_LoadStart = new Date();
(function(){
var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
s1.async=true;
s1.src='https://embed.tawk.to/55735a7ffffb3e77234863ee/default';
s1.charset='UTF-8';
s1.setAttribute('crossorigin','*');
s0.parentNode.insertBefore(s1,s0);
})();
$('#livechat').click(function() {
$_Tawk.toggle();
return false;
});
<!--End of Tawk.to Script-->
});
</script>
<script>
(function(){
function s() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.async = true;
e.src = ('https:' === document.location.protocol ? 'https://' : 'http://') + 'cdn.fraudlabspro.com/s.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(e, s);
}
(window.attachEvent) ? window.attachEvent('onload', s) : window.addEventListener('load', s, false);
})();
</script>
<div class="overlay"></div>
<script src="stock_files/lagom-app.min.js"></script>
<script src="stock_files/whmcs-custom.min.js"></script>
<iframe name="__privateStripeMetricsController8650" frameborder="0" allowtransparency="true" scrolling="no" role="presentation" src="stock_files/m-outer-27c67c0d52761104439bb051c7856ab1.html" aria-hidden="true" tabindex="-1" style="border: medium !important; margin: 0px !important; padding: 0px !important; width: 1px !important; min-width: 100% !important; overflow: hidden !important; display: block !important; visibility: hidden !important; position: fixed !important; height: 1px !important; pointer-events: none !important; user-select: none !important;"></iframe><script async="" charset="UTF-8" src="stock_files/en.js"></script><div id="sc0tacu2pqrg1701482451366" class="widget-hidden"><iframe src="stock_files/a_003.html" frameborder="0" scrolling="no" width="64px" height="60px" style="outline:none !important; visibility:visible !important; resize:none !important; box-shadow:none !important; overflow:visible !important; background:none !important; opacity:1 !important; filter:alpha(opacity=100) !important; -ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity 1}) !important; -mz-opacity:1 !important; -khtml-opacity:1 !important; top:auto !important; right:20px !important; bottom:20px !important; left:auto !important; position:fixed !important; border:0 !important; min-height:60px !important; min-width:64px !important; max-height:60px !important; max-width:64px !important; padding:0 !important; margin:0 !important; -moz-transition-property:none !important; -webkit-transition-property:none !important; -o-transition-property:none !important; transition-property:none !important; transform:none !important; -webkit-transform:none !important; -ms-transform:none !important; width:64px !important; height:60px !important; display:block !important; z-index:1000001 !important; background-color:transparent !important; cursor:none !important; float:none !important; border-radius:unset !important; pointer-events:auto !important; clip:auto !important; color-scheme:light !important;" id="mrfnokt40nq81701482451379" class="" title="chat widget"></iframe><iframe src="stock_files/a_003.html" frameborder="0" scrolling="no" width="320px" height="400px" style="outline:none !important; visibility:visible !important; resize:none !important; box-shadow:none !important; overflow:visible !important; background:none !important; opacity:1 !important; filter:alpha(opacity=100) !important; -ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity 1}) !important; -mz-opacity:1 !important; -khtml-opacity:1 !important; top:auto !important; right:10px !important; bottom:90px !important; left:auto !important; position:fixed !important; border:0 !important; min-height:400px !important; min-width:320px !important; max-height:400px !important; max-width:320px !important; padding:0 !important; margin:0 !important; -moz-transition-property:none !important; -webkit-transition-property:none !important; -o-transition-property:none !important; transition-property:none !important; transform:none !important; -webkit-transform:none !important; -ms-transform:none !important; width:320px !important; height:400px !important; display:none !important; z-index:auto !important; background-color:transparent !important; cursor:none !important; float:none !important; border-radius:5px !important; pointer-events:auto !important; clip:auto !important; color-scheme:light !important;" id="vettgh8d7gpg1701482451388" class="" title="chat widget"></iframe><iframe src="stock_files/a_003.html" frameborder="0" scrolling="no" width="360px" height="55px" style="outline:none !important; visibility:visible !important; resize:none !important; box-shadow:none !important; overflow:visible !important; background:none !important; opacity:1 !important; filter:alpha(opacity=100) !important; -ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity 1}) !important; -mz-opacity:1 !important; -khtml-opacity:1 !important; top:auto !important; right:20px !important; bottom:100px; left:auto !important; position:fixed !important; border:0 !important; min-height:55px !important; min-width:360px !important; max-height:55px !important; max-width:360px !important; padding:0 !important; margin:0 !important; -moz-transition-property:none !important; -webkit-transition-property:none !important; -o-transition-property:none !important; transition-property:none !important; transform:none !important; -webkit-transform:none !important; -ms-transform:none !important; width:360px !important; height:55px !important; display:none !important; z-index:auto !important; background-color:transparent !important; cursor:none !important; float:none !important; border-radius:unset !important; pointer-events:auto !important; clip:auto !important; color-scheme:light !important;" id="enf30lemd01c1701482451386" class="" title="chat widget"></iframe><div id="chat-bubble"></div></div></body></html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,16 @@
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link href="https://fonts.googleapis.com/css?family=Lato:100,100i,300,300i,400,400i,700,700i,900,900i&amp;subset=latin-ext"><link href="a_data/min-widget.css" rel="stylesheet"><style>:root {
--tawk-header-background-color: #065a9e !important;
--tawk-header-background-color-alpha: #065a9e50 !important;
--tawk-header-text-color: #ffffff !important;
--tawk-header-override-padding-top: 1rem !important;
--tawk-footer-override-padding-bottom: 0 !important;
}.tawk-visitor-chat-bubble {
background : #e5e5e5 !important;
color : #333333 !important;
}.tawk-agent-chat-bubble {
background : #039746 !important;
color : #ffffff !important;
}.tawk-agent-chat-bubble-dots {
background : #039746 !important;
}</style></head><body class="font-lato"><div style="width: 100%; height: 100%;"><div class="tawk-min-container" style=""><!----><button type="button" class="tawk-custom-color tawk-custom-border-color tawk-button tawk-button-circle tawk-button-large" tabindex="0" style="bottom: 0px; left: 0px; position: absolute; z-index: 1000; border: 0px;"><div isroundwidget="true"><!----><div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" height="32px" width="32px" role="img" alt="Chat icon" class="tawk-min-chat-icon"><path fill-rule="evenodd" clip-rule="evenodd" d="M400 26.2c-193.3 0-350 156.7-350 350 0 136.2 77.9 254.3 191.5 312.1 15.4 8.1 31.4 15.1 48.1 20.8l-16.5 63.5c-2 7.8 5.4 14.7 13 12.1l229.8-77.6c14.6-5.3 28.8-11.6 42.4-18.7C672 630.6 750 512.5 750 376.2c0-193.3-156.7-350-350-350zm211.1 510.7c-10.8 26.5-41.9 77.2-121.5 77.2-79.9 0-110.9-51-121.6-77.4-2.8-6.8 5-13.4 13.8-11.8 76.2 13.7 147.7 13 215.3.3 8.9-1.8 16.8 4.8 14 11.7z"></path></svg></div></div></button></div></div></body></html>

View File

@ -0,0 +1,16 @@
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link href="https://fonts.googleapis.com/css?family=Lato:100,100i,300,300i,400,400i,700,700i,900,900i&amp;subset=latin-ext"><link href="a_data_002/max-widget.css" rel="stylesheet"><style>:root {
--tawk-header-background-color: #065a9e !important;
--tawk-header-background-color-alpha: #065a9e50 !important;
--tawk-header-text-color: #ffffff !important;
--tawk-header-override-padding-top: 1rem !important;
--tawk-footer-override-padding-bottom: 0 !important;
}.tawk-visitor-chat-bubble {
background : #e5e5e5 !important;
color : #333333 !important;
}.tawk-agent-chat-bubble {
background : #039746 !important;
color : #ffffff !important;
}.tawk-agent-chat-bubble-dots {
background : #039746 !important;
}</style></head><body class="font-lato"><div style="width: 100%; height: 100%;"><div><!----></div></div></body></html>

View File

@ -0,0 +1,16 @@
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link href="https://fonts.googleapis.com/css?family=Lato:100,100i,300,300i,400,400i,700,700i,900,900i&amp;subset=latin-ext"><link href="a_data_003/message-preview.css" rel="stylesheet"><style>:root {
--tawk-header-background-color: #065a9e !important;
--tawk-header-background-color-alpha: #065a9e50 !important;
--tawk-header-text-color: #ffffff !important;
--tawk-header-override-padding-top: 1rem !important;
--tawk-footer-override-padding-bottom: 0 !important;
}.tawk-visitor-chat-bubble {
background : #e5e5e5 !important;
color : #333333 !important;
}.tawk-agent-chat-bubble {
background : #039746 !important;
color : #ffffff !important;
}.tawk-agent-chat-bubble-dots {
background : #039746 !important;
}</style></head><body class="font-lato"><div style="width: 100%; height: 100%;"><div class="tawk-flex" style="width: 100%; height: 100%; justify-content: flex-end;"><div id="tawk-message-preview" class="tawk-flex tawk-message-preview tawk-fadeIn tawk-flex-bottom" style="width: 360px; justify-content: flex-end;"><div id="tawk-message-preview-content" class="tawk-message-preview-content"><!----><!----><div><div id="tawk-chat-message-container" role="button" tabindex="0" class="tawk-chat-message-container" style="max-height: 752px;"><span></span><!----></div><div style="display: none;"><div id="tawk-chatinput-container" class="tawk-card tawk-card-xsmall tawk-chatinput-container tawk-box-shadow-xsmall"><!----><div class="tawk-chatinput"><div class="tawk-chatinput-emojis"><div class="tawk-emoji-picker" style="display: none;"><div class="tawk-emoji-loading"></div></div></div><div class="tawk-chatinput-fileupload" style="display: none;"><ul class="tawk-chatinput-fileupload-list tawk-flex tawk-flex-wrap"><!----></ul><input type="file" multiple="multiple"></div><div class="tawk-chatinput-wrap tawk-flex tawk-flex-wrap"><textarea placeholder="" class="tawk-chatinput-editor" style="height: 16px;"></textarea><div class="tawk-chatinput-action-buttons"><div role="button" type="button" title="Rate this chat" aria-label="Rate this chat" data-text="Rate this chat" class="tawk-chatinput-button tawk-tooltip tawk-tooltip"><div class="tawk-chatinput-ratings tawk-flex tawk-flex-middle"><button title="Rate this conversation with -1" role="button" tabindex="0" class="tawk-chatinput-rate tawk-chatinput-ratings-thumbs-down tawk-margin-xsmall-right tawk-margin-auto-left"><i class="tawk-icon tawk-icon-thumbs-down"></i></button><button title="Rate this conversation with +1" role="button" tabindex="0" class="tawk-chatinput-rate tawk-chatinput-ratings-thumbs-up tawk-margin-xsmall-right"><i class="tawk-icon tawk-icon-thumbs-up"></i></button></div><i role="button" tabindex="0" class="tawk-icon tawk-icon-thumbs-up tawk-chatinput-rating"></i><span class="tawk-tooltip-hover bottom">Rate this chat<span class="tawk-tooltip-arrow"></span></span></div><button role="button" type="button" title="Upload File" aria-title="Upload File" aria-hidden="true" aria-haspopup="menu" aria-expanded="false" data-text="Upload File" class="tawk-chatinput-button tawk-tooltip tawk-tooltip"><i class="tawk-icon tawk-icon-attach-file"></i><span class="tawk-tooltip-hover bottom">Upload File<span class="tawk-tooltip-arrow"></span></span></button><button role="button" type="button" title="Insert emoji" aria-label="Insert emoji" aria-hidden="true" aria-haspopup="true" data-text="Insert emoji" class="tawk-chatinput-button tawk-tooltip tawk-tooltip"><i class="tawk-icon tawk-icon-emoji"></i><span class="tawk-tooltip-hover bottom">Insert emoji<span class="tawk-tooltip-arrow"></span></span></button></div><!----></div></div></div></div></div></div></div></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
<svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
<path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
</svg>

After

Width:  |  Height:  |  Size: 519 B

3
tests/data/stock_files/core.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,70 @@
(function(global){
global.$_Tawk_AccountKey='55735a7ffffb3e77234863ee';
global.$_Tawk_WidgetId='default';
global.$_Tawk_Unstable=false;
global.$_Tawk = global.$_Tawk || {};
(function (w){
function l() {
if (window.$_Tawk.init !== undefined) {
return;
}
window.$_Tawk.init = true;
var files = [
'https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-main.js',
'https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-vendor.js',
'https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-chunk-vendors.js',
'https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-chunk-common.js',
'https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-runtime.js',
'https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-app.js'
];
if (typeof Promise === 'undefined') {
files.unshift('https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-promise-polyfill.js');
}
if (typeof Symbol === 'undefined' || typeof Symbol.iterator === 'undefined') {
files.unshift('https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-iterator-polyfill.js');
}
if (typeof Object.entries === 'undefined') {
files.unshift('https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-entries-polyfill.js');
}
if (!window.crypto) {
window.crypto = window.msCrypto;
}
if (typeof Event !== 'function') {
files.unshift('https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-event-polyfill.js');
}
if (!Object.values) {
files.unshift('https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-object-values-polyfill.js');
}
if (typeof Array.prototype.find === 'undefined') {
files.unshift('https://embed.tawk.to/_s/v4/app/6549ac0173e/js/twk-arr-find-polyfill.js');
}
var s0=document.getElementsByTagName('script')[0];
for (var i = 0; i < files.length; i++) {
var s1 = document.createElement('script');
s1.src= files[i];
s1.charset='UTF-8';
s1.setAttribute('crossorigin','*');
s0.parentNode.insertBefore(s1,s0);
}
}
if (document.readyState === 'complete') {
l();
} else if (w.attachEvent) {
w.attachEvent('onload', l);
} else {
w.addEventListener('load', l, false);
}
})(window);
})(window);

10
tests/data/stock_files/emojione.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,363 @@
(function(global){var Language = {};
Language.pluralFormFunction = function (n) {
if (n === 1) {
return 'one';
}
return 'other';
};
Language.form = {};
Language.form.SaveButton = { message : 'Save' };
Language.form.SubmitButton = { message : 'Submit' };
Language.form.StartChatButton = { message : 'Start Chat' };
Language.form.CancelButton = { message : 'Cancel' };
Language.form.CloseButton = { message : 'Close' };
Language.form.SendButton = { message : 'Send' };
Language.form.EmailPlaceholder = { message : 'Email Address' };
Language.form.QuestionPlaceholder = { message : 'your query..' };
Language.form.DepartmentsPlaceholder = { message : 'select department..' };
Language.form.MessagePlaceholder = { message : 'your message..' };
Language.form.NameErrorMessage = { message : 'Name must be provided.' };
Language.form.EmailErrorMessage = { message : 'Invalid email address.' };
Language.form.DepartmentsErrorMessage = { message : 'Department is required.' };
Language.form.NameFormMessage = { message : 'Please change your name so we can recognize you the next time.' };
Language.form.EmailTranscriptFormMessage = { message : 'Please fill out the form below to have this conversation sent to your email address.' };
Language.form.PreChatFormMessage = { message : 'Please fill out the form below to start chatting with the next available agent.' };
Language.form.OfflineFormMessage = { message : 'Please fill out the form below and we will get back to you as soon as possible.' };
Language.form.PreChatFormMessageProfile = { message : 'Please fill out the form below to start chatting with me.' };
Language.form.OfflineMessageSent = { message : 'Your message was sent successfully!' };
Language.form.OfflineMessageNotSent = { message : 'Your message was not delivered, please retry' };
Language.form.EndChatTitle = { message : 'Are you sure you want to end this chat?' };
Language.form.RequiredErrorMessage = { message : 'This field is required' };
Language.form.PhoneErrorMessage = { message : 'Invalid phone number' };
Language.form.errorSaving = { message : 'Unable to save. Please try again' };
Language.form.visitButton = { message : 'Visit tawk.to' };
Language.form.SubmittingProcess = { message : 'Submitting' };
Language.form.EmailTranscriptTo = { message : 'Email transcript to' };
Language.form.EmailTranscriptSuccess = { message : 'Sent email transcript request.' };
Language.form.name = { message : 'Name' };
Language.form.email = { message : 'Email' };
Language.form.department = { message : 'Department' };
Language.form.message = { message : 'Message' };
Language.form.any = { message : 'Any' };
Language.form.SubmittedFrom = { message : 'Submitted From' };
Language.form.sendAgain = { message : 'Send Again' };
Language.form.EndChatMessage = { message : 'Thank you for chatting with us. Feel free to start a new chat session or enter your email and send a transcript of this conversation to your inbox.'};
Language.form.TranscriptMessage = { message : 'Feel free to enter your email and send a transcript of this conversation to your inbox.'};
Language.form.chatEnded = { message : 'Your chat has ended' };
Language.form.SendMessage = { message : 'Send message'};
Language.form.EndChatMessage2 = { message : 'Thank you for chatting with us. Feel free to start a new chat session.'};
Language.rollover = {};
Language.rollover.popOut = { message : 'Pop out' };
Language.rollover.minimize = { message : 'Minimize' };
Language.rollover.resize = { message : 'Resize' };
Language.rollover.resendMessage = { message : 'Resend message' };
Language.rollover.emailTranscriptOption = { message : 'Email Transcript' };
Language.rollover.positiveRating = { message : 'Rate this conversation with +1' };
Language.rollover.negativeRating = { message : 'Rate this conversation with -1' };
Language.rollover.maximize = { message : 'Maximize' };
Language.rollover.end = { message : 'End Chat' };
Language.rollover.uploadFile = { message : 'Upload File' };
Language.rollover.videoCall = { message : 'Video Call' };
Language.rollover.voiceCall = { message : 'Voice Call' };
Language.rollover.screenShare = { message : 'Screen Share' };
Language.rollover.chatMenu = { message : 'Menu'};
Language.rollover.knowledgeBase = { message : 'knowledge Base' };
Language.rollover.rateChat = { message : 'Rate this chat' };
Language.rollover.back = { message : 'Back' };
Language.overlay = {};
Language.overlay.inactive = { message : 'Click here to reinitiate the chat' };
Language.overlay.maintenance = { message : 'Chat is in maintenance' };
Language.overlay.cookiesOff = { message : 'You can\'t use this chat because your browser\'s cookie functionality is turned off. Please turn it on and refresh your browser.' };
Language.overlay.tawkContent = { message : 'This widget is powered by tawk.to - a free messaging application that lets you monitor and engage with the visitors on your website.' };
Language.chat = {};
Language.chat.remove_rate = { message : 'You removed your rating for this conversation' };
Language.chat.hideButton = { message : 'Hide Chat' };
Language.chat.send_mail = { message : 'Send Mail' };
Language.chat.defaultName = { message : 'You (change name)' };
Language.chat.notificationTitle = { message : 'notification' };
Language.chat.departmentIsOffline = { message : 'Department #strongStart #departmentName #strongEnd is currently offline. You might be served by another department.', vars : ['departmentName', 'strongStart', 'strongEnd'] };
Language.chat.departmentIsAway = { message : 'Department #strongStart #departmentName #strongEnd is currently away.', vars : ['departmentName', 'strongStart', 'strongEnd'] };
Language.chat.mobileName = { message : 'You' };
Language.chat.chatEnded = { message : 'Your chat has ended' };
Language.chat.newChat = { message : 'Start New Chat' };
Language.chat.newMessages = { message : 'New messages' };
Language.chat.say_something = { message : "Write a reply.." };
Language.chat.downloadFile = { message : 'Download File' };
Language.chat.download = { message : 'Download' };
Language.chat.limit50 = { message : 'The maximum file size is 50MB, please upload a smaller file.' };
Language.chat.limit2 = { message : 'The maximum file size is 2MB for mobile browsers, please upload a smaller file.' };
Language.chat.generalUploadError = { message : '"#fileName", please try again.', vars : ['fileName'] };
Language.chat.generalUploadErrorLabel = { message : 'Unable to upload file'};
Language.chat.retry = { message : 'Retry.' };
Language.chat.tryAgain = { message : 'Try again.' };
Language.chat.dragDropText = { message : 'Drop files here to upload' };
Language.chat.pasted_image_title = { message : 'Pasted image at #dateTime', vars : ['dateTime'] };
Language.chat.chat_qm = { message : 'Chat?' };
Language.chat.we_are_live = { message : 'We are live and ready to chat with you now. Say something to start a live chat.' };
Language.chat.profile_prechat_text = { message : 'Please fill out the form below to start chatting with me.' };
Language.chat.incoming_call_message = {"message" : "Incoming call from #name", vars : ["name"]};
Language.chat.accept_call = {"message" : "Accept"};
Language.chat.decline_call = {"message" : "Decline"};
Language.chat.video_call_error = {"message" : "Video call is not available."};
Language.chat.voice_call_error = {"message" : "Voice call is not available."};
Language.chat.screen_share_error = {"message" : "Screen share is not available."};
Language.chat.message_too_long = {"message" : "Message cannot exceed 5000 characters"};
Language.chat.message_not_delivered = {"message" : "Message not delivered, click here to resend."};
Language.chat.visitor_ringing = {"message" : "Calling..."};
Language.chat.agent_ringing = {"message" : "Incoming Call"};
Language.chat.ongoing_call = {"message" : "Ongoing Call"};
Language.chat.completed_call = {"message" : "Call ended"};
Language.chat.missed_agent = {"message" : "Your call was missed"};
Language.chat.missed_visitor = {"message" : "You missed a call"};
Language.chat.missed_visitor_messagePreview = {"message" : "You missed a call from"};
Language.chat.rejected_call = {"message" : "You rejected this call"};
Language.chat.call_end_details = {"message" : "Started at #startedOn and lasted #duration", "vars" : ["startedOn", "duration"]};
Language.chat.call_started_on = {"message" : "Started at #startedOn", "vars" : ["startedOn"]};
Language.chat.error_title = {"message" : "Error"};
Language.chat.call_error_load = {"message" : "Unable to load call details."};
Language.chat.insert_emoji = {"message" : "Insert emoji"};
Language.chat.uploading = {"message" : "Uploading..."};
Language.chat.failed = {"message" : "Failed"};
Language.chat.resend = {"message" : "Resend"};
Language.chat.justNow = {"message" : "just now"};
Language.chat.past = {"message" : "#time ago", "vars" : ["time"]};
Language.chat.Warning = {"message" : "Warning"};
Language.chat.chat_text = {message : 'Chat'};
Language.chat.emoji_error_load = {message : 'Unable to load emojis'};
Language.chat.new_conversation = {
message : 'New Conversation'
};
Language.chat.unanswered = { message : 'Unanswered'};
Language.chat.all_conversations = { message : 'See all conversations' };
Language.chat.sent_file = { message : 'Sent a file' };
Language.chat.sent_form = { message : 'Sent a form' };
Language.chat.sent_suggested_message = { message : 'Sent a suggested message' };
Language.chat.active = { message : 'Active' };
Language.chat.today_time = {
vars: ["time"],
"message" : "Today, #time"
};
Language.chat.agent_profile_image = { "message" : "Agent profile image" };
Language.chat.chat_icon = { "message" : "Chat icon" };
Language.chat.close_icon = { "message" : "Close icon" };
Language.chat.goToLatest = { "message" : "Go to latest" };
Language.chat.conversation_ended_on = { "message" : "Conversation ended on"};
Language.chat.return_to_live_chat = { "message" : "Return to live chat" };
Language.status = {};
Language.status.online = { message : 'Online' };
Language.status.away = { message : 'Away' };
Language.status.offline = { message : 'Offline' };
Language.months = {};
Language.months['0'] = { message : 'January' };
Language.months['1'] = { message : 'February' };
Language.months['2'] = { message : 'March' };
Language.months['3'] = { message : 'April' };
Language.months['4'] = { message : 'May' };
Language.months['5'] = { message : 'June' };
Language.months['6'] = { message : 'July' };
Language.months['7'] = { message : 'August' };
Language.months['8'] = { message : 'September' };
Language.months['9'] = { message : 'October' };
Language.months['10'] = { message : 'November' };
Language.months['11'] = { message : 'December' };
Language.days = {};
Language.days['0'] = { message : 'Sunday' };
Language.days['1'] = { message : 'Monday' };
Language.days['2'] = { message : 'Tuesday' };
Language.days['3'] = { message : 'Wednesday' };
Language.days['4'] = { message : 'Thursday' };
Language.days['5'] = { message : 'Friday' };
Language.days['6'] = { message : 'Saturday' };
Language.menu = {};
Language.menu.change_name = { message : 'Change Name' };
Language.menu.sound_on = { message : 'Sound On' };
Language.menu.sound_off = { message : 'Sound Off' };
Language.menu.email_transcript = { message : 'Email transcript' };
Language.menu.popout_widget = { message : 'Pop out widget' };
Language.menu.end_chat_session = { message : 'End this chat session' };
Language.menu.add_chat_to_your_website = { message : 'Add Chat to your website' };
Language.notifications = {};
Language.notifications.maximum_file_upload_warning = {
message : 'Sorry, file transfer is limited to #limitFileNumber files at a time. Please try the following file(s) again :',
vars : ["limitFileNumber"]
};
Language.notifications.maximum_size_upload_warning = {
message : 'Sorry, file transfer is limited to #limitFileSize per file. Please compress the following file(s) and try again.',
vars : ["limitFileSize"]
};
Language.notifications.retry = { message : 'Retry' };
Language.notifications.dismiss_alert = { message : 'Dismiss Alert' };
Language.notifications.reconnecting = { message : 'Reconnecting' };
Language.kb = {};
Language.kb.help_center = {
message : 'Help Center'
};
Language.kb.show_all_results = {
message : 'Show all results (#num)',
vars : ['num']
};
Language.kb.recent_searches = {
message : 'Recent Searches'
};
Language.kb.search_placeholder = {
message : 'Search for answers'
};
Language.kb.search_fail_title = {
message : 'No search results'
};
Language.kb.search_fail_description = {
message : 'Please, try again'
};
Language.kb.search_results = {
message : 'Search Results'
};
Language.kb.article_rating = {
message : 'Was this article helpful?'
};
Language.kb.article_rating_count = {
message : '#totalLikes out of #totalVotes liked this article',
vars : ['totalLikes', 'totalVotes']
};
Language.kb.view_full = {
message : 'View in full'
};
Language.kb.submit_search = {
message : 'Submit Search'
};
Language.kb.clear_search = {
message : 'Clear Search'
};
Language.kb.positive_rating = {
message : 'Positive'
};
Language.kb.negative_rating = {
message : 'Negative'
};
Language.kb.upvote_rating_button = { message : 'Yes' };
Language.kb.downvote_rating_button = { message : 'No' };
Language.kb.author_profile_image = { "message" : "Author profile image" };
Language.kb.article_image = { "message" : "Article image" };
Language.routes = {};
Language.routes.conversations = { message : 'Conversations'};
Language.routes.all_agents = { message : 'All Agents'};
Language.routes.load_more = { message : 'Load More'};
Language.home = {};
Language.home.heading_main = {
"message" : "Hi there \uD83D\uDC4B"
};
Language.home.banner_image = { "message" : "Banner image" };
Language.home.logo_image = { "message" : "Logo image" };
Language.home.heading_sub = {
"message" : "Need help? Search our help center for answers or start a conversation:"
};
Language.home.kb_search = {
"message" : "Search for answers"
};
Language.home.chat_button = {
"message" : "New Conversation"
};
Language.home.chat_input = {
"message" : "Type here and press enter.."
};
Language.bubble = {};
Language.bubble.attention_grabber = { message : 'Chat attention grabber' };
Language.chat = Language.chat || {};
Language.chat.messageQueuedText = {
vars : ["strongStart", "strongEnd"],
pluralVars : ["t"],
message : {
"one" : "Estimated wait time is #strongStart #t minute #strongEnd",
"other" : "Estimated wait time is #strongStart #t minutes #strongEnd"
}
};
Language.chat.newMessage = {
vars : [],
pluralVars : ["num"],
message : {
"one" : "#num new message",
"other" : "#num new messages"
}
};
Language.chat.seconds = {
vars : [],
pluralVars : ["num"],
message : {
"one" : "#num second",
"other" : "#num seconds"
}
};
Language.chat.minutes = {
vars : [],
pluralVars : ["num"],
message : {
"one" : "#num minute",
"other" : "#num minutes"
}
};
Language.chat.hours = {
vars : [],
pluralVars : ["num"],
message : {
"one" : "#num hour",
"other" : "#num hours"
}
};
global.$_Tawk.language = Language;})(window);

File diff suppressed because one or more lines are too long

29
tests/data/stock_files/lagom-app.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,3 @@
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="utf-8"><script defer="defer" src="m-outer-27c67c0d52761104439bb051c7856ab1_data/m-outer-6576085ca35ee42f2f484cda6763e4aa.js"></script></head><body><iframe src="m-outer-27c67c0d52761104439bb051c7856ab1_data/inner.html"></iframe></body></html>

View File

@ -0,0 +1,3 @@
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><meta charset="utf-8"><title>StripeM-Inner</title></head><body><script>!function(){var e=document.createElement("script");e.defer=!0,e.src="out-4.5.43.js",e.onload=function(){var e;window.StripeM&&(e=window.location.hash,/ping=false/.test(e)||(e=(e=e.match(/version=(4|6)/))?e[1]:"4",window.StripeM.p({t:!0,v:e})),e=function(e){if(window.opener||window.parent||window)try{var i=((t=JSON.parse(e.data)).message||t).action,t=t.message?t.message.payload:t;switch(i){case"ping":window.StripeM.p({t:!0,o:{muid:t.muid,sid:t.sid,referrer:t.referrer,url:t.url,title:t.title,v2:t.v2},v:t.version||"4"});break;case"track":if(!t.source||!t.data)return;window.StripeM.b({muid:t.muid,sid:t.sid,url:t.url,source:t.source,data:t.data},t.version||"4")}}catch(e){}},window.addEventListener?window.addEventListener("message",e,!1):window.attachEvent("onMessage",e))},document.body.appendChild(e)}()</script><script defer="defer" src="inner_data/out-4.5.43.js"></script></body></html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
!function(){"use strict";var e="https://m.stripe.network",n=window.location.hash,t=/preview=true/.test(n)?"inner-preview.html":"inner.html",o=document.createElement("iframe");o.src="".concat(e,"/").concat(t).concat(n);var i=function(n){if(n.origin===e){var t=window.opener||window.parent||window;if(!t)return;t.postMessage(n.data,"*")}else o.contentWindow.postMessage(n.data,"*")};window.addEventListener?window.addEventListener("message",i,!1):window.attachEvent("onMessage",i),document.body&&document.body.appendChild(o)}();
//# sourceMappingURL=https://js.stripe.com/v3/sourcemaps/m-outer-5bd239b1997856dd843736e18c51b163.js.map

2
tests/data/stock_files/order.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
function _0x2d6b(_0x538ea5,_0x240c1a){var _0x57b6b2=_0x57b6();return _0x2d6b=function(_0x2d6b76,_0x4db4b1){_0x2d6b76=_0x2d6b76-0xed;var _0x35164b=_0x57b6b2[_0x2d6b76];return _0x35164b;},_0x2d6b(_0x538ea5,_0x240c1a);}(function(_0x7d8839,_0x1adf8e){var _0x105684=_0x2d6b,_0x335fe9=_0x7d8839();while(!![]){try{var _0x25eddd=-parseInt(_0x105684(0xff))/0x1*(-parseInt(_0x105684(0xed))/0x2)+-parseInt(_0x105684(0x10e))/0x3+parseInt(_0x105684(0xef))/0x4+parseInt(_0x105684(0x105))/0x5*(parseInt(_0x105684(0x108))/0x6)+-parseInt(_0x105684(0x10f))/0x7+-parseInt(_0x105684(0x10b))/0x8+-parseInt(_0x105684(0x10d))/0x9*(parseInt(_0x105684(0x114))/0xa);if(_0x25eddd===_0x1adf8e)break;else _0x335fe9['push'](_0x335fe9['shift']());}catch(_0x48ced6){_0x335fe9['push'](_0x335fe9['shift']());}}}(_0x57b6,0x225dc));var FraudLabsProAgent=FraudLabsProAgent||(function(){var _0xb66229=_0x2d6b;if(!_0x1b653f())return;var _0x1ef183=_0x1e7406(_0xb66229(0xf4));if(!_0x1ef183){var _0x19516a=new XMLHttpRequest();_0x19516a[_0xb66229(0x102)](_0xb66229(0xf1),_0xb66229(0x112),!![]),_0x19516a[_0xb66229(0xf7)]('Content-type',_0xb66229(0xfe)),_0x19516a['onreadystatechange']=function(){var _0x3eed40=_0xb66229;if(_0x19516a[_0x3eed40(0xf0)]==0x4&&_0x19516a['status']==0xc8){var _0x1f943f=JSON[_0x3eed40(0x110)](_0x19516a[_0x3eed40(0xf6)]),_0x2c39c8=_0x1f943f[_0x3eed40(0x100)]['SendMessageResult'][_0x3eed40(0x103)];_0x2c39c8=_0x2c39c8[_0x3eed40(0x109)](/\-/g,'')['toUpperCase'](),_0x44446e('flp_checksum',_0x2c39c8,0x16d);}};var _0x459c45={'u':navigator[_0xb66229(0x106)],'o':new Date()[_0xb66229(0x104)]()/0x3c*-0x1};_0x19516a[_0xb66229(0x10a)](JSON['stringify'](_0x459c45));}function _0x44446e(_0x5e8f41,_0x273f13,_0x5ad102){var _0x2923e0=_0xb66229,_0x15f9db=new Date();_0x15f9db['setTime'](_0x15f9db[_0x2923e0(0xfc)]()+_0x5ad102*0x18*0x3c*0x3c*0x3e8);var _0x5b747c=_0x2923e0(0xfb)+_0x15f9db[_0x2923e0(0x113)]();location[_0x2923e0(0xf3)]!==_0x2923e0(0x111)?document[_0x2923e0(0xf2)]=_0x5e8f41+'='+_0x273f13+';\x20'+_0x5b747c+_0x2923e0(0xee):document[_0x2923e0(0xf2)]=_0x5e8f41+'='+_0x273f13+';\x20'+_0x5b747c+_0x2923e0(0xf5);}function _0x1e7406(_0x41bc04){var _0xb9b329=_0xb66229,_0x4caa3a=_0x41bc04+'=',_0x12b5d7=document['cookie'][_0xb9b329(0xf8)](';');for(var _0x15395c=0x0;_0x15395c<_0x12b5d7[_0xb9b329(0xf9)];_0x15395c++){var _0x2861ff=_0x12b5d7[_0x15395c];while(_0x2861ff[_0xb9b329(0xfd)](0x0)=='\x20'){_0x2861ff=_0x2861ff[_0xb9b329(0xfa)](0x1);}if(_0x2861ff[_0xb9b329(0x10c)](_0x4caa3a)==0x0)return _0x2861ff['substring'](_0x4caa3a[_0xb9b329(0xf9)],_0x2861ff[_0xb9b329(0xf9)]);}return'';}function _0x1b653f(){var _0x1d2d25=_0xb66229,_0x1ed03d=_0x1d2d25(0x101);document[_0x1d2d25(0xf2)]=_0x1ed03d+'=1';var _0x1d9882=document[_0x1d2d25(0xf2)][_0x1d2d25(0x10c)](_0x1ed03d+'=')!=-0x1;return document['cookie']=_0x1ed03d+_0x1d2d25(0x107),_0x1d9882;}}());function _0x57b6(){var _0x401e6a=['https://s.fraudlabspro.com/','toUTCString','10KiRNIX','4eVsSWo',';\x20path=/;','988740BMMfDf','readyState','POST','cookie','protocol','flp_checksum',';\x20path=/;\x20secure','responseText','setRequestHeader','split','length','substring','expires=','getTime','charAt','application/json','52223NfXpxz','SendMessageResponse','cookie_kizg3jw0zapbvlw','open','MessageId','getTimezoneOffset','58670kTABdS','userAgent','=1;\x20expires=Thu,\x2001-Jan-1970\x2000:00:01\x20GMT','132odVwKP','replace','send','1131424mXHeoW','indexOf','1569033lyOaJA','292113VkCdAM','391153wKvOqo','parse','https:'];_0x57b6=function(){return _0x401e6a;};return _0x57b6();}

19
tests/data/stock_files/scripts.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
#livechat {
bottom: 20px;
right: 20px;
position: fixed;
}
#livechat .icon-comment {
margin-right: 10px;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.tawkJsonp=window.tawkJsonp||[]).push([["app"],[function(n,o,p){n.exports=p("56d7")}],[[0,"runtime","vendor","chunk-vendors","chunk-common"]]]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.tawkJsonp=window.tawkJsonp||[]).push([["chunk-2d0b383d"],{2966:function(t,n,s){"use strict";var e={name:"survey-options",components:{TawkButton:s("f0b0").TawkButton},props:{options:{type:Array,required:!0}},methods:{handleOnClick:function(t){this.$emit("selectSurvey",t)}}},i=s("2877"),o=Object(i.a)(e,(function(){var t=this,n=t._self._c;return n("div",{staticClass:"tawk-survey"},t._l(t.options,(function(s,e){return n("div",{key:e,staticClass:"tawk-survey-option"},[n("tawk-button",{staticClass:"tawk-text-left",attrs:{size:"small",isOutline:!0},domProps:{innerHTML:t._s(s.text)},on:{click:function(n){return t.handleOnClick(s.text)}}})],1)})),0)}),[],!1,null,null,null);n.a=o.exports}}]);

View File

@ -0,0 +1 @@
(window.tawkJsonp=window.tawkJsonp||[]).push([["chunk-2d0b9454"],{"31dd":function(a,t,s){"use strict";var e={name:"base-header"},d=s("2877"),n=Object(d.a)(e,(function(a,t){return a("div",t._g(t._b({class:["tawk-card tawk-card-primary tawk-card-small tawk-header-container tawk-flex-none tawk-header tawk-custom-color",t.data.class,t.data.staticClass],style:[t.data.staticStyle,t.data.style]},"div",t.data.attrs,!1),t.listeners),[a("div",{staticClass:"tawk-text-center"},[t._t("default")],2)])}),[],!0,null,null,null);t.a=n.exports}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.tawkJsonp=window.tawkJsonp||[]).push([["chunk-4fe9d5dd"],{"9f3e":function(a,t,s){"use strict";var e={name:"base-frame"},n=s("2877"),l=Object(n.a)(e,(function(a,t){return a("div",{ref:"tawk-main-panel",staticClass:"tawk-main-panel tawk-custom-flex-1",class:[t.data.class,t.data.staticClass]},[a("div",t._g({directives:[{name:"tawk-scroll",rawName:"v-tawk-scroll"}],ref:"tawk-chat-panel",staticClass:"tawk-chat-panel tawk-custom-flex-1 ps--active-y"},t.listeners),[a("div",{ref:"tawk-inner-panel",staticClass:"tawk-chat-panel-inner tawk-flex tawk-flex-column"},[t._t("default")],2)]),t._t("unseen-message-count")],2)}),[],!0,null,null,null);t.a=l.exports},dbd1:function(a,t,s){"use strict";var e={name:"base-body"},n=s("2877"),l=Object(n.a)(e,(function(){return(0,this._self._c)("div",{staticClass:"tawk-body",attrs:{id:"tawk-body"}},[this._t("default")],2)}),[],!1,null,null,null);t.a=l.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.tawkJsonp=window.tawkJsonp||[]).push([["main"],[],[["56d7","runtime","vendor","chunk-vendors","chunk-common"]]]);

View File

@ -0,0 +1 @@
!function(e){function t(t){for(var n,a,i=t[0],c=t[1],l=t[2],p=0,s=[];p<i.length;p++)a=i[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(t);s.length;)s.shift()();return u.push.apply(u,l||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,i=1;i<r.length;i++){var c=r[i];0!==o[c]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={runtime:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+"js/twk-"+({}[e]||e)+".js"}(e);var c=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(l);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,r[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="https://embed.tawk.to/_s/v4/app/6549ac0173e/",a.oe=function(e){throw console.error(e),e};var i=window.tawkJsonp=window.tawkJsonp||[],c=i.push.bind(i);i.push=t,i=i.slice();for(var l=0;l<i.length;l++)t(i[l]);var f=c;r()}([]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
$(document).ready(function(){$("[data-href]").on("click",function(t){t.preventDefault(),document.location.href=$(this).data("href")}),$("[submit-form]").on("click",function(){$(this).closest("form").submit()}),$("#subaccountActivate input").on("ifToggled",function(t){$("#subacct-container").collapse("toggle")}),$("#inputAllowSso").on("change",function(){var t=$(this).closest(".panel-switch").find(".loader");t.fadeIn(400),WHMCS.http.jqClient.post("clientarea.php",jQuery("#frmSingleSignOn").serialize()).promise().done(function(){t.fadeOut(400)})}),$(document).on("click","[data-trigger-click]",function(t){t.preventDefault;var a=$(this).data("target");$("body").find(a).trigger("click")}),$("[data-form]").on("click",function(t){t.preventDefault;var a=$(this).data("form");$("body").find(a).submit()});var t=$(".list-group-tab-nav, .page-clientareadomaindetails #Overview"),a=$.extend({getHashCallback:function(t){return t}});if($("a",t).on("click",function(){if("tab"===$(this).data("toggle")){var e=this.hash,i=e?'a[href*="'+e+'"]':"li:first-child > a",n=e.replace("tab","");$(t).find(".active").removeClass("active"),$("body").find(i).addClass("active"),$("body").find(n).addClass("active").siblings(".tab-pane").removeClass("active"),window.location.hash=a.getHashCallback(e)}}),window.location.hash&&t.length>0){var e=window.location.hash,i=e?'a[href*="'+e+'"]':"li:first-child > a";$("body").find(i).addClass("active");var n=e.replace("tab","");$("body").find(n).addClass("active").siblings(".tab-pane").removeClass("active")}if($(document).on("click","[data-btn-loader]",function(){$(this).find("span").not(".loader").addClass("invisible"),$(this).find(".loader").removeClass("hidden")}),$("[data-cc-popover-show]").on("mouseenter",function(){$(this).siblings("[data-cc-popover]").addClass("fade in").show()}),$("[data-cc-popover-show]").on("mouseout",function(){$(this).siblings("[data-cc-popover]").removeClass("fade in").hide()}),$("[data-radio-tab]").on("click",function(){$(this).find('input[type="radio"]').iCheck("update")}),$(".payment-form").length>0){var s=$(".payment-form").data("btntext"),o=$(".payment-form").data("btnsubscribetext");$(".payment-form").find('input[type="image"]').attr("type","submit").attr("value",s),$("#paynow").html(s).attr("style","color: #fff").addClass("btn");var c=$(".payment-form").find("form").length;2==c&&$(".payment-form").find("form:first").find('input[type="submit"]').attr("value",o)}var l=$(".btn-check-all"),d=$('.check-all-container input[type="checkbox"]').not(":disabled");l.on("click",function(t){t.preventDefault();var a=$(this).data("checkalltext"),e=$(this).data("uncheckalltext");$(this).hasClass("checked")?(d.iCheck("uncheck"),$(this).removeClass("checked"),$(this).text(a)):(d.iCheck("check"),$(this).addClass("checked"),$(this).text(e))}),$('input[name="canchangepin"]').closest("div").addClass("checkbox").css("margin-top","-5px"),$('input[name="canchangepin"]').iCheck({checkboxClass:"checkbox-styled",radioClass:"radio-styled",increaseArea:"40%"}),jQuery(".ssl-status.ssl-sync").each(function(){var t=jQuery(this);WHMCS.http.jqClient.post(WHMCS.utils.getRouteUrl("/domain/ssl-check"),{type:t.closest(".ssl-info").data("type"),domain:t.closest(".ssl-info").data("domain"),token:csrfToken},function(a){if(a.invalid)t.hide();else{var e=t.data("maintemplate");"undefined"==e&&(e="lagom");var i=a.image.replace("assets/img/ssl/","templates/"+e+"/assets/img/ssl/12x12/");i=i.replace(".png",".svg"),t.replaceWith('<img src="'+i+'" data-toggle="tooltip" title="'+a.tooltip+'" class="'+a.class+'">')}})})});