<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>5777879193 - @PoggVpn</title>
<style>
:root {
font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
/*-------->MENU<--------*/
/*IMAGEM DE FUNDO PRINCIPAL*/
--imagem-de-fundo: url('https://bafkreighln2izjgvidrzifz2qrk2hk5ww7gt4m7kw3ffd3tfzoknr7hdyu.ipfs.w3s.link');
/*CONTAINER DE STATUS VPN*/
--cor-de-fundo-do-container-de-status-da-vpn: rgba(161, 42, 246, 0.1);
--cor-do-icone-do-container-de-status-da-vpn: rgba(255, 255, 255, 1);
--cor-do-texto-do-container-de-status-da-vpn: rgba(255, 255, 255, 1);
/*CONTAINER DE SELECIONAR OPERADORA*/
--cor-de-fundo-do-campo-de-selecionar-operadora: rgba(161, 42, 246, 0.5);
--borda-do-container-de-selecionar-operadora: rgba(68, 60, 119, 1);
--cor-do-icone-de-chip-do-campo-de-selecionar-operadora: rgba(255, 255, 255, 1);
--cor-do-texto-do-campo-de-selecionar-operadora: rgba(255, 255, 255, 1);
/*CONTAINER PRINCIPAL*/
--cor-de-fundo-do-container-principal: rgba(161, 42, 246, 0.5);
--borda-do-container-principal: rgba(68, 60, 119, 1);
--borda-do-header-do-container-principal: rgba(68, 60, 119, 1);
--cor-de-fundo-dos-input-do-container-principal: rgba(187, 127, 243, 0.2);
--cor-da-borda-dos-input-do-container-principal: rgba(68, 60, 119, 1);
--cor-dos-icones-dos-input-do-container-principal: rgba(255, 255, 255, 1);
--cor-do-texto-dos-input-do-container-principal: rgba(255, 255, 255, 1);
--cor-do-texto-dos-input-do-container-principal-quando-nao-ta-selecionado: rgba(
255,
255,
255,
1
);
--cor-de-fundo-do-botao-do-container-principal: rgba(187, 127, 243, 0.2);
--cor-da-borda-do-botao-do-container-principal: rgba(68, 60, 119, 1);
--cor-do-icone-do-botao-do-container-principal: rgba(255, 255, 255, 1);
--cor-do-texto-do-botao-do-container-principal: rgba(255, 255, 255, 1);
/*CONTAINER DOS CONTROLES*/
--cor-de-fundo-do-container-de-controles: rgba(161, 42, 246, 0.5);
--cor-da-borda-do-container-de-controles: rgba(68, 60, 119, 1);
--cor-de-fundo-do-botao-do-container-de-controles: rgba(104, 3, 202, 1);
--cor-da-borda-do-botao-do-container-de-controles: rgba(68, 60, 119, 1);
--cor-do-icone-do-botao-do-container-de-controles: rgba(255, 255, 255, 1);
--cor-de-fundo-do-botao-do-meio-do-container-de-controles: rgba(68, 60, 119, 1);
--cor-da-borda-do-botao-do-meio-do-container-de-controles: rgba(161, 42, 246, 0.5);
/* CONTAINER DAS CONFIGURAÇÕES */
--cor-de-fundo-do-container-da-lista-de-configuracoes: rgba(161, 42, 246, 0.4);
--cor-da-borda-do-container-da-lista-de-configuracoes: rgba(68, 60, 119, 0.5);
--cor-de-fundo-do-header-do-container-da-lista-de-configuracoes: rgba(187, 127, 243, 1);
--cor-do-icone-de-fechar-do-header-do-container-da-lista-de-configuracoes: rgba(
255,
255,
255,
1
);
--cor-de-fundo-do-container-da-lista-de-categorias-de-configuracoes: transparent;
--cor-de-fundo-da-categoria: transparent;
--cor-de-fundo-do-header-da-categoria: rgba(187, 127, 243, 1);
--cor-da-borda-do-header-da-categoria: rgba(127, 71, 203, 1);
--cor-do-text-do-header-da-categoria: rgba(255, 255, 255, 1);
--cor-do-icone-do-header-da-categoria: rgba(255, 255, 255, 1);
--cor-de-fundo-da-lista-de-configuracoes: transparent;
--cor-de-fundo-do-item-da-configuracao: rgba(187, 127, 243, 1);
--cor-do-texto-do-titulo-do-item-da-configuracao: rgba(255, 255, 255, 1);
--cor-do-texto-da-descricao-do-item-da-configuracao: rgba(255, 255, 255, 1);
--cor-do-modo-da-conexao-do-item-da-configuracao: rgba(255, 255, 255, 1);
/* CHECKUSER PRINCIPAL */
--cor-de-fundo-do-container-do-checkuser-principal: rgba(161, 42, 246, 0.8);
--cor-de-fundo-do-header-do-container-do-checkuser-principal: rgba(187, 127, 243, 1);
--cor-do-icone-do-header-do-container-do-checkuser-principal: rgba(255, 255, 255, 1);
--cor-da-borda-do-icone-de-sucesso: rgba(255, 255, 255, 1);
--cor-do-icone-de-sucesso: rgba(255, 255, 255, 1);
--cor-de-fundo-da-lista-de-dados-de-login: transparent;
--cor-de-fundo-dos-dados-de-login: rgba(187, 127, 243, 1);
--cor-dos-icones-dos-dados-de-login: rgba(255, 255, 255, 1);
--cor-dos-textos-dos-dados-de-login: rgba(255, 255, 255, 1);
/* CONTAINER DE CARREGAMENTO */
--cor-de-fundo-do-container-de-carregamento: rgba(161, 42, 246, 0.8);
--cor-de-fundo-do-header-do-container-de-carregamento: rgba(187, 127, 243, 1);
--cor-do-icone-do-header-do-container-de-carregamento: rgba(255, 255, 255, 1);
/* CONTAINER DE PERFIL DO USUÁRIO */
--cor-de-fundo-do-container-do-perfil-do-usuario: rgba(161, 42, 246, 0.8);
--cor-de-fundo-do-header-do-container-do-perfil-do-usuario: transparent;
--cor-da-borda-do-header-do-container-do-perfil-do-usuario: rgba(187, 127, 243, 1);
--cor-de-fundo-da-lista-do-container-do-perfil-do-usuario: transparent;
--cor-de-fundo-dos-items-do-container-do-perfil-do-usuario: rgba(187, 127, 243, 1);
--cor-de-fundo-dos-icones-do-container-do-perfil-do-usuario: rgba(187, 127, 243, 1);
--cor-da-borda-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-do-icone-de-dentro-do-close-do-container-do-perfil-do-usuario: rgba(255, 255, 255, 1);
--cor-do-titulo-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-da-descricao-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
255,
255,
255,
1
);
--cor-de-fundo-dos-termos-do-container-do-perfil-do-usuario: rgba(11, 26, 59, 0.5);
/* CONTAINER DE FERRAMENTAS */
--cor-da-borda-do-titulo-do-container-de-ferramentas: rgba(255, 255, 255, 1);
--cor-do-texto-do-titulo-do-container-de-ferramentas: rgba(255, 255, 255, 1);
--cor-da-borda-dos-botoes-do-container-de-ferramentas: #cc60ff;
--cor-de-fundo-dos-botoes-do-container-de-ferramentas: rgba(161, 42, 246, 0.5);
--cor-da-sombra-dos-botoes-do-container-de-ferramentas: rgba(0, 0, 0, 0.25);
--cor-dos-icones-dos-botoes-do-container-de-ferramentas: rgba(255, 255, 255, 1);
--cor-dos-textos-dos-botoes-do-container-de-ferramentas: rgba(255, 255, 255, 1);
/* MODAL SPEEDTEST */
--cor-do-header-do-modal-do-speedtest: rgba(187, 127, 243, 1);
--cor-de-fundo-do-modal-do-speedtest: rgba(187, 127, 243, 1);
--cor-do-icone-do-header-do-modal-do-speedtest: rgba(255, 255, 255, 1);
/* MODAL ERROR */
--cor-do-header-do-modal-de-error: rgba(158, 36, 36, 0.8);
--cor-de-fundo-do-modal-de-error: rgba(53, 46, 57, 0.9);
--cor-do-icone-do-header-do-modal-de-error: rgba(255, 255, 255, 1);
/* MODAL LOGS */
--cor-do-header-do-modal-de-logs: rgba(187, 127, 243, 1);
--cor-de-fundo-do-modal-de-logs: rgba(53, 46, 57, 0.9);
--cor-do-texto-do-registro-do-modal-de-logs: rgba(255, 255, 255, 1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body,
main {
width: 100%;
height: 100%;
}
body {
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
}
main {
max-width: 500px;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
margin: auto;
position: relative;
overflow: hidden;
}
main section.vpnStatus {
width: auto;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
gap: 5px;
margin-top: 5%;
padding: 0px 10px;
border-radius: 20px;
background-color: var(--cor-de-fundo-do-container-de-status-da-vpn);
}
main section.vpnStatus svg {
color: var(--cor-do-icone-do-container-de-status-da-vpn);
}
main section.vpnStatus span {
color: var(--cor-do-texto-do-container-de-status-da-vpn);
}
section.local-ip {
width: auto;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
gap: 5px;
margin-top: 5%;
padding: 0px 10px;
border-radius: 20px;
background-color: var(--cor-de-fundo-do-container-de-status-da-vpn);
}
section.local-ip svg {
color: var(--cor-do-icone-do-container-de-status-da-vpn);
}
section.local-ip span {
text-align: center;
color: var(--cor-do-texto-do-container-de-status-da-vpn);
}
main section.home {
width: 100%;
max-width: 500px;
height: auto;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
position: relative;
padding: 0px 10px;
}
main section.home header {
width: 100%;
height: auto;
display: flex;
justify-content: center;
align-items: center;
}
main section.home header img.logo {
width: 60%;
max-width: 100px;
height: auto;
}
main section.home div.carrierSelector {
width: 100%;
height: 50px;
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
padding: 0px 10px;
border: 1px solid var(--borda-do-container-de-selecionar-operadora);
border-radius: 10px;
overflow: hidden;
background-color: var(--cor-de-fundo-do-campo-de-selecionar-operadora);
}
main section.home div.carrierSelector svg {
width: 20px;
height: 20px;
color: var(--cor-do-icone-de-chip-do-campo-de-selecionar-operadora);
}
main section.home div.carrierSelector span {
width: 100%;
max-width: 100%;
height: 100%;
max-height: 100%;
display: flex;
justify-content: center;
align-items: center;
color: var(--cor-do-texto-do-campo-de-selecionar-operadora);
overflow: none;
}
main section.home div.container {
width: 100%;
height: 200px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border: 1px solid var(--borda-do-container-principal);
border-radius: 10px;
background: var(--cor-de-fundo-do-container-principal);
}
main section.home div.container header {
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 0px 5px;
border-bottom: 1px solid var(--borda-do-header-do-container-principal);
overflow: hidden;
}
main section.home div.container form {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
padding: 10px;
}
main section.home div.container form div {
width: 90%;
height: 40px;
display: flex;
align-items: center;
position: relative;
padding: 0px 0px 0px 5px;
border-radius: 20px;
border: 1px solid var(--cor-da-borda-dos-input-do-container-principal);
overflow: hidden;
background-color: var(--cor-de-fundo-dos-input-do-container-principal);
}
main section.home div.container form div svg {
width: 40px;
height: 40px;
padding: 10px;
color: var(--cor-dos-icones-dos-input-do-container-principal);
}
main section.home div.container form div input {
width: calc(100% - 40px);
height: 100%;
border: 0;
outline: none;
color: var(--cor-do-texto-dos-input-do-container-principal);
background-color: transparent;
}
main section.home div.container form div svg.eye {
position: absolute;
right: 0;
}
.eye-none {
display: none;
}
.eye-block {
display: block;
}
main section.home div.container form div input::placeholder {
color: var(--cor-do-texto-dos-input-do-container-principal-quando-nao-ta-selecionado);
}
main section.home div.container form div.buttons {
height: 40px;
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
border: 0;
padding-left: 3px;
background: transparent;
}
main section.home div.container form div button#startStopVpn {
flex: 1;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 10px;
border: 1px solid var(--cor-da-borda-do-botao-do-container-principal);
border-radius: 20px;
background: var(--cor-de-fundo-do-botao-do-container-principal);
}
main section.home div.container form div button#buttonLogs {
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
border: 1px solid var(--cor-da-borda-do-botao-do-container-principal);
border-radius: 50%;
background: var(--cor-de-fundo-do-botao-do-container-principal);
}
main section.home div.container form button svg {
color: var(--cor-do-icone-do-botao-do-container-principal);
}
main section.home div.container form button span {
color: var(--cor-do-texto-do-botao-do-container-principal);
}
main section.controls {
width: 90%;
height: 50px;
display: flex;
align-items: center;
gap: 15px;
position: absolute;
bottom: 10px;
z-index: 999;
padding: 0px 10px;
border: 1px solid var(--cor-da-borda-do-container-de-controles);
border-radius: 25px;
background: var(--cor-de-fundo-do-container-de-controles);
}
main section.controls button {
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
border: 0px solid var(--cor-da-borda-do-botao-do-container-de-controles);
border-radius: 50%;
background: var(--cor-de-fundo-do-botao-do-container-de-controles);
}
main section.controls button:nth-child(2) {
margin-right: auto;
}
main section.controls button svg {
color: var(--cor-do-icone-do-botao-do-container-de-controles);
}
main section.controls button#backToHome {
width: 60px;
height: 60px;
margin-left: auto;
margin-right: auto;
position: absolute;
top: -50%;
left: 0;
right: 0;
border: 1px solid var(--cor-da-borda-do-botao-do-meio-do-container-de-controles);
background: var(--cor-de-fundo-do-botao-do-meio-do-container-de-controles);
}
main section.controls button#backToHome::before {
width: 60px;
height: 60px;
content: '';
position: absolute;
top: -6px;
left: -6px;
right: 0;
bottom: 0px;
z-index: 2;
margin-left: auto;
margin-right: auto;
border: 5px solid var(--cor-da-borda-do-botao-do-meio-do-container-de-controles);
border-radius: 50%;
}
main section.listOfCarriers {
width: calc(100% - 10px);
height: 70%;
display: flex;
flex-direction: column;
align-items: center;
position: absolute;
top: 13%;
border: 1px solid var(--cor-da-borda-do-container-da-lista-de-configuracoes);
border-radius: 10px;
overflow-y: auto;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
background: var(--cor-de-fundo-do-container-da-lista-de-configuracoes);
backdrop-filter: blur(10px);
}
main section.listOfCarriers.active {
opacity: 1;
transform: scale(1);
}
main section.listOfCarriers .header-list {
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 10px;
border: 1px solid var();
background: var(--cor-de-fundo-do-header-do-container-da-lista-de-configuracoes);
}
main section.listOfCarriers header svg.bi-x-lg {
margin: 0px 0px 0px auto;
color: var(--cor-do-icone-de-fechar-do-header-do-container-da-lista-de-configuracoes);
}
main section.listOfCarriers section.list-container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
gap: 20px;
margin: 10px 0px;
padding: 0px 10px;
overflow-y: auto;
background: var(--cor-de-fundo-do-container-da-lista-de-categorias-de-configuracoes);
}
main section.listOfCarriers section.list-container div.category {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
gap: 10px;
border-radius: 5px;
background: var(--cor-de-fundo-da-categoria);
}
main section.listOfCarriers section.list-container div.category header {
width: 100%;
height: 50px;
min-height: 50px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0px 5px;
border-bottom: 1px solid var(--cor-da-borda-do-header-da-categoria);
border-radius: 5px;
background: var(--cor-de-fundo-do-header-da-categoria);
}
main section.listOfCarriers section.list-container div.category header h1 {
color: var(--cor-do-text-do-header-da-categoria);
font-weight: 400;
font-size: 1rem;
}
main section.listOfCarriers section.list-container div.category header svg {
color: var(--cor-do-icone-do-header-da-categoria);
transition: all 0.3s ease 0.3s;
}
main section.listOfCarriers section.list-container div.category ul.configs {
width: 100%;
max-height: 0px;
display: flex;
flex-direction: column;
gap: 10px;
overflow-y: auto;
overflow-x: hidden;
background: var(--cor-de-fundo-da-lista-de-configuracoes);
transition: all 0.3s ease 0.3s;
}
main section.listOfCarriers section.list-container div.category ul.configs li {
width: 100%;
height: 60px;
display: flex;
align-items: center;
gap: 3px;
padding: 5px;
border-radius: 5px;
background: var(--cor-de-fundo-do-item-da-configuracao);
}
main section.listOfCarriers section.list-container div.category ul.configs li div.logo {
width: auto;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
main section.listOfCarriers section.list-container div.category ul.configs li div.logo img {
width: 40px;
height: auto;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.description {
width: 150px;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
justify-items: center;
align-content: center;
overflow: hidden;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.description
h1 {
width: 100%;
height: 30px;
display: flex;
justify-content: center;
color: var(--cor-do-texto-do-titulo-do-item-da-configuracao);
font-size: 0.6rem;
font-weight: 400;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
main
section.listOfCarriers
section.list-container
div.category
ul.configs
li
div.description
p {
width: 100%;
height: 30px;
display: flex;
justify-content: flex-end;
align-items: end;
color: var(--cor-do-texto-da-descricao-do-item-da-configuracao);
font-size: 0.6rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
main section.listOfCarriers section.list-container div.category ul.configs li div.mode {
width: 50px;
height: 100%;
margin-left: auto;
display: flex;
justify-content: flex-end;
align-items: end;
}
main section.listOfCarriers section.list-container div.category ul.configs li div.mode p {
color: var(--cor-do-modo-da-conexao-do-item-da-configuracao);
font-size: 0.6rem;
}
section.main-checkuser {
width: 95%;
height: 70%;
position: absolute;
top: 8%;
margin: auto;
border-radius: 5px;
overflow: hidden;
background: var(--cor-de-fundo-do-container-do-checkuser-principal);
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
}
section.main-checkuser.show {
opacity: 1;
transform: scale(1);
}
@media (min-width: 320px) {
section.main-checkuser {
height: 55%;
top: 50%;
bottom: 50%;
}
}
section.main-checkuser header {
width: 100%;
height: 10%;
max-height: 50px;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 10px;
background: var(--cor-de-fundo-do-header-do-container-do-checkuser-principal);
}
section.main-checkuser header svg {
color: var(--cor-do-icone-do-header-do-container-do-checkuser-principal);
}
section.main-checkuser section.container-content-checkuser {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
section.main-checkuser section.container-content-checkuser div.connected-success {
width: 50%;
max-width: 100px;
height: 50%;
max-height: 100px;
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
margin-bottom: 20px;
border: 1px solid var(--cor-da-borda-do-icone-de-sucesso);
border-radius: 50%;
animation: pulse 1s infinite;
}
section.main-checkuser section.container-content-checkuser div.connected-success svg {
width: 50%;
height: 50%;
color: var(--cor-do-icone-de-sucesso);
}
@keyframes pulse {
0% {
box-shadow: 0 0 0 0 rgba(0, 255, 0, 0.7);
}
70% {
box-shadow: 0 0 0 20px rgba(0, 255, 0, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(0, 255, 0, 0);
}
}
section.main-checkuser section.container-content-checkuser ul {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 10px;
padding: 0px 10px;
list-style: none;
}
section.main-checkuser section.container-content-checkuser ul li {
width: 100%;
height: 50px;
display: flex;
align-items: center;
padding: 0px 10px;
border-radius: 5px;
background: var(--cor-de-fundo-dos-dados-de-login);
}
section.main-checkuser section.container-content-checkuser ul li svg {
margin-right: 10px;
color: var(--cor-dos-icones-dos-dados-de-login);
}
section.main-checkuser section.container-content-checkuser ul li span {
color: var(--cor-dos-textos-dos-dados-de-login);
}
section.loading {
width: 95%;
height: auto;
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
margin: auto;
border-radius: 5px;
overflow-x: hidden;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
background: var(--cor-de-fundo-do-container-de-carregamento);
}
section.loading.show {
opacity: 1;
transform: scale(1);
}
section.loading header {
width: 100%;
height: 10%;
max-height: 50px;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 10px;
background: var(--cor-de-fundo-do-header-do-container-de-carregamento);
}
section.loading header svg {
color: var(--cor-do-icone-do-header-do-container-de-carregamento);
}
section.loading div.loading-container {
width: 100px;
height: 100px;
margin: 30px auto;
border: 4px solid #ffffff;
border-top: 4px solid transparent;
border-radius: 50%;
animation: spin 0.5s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
section.profile-checkuser {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 100%;
right: 0;
bottom: 0;
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
transition: transform 0.5s ease-in-out;
}
section.profile-checkuser.show {
transform: translateX(-100%);
}
section.profile-checkuser header,
section.profile-checkuser section.terms header {
width: 95%;
height: 40px;
display: flex;
align-items: center;
margin: 0 auto;
background: var(--cor-de-fundo-do-header-do-container-do-perfil-do-usuario);
}
section.profile-checkuser header h1,
section.profile-checkuser section.terms header h1 {
width: 95%;
color: #ffffff;
font-weight: 400;
font-size: 1rem;
text-align: center;
margin: 0 auto;
border-bottom: 4px solid var(--cor-da-borda-do-header-do-container-do-perfil-do-usuario);
}
section.profile-checkuser div.not-view-user {
display: none;
flex-direction: column;
align-items: center;
gap: 15px;
padding: 15px 10px;
}
section.profile-checkuser div.not-view-user.show {
display: flex;
}
section.profile-checkuser div.not-view-user div.circle {
width: 100px;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
border: 2px solid var(--cor-da-borda-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario);
border-radius: 50%;
}
section.profile-checkuser div.not-view-user div.circle svg {
width: 50%;
height: 50%;
color: var(--cor-do-icone-de-dentro-do-close-do-container-do-perfil-do-usuario);
}
section.profile-checkuser div.not-view-user h2 {
width: 100%;
color: var(--cor-do-titulo-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario);
text-align: center;
font-size: 1rem;
}
section.profile-checkuser div.not-view-user p {
color: var(--cor-da-descricao-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario);
text-align: center;
font-size: 0.8rem;
}
section.profile-checkuser ul {
width: 100%;
height: auto;
display: none;
flex-direction: column;
gap: 20px;
list-style: none;
padding: 10px;
background: var(--cor-de-fundo-da-lista-do-container-do-perfil-do-usuario);
}
section.profile-checkuser ul.show {
display: grid;
}
section.profile-checkuser ul li {
width: 95%;
height: 40px;
display: grid;
align-items: center;
margin: 0px auto;
position: relative;
border-radius: 20px;
background: var(--cor-de-fundo-dos-items-do-container-do-perfil-do-usuario);
}
section.profile-checkuser ul li svg {
width: 50px;
height: 50px;
position: absolute;
left: -10px;
padding: 10px;
border-radius: 50%;
box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
color: #ffffff;
background: var(--cor-de-fundo-dos-icones-do-container-do-perfil-do-usuario);
}
section.profile-checkuser ul li svg.even {
box-shadow: -1px 1px 2px rgba(0, 0, 0, 0.2);
position: absolute;
left: initial;
right: -10px;
}
section.profile-checkuser ul li svg path {
transform: scale(0.6);
transform-origin: center;
}
section.profile-checkuser ul li span {
margin-left: 45px;
color: #ffffff;
font-size: 0.8rem;
}
section.profile-checkuser ul li span.even {
margin-left: auto;
margin-right: 45px;
}
section.profile-checkuser section.terms {
display: flex;
flex-direction: column;
width: 100%;
height: auto;
margin-top: 5%;
}
section.profile-checkuser section.terms p {
width: 95%;
height: auto;
max-height: 210px;
margin: 0 auto;
padding: 10px;
border-radius: 5px;
overflow-y: auto;
color: #ffffff;
text-align: center;
background: var(--cor-de-fundo-dos-termos-do-container-do-perfil-do-usuario);
}
@media (min-height: 700px) {
section.profile-checkuser section.terms p {
max-height: 350px;
}
}
section.tools {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: 100%;
right: 0;
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
transition: transform 0.5s ease-in-out;
}
section.tools.show {
transform: translateX(-100%);
}
section.tools header {
width: 100%;
height: auto;
display: flex;
justify-content: center;
}
section.tools header h1 {
width: 90%;
height: auto;
padding: 10px;
border-bottom: 3px solid var(--cor-da-borda-do-titulo-do-container-de-ferramentas);
text-shadow: 0px 4px 4px var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
color: var(--cor-do-texto-do-titulo-do-container-de-ferramentas);
font-weight: bold;
font-size: 1rem;
text-align: center;
}
section.tools section.container-tools {
width: 100%;
height: auto;
display: flex;
flex-direction: column;
gap: 20px;
margin: 40px 0px 0px 0px;
padding: 0px 10px;
}
section.tools section.container-tools button {
width: 100%;
height: 50px;
display: flex;
align-items: center;
gap: 9.5px;
padding: 0px 16px;
border: 1px solid var(--cor-da-borda-dos-botoes-do-container-de-ferramentas);
border-radius: 25px;
box-shadow: 0px 4px 4px var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
background: var(--cor-de-fundo-dos-botoes-do-container-de-ferramentas);
}
section.tools section.container-tools button svg {
width: 20px;
height: 20px;
color: var(--cor-dos-icones-dos-botoes-do-container-de-ferramentas);
}
section.tools section.container-tools button span {
color: var(--cor-dos-textos-dos-botoes-do-container-de-ferramentas);
}
section.modal-speedtest,
section.modal-error-alert {
width: 95%;
max-width: 450px;
height: 50%;
position: absolute;
top: 25%;
transform: translate(-50%, -50%);
z-index: 2;
display: flex;
flex-direction: column;
border-radius: 5px;
overflow-x: hidden;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
}
section.modal-speedtest.show,
section.modal-error-alert.show,
section.modal-logs.show {
opacity: 1;
transform: scale(1);
}
section.modal-speedtest header,
section.modal-error-alert header {
width: 100%;
height: 40px;
display: flex;
align-items: center;
padding: 0px 10px;
}
section.modal-speedtest header {
background-color: var(--cor-do-header-do-modal-do-speedtest);
}
section.modal-speedtest header h1,
section.modal-error-alert header h1 {
flex: 1;
display: flex;
justify-content: center;
align-items: center;
color: #ffffff;
font-family: 'Roboto', sans-serif;
font-weight: bolder;
}
section.modal-speedtest header svg,
section.modal-error-alert header svg {
margin-left: auto;
color: var(--cor-do-icone-do-header-do-modal-do-speedtest);
}
section.modal-speedtest section,
section.modal-error-alert section {
width: 100%;
height: calc(100% - 40px);
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
section.modal-speedtest section {
background: var(--cor-de-fundo-do-modal-do-speedtest);
}
section.modal-speedtest section iframe {
width: 100%;
height: 100%;
border: 0;
overflow: hidden;
}
section.modal-error-alert header {
background: var(--cor-do-header-do-modal-de-error);
}
section.modal-error-alert section {
background: var(--cor-de-fundo-do-modal-de-error);
}
section.modal-error-alert section h1 {
padding: 0px 10px;
color: #ffffff;
}
section.modal-error-alert section p {
margin-top: 10px;
padding: 0px 10px;
color: #ffffff;
text-align: center;
}
section.modal-logs {
width: 95%;
max-width: 450px;
height: auto;
position: absolute;
top: 15%;
transform: translate(-50%, -50%);
z-index: 2;
display: flex;
flex-direction: column;
border-radius: 5px;
overflow-x: hidden;
opacity: 0;
transform: scale(0);
transform-origin: center;
transition: all 0.3s ease 0.1s;
}
section.modal-logs header {
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0px 10px;
background: var(--cor-de-fundo-do-modal-de-logs);
}
section.modal-logs header h1 {
font-size: 14px;
color: #ffffff;
}
section.modal-logs p {
height: 100%;
/* min-height: 200px;
max-height: 400px; */
padding: 10px;
font-size: 12px;
text-align: left;
color: var(--cor-do-texto-do-registro-do-modal-de-logs);
overflow-y: auto;
background: var(--cor-de-fundo-do-modal-de-logs);
}
section.modal-logs section {
width: 100%;
height: auto;
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 10px;
border-top: 3px solid rgba(161, 161, 161, 1);
background: var(--cor-de-fundo-do-modal-de-logs);
}
section.modal-logs section button {
width: 45%;
min-width: 115px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgba(97, 97, 97, 1);
border-radius: 3px;
color: #ffffff;
background: rgba(46, 46, 46, 1);
}
section.renew-window {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
position: absolute;
top: 0;
left: -100%;
right: 100%;
background: var(--imagem-de-fundo);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
transition: transform 0.5s ease-in-out;
}
section.renew-window.show {
transform: translateX(100%);
}
section.renew-window header {
width: 100%;
height: auto;
display: flex;
justify-content: center;
}
section.renew-window header h1 {
width: 90%;
height: auto;
padding: 10px;
border-bottom: 3px solid var(--cor-da-borda-do-titulo-do-container-de-ferramentas);
text-shadow: 0px 4px 4px var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
color: var(--cor-do-texto-do-titulo-do-container-de-ferramentas);
font-weight: bold;
font-size: 1rem;
text-align: center;
}
section.renew-window section {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
section.renew-window section div {
width: 90%;
height: auto;
display: flex;
flex-direction: column;
align-items: center;
padding: 10px;
margin: 0px 0px 40px 0px;
border: 1px solid rgba(219, 142, 255, 1);
border-radius: 37px;
background: rgba(161, 42, 246, 0.5);
}
section.renew-window section div h1 {
color: #ffffff;
}
section.renew-window section div p {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
margin-top: 15%;
color: #ffffff;
text-align: center;
}
</style>
</head>
<body>
<main>
<section class="home">
<header>
<img
class="logo"
src="https://bafkreihrtmmarih3ke6ho2upycwb7wvsr26pqfc22h53cwizduh37heamy.ipfs.w3s.link"
alt="logo"
/>
</header>
<div class="carrierSelector">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-sd-card"
viewBox="0 0 16 16"
>
<path
d="M6.25 3.5a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2zm2 0a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2z"
/>
<path
fill-rule="evenodd"
d="M5.914 0H12.5A1.5 1.5 0 0 1 14 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 14.5V3.914c0-.398.158-.78.44-1.06L4.853.439A1.5 1.5 0 0 1 5.914 0zM13 1.5a.5.5 0 0 0-.5-.5H5.914a.5.5 0 0 0-.353.146L3.146 3.561A.5.5 0 0 0 3 3.914V14.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5v-13z"
/>
</svg>
<span>Selecione uma operadora</span>
</div>
<div class="container">
<form>
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-person"
viewBox="0 0 16 16"
>
<path
d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"
/>
</svg>
<input id="inputUser" type="text" placeholder="Usuário" />
</div>
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-key"
viewBox="0 0 16 16"
>
<path
d="M0 8a4 4 0 0 1 7.465-2H14a.5.5 0 0 1 .354.146l1.5 1.5a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0L13 9.207l-.646.647a.5.5 0 0 1-.708 0L11 9.207l-.646.647a.5.5 0 0 1-.708 0L9 9.207l-.646.647A.5.5 0 0 1 8 10h-.535A4 4 0 0 1 0 8zm4-3a3 3 0 1 0 2.712 4.285A.5.5 0 0 1 7.163 9h.63l.853-.854a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.646-.647a.5.5 0 0 1 .708 0l.646.647.793-.793-1-1h-6.63a.5.5 0 0 1-.451-.285A3 3 0 0 0 4 5z"
/>
<path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" />
</svg>
<input id="inputPassword" type="password" placeholder="Senha" />
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-eye-slash eye-hidden"
viewBox="0 0 16 16"
>
<path
d="M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7.028 7.028 0 0 0-2.79.588l.77.771A5.944 5.944 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.134 13.134 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755-.165.165-.337.328-.517.486l.708.709z"
/>
<path
d="M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829l.822.822zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829z"
/>
<path
d="M3.35 5.47c-.18.16-.353.322-.518.487A13.134 13.134 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7.029 7.029 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12-.708.708z"
/>
</svg>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-eye eye-show eye-none"
viewBox="0 0 16 16"
>
<path
d="M16 8s-3-5.5-8-5.5S0 8 0 8s3 5.5 8 5.5S16 8 16 8zM1.173 8a13.133 13.133 0 0 1 1.66-2.043C4.12 4.668 5.88 3.5 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13.133 13.133 0 0 1 14.828 8c-.058.087-.122.183-.195.288-.335.48-.83 1.12-1.465 1.755C11.879 11.332 10.119 12.5 8 12.5c-2.12 0-3.879-1.168-5.168-2.457A13.134 13.134 0 0 1 1.172 8z"
/>
<path
d="M8 5.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM4.5 8a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0z"
/>
</svg>
</div>
<div class="buttons">
<button id="startStopVpn" type="button">
<span id="startStopVpnButtonValue">Conectar</span>
</button>
<button id="buttonLogs" type="button">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-file-earmark-text"
viewBox="0 0 16 16"
>
<path
d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z"
/>
<path
d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z"
/>
</svg>
</button>
</div>
</form>
</div>
</section>
<section class="vpnStatus">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-plug"
viewBox="0 0 16 16"
>
<path
d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.083 2.083 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.922 1.922 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0zM5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4H5z"
/>
</svg>
<span>Desconectado</span>
</section>
<section class="local-ip">
<span>TIM: 192.168.0.1</span>
</section>
<section class="listOfCarriers">
<header class="header-list">
<svg
id="close-modal-configs"
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section class="list-container"></section>
</section>
<section class="loading">
<header>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<div class="loading-container"></div>
</section>
<section class="main-checkuser">
<header>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section class="container-content-checkuser">
<div class="connected-success">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-check2"
viewBox="0 0 16 16"
>
<path
d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"
/>
</svg>
</div>
<ul></ul>
</section>
</section>
<section class="profile-checkuser">
<header>
<h1>INFORMAÇÕES DO PERFIL</h1>
</header>
<div id="not-profile-user" class="not-view-user">
<div class="circle">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</div>
<h2>NÃO FOI POSSÍVEL CARREGAR AS INFORMAÇÕES DO PERFIL</h2>
<p>Tente conectar o seu usuário antes de verificar as informações do seu perfil</p>
</div>
<ul id="list-profile">
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-person"
viewBox="0 0 16 16"
>
<path
d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"
/>
</svg>
<span>NOME DE USUÁRIO: fulano</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-calendar3-week even"
viewBox="0 0 16 16"
>
<path
d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"
/>
<path
d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"
/>
</svg>
<span class="even">EXPIRAÇÃO: dd/mm/aaaa</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-hourglass-split"
viewBox="0 0 16 16"
>
<path
d="M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z"
/>
</svg>
<span>DIAS RESTANTES: 99</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-phone-flip even"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1Zm1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0v2ZM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11c.099 0 .197 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169 0 .003 0 .065-.13.187-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883-.228-.223-.535-.411-.882-.571ZM7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1Z"
/>
</svg>
<span class="even">CONECTADOS: 01/03</span>
</li>
</ul>
<section class="terms">
<header>
<h1>TERMOS DE USO</h1>
</header>
<p>
Ao comprar o acesso você aceita todos os nossos termos!
<br />
--------------------------------------------------------------
<br />
<br />
1- Todo e qualquer conteúdo acessado através do aplicativo é de responsabilidade do
usuário! caso o usuário aproveitar-se de nosso vpn para cometer qualquer ato ilegal,
será de total responsabilidade do usuário!
<br />
<br />
2- Em casos de falha na conexão entre em contato com ovendedor que lhe forneceu o acesso
ao aplicativo!
<br />
<br />
3- NÃO realizamos a prática de REEMBOLSO, então realize o teste grátis antes de comprar!
<br />
<br />
4- Caso ocorra queda no sinal da operadora os dias offline serão adicionados de bônus.
Peça esses dias ao seu vendedor! (Somente quedas geral, quedas de forma especifica, não
nos responsabilizamos!)
<br />
<br />
5- Caso houver alguma falhas de conexão por negligencia do usuário em não saber
configurar o aplicativo ou falha na rede móvel do usuário não disponibilizamos dias
bônus para estes casos. Porém disponibilizamos suporte especializado para ajudar a
solucionar esses problemas. Então em caso de falha de conexão entre em contato com seu
vendedor!
<br />
<br />
6- Método de pagamento é pré-pago, ou seja você paga para usar. Caso desejar cancelar
basta não renovar no próximo mês, que seu login será deletado automaticamente. Não temos
termo de fidelidade em nossos serviços!
<br />
<br />
7- Não temos vínculos algum com a operadora do seu chip. Vendemos apenas a conexão SSH,
que pode te liberar internet ilimitada através da conexão realizada no aplicativo!
<br />
<br />
8- Nosso produto é a conexão SSH, não vendemos internet, caso a operadora que você está
utilizando não estiver conectando, você pode utilizar outra opção de operadora para
realizar a conexão!
<br />
<br />
9- Ao utilizar nossa vpn você navegara de forma anônima na internet, dito isso você
concorda em não acessar qualquer conteúdo ilegal ou não permitidos em seu estado!
Atenciosamente Pogg corporation
<br />
--------------------------------------------------------------
</p>
</section>
</section>
<section class="tools">
<header>
<h1>FERRAMENTAS</h1>
</header>
<section class="container-tools">
<button id="config-apn">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-tools"
viewBox="0 0 16 16"
>
<path
d="M1 0 0 1l2.2 3.081a1 1 0 0 0 .815.419h.07a1 1 0 0 1 .708.293l2.675 2.675-2.617 2.654A3.003 3.003 0 0 0 0 13a3 3 0 1 0 5.878-.851l2.654-2.617.968.968-.305.914a1 1 0 0 0 .242 1.023l3.27 3.27a.997.997 0 0 0 1.414 0l1.586-1.586a.997.997 0 0 0 0-1.414l-3.27-3.27a1 1 0 0 0-1.023-.242L10.5 9.5l-.96-.96 2.68-2.643A3.005 3.005 0 0 0 16 3c0-.269-.035-.53-.102-.777l-2.14 2.141L12 4l-.364-1.757L13.777.102a3 3 0 0 0-3.675 3.68L7.462 6.46 4.793 3.793a1 1 0 0 1-.293-.707v-.071a1 1 0 0 0-.419-.814L1 0Zm9.646 10.646a.5.5 0 0 1 .708 0l2.914 2.915a.5.5 0 0 1-.707.707l-2.915-2.914a.5.5 0 0 1 0-.708ZM3 11l.471.242.529.026.287.445.445.287.026.529L5 13l-.242.471-.026.529-.445.287-.287.445-.529.026L3 15l-.471-.242L2 14.732l-.287-.445L1.268 14l-.026-.529L1 13l.242-.471.026-.529.445-.287.287-.445.529-.026L3 11Z"
/>
</svg>
<span>CONFIGURAR APN</span>
</button>
<button id="battery-optimization">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-battery-half"
viewBox="0 0 16 16"
>
<path d="M2 6h5v4H2V6z" />
<path
d="M2 4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2zm10 1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h10zm4 3a1.5 1.5 0 0 1-1.5 1.5v-3A1.5 1.5 0 0 1 16 8z"
/>
</svg>
<span> OTIMIZAÇÃO DE BATERIA </span>
</button>
<button id="speedtest">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-speedometer2"
viewBox="0 0 16 16"
>
<path
d="M8 4a.5.5 0 0 1 .5.5V6a.5.5 0 0 1-1 0V4.5A.5.5 0 0 1 8 4zM3.732 5.732a.5.5 0 0 1 .707 0l.915.914a.5.5 0 1 1-.708.708l-.914-.915a.5.5 0 0 1 0-.707zM2 10a.5.5 0 0 1 .5-.5h1.586a.5.5 0 0 1 0 1H2.5A.5.5 0 0 1 2 10zm9.5 0a.5.5 0 0 1 .5-.5h1.5a.5.5 0 0 1 0 1H12a.5.5 0 0 1-.5-.5zm.754-4.246a.389.389 0 0 0-.527-.02L7.547 9.31a.91.91 0 1 0 1.302 1.258l3.434-4.297a.389.389 0 0 0-.029-.518z"
/>
<path
fill-rule="evenodd"
d="M0 10a8 8 0 1 1 15.547 2.661c-.442 1.253-1.845 1.602-2.932 1.25C11.309 13.488 9.475 13 8 13c-1.474 0-3.31.488-4.615.911-1.087.352-2.49.003-2.932-1.25A7.988 7.988 0 0 1 0 10zm8-7a7 7 0 0 0-6.603 9.329c.203.575.923.876 1.68.63C4.397 12.533 6.358 12 8 12s3.604.532 4.923.96c.757.245 1.477-.056 1.68-.631A7 7 0 0 0 8 3z"
/>
</svg>
<span> SPEED TESTE </span>
</button>
<button id="clean-data-app">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-trash"
viewBox="0 0 16 16"
>
<path
d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z"
/>
<path
d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z"
/>
</svg>
<span>RESETAR/LIMPAR APP</span>
</button>
</section>
</section>
<section class="renew-window">
<header>
<h1>RENOVAR USUARIO</h1>
</header>
<section>
<div>
<h1>ATUALMENTE NÃO DISPONIVEL</h1>
<p>
ESTA FUNÇÃO SERVIRÁ PARA VOCÊ RENOVAR SEU LOGIN DE FORMA AUTOMATICA E TUDO DENTRO DO
APP!
</p>
</div>
</section>
</section>
<section class="modal-speedtest">
<header>
<h1>SPEED TESTE</h1>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section>
<iframe src=""></iframe>
</section>
</section>
<section class="modal-error-alert">
<header>
<h1>ERROR</h1>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-x-lg"
viewBox="0 0 16 16"
>
<path
d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z"
/>
</svg>
</header>
<section>
<h1>TITULO DO ERRO</h1>
<p></p>
</section>
</section>
<section class="modal-logs">
<header>
<h1>REGISTRO</h1>
</header>
<p></p>
<section>
<button id="clean-data-logs">LIMPAR</button>
<button id="hidden-modal-logs">FECHAR</button>
</section>
</section>
<section class="controls">
<button id="refresh-button" type="button" title="Atualizar as configurações do app">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-arrow-clockwise"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z"
/>
<path
d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z"
/>
</svg>
</button>
<button id="renew" type="button" title="Renovar pagamento">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-cash-coin"
viewBox="0 0 16 16"
>
<path
fill-rule="evenodd"
d="M11 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm5-4a5 5 0 1 1-10 0 5 5 0 0 1 10 0z"
/>
<path
d="M9.438 11.944c.047.596.518 1.06 1.363 1.116v.44h.375v-.443c.875-.061 1.386-.529 1.386-1.207 0-.618-.39-.936-1.09-1.1l-.296-.07v-1.2c.376.043.614.248.671.532h.658c-.047-.575-.54-1.024-1.329-1.073V8.5h-.375v.45c-.747.073-1.255.522-1.255 1.158 0 .562.378.92 1.007 1.066l.248.061v1.272c-.384-.058-.639-.27-.696-.563h-.668zm1.36-1.354c-.369-.085-.569-.26-.569-.522 0-.294.216-.514.572-.578v1.1h-.003zm.432.746c.449.104.655.272.655.569 0 .339-.257.571-.709.614v-1.195l.054.012z"
/>
<path
d="M1 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4.083c.058-.344.145-.678.258-1H3a2 2 0 0 0-2-2V3a2 2 0 0 0 2-2h10a2 2 0 0 0 2 2v3.528c.38.34.717.728 1 1.154V1a1 1 0 0 0-1-1H1z"
/>
<path d="M9.998 5.083 10 5a2 2 0 1 0-3.132 1.65 5.982 5.982 0 0 1 3.13-1.567z" />
</svg>
</button>
<button id="backToHome" type="button" title="Voltar para a página inicial">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-house"
viewBox="0 0 16 16"
>
<path
d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.707 1.5ZM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5 5 5Z"
/>
</svg>
</button>
<button id="utilitys" type="button" title="utilidades">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-gear"
viewBox="0 0 16 16"
>
<path
d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z"
/>
<path
d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z"
/>
</svg>
</button>
<button id="profile-button" type="button" title="Detalhes do usuário">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
fill="currentColor"
class="bi bi-person"
viewBox="0 0 16 16"
>
<path
d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z"
/>
</svg>
</button>
</section>
</main>
<!-- VARIAVEIS DE CONSULTA -->
<script>
let dataCheckuser
let zIndexContainers
</script>
<!-- FUNÇÕES DO APP -->
<script>
const dtStatusBarHeight = () => DtGetStatusBarHeight.execute()
const dtNavHeight = () => DtGetNavigationBarHeight.execute()
const dtGetLogs = () => DtGetLogs.execute()
const dtClearLogs = () => DtClearLogs.execute()
const dtVpnState = () => DtGetVpnState.execute()
const dtTranslateText = (label) => DtTranslateText.execute(label)
const dtStartVpn = () => DtExecuteVpnStart.execute()
const dtStopVpn = () => DtExecuteVpnStop.execute()
const dtUpdate = () => DtStartAppUpdate.execute()
const dtAllConfigs = () => DtGetConfigs.execute()
const dtSetConfig = (id) => DtSetConfig.execute(id)
const dtGetDefaultConfig = () => DtGetDefaultConfig.execute()
const dtGetUsername = () => DtUsername.get()
const dtSetUsername = (username) => DtUsername.set(username)
const dtGetPassword = () => DtPassword.get()
const dtSetPassword = (password) => DtPassword.set(password)
const dtApnConfig = () => DtStartApnActivity.execute()
const dtBatteryOptimization = () => DtIgnoreBatteryOptimizations.execute()
const dtCleanApp = () => DtCleanApp.execute()
const dtGetNetworkName = () => Android.getNetworkName()
const dtGetNetworkLocalIp = () => Android.getLocalIP()
</script>
<!-- FUNÇÕES PARA O APP -->
<script>
const dtVpnStateListener = (state) => {
const stateVpn = vpnState(state)
vpnStatus.html(stateVpn)
}
const dtOnNewLogListener = () => writeModalLogger()
const dtConfigClickListener = () => {
const user = dtGetUsername()
const pass = dtGetPassword()
const value = areaCarrierSelector()
CarrierTextValue.html(value)
inputUser.attr({ placeholder: inputUserPlaceholder(), value: inputUserValue() })
inputPassword.attr({ placeholder: inputPasswordPlaceholder(), value: inputPasswordValue() })
}
const dtCheckUserModelListener = (model) => {
dataCheckuser = model
writeMainCheckuser(dataCheckuser)
writeProfileCheckuser(dataCheckuser)
loadingContainer.toggleClass('show')
mainCheckuser.addClass('show')
}
const dtCheckUserStartedListener = () => {
loadingContainer.addClass('show')
}
const dtMessageErrorListener = (model) => writeModalError(model)
</script>
<!-- HELPERS -->
<script>
const createSvgIcon = (iconPath, Class = '') => {
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg')
svg.setAttribute('width', '16')
svg.setAttribute('height', '16')
svg.setAttribute('fill', 'currentColor')
svg.setAttribute('viewBox', '0 0 16 16')
svg.setAttribute('class', Class)
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path')
path.setAttribute('d', iconPath)
svg.appendChild(path)
return svg
}
const createListItem = (iconPath, Class = '', text) => {
const li = document.createElement('li')
const svg = createSvgIcon(iconPath, Class)
const span = document.createElement('span')
span.setAttribute('class', Class)
span.innerHTML = text
li.appendChild(svg)
li.appendChild(span)
return li
}
</script>
<!-- FUNÇÕES DO LAYOUT -->
<script>
const vpnState = (state) => {
const stateLabel = state || dtVpnState()
switch (stateLabel) {
case 'DISCONNECTED':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_START'))
return disconnected()
case 'CONNECTING':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_STOP'))
return connecting()
case 'CONNECTED':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_STOP'))
return connected()
case 'STOPPING':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_STOPPING'))
return stopping()
case 'NO_NETWORK':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_STOP'))
return noNetwork()
case 'AUTH':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_STOP'))
return auth()
case 'AUTH_FAILED':
writeStartStopVpnButton(dtTranslateText('LBL_BTN_STOP'))
return authFailed()
default:
return 'Não foi possível obter o status da conexão'
}
}
const writeNetworkStatus = () => {
let span = '<span>Localizando rede...</span>'
setInterval(() => {
if (dtGetNetworkName() && dtGetNetworkLocalIp()) {
const carrierName = `${dtGetNetworkName()}`
const localIP = `${dtGetNetworkLocalIp()}`
span = `<span>${carrierName}: ${localIP}</span>`
networkStatus.html(span)
} else {
span = `<span>Não foi possível carregar informações da rede</span>`
}
}, 500)
return span
}
const allConfigs = () => {
const ListContainer = document.querySelector('section.list-container')
ListContainer.innerHTML = ''
const configs = JSON.parse(dtAllConfigs())
configs.sort((a, b) => a.sorter - b.sorter)
configs.forEach((item) => item.items.sort((a, b) => a.sorter - b.sorter))
configs.forEach((category) => {
const defaultColor = category.color
const categoryColor = `#${defaultColor.substr(3)}${defaultColor.substr(1, 2)}`
document.documentElement.style.setProperty(
'--cor-de-fundo-do-header-da-categoria',
categoryColor
)
document.documentElement.style.setProperty(
'--cor-de-fundo-do-item-da-configuracao',
categoryColor
)
const div = document.createElement('div')
const header = document.createElement('header')
const h1 = document.createElement('h1')
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path')
const ul = document.createElement('ul')
div.classList.add('category')
ul.classList.add('configs')
h1.textContent = category.name
svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg')
svg.setAttribute('width', '16')
svg.setAttribute('height', '16')
svg.setAttribute('fill', 'currentColor')
svg.setAttribute('class', 'bi bi-caret-right')
svg.setAttribute('viewBox', '0 0 16 16')
path.setAttribute(
'd',
'M6 12.796V3.204L11.481 8 6 12.796zm.659.753 5.48-4.796a1 1 0 0 0 0-1.506L6.66 2.451C6.011 1.885 5 2.345 5 3.204v9.592a1 1 0 0 0 1.659.753'
)
svg.appendChild(path)
header.appendChild(h1)
header.appendChild(svg)
div.appendChild(header)
category.items.forEach((item) => {
const li = document.createElement('li')
const img = document.createElement('img')
const h1Item = document.createElement('h1')
const pItem = document.createElement('p')
const pMode = document.createElement('p')
const divLogo = document.createElement('div')
const divDescription = document.createElement('div')
const divMode = document.createElement('div')
divLogo.classList.add('logo')
divDescription.classList.add('description')
divMode.classList.add('mode')
h1Item.textContent = item.name
pItem.textContent = item.description
pMode.textContent = item.mode
img.setAttribute('src', item.icon)
divLogo.appendChild(img)
divDescription.appendChild(h1Item)
divDescription.appendChild(pItem)
divMode.appendChild(pMode)
li.appendChild(divLogo)
li.appendChild(divDescription)
li.appendChild(divMode)
ul.appendChild(li)
div.appendChild(ul)
li.addEventListener('click', () => {
dtSetConfig(item.id)
listOfCarriers.toggleClass('active')
})
})
header.addEventListener('click', () => {
if (ul.offsetHeight <= 0) {
ul.style.maxHeight = `${ul.scrollHeight}px`
svg.style.transform = 'rotate(90deg)'
} else {
ul.style.maxHeight = '0px'
svg.style.transform = 'rotate(0deg)'
}
})
ListContainer.appendChild(div)
})
}
const showPassword = () => {
const inputPassword = document.querySelector('#inputPassword')
if (inputPassword.type === 'password') {
inputPassword.type = 'text'
eyeHidden.toggleClass('.eye-none').style({ display: 'none' })
eyeShow.style({ display: 'block' })
} else {
inputPassword.type = 'password'
eyeShow.toggleClass('.eye-none').style({ display: 'none' })
eyeHidden.toggleClass('.eye-none').style({ display: 'block' })
}
}
const startStopVpn = () => {
const state = dtVpnState()
state === 'CONNECTED' ? dtStopVpn() : dtStartVpn()
}
const writeStartStopVpnButton = (status) => {
buttonStartStopVpnValue.html(status)
}
const writeMainCheckuser = (model) => {
const data = JSON.parse(model)
const ul = document.querySelector(
'section.main-checkuser section.container-content-checkuser ul'
)
const username = createListItem(
'M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z',
'',
`NOME DE USUÁRIO: ${data.username}`
)
const expiration = createListItem(
'M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"/><path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',
'',
`EXPIRAÇÃO: ${data.expiration_date}`
)
const remainingDays = createListItem(
'M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z',
'',
`DIAS RESTANTES: ${data.expiration_days}`
)
const connecteds = createListItem(
'M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1Zm1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0v2ZM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11c.099 0 .197 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169 0 .003 0 .065-.13.187-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883-.228-.223-.535-.411-.882-.571ZM7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1Z',
'',
`CONECTADOS: ${data.count_connections}/${data.limit_connections}`
)
ul.innerHTML =
username.outerHTML + expiration.outerHTML + remainingDays.outerHTML + connecteds.outerHTML
}
const showProfile = (model) => {
hiddenAll()
const data = model
const main = document.querySelector('section.profile-checkuser')
const zIndexMain = window.getComputedStyle(main).getPropertyValue('z-index')
if (data !== undefined) {
notViewUser.removeClass('show')
viewUser.addClass('show')
mainProfile.addClass('show')
} else {
viewUser.removeClass('show')
notViewUser.addClass('show')
mainProfile.addClass('show')
}
}
const hiddenProfile = () => {
mainProfile.removeClass('show')
mainProfile.style({ 'z-index': 0 })
}
const writeProfileCheckuser = (model) => {
const data = JSON.parse(model)
const username = createListItem(
'M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z',
'',
`NOME DE USUÁRIO: ${data.username}`
)
const expiration = createListItem(
'M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z"/><path d="M12 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm2-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',
'even',
`EXPIRAÇÃO: ${data.expiration_date}`
)
const remainingDays = createListItem(
'M2.5 15a.5.5 0 1 1 0-1h1v-1a4.5 4.5 0 0 1 2.557-4.06c.29-.139.443-.377.443-.59v-.7c0-.213-.154-.451-.443-.59A4.5 4.5 0 0 1 3.5 3V2h-1a.5.5 0 0 1 0-1h11a.5.5 0 0 1 0 1h-1v1a4.5 4.5 0 0 1-2.557 4.06c-.29.139-.443.377-.443.59v.7c0 .213.154.451.443.59A4.5 4.5 0 0 1 12.5 13v1h1a.5.5 0 0 1 0 1h-11zm2-13v1c0 .537.12 1.045.337 1.5h6.326c.216-.455.337-.963.337-1.5V2h-7zm3 6.35c0 .701-.478 1.236-1.011 1.492A3.5 3.5 0 0 0 4.5 13s.866-1.299 3-1.48V8.35zm1 0v3.17c2.134.181 3 1.48 3 1.48a3.5 3.5 0 0 0-1.989-3.158C8.978 9.586 8.5 9.052 8.5 8.351z',
'',
`DIAS RESTANTES: ${data.expiration_days}`
)
const connecteds = createListItem(
'M11 1H5a1 1 0 0 0-1 1v6a.5.5 0 0 1-1 0V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a.5.5 0 0 1-1 0V2a1 1 0 0 0-1-1Zm1 13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a.5.5 0 0 0-1 0v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-2a.5.5 0 0 0-1 0v2ZM1.713 7.954a.5.5 0 1 0-.419-.908c-.347.16-.654.348-.882.57C.184 7.842 0 8.139 0 8.5c0 .546.408.94.823 1.201.44.278 1.043.51 1.745.696C3.978 10.773 5.898 11 8 11c.099 0 .197 0 .294-.002l-1.148 1.148a.5.5 0 0 0 .708.708l2-2a.5.5 0 0 0 0-.708l-2-2a.5.5 0 1 0-.708.708l1.145 1.144L8 10c-2.04 0-3.87-.221-5.174-.569-.656-.175-1.151-.374-1.47-.575C1.012 8.639 1 8.506 1 8.5c0-.003 0-.059.112-.17.115-.112.31-.242.6-.376Zm12.993-.908a.5.5 0 0 0-.419.908c.292.134.486.264.6.377.113.11.113.166.113.169 0 .003 0 .065-.13.187-.132.122-.352.26-.677.4-.645.28-1.596.523-2.763.687a.5.5 0 0 0 .14.99c1.212-.17 2.26-.43 3.02-.758.38-.164.713-.357.96-.587.246-.229.45-.537.45-.919 0-.362-.184-.66-.412-.883-.228-.223-.535-.411-.882-.571ZM7.5 2a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1Z',
'even',
`CONECTADOS: ${data.count_connections}/${data.limit_connections}`
)
viewUser.html(
username.outerHTML + expiration.outerHTML + remainingDays.outerHTML + connecteds.outerHTML
)
}
const hiddenLoadContainer = () => {
loadingContainer.removeClass('show')
}
const showMainTools = () => {
hiddenAll()
MainTools.style({ 'z-index': 1 })
MainTools.addClass('show')
}
const hiddenMainTools = () => {
MainTools.style({ 'z-index': 0 })
MainTools.removeClass('show')
}
const showModalSpeedtest = () => {
ModalSpeedtest.addClass('show')
IframeModalSpeedtest.attr({ src: 'https://fiber.google.com/speedtest/' })
}
const hiddenModalSpeedtest = () => {
ModalSpeedtest.removeClass('show')
IframeModalSpeedtest.attr({ src: '' })
}
const writeModalError = (model) => {
const data = JSON.parse(model)
const h1 = `<h1>${data.title}</h1>`
const p = `<p>${data.content}</p>`
ContentModalError.html(h1 + p)
hiddenAll()
showModalError()
}
const showModalError = () => {
ModalError.addClass('show')
}
const hiddenModalError = () => {
ModalError.removeClass('show')
}
const writeModalLogger = () => {
const data = JSON.parse(dtGetLogs())
const p = document.querySelector('section.modal-logs p')
let content = ''
data.forEach((item) => {
content += `${Object.keys(item)} ${item[Object.keys(item)]} <br>`
})
ModalLoggerContent.html(content)
p.scrollTop = p.scrollHeight
return content
}
const showModalLogger = () => {
ModalLogger.addClass('show')
}
const hiddenModalRegister = () => {
ModalLogger.removeClass('show')
}
const showRenew = () => {
hiddenAll()
MainRenew.addClass('show')
}
const hiddenRenew = () => {
MainRenew.removeClass('show')
}
const hiddenAll = () => {
hiddenProfile()
hiddenMainTools()
hiddenModalSpeedtest()
hiddenModalError()
hiddenModalRegister()
hiddenRenew()
}
</script>
<!-- ESTADOS DE CONEXÃO -->
<script>
const disconnected = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-outlet" viewBox="0 0 16 16"><path d="M3.34 2.994c.275-.338.68-.494 1.074-.494h7.172c.393 0 .798.156 1.074.494.578.708 1.84 2.534 1.84 5.006 0 2.472-1.262 4.297-1.84 5.006-.276.338-.68.494-1.074.494H4.414c-.394 0-.799-.156-1.074-.494C2.762 12.297 1.5 10.472 1.5 8c0-2.472 1.262-4.297 1.84-5.006zm1.074.506a.376.376 0 0 0-.299.126C3.599 4.259 2.5 5.863 2.5 8c0 2.137 1.099 3.74 1.615 4.374.06.073.163.126.3.126h7.17c.137 0 .24-.053.3-.126.516-.633 1.615-2.237 1.615-4.374 0-2.137-1.099-3.74-1.615-4.374a.376.376 0 0 0-.3-.126h-7.17z"/><path d="M6 5.5a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zm4 0a.5.5 0 0 1 .5.5v1.5a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5zM7 10v1h2v-1a1 1 0 0 0-2 0z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_DISCONNECTED')}</span>`
return icon + text
}
const connecting = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plug" viewBox="0 0 16 16"><path d="M6 0a.5.5 0 0 1 .5.5V3h3V.5a.5.5 0 0 1 1 0V3h1a.5.5 0 0 1 .5.5v3A3.5 3.5 0 0 1 8.5 10c-.002.434-.01.845-.04 1.22-.041.514-.126 1.003-.317 1.424a2.083 2.083 0 0 1-.97 1.028C6.725 13.9 6.169 14 5.5 14c-.998 0-1.61.33-1.974.718A1.922 1.922 0 0 0 3 16H2c0-.616.232-1.367.797-1.968C3.374 13.42 4.261 13 5.5 13c.581 0 .962-.088 1.218-.219.241-.123.4-.3.514-.55.121-.266.193-.621.23-1.09.027-.34.035-.718.037-1.141A3.5 3.5 0 0 1 4 6.5v-3a.5.5 0 0 1 .5-.5h1V.5A.5.5 0 0 1 6 0zM5 4v2.5A2.5 2.5 0 0 0 7.5 9h1A2.5 2.5 0 0 0 11 6.5V4H5z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_CONNECTING')}</span>`
return icon + text
}
const connected = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plugin" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1 8a7 7 0 1 1 2.898 5.673c-.167-.121-.216-.406-.002-.62l1.8-1.8a3.5 3.5 0 0 0 4.572-.328l1.414-1.415a.5.5 0 0 0 0-.707l-.707-.707 1.559-1.563a.5.5 0 1 0-.708-.706l-1.559 1.562-1.414-1.414 1.56-1.562a.5.5 0 1 0-.707-.706l-1.56 1.56-.707-.706a.5.5 0 0 0-.707 0L5.318 5.975a3.5 3.5 0 0 0-.328 4.571l-1.8 1.8c-.58.58-.62 1.6.121 2.137A8 8 0 1 0 0 8a.5.5 0 0 0 1 0Z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_CONNECTED')}</span>`
return icon + text
}
const stopping = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-stop" viewBox="0 0 16 16"><path d="M3.5 5A1.5 1.5 0 0 1 5 3.5h6A1.5 1.5 0 0 1 12.5 5v6a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 11V5zM5 4.5a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V5a.5.5 0 0 0-.5-.5H5z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_STOPPING')}</span>`
return icon + text
}
const noNetwork = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-wifi-off" viewBox="0 0 16 16"><path d="M10.706 3.294A12.545 12.545 0 0 0 8 3C5.259 3 2.723 3.882.663 5.379a.485.485 0 0 0-.048.736.518.518 0 0 0 .668.05A11.448 11.448 0 0 1 8 4c.63 0 1.249.05 1.852.148l.854-.854zM8 6c-1.905 0-3.68.56-5.166 1.526a.48.48 0 0 0-.063.745.525.525 0 0 0 .652.065 8.448 8.448 0 0 1 3.51-1.27L8 6zm2.596 1.404.785-.785c.63.24 1.227.545 1.785.907a.482.482 0 0 1 .063.745.525.525 0 0 1-.652.065 8.462 8.462 0 0 0-1.98-.932zM8 10l.933-.933a6.455 6.455 0 0 1 2.013.637c.285.145.326.524.1.75l-.015.015a.532.532 0 0 1-.611.09A5.478 5.478 0 0 0 8 10zm4.905-4.905.747-.747c.59.3 1.153.645 1.685 1.03a.485.485 0 0 1 .047.737.518.518 0 0 1-.668.05 11.493 11.493 0 0 0-1.811-1.07zM9.02 11.78c.238.14.236.464.04.66l-.707.706a.5.5 0 0 1-.707 0l-.707-.707c-.195-.195-.197-.518.04-.66A1.99 1.99 0 0 1 8 11.5c.374 0 .723.102 1.021.28zm4.355-9.905a.53.53 0 0 1 .75.75l-10.75 10.75a.53.53 0 0 1-.75-.75l10.75-10.75z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_NO_NETWORK')}</span>`
return icon + text
}
const auth = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-lock" viewBox="0 0 16 16"><path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm0 5.996V14H3s-1 0-1-1 1-4 6-4c.564 0 1.077.038 1.544.107a4.524 4.524 0 0 0-.803.918A10.46 10.46 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h5ZM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1v-2Zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1Z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_AUTH')}</span>`
return icon + text
}
const authFailed = () => {
const icon = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-person-slash" viewBox="0 0 16 16"><path d="M13.879 10.414a2.501 2.501 0 0 0-3.465 3.465l3.465-3.465Zm.707.707-3.465 3.465a2.501 2.501 0 0 0 3.465-3.465Zm-4.56-1.096a3.5 3.5 0 1 1 4.949 4.95 3.5 3.5 0 0 1-4.95-4.95ZM11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm.256 7a4.474 4.474 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10c.26 0 .507.009.74.025.226-.341.496-.65.804-.918C9.077 9.038 8.564 9 8 9c-5 0-6 3-6 4s1 1 1 1h5.256Z"/></svg>`
const text = `<span>${dtTranslateText('LBL_STATE_AUTH_FAILED')}</span>`
return icon + text
}
</script>
<!-- VALOR DE EXIBIÇÃO DO CAMPO DE SELECIONAR OPERADORA -->
<script>
const areaCarrierSelector = () => {
const data = dtGetDefaultConfig()
if (data !== undefined) {
return JSON.parse(data).name
} else {
return dtTranslateText('LBL_CHOOSE_CONFIG')
}
}
</script>
<!-- VALOR DE EXIBIÇÃO DO INPUT USUÁRIO DO USUÁRIO -->
<script>
const inputUserPlaceholder = () => dtTranslateText('LBL_USERNAME')
const inputUserValue = () => {
if (dtGetUsername()) {
return dtGetUsername()
} else {
return ''
}
}
</script>
<!-- VALOR DE EXIBIÇÃO DO INPUT DA SENHA DO USUÁRIO -->
<script>
const inputPasswordPlaceholder = () => dtTranslateText('LBL_PASSWORD')
const inputPasswordValue = () => {
if (dtGetPassword()) {
return dtGetPassword()
} else {
return ''
}
}
</script>
<!-- DOM WRAPPER -->
<script>
const Dom = (selector) => {
const _elements = document.querySelectorAll(selector)
const wrapper = {
on(listeners) {
for (const [event, listener] of Object.entries(listeners)) {
_elements.forEach((element) => {
element.addEventListener(event, listener)
})
}
return wrapper
},
addClass: (...tokens) => {
_elements.forEach((element) => {
element.classList.add(...tokens)
})
return wrapper
},
removeClass: (...tokens) => {
_elements.forEach((element) => {
element.classList.remove(...tokens)
})
return wrapper
},
toggleClass: (token, force) => {
_elements.forEach((element) => {
element.classList.toggle(token, force)
})
return wrapper
},
style(styles) {
for (const [property, value] of Object.entries(styles)) {
console.log(value)
_elements.forEach((element) => {
element.style[property] = value
})
}
return wrapper
},
attr(attrs) {
for (const [name, value] of Object.entries(attrs)) {
_elements.forEach((element) => element.setAttribute(name, value))
}
return wrapper
},
html(value) {
_elements.forEach((element) => (element.innerHTML = value))
return wrapper
},
}
return wrapper
}
</script>
<!-- VÁRIAVIES -->
<script>
const main = Dom('main')
const vpnStatus = Dom('section.vpnStatus')
const networkStatus = Dom('section.local-ip')
const carrierSelector = Dom('div.carrierSelector')
const listOfCarriers = Dom('section.listOfCarriers')
const closeModalCarriers = Dom('#close-modal-configs')
const CarrierCategoryContainer = Dom('section.list-container')
const CarrierTextValue = Dom('div.carrierSelector span')
const buttonControl = Dom('section.controls')
const refreshButton = Dom('#refresh-button')
const renewButton = Dom('#renew')
const backToHome = Dom('#backToHome')
const ToolsButton = Dom('#utilitys')
const profileButton = Dom('#profile-button')
const inputUser = Dom('#inputUser')
const inputPassword = Dom('#inputPassword')
const buttonStartStopVpn = Dom('#startStopVpn')
const buttonLogs = Dom('#buttonLogs')
const buttonStartStopVpnValue = Dom('#startStopVpnButtonValue')
const mainCheckuser = Dom('section.main-checkuser')
const mainCheckuserClose = Dom('section.main-checkuser header svg')
const mainCheckuserContent = Dom('section.main-checkuser section.container-content-checkuser')
const loadingContainer = Dom('section.loading')
const loadingContainerClose = Dom('section.loading header svg')
const mainProfile = Dom('section.profile-checkuser')
const notViewUser = Dom('#not-profile-user')
const viewUser = Dom('#list-profile')
const MainTools = Dom('section.tools')
const ConfigApnButton = Dom('#config-apn')
const BatteryOptimizeButton = Dom('#battery-optimization')
const SpeedtestButton = Dom('#speedtest')
const ClearDataAppButton = Dom('#clean-data-app')
const MainRenew = Dom('section.renew-window')
const ModalSpeedtest = Dom('section.modal-speedtest')
const CloseModalSpeedtest = Dom('section.modal-speedtest header svg')
const IframeModalSpeedtest = Dom('section.modal-speedtest section iframe')
const ModalError = Dom('section.modal-error-alert')
const CloseModalError = Dom('section.modal-error-alert header svg')
const ContentModalError = Dom('section.modal-error-alert section')
const ModalLogger = Dom('section.modal-logs')
const CloseModalLogger = Dom('#hidden-modal-logs')
const ModalLoggerContent = Dom('section.modal-logs p')
const CleanLoggerContent = Dom('#clean-data-logs')
const eyeHidden = Dom('svg.eye-hidden')
const eyeShow = Dom('svg.eye-show')
</script>
<!-- AÇÕES -->
<script>
main.style({ padding: `${dtStatusBarHeight() + 100}px 0px 0px 0px` })
mainProfile.style({
padding: `${dtStatusBarHeight() + 10}px 0px ${dtNavHeight() + 90}px 0px`,
})
MainTools.style({ padding: `${dtStatusBarHeight() + 10}px 0px ${dtNavHeight() + 90}px 0px` })
MainRenew.style({ padding: `${dtStatusBarHeight() + 10}px 0px ${dtNavHeight() + 90}px 0px` })
ModalLogger.style({
top: `${dtStatusBarHeight() + 95}px`,
bottom: `${dtNavHeight() + 95}px`,
})
vpnStatus.html(vpnState())
networkStatus.html(writeNetworkStatus())
carrierSelector.on({
click: () => {
allConfigs()
listOfCarriers.toggleClass('active')
},
})
closeModalCarriers.on({ click: () => listOfCarriers.toggleClass('active') })
CarrierTextValue.html(areaCarrierSelector())
inputUser.on({ input: (e) => dtSetUsername(e.target.value) })
inputPassword.on({ input: (e) => dtSetPassword(e.target.value) })
eyeHidden.on({ click: () => showPassword() })
eyeShow.on({ click: () => showPassword() })
inputUser.attr({ placeholder: inputUserPlaceholder(), value: inputUserValue() })
inputPassword.attr({ placeholder: inputPasswordPlaceholder(), value: inputPasswordValue() })
buttonControl.style({ bottom: `${dtNavHeight() + 10}px` })
refreshButton.on({ click: () => dtUpdate() })
renewButton.on({ click: () => showRenew() })
backToHome.on({
click: () => {
hiddenAll()
},
})
ToolsButton.on({ click: () => showMainTools() })
profileButton.on({ click: () => showProfile(dataCheckuser) })
buttonStartStopVpn.on({ click: () => startStopVpn() })
buttonLogs.on({ click: () => showModalLogger() })
loadingContainerClose.on({ click: () => hiddenLoadContainer() })
mainCheckuserClose.on({ click: () => mainCheckuser.toggleClass('show') })
ConfigApnButton.on({ click: () => dtApnConfig() })
BatteryOptimizeButton.on({ click: () => dtBatteryOptimization() })
SpeedtestButton.on({ click: () => showModalSpeedtest() })
CloseModalSpeedtest.on({ click: () => hiddenModalSpeedtest() })
ClearDataAppButton.on({ click: () => dtCleanApp() })
CloseModalError.on({ click: () => hiddenModalError() })
ModalLoggerContent.html(writeModalLogger())
CleanLoggerContent.on({ click: () => dtClearLogs() })
CloseModalLogger.on({ click: () => hiddenModalRegister() })
</script>
</body>
</html>