Tema Dtunnel Mod 3


SUBMITTED BY: iTechNet4G

DATE: July 17, 2023, 7:50 p.m.

UPDATED: Nov. 27, 2023, 1:56 a.m.

FORMAT: Text only

SIZE: 112.7 kB

HITS: 485

  1. <!DOCTYPE html>
  2. <html lang="pt-br">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>5777879193 - @PoggVpn</title>
  8. <style>
  9. :root {
  10. font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
  11. line-height: 1.5;
  12. font-weight: 400;
  13. font-synthesis: none;
  14. text-rendering: optimizeLegibility;
  15. -webkit-font-smoothing: antialiased;
  16. -moz-osx-font-smoothing: grayscale;
  17. text-size-adjust: 100%;
  18. -webkit-text-size-adjust: 100%;
  19. /*-------->MENU<--------*/
  20. /*IMAGEM DE FUNDO PRINCIPAL*/
  21. --imagem-de-fundo: url("https://i.ibb.co/gTFm7PJ/images-8.jpg");
  22. /*CONTAINER DE STATUS VPN*/
  23. --cor-de-fundo-do-container-de-status-da-vpn: rgba(161, 42, 246, 0.1);
  24. --cor-do-icone-do-container-de-status-da-vpn: rgba(255, 255, 255, 1);
  25. --cor-do-texto-do-container-de-status-da-vpn: rgba(255, 255, 255, 1);
  26. /*CONTAINER DE SELECIONAR OPERADORA*/
  27. --cor-de-fundo-do-campo-de-selecionar-operadora: rgba(
  28. 161,
  29. 42,
  30. 246,
  31. 0.5
  32. );
  33. --borda-do-container-de-selecionar-operadora: rgba(68, 60, 119, 1);
  34. --cor-do-icone-de-chip-do-campo-de-selecionar-operadora: rgba(
  35. 255,
  36. 255,
  37. 255,
  38. 1
  39. );
  40. --cor-do-texto-do-campo-de-selecionar-operadora: rgba(255, 255, 255, 1);
  41. /*CONTAINER PRINCIPAL*/
  42. --cor-de-fundo-do-container-principal: rgba(161, 42, 246, 0.5);
  43. --borda-do-container-principal: rgba(68, 60, 119, 1);
  44. --borda-do-header-do-container-principal: rgba(68, 60, 119, 1);
  45. --cor-de-fundo-dos-input-do-container-principal: rgba(
  46. 187,
  47. 127,
  48. 243,
  49. 0.2
  50. );
  51. --cor-da-borda-dos-input-do-container-principal: rgba(68, 60, 119, 1);
  52. --cor-dos-icones-dos-input-do-container-principal: rgba(
  53. 255,
  54. 255,
  55. 255,
  56. 1
  57. );
  58. --cor-do-texto-dos-input-do-container-principal: rgba(255, 255, 255, 1);
  59. --cor-do-texto-dos-input-do-container-principal-quando-nao-ta-selecionado: rgba(
  60. 255,
  61. 255,
  62. 255,
  63. 1
  64. );
  65. --cor-de-fundo-do-botao-do-container-principal: rgba(
  66. 187,
  67. 127,
  68. 243,
  69. 0.2
  70. );
  71. --cor-da-borda-do-botao-do-container-principal: rgba(68, 60, 119, 1);
  72. --cor-do-icone-do-botao-do-container-principal: rgba(255, 255, 255, 1);
  73. --cor-do-texto-do-botao-do-container-principal: rgba(255, 255, 255, 1);
  74. /*CONTAINER DOS CONTROLES*/
  75. --cor-de-fundo-do-container-de-controles: rgba(161, 42, 246, 0.5);
  76. --cor-da-borda-do-container-de-controles: rgba(68, 60, 119, 1);
  77. --cor-de-fundo-do-botao-do-container-de-controles: rgba(104, 3, 202, 1);
  78. --cor-da-borda-do-botao-do-container-de-controles: rgba(68, 60, 119, 1);
  79. --cor-do-icone-do-botao-do-container-de-controles: rgba(
  80. 255,
  81. 255,
  82. 255,
  83. 1
  84. );
  85. --cor-de-fundo-do-botao-do-meio-do-container-de-controles: rgba(
  86. 68,
  87. 60,
  88. 119,
  89. 1
  90. );
  91. --cor-da-borda-do-botao-do-meio-do-container-de-controles: rgba(
  92. 161,
  93. 42,
  94. 246,
  95. 0.5
  96. );
  97. /* CONTAINER DAS CONFIGURAÇÕES */
  98. --cor-de-fundo-do-container-da-lista-de-configuracoes: rgba(
  99. 161,
  100. 42,
  101. 246,
  102. 0.4
  103. );
  104. --cor-da-borda-do-container-da-lista-de-configuracoes: rgba(
  105. 68,
  106. 60,
  107. 119,
  108. 0.5
  109. );
  110. --cor-de-fundo-do-header-do-container-da-lista-de-configuracoes: rgba(
  111. 187,
  112. 127,
  113. 243,
  114. 1
  115. );
  116. --cor-do-icone-de-fechar-do-header-do-container-da-lista-de-configuracoes: rgba(
  117. 255,
  118. 255,
  119. 255,
  120. 1
  121. );
  122. --cor-de-fundo-do-container-da-lista-de-categorias-de-configuracoes: transparent;
  123. --cor-de-fundo-da-categoria: transparent;
  124. --cor-de-fundo-do-header-da-categoria: rgba(187, 127, 243, 1);
  125. --cor-da-borda-do-header-da-categoria: rgba(127, 71, 203, 1);
  126. --cor-do-text-do-header-da-categoria: rgba(255, 255, 255, 1);
  127. --cor-do-icone-do-header-da-categoria: rgba(255, 255, 255, 1);
  128. --cor-de-fundo-da-lista-de-configuracoes: transparent;
  129. --cor-de-fundo-do-item-da-configuracao: rgba(187, 127, 243, 1);
  130. --cor-do-texto-do-titulo-do-item-da-configuracao: rgba(
  131. 255,
  132. 255,
  133. 255,
  134. 1
  135. );
  136. --cor-do-texto-da-descricao-do-item-da-configuracao: rgba(
  137. 255,
  138. 255,
  139. 255,
  140. 1
  141. );
  142. --cor-do-modo-da-conexao-do-item-da-configuracao: rgba(
  143. 255,
  144. 255,
  145. 255,
  146. 1
  147. );
  148. /* CHECKUSER PRINCIPAL */
  149. --cor-de-fundo-do-container-do-checkuser-principal: rgba(
  150. 161,
  151. 42,
  152. 246,
  153. 0.8
  154. );
  155. --cor-de-fundo-do-header-do-container-do-checkuser-principal: rgba(
  156. 187,
  157. 127,
  158. 243,
  159. 1
  160. );
  161. --cor-do-icone-do-header-do-container-do-checkuser-principal: rgba(
  162. 255,
  163. 255,
  164. 255,
  165. 1
  166. );
  167. --cor-da-borda-do-icone-de-sucesso: rgba(255, 255, 255, 1);
  168. --cor-do-icone-de-sucesso: rgba(255, 255, 255, 1);
  169. --cor-de-fundo-da-lista-de-dados-de-login: transparent;
  170. --cor-de-fundo-dos-dados-de-login: rgba(187, 127, 243, 1);
  171. --cor-dos-icones-dos-dados-de-login: rgba(255, 255, 255, 1);
  172. --cor-dos-textos-dos-dados-de-login: rgba(255, 255, 255, 1);
  173. /* CONTAINER DE CARREGAMENTO */
  174. --cor-de-fundo-do-container-de-carregamento: rgba(161, 42, 246, 0.8);
  175. --cor-de-fundo-do-header-do-container-de-carregamento: rgba(
  176. 187,
  177. 127,
  178. 243,
  179. 1
  180. );
  181. --cor-do-icone-do-header-do-container-de-carregamento: rgba(
  182. 255,
  183. 255,
  184. 255,
  185. 1
  186. );
  187. /* CONTAINER DE PERFIL DO USUÁRIO */
  188. --cor-de-fundo-do-container-do-perfil-do-usuario: rgba(
  189. 161,
  190. 42,
  191. 246,
  192. 0.8
  193. );
  194. --cor-de-fundo-do-header-do-container-do-perfil-do-usuario: transparent;
  195. --cor-da-borda-do-header-do-container-do-perfil-do-usuario: rgba(
  196. 187,
  197. 127,
  198. 243,
  199. 1
  200. );
  201. --cor-de-fundo-da-lista-do-container-do-perfil-do-usuario: transparent;
  202. --cor-de-fundo-dos-items-do-container-do-perfil-do-usuario: rgba(
  203. 187,
  204. 127,
  205. 243,
  206. 1
  207. );
  208. --cor-de-fundo-dos-icones-do-container-do-perfil-do-usuario: rgba(
  209. 187,
  210. 127,
  211. 243,
  212. 1
  213. );
  214. --cor-da-borda-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
  215. 255,
  216. 255,
  217. 255,
  218. 1
  219. );
  220. --cor-do-icone-de-dentro-do-close-do-container-do-perfil-do-usuario: rgba(
  221. 255,
  222. 255,
  223. 255,
  224. 1
  225. );
  226. --cor-do-titulo-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
  227. 255,
  228. 255,
  229. 255,
  230. 1
  231. );
  232. --cor-da-descricao-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario: rgba(
  233. 255,
  234. 255,
  235. 255,
  236. 1
  237. );
  238. --cor-de-fundo-dos-termos-do-container-do-perfil-do-usuario: rgba(
  239. 11,
  240. 26,
  241. 59,
  242. 0.5
  243. );
  244. /* CONTAINER DE FERRAMENTAS */
  245. --cor-da-borda-do-titulo-do-container-de-ferramentas: rgba(
  246. 255,
  247. 255,
  248. 255,
  249. 1
  250. );
  251. --cor-do-texto-do-titulo-do-container-de-ferramentas: rgba(
  252. 255,
  253. 255,
  254. 255,
  255. 1
  256. );
  257. --cor-da-borda-dos-botoes-do-container-de-ferramentas: #cc60ff;
  258. --cor-de-fundo-dos-botoes-do-container-de-ferramentas: rgba(
  259. 161,
  260. 42,
  261. 246,
  262. 0.5
  263. );
  264. --cor-da-sombra-dos-botoes-do-container-de-ferramentas: rgba(
  265. 0,
  266. 0,
  267. 0,
  268. 0.25
  269. );
  270. --cor-dos-icones-dos-botoes-do-container-de-ferramentas: rgba(
  271. 255,
  272. 255,
  273. 255,
  274. 1
  275. );
  276. --cor-dos-textos-dos-botoes-do-container-de-ferramentas: rgba(
  277. 255,
  278. 255,
  279. 255,
  280. 1
  281. );
  282. /* MODAL SPEEDTEST */
  283. --cor-do-header-do-modal-do-speedtest: rgba(187, 127, 243, 1);
  284. --cor-de-fundo-do-modal-do-speedtest: rgba(187, 127, 243, 1);
  285. --cor-do-icone-do-header-do-modal-do-speedtest: rgba(255, 255, 255, 1);
  286. /* MODAL ERROR */
  287. --cor-do-header-do-modal-de-error: rgba(158, 36, 36, 0.8);
  288. --cor-de-fundo-do-modal-de-error: rgba(53, 46, 57, 0.9);
  289. --cor-do-icone-do-header-do-modal-de-error: rgba(255, 255, 255, 1);
  290. /* MODAL LOGS */
  291. --cor-do-header-do-modal-de-logs: rgba(187, 127, 243, 1);
  292. --cor-de-fundo-do-modal-de-logs: rgba(53, 46, 57, 0.9);
  293. --cor-do-texto-do-registro-do-modal-de-logs: rgba(255, 255, 255, 1);
  294. }
  295. * {
  296. margin: 0;
  297. padding: 0;
  298. box-sizing: border-box;
  299. }
  300. html,
  301. body,
  302. main {
  303. width: 100%;
  304. height: 100%;
  305. }
  306. body {
  307. background: var(--imagem-de-fundo);
  308. background-repeat: no-repeat;
  309. background-position: center;
  310. background-size: cover;
  311. }
  312. main {
  313. max-width: 500px;
  314. display: flex;
  315. flex-direction: column;
  316. align-items: center;
  317. gap: 10px;
  318. margin: auto;
  319. position: relative;
  320. overflow: hidden;
  321. }
  322. main section.vpnStatus {
  323. width: auto;
  324. height: 40px;
  325. display: flex;
  326. justify-content: center;
  327. align-items: center;
  328. gap: 5px;
  329. margin-top: 5%;
  330. padding: 0px 10px;
  331. border-radius: 20px;
  332. background: var(--cor-de-fundo-do-container-de-status-da-vpn);
  333. }
  334. main section.vpnStatus svg {
  335. color: var(--cor-do-icone-do-container-de-status-da-vpn);
  336. }
  337. main section.vpnStatus span {
  338. color: var(--cor-do-texto-do-container-de-status-da-vpn);
  339. }
  340. section.local-ip {
  341. width: auto;
  342. height: 40px;
  343. display: flex;
  344. justify-content: center;
  345. align-items: center;
  346. gap: 5px;
  347. margin-top: 5%;
  348. padding: 0px 10px;
  349. border-radius: 20px;
  350. background: var(--cor-de-fundo-do-container-de-status-da-vpn);
  351. }
  352. section.local-ip svg {
  353. color: var(--cor-do-icone-do-container-de-status-da-vpn);
  354. }
  355. section.local-ip span {
  356. text-align: center;
  357. color: var(--cor-do-texto-do-container-de-status-da-vpn);
  358. }
  359. main section.home {
  360. width: 100%;
  361. max-width: 500px;
  362. height: auto;
  363. display: flex;
  364. flex-direction: column;
  365. align-items: center;
  366. gap: 10px;
  367. position: relative;
  368. padding: 0px 10px;
  369. }
  370. main section.home header {
  371. width: 100%;
  372. height: auto;
  373. display: flex;
  374. justify-content: center;
  375. align-items: center;
  376. }
  377. main section.home header img.logo {
  378. width: 60%;
  379. max-width: 100px;
  380. height: auto;
  381. }
  382. main section.home div.carrierSelector {
  383. width: 100%;
  384. height: 50px;
  385. display: flex;
  386. align-items: center;
  387. justify-content: center;
  388. gap: 20px;
  389. padding: 0px 10px;
  390. border: 1px solid var(--borda-do-container-de-selecionar-operadora);
  391. border-radius: 10px;
  392. overflow: hidden;
  393. background: var(--cor-de-fundo-do-campo-de-selecionar-operadora);
  394. }
  395. main section.home div.carrierSelector svg {
  396. width: 20px;
  397. height: 20px;
  398. color: var(--cor-do-icone-de-chip-do-campo-de-selecionar-operadora);
  399. }
  400. main section.home div.carrierSelector span {
  401. width: 100%;
  402. max-width: 100%;
  403. height: 100%;
  404. max-height: 100%;
  405. display: flex;
  406. justify-content: center;
  407. align-items: center;
  408. color: var(--cor-do-texto-do-campo-de-selecionar-operadora);
  409. overflow: none;
  410. }
  411. main section.home div.container {
  412. width: 100%;
  413. height: auto;
  414. min-height: 200px;
  415. max-height: 240px;
  416. display: flex;
  417. flex-direction: column;
  418. align-items: center;
  419. justify-content: center;
  420. border: 1px solid var(--borda-do-container-principal);
  421. border-radius: 10px;
  422. background: var(--cor-de-fundo-do-container-principal);
  423. }
  424. main section.home div.container header {
  425. width: 100%;
  426. height: 50px;
  427. display: flex;
  428. align-items: center;
  429. padding: 0px 5px;
  430. border-bottom: 1px solid var(--borda-do-header-do-container-principal);
  431. overflow: hidden;
  432. }
  433. main section.home div.container form {
  434. width: 100%;
  435. height: auto;
  436. display: flex;
  437. flex-direction: column;
  438. align-items: center;
  439. gap: 10px;
  440. padding: 10px;
  441. }
  442. main section.home div.container form div {
  443. width: 90%;
  444. height: 40px;
  445. display: flex;
  446. align-items: center;
  447. position: relative;
  448. padding: 0px 0px 0px 5px;
  449. border-radius: 20px;
  450. border: 1px solid var(--cor-da-borda-dos-input-do-container-principal);
  451. overflow: hidden;
  452. background: var(--cor-de-fundo-dos-input-do-container-principal);
  453. }
  454. main section.home div.container form div#container-uuid-input {
  455. display: none;
  456. }
  457. main section.home div.container form div svg {
  458. width: 40px;
  459. height: 40px;
  460. padding: 10px;
  461. color: var(--cor-dos-icones-dos-input-do-container-principal);
  462. }
  463. main section.home div.container form div input {
  464. width: calc(100% - 40px);
  465. height: 100%;
  466. border: 0;
  467. outline: none;
  468. color: var(--cor-do-texto-dos-input-do-container-principal);
  469. background: transparent;
  470. }
  471. main section.home div.container form div svg.eye {
  472. position: absolute;
  473. right: 0;
  474. }
  475. .eye-none {
  476. display: none;
  477. }
  478. .eye-block {
  479. display: block;
  480. }
  481. main section.home div.container form div input::placeholder {
  482. color: var(
  483. --cor-do-texto-dos-input-do-container-principal-quando-nao-ta-selecionado
  484. );
  485. }
  486. main section.home div.container form div.buttons {
  487. height: 40px;
  488. display: flex;
  489. justify-content: center;
  490. align-items: center;
  491. gap: 10px;
  492. border: 0;
  493. padding-left: 3px;
  494. background: transparent;
  495. }
  496. main section.home div.container form div button#startStopVpn {
  497. flex: 1;
  498. height: 40px;
  499. display: flex;
  500. align-items: center;
  501. justify-content: center;
  502. gap: 10px;
  503. padding: 10px;
  504. border: 1px solid var(--cor-da-borda-do-botao-do-container-principal);
  505. border-radius: 20px;
  506. background: var(--cor-de-fundo-do-botao-do-container-principal);
  507. }
  508. main section.home div.container form div button#buttonLogs {
  509. width: 40px;
  510. height: 40px;
  511. display: flex;
  512. justify-content: center;
  513. align-items: center;
  514. border: 1px solid var(--cor-da-borda-do-botao-do-container-principal);
  515. border-radius: 50%;
  516. background: var(--cor-de-fundo-do-botao-do-container-principal);
  517. }
  518. main section.home div.container form button svg {
  519. color: var(--cor-do-icone-do-botao-do-container-principal);
  520. }
  521. main section.home div.container form button span {
  522. color: var(--cor-do-texto-do-botao-do-container-principal);
  523. }
  524. main section.controls {
  525. width: 90%;
  526. height: 50px;
  527. display: flex;
  528. align-items: center;
  529. gap: 15px;
  530. position: absolute;
  531. bottom: 10px;
  532. z-index: 999;
  533. padding: 0px 10px;
  534. border: 1px solid var(--cor-da-borda-do-container-de-controles);
  535. border-radius: 25px;
  536. background: var(--cor-de-fundo-do-container-de-controles);
  537. }
  538. main section.controls button {
  539. width: 40px;
  540. height: 40px;
  541. display: flex;
  542. align-items: center;
  543. justify-content: center;
  544. border: 0px solid var(--cor-da-borda-do-botao-do-container-de-controles);
  545. border-radius: 50%;
  546. background: var(--cor-de-fundo-do-botao-do-container-de-controles);
  547. }
  548. main section.controls button:nth-child(2) {
  549. margin-right: auto;
  550. }
  551. main section.controls button svg {
  552. color: var(--cor-do-icone-do-botao-do-container-de-controles);
  553. }
  554. main section.controls button#backToHome {
  555. width: 60px;
  556. height: 60px;
  557. margin-left: auto;
  558. margin-right: auto;
  559. position: absolute;
  560. top: -50%;
  561. left: 0;
  562. right: 0;
  563. border: 1px solid
  564. var(--cor-da-borda-do-botao-do-meio-do-container-de-controles);
  565. background: var(
  566. --cor-de-fundo-do-botao-do-meio-do-container-de-controles
  567. );
  568. }
  569. main section.controls button#backToHome::before {
  570. width: 60px;
  571. height: 60px;
  572. content: "";
  573. position: absolute;
  574. top: -6px;
  575. left: -6px;
  576. right: 0;
  577. bottom: 0px;
  578. z-index: 2;
  579. margin-left: auto;
  580. margin-right: auto;
  581. border: 5px solid
  582. var(--cor-da-borda-do-botao-do-meio-do-container-de-controles);
  583. border-radius: 50%;
  584. }
  585. main section.listOfCarriers {
  586. width: calc(100% - 10px);
  587. height: 70%;
  588. display: flex;
  589. flex-direction: column;
  590. align-items: center;
  591. position: absolute;
  592. top: 13%;
  593. border: 1px solid
  594. var(--cor-da-borda-do-container-da-lista-de-configuracoes);
  595. border-radius: 10px;
  596. overflow-y: auto;
  597. opacity: 0;
  598. transform: scale(0);
  599. transform-origin: center;
  600. transition: all 0.3s ease 0.1s;
  601. background: var(--cor-de-fundo-do-container-da-lista-de-configuracoes);
  602. backdrop-filter: blur(10px);
  603. }
  604. main section.listOfCarriers.active {
  605. opacity: 1;
  606. transform: scale(1);
  607. }
  608. main section.listOfCarriers .header-list {
  609. width: 100%;
  610. height: 50px;
  611. display: flex;
  612. align-items: center;
  613. padding: 10px;
  614. border: 1px solid var();
  615. background: var(
  616. --cor-de-fundo-do-header-do-container-da-lista-de-configuracoes
  617. );
  618. }
  619. main section.listOfCarriers header svg.bi-x-lg {
  620. margin: 0px 0px 0px auto;
  621. color: var(
  622. --cor-do-icone-de-fechar-do-header-do-container-da-lista-de-configuracoes
  623. );
  624. }
  625. main section.listOfCarriers section.list-container {
  626. width: 100%;
  627. height: 100%;
  628. display: flex;
  629. flex-direction: column;
  630. gap: 20px;
  631. margin: 10px 0px;
  632. padding: 0px 10px;
  633. overflow-y: auto;
  634. background: var(
  635. --cor-de-fundo-do-container-da-lista-de-categorias-de-configuracoes
  636. );
  637. }
  638. main section.listOfCarriers section.list-container div.category {
  639. width: 100%;
  640. height: auto;
  641. display: flex;
  642. flex-direction: column;
  643. gap: 10px;
  644. border-radius: 5px;
  645. background: var(--cor-de-fundo-da-categoria);
  646. }
  647. main section.listOfCarriers section.list-container div.category header {
  648. width: 100%;
  649. height: 50px;
  650. min-height: 50px;
  651. display: flex;
  652. justify-content: space-between;
  653. align-items: center;
  654. padding: 0px 5px;
  655. border-bottom: 1px solid var(--cor-da-borda-do-header-da-categoria);
  656. border-radius: 5px;
  657. background: var(--cor-de-fundo-do-header-da-categoria);
  658. }
  659. main
  660. section.listOfCarriers
  661. section.list-container
  662. div.category
  663. header
  664. h1 {
  665. color: var(--cor-do-text-do-header-da-categoria);
  666. font-weight: 400;
  667. font-size: 1rem;
  668. }
  669. main
  670. section.listOfCarriers
  671. section.list-container
  672. div.category
  673. header
  674. svg {
  675. color: var(--cor-do-icone-do-header-da-categoria);
  676. transition: all 0.3s ease 0.3s;
  677. }
  678. main
  679. section.listOfCarriers
  680. section.list-container
  681. div.category
  682. ul.configs {
  683. width: 100%;
  684. max-height: 0px;
  685. display: flex;
  686. flex-direction: column;
  687. gap: 10px;
  688. overflow-y: auto;
  689. overflow-x: hidden;
  690. background: var(--cor-de-fundo-da-lista-de-configuracoes);
  691. transition: all 0.3s ease 0.3s;
  692. }
  693. main
  694. section.listOfCarriers
  695. section.list-container
  696. div.category
  697. ul.configs
  698. li {
  699. width: 100%;
  700. height: 60px;
  701. display: flex;
  702. align-items: center;
  703. gap: 3px;
  704. padding: 5px;
  705. border-radius: 5px;
  706. background: var(--cor-de-fundo-do-item-da-configuracao);
  707. }
  708. main
  709. section.listOfCarriers
  710. section.list-container
  711. div.category
  712. ul.configs
  713. li
  714. div.logo {
  715. width: auto;
  716. height: 100%;
  717. display: flex;
  718. justify-content: center;
  719. align-items: center;
  720. }
  721. main
  722. section.listOfCarriers
  723. section.list-container
  724. div.category
  725. ul.configs
  726. li
  727. div.logo
  728. img {
  729. width: 40px;
  730. height: auto;
  731. }
  732. main
  733. section.listOfCarriers
  734. section.list-container
  735. div.category
  736. ul.configs
  737. li
  738. div.description {
  739. width: 150px;
  740. height: 100%;
  741. display: flex;
  742. flex-direction: column;
  743. align-items: center;
  744. justify-content: center;
  745. justify-items: center;
  746. align-content: center;
  747. overflow: hidden;
  748. }
  749. main
  750. section.listOfCarriers
  751. section.list-container
  752. div.category
  753. ul.configs
  754. li
  755. div.description
  756. h1 {
  757. width: 100%;
  758. height: 30px;
  759. display: flex;
  760. justify-content: center;
  761. color: var(--cor-do-texto-do-titulo-do-item-da-configuracao);
  762. font-size: 0.6rem;
  763. font-weight: 400;
  764. white-space: nowrap;
  765. overflow: hidden;
  766. text-overflow: ellipsis;
  767. }
  768. main
  769. section.listOfCarriers
  770. section.list-container
  771. div.category
  772. ul.configs
  773. li
  774. div.description
  775. p {
  776. width: 100%;
  777. height: 30px;
  778. display: flex;
  779. justify-content: flex-end;
  780. align-items: end;
  781. color: var(--cor-do-texto-da-descricao-do-item-da-configuracao);
  782. font-size: 0.6rem;
  783. white-space: nowrap;
  784. overflow: hidden;
  785. text-overflow: ellipsis;
  786. }
  787. main
  788. section.listOfCarriers
  789. section.list-container
  790. div.category
  791. ul.configs
  792. li
  793. div.mode {
  794. width: 50px;
  795. height: 100%;
  796. margin-left: auto;
  797. display: flex;
  798. justify-content: flex-end;
  799. align-items: end;
  800. }
  801. main
  802. section.listOfCarriers
  803. section.list-container
  804. div.category
  805. ul.configs
  806. li
  807. div.mode
  808. p {
  809. color: var(--cor-do-modo-da-conexao-do-item-da-configuracao);
  810. font-size: 0.6rem;
  811. }
  812. section.main-checkuser {
  813. width: 95%;
  814. height: 70%;
  815. position: absolute;
  816. top: 8%;
  817. margin: auto;
  818. border-radius: 5px;
  819. overflow: hidden;
  820. background: var(--cor-de-fundo-do-container-do-checkuser-principal);
  821. opacity: 0;
  822. transform: scale(0);
  823. transform-origin: center;
  824. transition: all 0.3s ease 0.1s;
  825. }
  826. section.main-checkuser.show {
  827. opacity: 1;
  828. transform: scale(1);
  829. }
  830. @media (min-width: 320px) {
  831. section.main-checkuser {
  832. height: 55%;
  833. top: 50%;
  834. bottom: 50%;
  835. }
  836. }
  837. section.main-checkuser header {
  838. width: 100%;
  839. height: 10%;
  840. max-height: 50px;
  841. display: flex;
  842. align-items: center;
  843. justify-content: flex-end;
  844. padding: 10px;
  845. background: var(
  846. --cor-de-fundo-do-header-do-container-do-checkuser-principal
  847. );
  848. }
  849. section.main-checkuser header svg {
  850. color: var(
  851. --cor-do-icone-do-header-do-container-do-checkuser-principal
  852. );
  853. }
  854. section.main-checkuser section.container-content-checkuser {
  855. width: 100%;
  856. height: 100%;
  857. display: flex;
  858. flex-direction: column;
  859. align-items: center;
  860. }
  861. section.main-checkuser
  862. section.container-content-checkuser
  863. div.connected-success {
  864. width: 50%;
  865. max-width: 100px;
  866. height: 50%;
  867. max-height: 100px;
  868. display: flex;
  869. justify-content: center;
  870. align-items: center;
  871. margin-top: 20px;
  872. margin-bottom: 20px;
  873. border: 1px solid var(--cor-da-borda-do-icone-de-sucesso);
  874. border-radius: 50%;
  875. animation: pulse 1s infinite;
  876. }
  877. section.main-checkuser
  878. section.container-content-checkuser
  879. div.connected-success
  880. svg {
  881. width: 50%;
  882. height: 50%;
  883. color: var(--cor-do-icone-de-sucesso);
  884. }
  885. @keyframes pulse {
  886. 0% {
  887. box-shadow: 0 0 0 0 rgba(0, 255, 0, 0.7);
  888. }
  889. 70% {
  890. box-shadow: 0 0 0 20px rgba(0, 255, 0, 0);
  891. }
  892. 100% {
  893. box-shadow: 0 0 0 0 rgba(0, 255, 0, 0);
  894. }
  895. }
  896. section.main-checkuser section.container-content-checkuser ul {
  897. width: 100%;
  898. height: auto;
  899. display: flex;
  900. flex-direction: column;
  901. justify-content: center;
  902. align-items: center;
  903. gap: 10px;
  904. padding: 0px 10px;
  905. list-style: none;
  906. }
  907. section.main-checkuser section.container-content-checkuser ul li {
  908. width: 100%;
  909. height: 50px;
  910. display: flex;
  911. align-items: center;
  912. padding: 0px 10px;
  913. border-radius: 5px;
  914. background: var(--cor-de-fundo-dos-dados-de-login);
  915. }
  916. section.main-checkuser section.container-content-checkuser ul li svg {
  917. margin-right: 10px;
  918. color: var(--cor-dos-icones-dos-dados-de-login);
  919. }
  920. section.main-checkuser section.container-content-checkuser ul li span {
  921. color: var(--cor-dos-textos-dos-dados-de-login);
  922. }
  923. section.loading {
  924. width: 95%;
  925. height: auto;
  926. position: absolute;
  927. top: 50%;
  928. left: 0;
  929. right: 0;
  930. transform: translateY(-50%);
  931. margin: auto;
  932. border-radius: 5px;
  933. overflow-x: hidden;
  934. opacity: 0;
  935. transform: scale(0);
  936. transform-origin: center;
  937. transition: all 0.3s ease 0.1s;
  938. background: var(--cor-de-fundo-do-container-de-carregamento);
  939. }
  940. section.loading.show {
  941. opacity: 1;
  942. transform: scale(1);
  943. }
  944. section.loading header {
  945. width: 100%;
  946. height: 10%;
  947. max-height: 50px;
  948. display: flex;
  949. align-items: center;
  950. justify-content: flex-end;
  951. padding: 10px;
  952. background: var(--cor-de-fundo-do-header-do-container-de-carregamento);
  953. }
  954. section.loading header svg {
  955. color: var(--cor-do-icone-do-header-do-container-de-carregamento);
  956. }
  957. section.loading div.loading-container {
  958. width: 100px;
  959. height: 100px;
  960. margin: 30px auto;
  961. border: 4px solid #ffffff;
  962. border-top: 4px solid transparent;
  963. border-radius: 50%;
  964. animation: spin 0.5s linear infinite;
  965. }
  966. @keyframes spin {
  967. 0% {
  968. transform: rotate(0deg);
  969. }
  970. 100% {
  971. transform: rotate(360deg);
  972. }
  973. }
  974. section.profile-checkuser {
  975. width: 100%;
  976. height: 100%;
  977. display: flex;
  978. flex-direction: column;
  979. position: absolute;
  980. top: 0;
  981. left: 100%;
  982. right: 0;
  983. bottom: 0;
  984. background: var(--imagem-de-fundo);
  985. background-repeat: no-repeat;
  986. background-position: center;
  987. background-size: cover;
  988. transition: transform 0.5s ease-in-out;
  989. }
  990. section.profile-checkuser.show {
  991. transform: translateX(-100%);
  992. }
  993. section.profile-checkuser header,
  994. section.profile-checkuser section.terms header {
  995. width: 95%;
  996. height: 40px;
  997. display: flex;
  998. align-items: center;
  999. margin: 0 auto;
  1000. background: var(
  1001. --cor-de-fundo-do-header-do-container-do-perfil-do-usuario
  1002. );
  1003. }
  1004. section.profile-checkuser header h1,
  1005. section.profile-checkuser section.terms header h1 {
  1006. width: 95%;
  1007. color: #ffffff;
  1008. font-weight: 400;
  1009. font-size: 1rem;
  1010. text-align: center;
  1011. margin: 0 auto;
  1012. border-bottom: 4px solid
  1013. var(--cor-da-borda-do-header-do-container-do-perfil-do-usuario);
  1014. }
  1015. section.profile-checkuser div.not-view-user {
  1016. display: none;
  1017. flex-direction: column;
  1018. align-items: center;
  1019. gap: 15px;
  1020. padding: 15px 10px;
  1021. }
  1022. section.profile-checkuser div.not-view-user.show {
  1023. display: flex;
  1024. }
  1025. section.profile-checkuser div.not-view-user div.circle {
  1026. width: 100px;
  1027. height: 100px;
  1028. display: flex;
  1029. justify-content: center;
  1030. align-items: center;
  1031. border: 2px solid
  1032. var(
  1033. --cor-da-borda-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario
  1034. );
  1035. border-radius: 50%;
  1036. }
  1037. section.profile-checkuser div.not-view-user div.circle svg {
  1038. width: 50%;
  1039. height: 50%;
  1040. color: var(
  1041. --cor-do-icone-de-dentro-do-close-do-container-do-perfil-do-usuario
  1042. );
  1043. }
  1044. section.profile-checkuser div.not-view-user h2 {
  1045. width: 100%;
  1046. color: var(
  1047. --cor-do-titulo-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario
  1048. );
  1049. text-align: center;
  1050. font-size: 1rem;
  1051. }
  1052. section.profile-checkuser div.not-view-user p {
  1053. color: var(
  1054. --cor-da-descricao-de-nao-ver-o-usuario-do-container-do-perfil-do-usuario
  1055. );
  1056. text-align: center;
  1057. font-size: 0.8rem;
  1058. }
  1059. section.profile-checkuser ul {
  1060. width: 100%;
  1061. height: auto;
  1062. display: none;
  1063. flex-direction: column;
  1064. gap: 20px;
  1065. list-style: none;
  1066. padding: 10px;
  1067. background: var(
  1068. --cor-de-fundo-da-lista-do-container-do-perfil-do-usuario
  1069. );
  1070. }
  1071. section.profile-checkuser ul.show {
  1072. display: grid;
  1073. }
  1074. section.profile-checkuser ul li {
  1075. width: 95%;
  1076. height: 40px;
  1077. display: grid;
  1078. align-items: center;
  1079. margin: 0px auto;
  1080. position: relative;
  1081. border-radius: 20px;
  1082. background: var(
  1083. --cor-de-fundo-dos-items-do-container-do-perfil-do-usuario
  1084. );
  1085. }
  1086. section.profile-checkuser ul li svg {
  1087. width: 50px;
  1088. height: 50px;
  1089. position: absolute;
  1090. left: -10px;
  1091. padding: 10px;
  1092. border-radius: 50%;
  1093. box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1);
  1094. color: #ffffff;
  1095. background: var(
  1096. --cor-de-fundo-dos-icones-do-container-do-perfil-do-usuario
  1097. );
  1098. }
  1099. section.profile-checkuser ul li svg.even {
  1100. box-shadow: -1px 1px 2px rgba(0, 0, 0, 0.2);
  1101. position: absolute;
  1102. left: initial;
  1103. right: -10px;
  1104. }
  1105. section.profile-checkuser ul li svg path {
  1106. transform: scale(0.6);
  1107. transform-origin: center;
  1108. }
  1109. section.profile-checkuser ul li span {
  1110. margin-left: 45px;
  1111. color: #ffffff;
  1112. font-size: 0.8rem;
  1113. }
  1114. section.profile-checkuser ul li span.even {
  1115. margin-left: auto;
  1116. margin-right: 45px;
  1117. }
  1118. section.profile-checkuser section.terms {
  1119. display: flex;
  1120. flex-direction: column;
  1121. width: 100%;
  1122. height: auto;
  1123. margin-top: 5%;
  1124. }
  1125. section.profile-checkuser section.terms p {
  1126. width: 95%;
  1127. height: auto;
  1128. max-height: 210px;
  1129. margin: 0 auto;
  1130. padding: 10px;
  1131. border-radius: 5px;
  1132. overflow-y: auto;
  1133. color: #ffffff;
  1134. text-align: center;
  1135. background: var(
  1136. --cor-de-fundo-dos-termos-do-container-do-perfil-do-usuario
  1137. );
  1138. }
  1139. @media (min-height: 700px) {
  1140. section.profile-checkuser section.terms p {
  1141. max-height: 350px;
  1142. }
  1143. }
  1144. section.tools {
  1145. width: 100%;
  1146. height: 100%;
  1147. display: flex;
  1148. flex-direction: column;
  1149. position: absolute;
  1150. top: 0;
  1151. left: 100%;
  1152. right: 0;
  1153. background: var(--imagem-de-fundo);
  1154. background-repeat: no-repeat;
  1155. background-position: center;
  1156. background-size: cover;
  1157. transition: transform 0.5s ease-in-out;
  1158. }
  1159. section.tools.show {
  1160. transform: translateX(-100%);
  1161. }
  1162. section.tools header {
  1163. width: 100%;
  1164. height: auto;
  1165. display: flex;
  1166. justify-content: center;
  1167. }
  1168. section.tools header h1 {
  1169. width: 90%;
  1170. height: auto;
  1171. padding: 10px;
  1172. border-bottom: 3px solid
  1173. var(--cor-da-borda-do-titulo-do-container-de-ferramentas);
  1174. text-shadow: 0px 4px 4px
  1175. var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
  1176. color: var(--cor-do-texto-do-titulo-do-container-de-ferramentas);
  1177. font-weight: bold;
  1178. font-size: 1rem;
  1179. text-align: center;
  1180. }
  1181. section.tools section.container-tools {
  1182. width: 100%;
  1183. height: auto;
  1184. display: flex;
  1185. flex-direction: column;
  1186. gap: 20px;
  1187. margin: 40px 0px 0px 0px;
  1188. padding: 0px 10px;
  1189. }
  1190. section.tools section.container-tools button {
  1191. width: 100%;
  1192. height: 50px;
  1193. display: flex;
  1194. align-items: center;
  1195. gap: 9.5px;
  1196. padding: 0px 16px;
  1197. border: 1px solid
  1198. var(--cor-da-borda-dos-botoes-do-container-de-ferramentas);
  1199. border-radius: 25px;
  1200. box-shadow: 0px 4px 4px
  1201. var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
  1202. background: var(--cor-de-fundo-dos-botoes-do-container-de-ferramentas);
  1203. }
  1204. section.tools section.container-tools button svg {
  1205. width: 20px;
  1206. height: 20px;
  1207. color: var(--cor-dos-icones-dos-botoes-do-container-de-ferramentas);
  1208. }
  1209. section.tools section.container-tools button span {
  1210. color: var(--cor-dos-textos-dos-botoes-do-container-de-ferramentas);
  1211. }
  1212. section.modal-speedtest,
  1213. section.modal-error-alert {
  1214. width: 95%;
  1215. max-width: 450px;
  1216. height: 50%;
  1217. position: absolute;
  1218. top: 25%;
  1219. transform: translate(-50%, -50%);
  1220. z-index: 2;
  1221. display: flex;
  1222. flex-direction: column;
  1223. border-radius: 5px;
  1224. overflow-x: hidden;
  1225. opacity: 0;
  1226. transform: scale(0);
  1227. transform-origin: center;
  1228. transition: all 0.3s ease 0.1s;
  1229. }
  1230. section.modal-speedtest.show,
  1231. section.modal-error-alert.show,
  1232. section.modal-logs.show {
  1233. opacity: 1;
  1234. transform: scale(1);
  1235. }
  1236. section.modal-speedtest header,
  1237. section.modal-error-alert header {
  1238. width: 100%;
  1239. height: 40px;
  1240. display: flex;
  1241. align-items: center;
  1242. padding: 0px 10px;
  1243. }
  1244. section.modal-speedtest header {
  1245. background: var(--cor-do-header-do-modal-do-speedtest);
  1246. }
  1247. section.modal-speedtest header h1,
  1248. section.modal-error-alert header h1 {
  1249. flex: 1;
  1250. display: flex;
  1251. justify-content: center;
  1252. align-items: center;
  1253. color: #ffffff;
  1254. font-family: "Roboto", sans-serif;
  1255. font-weight: bolder;
  1256. }
  1257. section.modal-speedtest header svg,
  1258. section.modal-error-alert header svg {
  1259. margin-left: auto;
  1260. color: var(--cor-do-icone-do-header-do-modal-do-speedtest);
  1261. }
  1262. section.modal-speedtest section,
  1263. section.modal-error-alert section {
  1264. width: 100%;
  1265. height: calc(100% - 40px);
  1266. position: relative;
  1267. display: flex;
  1268. flex-direction: column;
  1269. justify-content: center;
  1270. align-items: center;
  1271. }
  1272. section.modal-speedtest section {
  1273. background: var(--cor-de-fundo-do-modal-do-speedtest);
  1274. }
  1275. section.modal-speedtest section iframe {
  1276. width: 100%;
  1277. height: 100%;
  1278. border: 0;
  1279. overflow: hidden;
  1280. }
  1281. section.modal-error-alert header {
  1282. background: var(--cor-do-header-do-modal-de-error);
  1283. }
  1284. section.modal-error-alert section {
  1285. background: var(--cor-de-fundo-do-modal-de-error);
  1286. }
  1287. section.modal-error-alert section h1 {
  1288. padding: 0px 10px;
  1289. color: #ffffff;
  1290. }
  1291. section.modal-error-alert section p {
  1292. margin-top: 10px;
  1293. padding: 0px 10px;
  1294. color: #ffffff;
  1295. text-align: center;
  1296. }
  1297. section.modal-logs {
  1298. width: 95%;
  1299. max-width: 450px;
  1300. height: auto;
  1301. position: absolute;
  1302. top: 15%;
  1303. transform: translate(-50%, -50%);
  1304. z-index: 2;
  1305. display: flex;
  1306. flex-direction: column;
  1307. border-radius: 5px;
  1308. overflow-x: hidden;
  1309. opacity: 0;
  1310. transform: scale(0);
  1311. transform-origin: center;
  1312. transition: all 0.3s ease 0.1s;
  1313. }
  1314. section.modal-logs header {
  1315. width: 100%;
  1316. height: 40px;
  1317. display: flex;
  1318. align-items: center;
  1319. justify-content: flex-start;
  1320. padding: 0px 10px;
  1321. background: var(--cor-de-fundo-do-modal-de-logs);
  1322. }
  1323. section.modal-logs header h1 {
  1324. font-size: 14px;
  1325. color: #ffffff;
  1326. }
  1327. section.modal-logs p {
  1328. height: 100%;
  1329. /* min-height: 200px;
  1330. max-height: 400px; */
  1331. padding: 10px;
  1332. font-size: 12px;
  1333. text-align: left;
  1334. color: var(--cor-do-texto-do-registro-do-modal-de-logs);
  1335. overflow-y: auto;
  1336. background: var(--cor-de-fundo-do-modal-de-logs);
  1337. }
  1338. section.modal-logs section {
  1339. width: 100%;
  1340. height: auto;
  1341. display: flex;
  1342. align-items: center;
  1343. justify-content: space-between;
  1344. padding: 10px 10px;
  1345. border-top: 3px solid rgba(161, 161, 161, 1);
  1346. background: var(--cor-de-fundo-do-modal-de-logs);
  1347. }
  1348. section.modal-logs section button {
  1349. width: 45%;
  1350. min-width: 115px;
  1351. height: 40px;
  1352. display: flex;
  1353. align-items: center;
  1354. justify-content: center;
  1355. border: 1px solid rgba(97, 97, 97, 1);
  1356. border-radius: 3px;
  1357. color: #ffffff;
  1358. background: rgba(46, 46, 46, 1);
  1359. }
  1360. section.renew-window {
  1361. width: 100%;
  1362. height: 100%;
  1363. display: flex;
  1364. flex-direction: column;
  1365. position: absolute;
  1366. top: 0;
  1367. left: -100%;
  1368. right: 100%;
  1369. background: var(--imagem-de-fundo);
  1370. background-repeat: no-repeat;
  1371. background-position: center;
  1372. background-size: cover;
  1373. transition: transform 0.5s ease-in-out;
  1374. }
  1375. section.renew-window.show {
  1376. transform: translateX(100%);
  1377. }
  1378. section.renew-window header {
  1379. width: 100%;
  1380. height: auto;
  1381. display: flex;
  1382. justify-content: center;
  1383. }
  1384. section.renew-window header h1 {
  1385. width: 90%;
  1386. height: auto;
  1387. padding: 10px;
  1388. border-bottom: 3px solid
  1389. var(--cor-da-borda-do-titulo-do-container-de-ferramentas);
  1390. text-shadow: 0px 4px 4px
  1391. var(--cor-da-sombra-dos-botoes-do-container-de-ferramentas);
  1392. color: var(--cor-do-texto-do-titulo-do-container-de-ferramentas);
  1393. font-weight: bold;
  1394. font-size: 1rem;
  1395. text-align: center;
  1396. }
  1397. section.renew-window section {
  1398. width: 100%;
  1399. height: 100%;
  1400. display: flex;
  1401. justify-content: center;
  1402. align-items: center;
  1403. }
  1404. section.renew-window section div {
  1405. width: 90%;
  1406. height: auto;
  1407. display: flex;
  1408. flex-direction: column;
  1409. align-items: center;
  1410. padding: 10px;
  1411. margin: 0px 0px 40px 0px;
  1412. border: 1px solid rgba(219, 142, 255, 1);
  1413. border-radius: 37px;
  1414. background: rgba(161, 42, 246, 0.5);
  1415. }
  1416. section.renew-window section div h1 {
  1417. color: #ffffff;
  1418. }
  1419. section.renew-window section div p {
  1420. width: 100%;
  1421. display: flex;
  1422. justify-content: center;
  1423. align-items: center;
  1424. margin-top: 15%;
  1425. color: #ffffff;
  1426. text-align: center;
  1427. }
  1428. </style>
  1429. </head>
  1430. <body>
  1431. <main>
  1432. <section class="home">
  1433. <header>
  1434. <img
  1435. class="logo"
  1436. src="https://i.ibb.co/Qkd7xzR/IMG-20230708-213237.png"
  1437. alt="logo"
  1438. />
  1439. </header>
  1440. <div class="carrierSelector">
  1441. <svg
  1442. xmlns="http://www.w3.org/2000/svg"
  1443. width="14"
  1444. height="14"
  1445. fill="currentColor"
  1446. class="bi bi-sd-card"
  1447. viewBox="0 0 14 14"
  1448. >
  1449. <path
  1450. 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"
  1451. />
  1452. <path
  1453. fill-rule="evenodd"
  1454. 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"
  1455. />
  1456. </svg>
  1457. <span>Selecione uma operadora</span>
  1458. </div>
  1459. <div class="container">
  1460. <form>
  1461. <div id="container-user-input">
  1462. <svg
  1463. xmlns="http://www.w3.org/2000/svg"
  1464. width="16"
  1465. height="16"
  1466. fill="currentColor"
  1467. class="bi bi-person"
  1468. viewBox="0 0 16 16"
  1469. >
  1470. <path
  1471. 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"
  1472. />
  1473. </svg>
  1474. <input id="inputUser" type="text" placeholder="Usuário" />
  1475. </div>
  1476. <div id="container-password-input">
  1477. <svg
  1478. xmlns="http://www.w3.org/2000/svg"
  1479. width="16"
  1480. height="16"
  1481. fill="currentColor"
  1482. class="bi bi-key"
  1483. viewBox="0 0 16 16"
  1484. >
  1485. <path
  1486. 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"
  1487. />
  1488. <path d="M4 8a1 1 0 1 1-2 0 1 1 0 0 1 2 0z" />
  1489. </svg>
  1490. <input id="inputPassword" type="password" placeholder="Senha" />
  1491. <svg
  1492. xmlns="http://www.w3.org/2000/svg"
  1493. width="16"
  1494. height="16"
  1495. fill="currentColor"
  1496. class="bi bi-eye-slash eye-hidden"
  1497. viewBox="0 0 16 16"
  1498. >
  1499. <path
  1500. 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"
  1501. />
  1502. <path
  1503. 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"
  1504. />
  1505. <path
  1506. 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"
  1507. />
  1508. </svg>
  1509. <svg
  1510. xmlns="http://www.w3.org/2000/svg"
  1511. width="16"
  1512. height="16"
  1513. fill="currentColor"
  1514. class="bi bi-eye eye-show eye-none"
  1515. viewBox="0 0 16 16"
  1516. >
  1517. <path
  1518. 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"
  1519. />
  1520. <path
  1521. 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"
  1522. />
  1523. </svg>
  1524. </div>
  1525. <div id="container-uuid-input">
  1526. <svg
  1527. xmlns="http://www.w3.org/2000/svg"
  1528. width="16"
  1529. height="16"
  1530. fill="currentColor"
  1531. class="bi bi-fingerprint"
  1532. viewBox="0 0 16 16"
  1533. >
  1534. <path
  1535. d="M8.06 6.5a.5.5 0 0 1 .5.5v.776a11.5 11.5 0 0 1-.552 3.519l-1.331 4.14a.5.5 0 0 1-.952-.305l1.33-4.141a10.5 10.5 0 0 0 .504-3.213V7a.5.5 0 0 1 .5-.5Z"
  1536. />
  1537. <path
  1538. d="M6.06 7a2 2 0 1 1 4 0 .5.5 0 1 1-1 0 1 1 0 1 0-2 0v.332c0 .409-.022.816-.066 1.221A.5.5 0 0 1 6 8.447c.04-.37.06-.742.06-1.115V7Zm3.509 1a.5.5 0 0 1 .487.513 11.5 11.5 0 0 1-.587 3.339l-1.266 3.8a.5.5 0 0 1-.949-.317l1.267-3.8a10.5 10.5 0 0 0 .535-3.048A.5.5 0 0 1 9.569 8Zm-3.356 2.115a.5.5 0 0 1 .33.626L5.24 14.939a.5.5 0 1 1-.955-.296l1.303-4.199a.5.5 0 0 1 .625-.329Z"
  1539. />
  1540. <path
  1541. d="M4.759 5.833A3.501 3.501 0 0 1 11.559 7a.5.5 0 0 1-1 0 2.5 2.5 0 0 0-4.857-.833.5.5 0 1 1-.943-.334Zm.3 1.67a.5.5 0 0 1 .449.546 10.72 10.72 0 0 1-.4 2.031l-1.222 4.072a.5.5 0 1 1-.958-.287L4.15 9.793a9.72 9.72 0 0 0 .363-1.842.5.5 0 0 1 .546-.449Zm6 .647a.5.5 0 0 1 .5.5c0 1.28-.213 2.552-.632 3.762l-1.09 3.145a.5.5 0 0 1-.944-.327l1.089-3.145c.382-1.105.578-2.266.578-3.435a.5.5 0 0 1 .5-.5Z"
  1542. />
  1543. <path
  1544. d="M3.902 4.222a4.996 4.996 0 0 1 5.202-2.113.5.5 0 0 1-.208.979 3.996 3.996 0 0 0-4.163 1.69.5.5 0 0 1-.831-.556Zm6.72-.955a.5.5 0 0 1 .705-.052A4.99 4.99 0 0 1 13.059 7v1.5a.5.5 0 1 1-1 0V7a3.99 3.99 0 0 0-1.386-3.028.5.5 0 0 1-.051-.705ZM3.68 5.842a.5.5 0 0 1 .422.568c-.029.192-.044.39-.044.59 0 .71-.1 1.417-.298 2.1l-1.14 3.923a.5.5 0 1 1-.96-.279L2.8 8.821A6.531 6.531 0 0 0 3.058 7c0-.25.019-.496.054-.736a.5.5 0 0 1 .568-.422Zm8.882 3.66a.5.5 0 0 1 .456.54c-.084 1-.298 1.986-.64 2.934l-.744 2.068a.5.5 0 0 1-.941-.338l.745-2.07a10.51 10.51 0 0 0 .584-2.678.5.5 0 0 1 .54-.456Z"
  1545. />
  1546. <path
  1547. d="M4.81 1.37A6.5 6.5 0 0 1 14.56 7a.5.5 0 1 1-1 0 5.5 5.5 0 0 0-8.25-4.765.5.5 0 0 1-.5-.865Zm-.89 1.257a.5.5 0 0 1 .04.706A5.478 5.478 0 0 0 2.56 7a.5.5 0 0 1-1 0c0-1.664.626-3.184 1.655-4.333a.5.5 0 0 1 .706-.04ZM1.915 8.02a.5.5 0 0 1 .346.616l-.779 2.767a.5.5 0 1 1-.962-.27l.778-2.767a.5.5 0 0 1 .617-.346Zm12.15.481a.5.5 0 0 1 .49.51c-.03 1.499-.161 3.025-.727 4.533l-.07.187a.5.5 0 0 1-.936-.351l.07-.187c.506-1.35.634-2.74.663-4.202a.5.5 0 0 1 .51-.49Z"
  1548. />
  1549. </svg>
  1550. <input type="password" placeholder="UUID" id="uuid-input" />
  1551. </div>
  1552. <div class="buttons">
  1553. <button id="startStopVpn" type="button">
  1554. <span id="startStopVpnButtonValue">Conectar</span>
  1555. </button>
  1556. <button id="buttonLogs" type="button">
  1557. <svg
  1558. xmlns="http://www.w3.org/2000/svg"
  1559. width="16"
  1560. height="16"
  1561. fill="currentColor"
  1562. class="bi bi-file-earmark-text"
  1563. viewBox="0 0 16 16"
  1564. >
  1565. <path
  1566. 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"
  1567. />
  1568. <path
  1569. 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"
  1570. />
  1571. </svg>
  1572. </button>
  1573. </div>
  1574. </form>
  1575. </div>
  1576. </section>
  1577. <section class="vpnStatus">
  1578. <svg
  1579. xmlns="http://www.w3.org/2000/svg"
  1580. width="16"
  1581. height="16"
  1582. fill="currentColor"
  1583. class="bi bi-plug"
  1584. viewBox="0 0 16 16"
  1585. >
  1586. <path
  1587. 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"
  1588. />
  1589. </svg>
  1590. <span>Desconectado</span>
  1591. </section>
  1592. <section class="local-ip">
  1593. <span>TIM: 192.168.0.1</span>
  1594. </section>
  1595. <section class="listOfCarriers">
  1596. <header class="header-list">
  1597. <svg
  1598. id="close-modal-configs"
  1599. xmlns="http://www.w3.org/2000/svg"
  1600. width="16"
  1601. height="16"
  1602. fill="currentColor"
  1603. class="bi bi-x-lg"
  1604. viewBox="0 0 16 16"
  1605. >
  1606. <path
  1607. 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"
  1608. />
  1609. </svg>
  1610. </header>
  1611. <section class="list-container"></section>
  1612. </section>
  1613. <section class="loading">
  1614. <header>
  1615. <svg
  1616. xmlns="http://www.w3.org/2000/svg"
  1617. width="16"
  1618. height="16"
  1619. fill="currentColor"
  1620. class="bi bi-x-lg"
  1621. viewBox="0 0 16 16"
  1622. >
  1623. <path
  1624. 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"
  1625. />
  1626. </svg>
  1627. </header>
  1628. <div class="loading-container"></div>
  1629. </section>
  1630. <section class="main-checkuser">
  1631. <header>
  1632. <svg
  1633. xmlns="http://www.w3.org/2000/svg"
  1634. width="16"
  1635. height="16"
  1636. fill="currentColor"
  1637. class="bi bi-x-lg"
  1638. viewBox="0 0 16 16"
  1639. >
  1640. <path
  1641. 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"
  1642. />
  1643. </svg>
  1644. </header>
  1645. <section class="container-content-checkuser">
  1646. <div class="connected-success">
  1647. <svg
  1648. xmlns="http://www.w3.org/2000/svg"
  1649. width="16"
  1650. height="16"
  1651. fill="currentColor"
  1652. class="bi bi-check2"
  1653. viewBox="0 0 16 16"
  1654. >
  1655. <path
  1656. 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"
  1657. />
  1658. </svg>
  1659. </div>
  1660. <ul></ul>
  1661. </section>
  1662. </section>
  1663. <section class="profile-checkuser">
  1664. <header>
  1665. <h1>INFORMAÇÕES DO PERFIL</h1>
  1666. </header>
  1667. <div id="not-profile-user" class="not-view-user">
  1668. <div class="circle">
  1669. <svg
  1670. xmlns="http://www.w3.org/2000/svg"
  1671. width="16"
  1672. height="16"
  1673. fill="currentColor"
  1674. class="bi bi-x-lg"
  1675. viewBox="0 0 16 16"
  1676. >
  1677. <path
  1678. 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"
  1679. />
  1680. </svg>
  1681. </div>
  1682. <h2>NÃO FOI POSSÍVEL CARREGAR AS INFORMAÇÕES DO PERFIL</h2>
  1683. <p>
  1684. Tente conectar o seu usuário antes de verificar as informações do
  1685. seu perfil
  1686. </p>
  1687. </div>
  1688. <ul id="list-profile">
  1689. <li>
  1690. <svg
  1691. xmlns="http://www.w3.org/2000/svg"
  1692. width="16"
  1693. height="16"
  1694. fill="currentColor"
  1695. class="bi bi-person"
  1696. viewBox="0 0 16 16"
  1697. >
  1698. <path
  1699. 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"
  1700. />
  1701. </svg>
  1702. <span>NOME DE USUÁRIO: fulano</span>
  1703. </li>
  1704. <li>
  1705. <svg
  1706. xmlns="http://www.w3.org/2000/svg"
  1707. width="16"
  1708. height="16"
  1709. fill="currentColor"
  1710. class="bi bi-calendar3-week even"
  1711. viewBox="0 0 16 16"
  1712. >
  1713. <path
  1714. 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"
  1715. />
  1716. <path
  1717. 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"
  1718. />
  1719. </svg>
  1720. <span class="even">EXPIRAÇÃO: dd/mm/aaaa</span>
  1721. </li>
  1722. <li>
  1723. <svg
  1724. xmlns="http://www.w3.org/2000/svg"
  1725. width="16"
  1726. height="16"
  1727. fill="currentColor"
  1728. class="bi bi-hourglass-split"
  1729. viewBox="0 0 16 16"
  1730. >
  1731. <path
  1732. 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"
  1733. />
  1734. </svg>
  1735. <span>DIAS RESTANTES: 99</span>
  1736. </li>
  1737. <li>
  1738. <svg
  1739. xmlns="http://www.w3.org/2000/svg"
  1740. width="16"
  1741. height="16"
  1742. fill="currentColor"
  1743. class="bi bi-phone-flip even"
  1744. viewBox="0 0 16 16"
  1745. >
  1746. <path
  1747. fill-rule="evenodd"
  1748. 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"
  1749. />
  1750. </svg>
  1751. <span class="even">CONECTADOS: 01/03</span>
  1752. </li>
  1753. </ul>
  1754. <section class="terms">
  1755. <header>
  1756. <h1>TERMOS DE USO</h1>
  1757. </header>
  1758. <p>
  1759. Ao comprar o acesso você aceita todos os nossos termos!
  1760. <br />
  1761. --------------------------------------------------------------
  1762. <br />
  1763. <br />
  1764. 1- Todo e qualquer conteúdo acessado através do aplicativo é de
  1765. responsabilidade do usuário! caso o usuário aproveitar-se de nosso
  1766. vpn para cometer qualquer ato ilegal, será de total responsabilidade
  1767. do usuário!
  1768. <br />
  1769. <br />
  1770. 2- Em casos de falha na conexão entre em contato com ovendedor que
  1771. lhe forneceu o acesso ao aplicativo!
  1772. <br />
  1773. <br />
  1774. 3- NÃO realizamos a prática de REEMBOLSO, então realize o teste
  1775. grátis antes de comprar!
  1776. <br />
  1777. <br />
  1778. 4- Caso ocorra queda no sinal da operadora os dias offline serão
  1779. adicionados de bônus. Peça esses dias ao seu vendedor! (Somente
  1780. quedas geral, quedas de forma especifica, não nos
  1781. responsabilizamos!)
  1782. <br />
  1783. <br />
  1784. 5- Caso houver alguma falhas de conexão por negligencia do usuário
  1785. em não saber configurar o aplicativo ou falha na rede móvel do
  1786. usuário não disponibilizamos dias bônus para estes casos. Porém
  1787. disponibilizamos suporte especializado para ajudar a solucionar
  1788. esses problemas. Então em caso de falha de conexão entre em contato
  1789. com seu vendedor!
  1790. <br />
  1791. <br />
  1792. 6- Método de pagamento é pré-pago, ou seja você paga para usar. Caso
  1793. desejar cancelar basta não renovar no próximo mês, que seu login
  1794. será deletado automaticamente. Não temos termo de fidelidade em
  1795. nossos serviços!
  1796. <br />
  1797. <br />
  1798. 7- Não temos vínculos algum com a operadora do seu chip. Vendemos
  1799. apenas a conexão SSH, que pode te liberar internet ilimitada através
  1800. da conexão realizada no aplicativo!
  1801. <br />
  1802. <br />
  1803. 8- Nosso produto é a conexão SSH, não vendemos internet, caso a
  1804. operadora que você está utilizando não estiver conectando, você pode
  1805. utilizar outra opção de operadora para realizar a conexão!
  1806. <br />
  1807. <br />
  1808. 9- Ao utilizar nossa vpn você navegara de forma anônima na internet,
  1809. dito isso você concorda em não acessar qualquer conteúdo ilegal ou
  1810. não permitidos em seu estado! Atenciosamente ITechNet_VPN
  1811. <br />
  1812. --------------------------------------------------------------
  1813. </p>
  1814. </section>
  1815. </section>
  1816. <section class="tools">
  1817. <header>
  1818. <h1>FERRAMENTAS</h1>
  1819. </header>
  1820. <section class="container-tools">
  1821. <button id="config-apn">
  1822. <svg
  1823. xmlns="http://www.w3.org/2000/svg"
  1824. width="16"
  1825. height="16"
  1826. fill="currentColor"
  1827. class="bi bi-tools"
  1828. viewBox="0 0 16 16"
  1829. >
  1830. <path
  1831. 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"
  1832. />
  1833. </svg>
  1834. <span>CONFIGURAR APN</span>
  1835. </button>
  1836. <button id="battery-optimization">
  1837. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-youtube" viewBox="0 0 16 16">
  1838. <path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"/>
  1839. </svg>
  1840. <span> ASSISTIR YOUTUBE</span>
  1841. </button>
  1842. <button id="speedtest">
  1843. <svg
  1844. xmlns="http://www.w3.org/2000/svg"
  1845. width="16"
  1846. height="16"
  1847. fill="currentColor"
  1848. class="bi bi-speedometer2"
  1849. viewBox="0 0 16 16"
  1850. >
  1851. <path
  1852. 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"
  1853. />
  1854. <path
  1855. fill-rule="evenodd"
  1856. 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"
  1857. />
  1858. </svg>
  1859. <span> SPEED TESTE </span>
  1860. </button>
  1861. <button id="clean-data-app">
  1862. <svg
  1863. xmlns="http://www.w3.org/2000/svg"
  1864. width="16"
  1865. height="16"
  1866. fill="currentColor"
  1867. class="bi bi-trash"
  1868. viewBox="0 0 16 16"
  1869. >
  1870. <path
  1871. 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"
  1872. />
  1873. <path
  1874. 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"
  1875. />
  1876. </svg>
  1877. <span>RESETAR/LIMPAR APP</span>
  1878. </button>
  1879. <button id="renew_acess">
  1880. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrows-fullscreen" viewBox="0 0 16 16">
  1881. <path fill-rule="evenodd" d="M5.828 10.172a.5.5 0 0 0-.707 0l-4.096 4.096V11.5a.5.5 0 0 0-1 0v3.975a.5.5 0 0 0 .5.5H4.5a.5.5 0 0 0 0-1H1.732l4.096-4.096a.5.5 0 0 0 0-.707zm4.344 0a.5.5 0 0 1 .707 0l4.096 4.096V11.5a.5.5 0 1 1 1 0v3.975a.5.5 0 0 1-.5.5H11.5a.5.5 0 0 1 0-1h2.768l-4.096-4.096a.5.5 0 0 1 0-.707zm0-4.344a.5.5 0 0 0 .707 0l4.096-4.096V4.5a.5.5 0 1 0 1 0V.525a.5.5 0 0 0-.5-.5H11.5a.5.5 0 0 0 0 1h2.768l-4.096 4.096a.5.5 0 0 0 0 .707zm-4.344 0a.5.5 0 0 1-.707 0L1.025 1.732V4.5a.5.5 0 0 1-1 0V.525a.5.5 0 0 1 .5-.5H4.5a.5.5 0 0 1 0 1H1.732l4.096 4.096a.5.5 0 0 1 0 .707z"/>
  1882. </svg>
  1883. <span>ACESSAR PAINEL WEB</span>
  1884. </button>
  1885. </section>
  1886. </section>
  1887. <section class="renew-window">
  1888. <header>
  1889. <h1>⚠️INFORMAÇÕES IMPORTANTES⚠️</h1>
  1890. </header>
  1891. <section>
  1892. <div>
  1893. <h1>⚠️⚠️⚠️⚠️⚠️⚠️⚠️</h1>
  1894. <p>
  1895. ✅ MANTENHA SEU APLICATIVO SEMPRE ATUALIZADO PARA NÃO FICAR SEM INTERNET, DUVIDAS CHAMAR SEU VENDENDOR! ✅<br><br>⛔ PROIBIDO USAR TORRENT ⛔<br><br>⛔ PROIBIDO COMPARTILHAR OU ROTEAR A INTERNET 🌏<br><br>⏳ AGUARDE DE 5 A 15 SEGUNDOS EM CADA UMA CONEXÃO ATÉ CONECTAR ⏳<br><br>📲 USE ILIMITADO PARA NAVEGAR NO FACEBOOK, INSTAGRAM, YOUTUBE, TIK TOK, JOGOS ONLINE E ENTRE OUTRAS COISAS 🌏<br><br>📝 MANTENHA SUA INTERNET EM DIA PARA NÃO FICAR SEM ACESSO ✅<br><br>🥳 ITechNet_VPN CONECTANDO VOCÊ AO MUNDO A 5 ANOS 🔥<br>
  1896. </p>
  1897. </div>
  1898. </section>
  1899. </section>
  1900. <section class="modal-speedtest">
  1901. <header>
  1902. <h1>SPEED TESTE</h1>
  1903. <svg
  1904. xmlns="http://www.w3.org/2000/svg"
  1905. width="16"
  1906. height="16"
  1907. fill="currentColor"
  1908. class="bi bi-x-lg"
  1909. viewBox="0 0 16 16"
  1910. >
  1911. <path
  1912. 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"
  1913. />
  1914. </svg>
  1915. </header>
  1916. <section>
  1917. <iframe src=""></iframe>
  1918. </section>
  1919. </section>
  1920. <section class="modal-error-alert">
  1921. <header>
  1922. <h1>ERROR</h1>
  1923. <svg
  1924. xmlns="http://www.w3.org/2000/svg"
  1925. width="16"
  1926. height="16"
  1927. fill="currentColor"
  1928. class="bi bi-x-lg"
  1929. viewBox="0 0 16 16"
  1930. >
  1931. <path
  1932. 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"
  1933. />
  1934. </svg>
  1935. </header>
  1936. <section>
  1937. <h1>TITULO DO ERRO</h1>
  1938. <p></p>
  1939. </section>
  1940. </section>
  1941. <section class="modal-logs">
  1942. <header>
  1943. <h1>REGISTRO - É NECESSÁRIO AGUARDAR ALGUNS SEGUNDOS PARA CONECTAR</h1><br>
  1944. </header><br>
  1945. <p></p>
  1946. <section>
  1947. <button id="clean-data-logs">LIMPAR</button>
  1948. <button id="hidden-modal-logs">FECHAR</button>
  1949. </section>
  1950. </section>
  1951. <section class="controls">
  1952. <button
  1953. id="refresh-button"
  1954. type="button"
  1955. title="Atualizar as configurações do app"
  1956. >
  1957. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-cloud-arrow-down" viewBox="0 0 16 16">
  1958. <path fill-rule="evenodd" d="M7.646 10.854a.5.5 0 0 0 .708 0l2-2a.5.5 0 0 0-.708-.708L8.5 9.293V5.5a.5.5 0 0 0-1 0v3.793L6.354 8.146a.5.5 0 1 0-.708.708l2 2z"/>
  1959. <path d="M4.406 3.342A5.53 5.53 0 0 1 8 2c2.69 0 4.923 2 5.166 4.579C14.758 6.804 16 8.137 16 9.773 16 11.569 14.502 13 12.687 13H3.781C1.708 13 0 11.366 0 9.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383zm.653.757c-.757.653-1.153 1.44-1.153 2.056v.448l-.445.049C2.064 6.805 1 7.952 1 9.318 1 10.785 2.23 12 3.781 12h8.906C13.98 12 15 10.988 15 9.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 4.825 10.328 3 8 3a4.53 4.53 0 0 0-2.941 1.1z"/>
  1960. </svg>
  1961. </button>
  1962. <button id="renew" type="button" title="Renovar pagamento">
  1963. <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16">
  1964. <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"/>
  1965. </svg>
  1966. </button>
  1967. <button
  1968. id="backToHome"
  1969. type="button"
  1970. title="Voltar para a página inicial"
  1971. >
  1972. <svg
  1973. xmlns="http://www.w3.org/2000/svg"
  1974. width="16"
  1975. height="16"
  1976. fill="currentColor"
  1977. class="bi bi-house"
  1978. viewBox="0 0 16 16"
  1979. >
  1980. <path
  1981. 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"
  1982. />
  1983. </svg>
  1984. </button>
  1985. <button id="utilitys" type="button" title="utilidades">
  1986. <svg
  1987. xmlns="http://www.w3.org/2000/svg"
  1988. width="16"
  1989. height="16"
  1990. fill="currentColor"
  1991. class="bi bi-gear"
  1992. viewBox="0 0 16 16"
  1993. >
  1994. <path
  1995. 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"
  1996. />
  1997. <path
  1998. 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"
  1999. />
  2000. </svg>
  2001. </button>
  2002. <button id="profile-button" type="button" title="Detalhes do usuário">
  2003. <svg
  2004. xmlns="http://www.w3.org/2000/svg"
  2005. width="16"
  2006. height="16"
  2007. fill="currentColor"
  2008. class="bi bi-person"
  2009. viewBox="0 0 16 16"
  2010. >
  2011. <path
  2012. 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"
  2013. />
  2014. </svg>
  2015. </button>
  2016. </section>
  2017. </main>
  2018. <!-- VARIAVEIS DE CONSULTA -->
  2019. <script>
  2020. let dataCheckuser
  2021. let zIndexContainers
  2022. </script>
  2023. <!-- FUNÇÕES DO APP -->
  2024. <script>
  2025. const dtStatusBarHeight = () => DtGetStatusBarHeight.execute()
  2026. const dtNavHeight = () => DtGetNavigationBarHeight.execute()
  2027. const dtGetLogs = () => DtGetLogs.execute()
  2028. const dtClearLogs = () => DtClearLogs.execute()
  2029. const dtVpnState = () => DtGetVpnState.execute()
  2030. const dtTranslateText = (label) => DtTranslateText.execute(label)
  2031. const dtStartVpn = () => DtExecuteVpnStart.execute()
  2032. const dtStopVpn = () => DtExecuteVpnStop.execute()
  2033. const dtUpdate = () => DtStartAppUpdate.execute()
  2034. const dtAllConfigs = () => DtGetConfigs.execute()
  2035. const dtSetConfig = (id) => DtSetConfig.execute(id)
  2036. const dtGetDefaultConfig = () => DtGetDefaultConfig.execute()
  2037. const dtGetUsername = () => DtUsername.get()
  2038. const dtSetUsername = (username) => DtUsername.set(username)
  2039. const dtGetPassword = () => DtPassword.get()
  2040. const dtSetPassword = (password) => DtPassword.set(password)
  2041. const dtGetUUID = () => DtUuid.get()
  2042. const dtSetUUID = (uuid) => DtUuid.set(uuid)
  2043. const dtApnConfig = () => DtStartApnActivity.execute()
  2044. const dtBatteryOptimization = () => DtIgnoreBatteryOptimizations.execute()
  2045. const dtCleanApp = () => DtCleanApp.execute()
  2046. const dtGetNetworkName = () => Android.getNetworkName()
  2047. const dtGetNetworkLocalIp = () => Android.getLocalIP()
  2048. </script>
  2049. <!-- FUNÇÕES PARA O APP -->
  2050. <script>
  2051. const dtVpnStateListener = (state) => {
  2052. const stateVpn = vpnState(state)
  2053. vpnStatus.html(stateVpn)
  2054. }
  2055. const dtOnNewLogListener = () => writeModalLogger()
  2056. const dtConfigClickListener = () => {
  2057. const user = dtGetUsername()
  2058. const pass = dtGetPassword()
  2059. const value = areaCarrierSelector()
  2060. CarrierTextValue.html(value)
  2061. inputUser.attr({
  2062. placeholder: inputUserPlaceholder(),
  2063. value: inputUserValue(),
  2064. })
  2065. inputPassword.attr({
  2066. placeholder: inputPasswordPlaceholder(),
  2067. value: inputPasswordValue(),
  2068. })
  2069. inputUUID.attr({
  2070. value: inputUUIDValue(),
  2071. placeholder: inputUUIDPlaceholder(),
  2072. })
  2073. toggleInput()
  2074. }
  2075. const dtCheckUserModelListener = (model) => {
  2076. dataCheckuser = model
  2077. writeMainCheckuser(dataCheckuser)
  2078. writeProfileCheckuser(dataCheckuser)
  2079. loadingContainer.toggleClass("show")
  2080. mainCheckuser.addClass("show")
  2081. }
  2082. const dtCheckUserStartedListener = () => {
  2083. loadingContainer.addClass("show")
  2084. }
  2085. const dtMessageErrorListener = (model) => writeModalError(model)
  2086. </script>
  2087. <!-- HELPERS -->
  2088. <script>
  2089. const createSvgIcon = (iconPath, Class = "") => {
  2090. const svg = document.createElementNS(
  2091. "http://www.w3.org/2000/svg",
  2092. "svg"
  2093. )
  2094. svg.setAttribute("xmlns", "http://www.w3.org/2000/svg")
  2095. svg.setAttribute("width", "16")
  2096. svg.setAttribute("height", "16")
  2097. svg.setAttribute("fill", "currentColor")
  2098. svg.setAttribute("viewBox", "0 0 16 16")
  2099. svg.setAttribute("class", Class)
  2100. const path = document.createElementNS(
  2101. "http://www.w3.org/2000/svg",
  2102. "path"
  2103. )
  2104. path.setAttribute("d", iconPath)
  2105. svg.appendChild(path)
  2106. return svg
  2107. }
  2108. const createListItem = (iconPath, Class = "", text) => {
  2109. const li = document.createElement("li")
  2110. const svg = createSvgIcon(iconPath, Class)
  2111. const span = document.createElement("span")
  2112. span.setAttribute("class", Class)
  2113. span.innerHTML = text
  2114. li.appendChild(svg)
  2115. li.appendChild(span)
  2116. return li
  2117. }
  2118. </script>
  2119. <!-- FUNÇÕES DO LAYOUT -->
  2120. <script>
  2121. const vpnState = (state) => {
  2122. const stateLabel = state || dtVpnState()
  2123. switch (stateLabel) {
  2124. case "DISCONNECTED":
  2125. writeStartStopVpnButton(dtTranslateText("LBL_BTN_START"))
  2126. return disconnected()
  2127. case "CONNECTING":
  2128. writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
  2129. return connecting()
  2130. case "CONNECTED":
  2131. writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
  2132. return connected()
  2133. case "STOPPING":
  2134. writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOPPING"))
  2135. return stopping()
  2136. case "NO_NETWORK":
  2137. writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
  2138. return noNetwork()
  2139. case "AUTH":
  2140. writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
  2141. return auth()
  2142. case "AUTH_FAILED":
  2143. writeStartStopVpnButton(dtTranslateText("LBL_BTN_STOP"))
  2144. return authFailed()
  2145. default:
  2146. return "Não foi possível obter o status da conexão"
  2147. }
  2148. }
  2149. const writeNetworkStatus = () => {
  2150. let span = "<span>Localizando rede...</span>"
  2151. setInterval(() => {
  2152. if (dtGetNetworkName() && dtGetNetworkLocalIp()) {
  2153. const carrierName = `${dtGetNetworkName()}`
  2154. const localIP = `${dtGetNetworkLocalIp()}`
  2155. span = `<span>${carrierName}: ${localIP}</span>`
  2156. networkStatus.html(span)
  2157. } else {
  2158. span = `<span>Não foi possível carregar informações da rede</span>`
  2159. }
  2160. }, 500)
  2161. return span
  2162. }
  2163. const allConfigs = () => {
  2164. const ListContainer = document.querySelector("section.list-container")
  2165. ListContainer.innerHTML = ""
  2166. const configs = JSON.parse(dtAllConfigs())
  2167. configs.sort((a, b) => a.sorter - b.sorter)
  2168. configs.forEach((item) =>
  2169. item.items.sort((a, b) => a.sorter - b.sorter)
  2170. )
  2171. configs.forEach((category) => {
  2172. const defaultColor = category.color
  2173. const categoryColor = `#${defaultColor.substr(
  2174. 3
  2175. )}${defaultColor.substr(1, 2)}`
  2176. document.documentElement.style.setProperty(
  2177. "--cor-de-fundo-do-header-da-categoria",
  2178. categoryColor
  2179. )
  2180. document.documentElement.style.setProperty(
  2181. "--cor-de-fundo-do-item-da-configuracao",
  2182. categoryColor
  2183. )
  2184. const div = document.createElement("div")
  2185. const header = document.createElement("header")
  2186. const h1 = document.createElement("h1")
  2187. const svg = document.createElementNS(
  2188. "http://www.w3.org/2000/svg",
  2189. "svg"
  2190. )
  2191. const path = document.createElementNS(
  2192. "http://www.w3.org/2000/svg",
  2193. "path"
  2194. )
  2195. const ul = document.createElement("ul")
  2196. div.classList.add("category")
  2197. ul.classList.add("configs")
  2198. h1.textContent = category.name
  2199. svg.setAttribute("xmlns", "http://www.w3.org/2000/svg")
  2200. svg.setAttribute("width", "16")
  2201. svg.setAttribute("height", "16")
  2202. svg.setAttribute("fill", "currentColor")
  2203. svg.setAttribute("class", "bi bi-caret-right")
  2204. svg.setAttribute("viewBox", "0 0 16 16")
  2205. path.setAttribute(
  2206. "d",
  2207. "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"
  2208. )
  2209. svg.appendChild(path)
  2210. header.appendChild(h1)
  2211. header.appendChild(svg)
  2212. div.appendChild(header)
  2213. category.items.forEach((item) => {
  2214. const li = document.createElement("li")
  2215. const img = document.createElement("img")
  2216. const h1Item = document.createElement("h1")
  2217. const pItem = document.createElement("p")
  2218. const pMode = document.createElement("p")
  2219. const divLogo = document.createElement("div")
  2220. const divDescription = document.createElement("div")
  2221. const divMode = document.createElement("div")
  2222. divLogo.classList.add("logo")
  2223. divDescription.classList.add("description")
  2224. divMode.classList.add("mode")
  2225. h1Item.textContent = item.name
  2226. pItem.textContent = item.description
  2227. pMode.textContent = item.mode
  2228. img.setAttribute("src", item.icon)
  2229. divLogo.appendChild(img)
  2230. divDescription.appendChild(h1Item)
  2231. divDescription.appendChild(pItem)
  2232. divMode.appendChild(pMode)
  2233. li.appendChild(divLogo)
  2234. li.appendChild(divDescription)
  2235. li.appendChild(divMode)
  2236. ul.appendChild(li)
  2237. div.appendChild(ul)
  2238. li.addEventListener("click", () => {
  2239. dtSetConfig(item.id)
  2240. listOfCarriers.toggleClass("active")
  2241. })
  2242. })
  2243. header.addEventListener("click", () => {
  2244. if (ul.offsetHeight <= 0) {
  2245. ul.style.maxHeight = `${ul.scrollHeight}px`
  2246. svg.style.transform = "rotate(90deg)"
  2247. } else {
  2248. ul.style.maxHeight = "0px"
  2249. svg.style.transform = "rotate(0deg)"
  2250. }
  2251. })
  2252. ListContainer.appendChild(div)
  2253. })
  2254. }
  2255. const showPassword = () => {
  2256. const inputPassword = document.querySelector("#inputPassword")
  2257. if (inputPassword.type === "password") {
  2258. inputPassword.type = "text"
  2259. eyeHidden.toggleClass(".eye-none").style({ display: "none" })
  2260. eyeShow.style({ display: "block" })
  2261. } else {
  2262. inputPassword.type = "password"
  2263. eyeShow.toggleClass(".eye-none").style({ display: "none" })
  2264. eyeHidden.toggleClass(".eye-none").style({ display: "block" })
  2265. }
  2266. }
  2267. const startStopVpn = () => {
  2268. const state = dtVpnState()
  2269. state === "CONNECTED" ? dtStopVpn() : dtStartVpn()
  2270. }
  2271. const writeStartStopVpnButton = (status) => {
  2272. buttonStartStopVpnValue.html(status)
  2273. }
  2274. const writeMainCheckuser = (model) => {
  2275. const data = JSON.parse(model)
  2276. const ul = document.querySelector(
  2277. "section.main-checkuser section.container-content-checkuser ul"
  2278. )
  2279. const username = createListItem(
  2280. "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",
  2281. "",
  2282. `NOME DE USUÁRIO: ${data.username}`
  2283. )
  2284. const expiration = createListItem(
  2285. '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',
  2286. "",
  2287. `EXPIRAÇÃO: ${data.expiration_date}`
  2288. )
  2289. const remainingDays = createListItem(
  2290. "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",
  2291. "",
  2292. `DIAS RESTANTES: ${data.expiration_days}`
  2293. )
  2294. const connecteds = createListItem(
  2295. "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",
  2296. "",
  2297. `CONECTADOS: ${data.count_connections}/${data.limit_connections}`
  2298. )
  2299. ul.innerHTML =
  2300. username.outerHTML +
  2301. expiration.outerHTML +
  2302. remainingDays.outerHTML +
  2303. connecteds.outerHTML
  2304. }
  2305. const showProfile = (model) => {
  2306. hiddenAll()
  2307. const data = model
  2308. const main = document.querySelector("section.profile-checkuser")
  2309. const zIndexMain = window
  2310. .getComputedStyle(main)
  2311. .getPropertyValue("z-index")
  2312. if (data !== undefined) {
  2313. notViewUser.removeClass("show")
  2314. viewUser.addClass("show")
  2315. mainProfile.addClass("show")
  2316. } else {
  2317. viewUser.removeClass("show")
  2318. notViewUser.addClass("show")
  2319. mainProfile.addClass("show")
  2320. }
  2321. }
  2322. const hiddenProfile = () => {
  2323. mainProfile.removeClass("show")
  2324. mainProfile.style({ "z-index": 0 })
  2325. }
  2326. const writeProfileCheckuser = (model) => {
  2327. const data = JSON.parse(model)
  2328. const username = createListItem(
  2329. "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",
  2330. "",
  2331. `NOME DE USUÁRIO: ${data.username}`
  2332. )
  2333. const expiration = createListItem(
  2334. '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',
  2335. "even",
  2336. `EXPIRAÇÃO: ${data.expiration_date}`
  2337. )
  2338. const remainingDays = createListItem(
  2339. "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",
  2340. "",
  2341. `DIAS RESTANTES: ${data.expiration_days}`
  2342. )
  2343. const connecteds = createListItem(
  2344. "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",
  2345. "even",
  2346. `CONECTADOS: ${data.count_connections}/${data.limit_connections}`
  2347. )
  2348. viewUser.html(
  2349. username.outerHTML +
  2350. expiration.outerHTML +
  2351. remainingDays.outerHTML +
  2352. connecteds.outerHTML
  2353. )
  2354. }
  2355. const hiddenLoadContainer = () => {
  2356. loadingContainer.removeClass("show")
  2357. }
  2358. const showMainTools = () => {
  2359. hiddenAll()
  2360. MainTools.style({ "z-index": 1 })
  2361. MainTools.addClass("show")
  2362. }
  2363. const hiddenMainTools = () => {
  2364. MainTools.style({ "z-index": 0 })
  2365. MainTools.removeClass("show")
  2366. }
  2367. const showModalSpeedtest = () => {
  2368. ModalSpeedtest.addClass("show")
  2369. IframeModalSpeedtest.attr({ src: "https://fast.com/pt/" })
  2370. }
  2371. const hiddenModalSpeedtest = () => {
  2372. ModalSpeedtest.removeClass("show")
  2373. IframeModalSpeedtest.attr({ src: "" })
  2374. }
  2375. const writeModalError = (model) => {
  2376. const data = JSON.parse(model)
  2377. const h1 = `<h1>${data.title}</h1>`
  2378. const p = `<p>${data.content}</p>`
  2379. ContentModalError.html(h1 + p)
  2380. hiddenAll()
  2381. showModalError()
  2382. }
  2383. const showModalError = () => {
  2384. ModalError.addClass("show")
  2385. }
  2386. const hiddenModalError = () => {
  2387. ModalError.removeClass("show")
  2388. }
  2389. const writeModalLogger = () => {
  2390. const data = JSON.parse(dtGetLogs())
  2391. const p = document.querySelector("section.modal-logs p")
  2392. let content = ""
  2393. data.forEach((item) => {
  2394. content += `${Object.keys(item)} ${item[Object.keys(item)]} <br>`
  2395. })
  2396. ModalLoggerContent.html(content)
  2397. p.scrollTop = p.scrollHeight
  2398. return content
  2399. }
  2400. const showModalLogger = () => {
  2401. ModalLogger.addClass("show")
  2402. }
  2403. const hiddenModalRegister = () => {
  2404. ModalLogger.removeClass("show")
  2405. }
  2406. const showRenew = () => {
  2407. hiddenAll()
  2408. MainRenew.addClass("show")
  2409. }
  2410. const hiddenRenew = () => {
  2411. MainRenew.removeClass("show")
  2412. }
  2413. const hiddenAll = () => {
  2414. hiddenProfile()
  2415. hiddenMainTools()
  2416. hiddenModalSpeedtest()
  2417. hiddenModalError()
  2418. hiddenModalRegister()
  2419. hiddenRenew()
  2420. }
  2421. </script>
  2422. <!-- ESTADOS DE CONEXÃO -->
  2423. <script>
  2424. const disconnected = () => {
  2425. 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>`
  2426. const text = `<span>${dtTranslateText("LBL_STATE_DISCONNECTED")}</span>`
  2427. return icon + text
  2428. }
  2429. const connecting = () => {
  2430. 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>`
  2431. const text = `<span>${dtTranslateText("LBL_STATE_CONNECTING")}</span>`
  2432. return icon + text
  2433. }
  2434. const connected = () => {
  2435. 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>`
  2436. const text = `<span>${dtTranslateText("LBL_STATE_CONNECTED")}</span>`
  2437. return icon + text
  2438. }
  2439. const stopping = () => {
  2440. 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>`
  2441. const text = `<span>${dtTranslateText("LBL_STATE_STOPPING")}</span>`
  2442. return icon + text
  2443. }
  2444. const noNetwork = () => {
  2445. 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>`
  2446. const text = `<span>${dtTranslateText("LBL_STATE_NO_NETWORK")}</span>`
  2447. return icon + text
  2448. }
  2449. const auth = () => {
  2450. 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>`
  2451. const text = `<span>${dtTranslateText("LBL_STATE_AUTH")}</span>`
  2452. return icon + text
  2453. }
  2454. const authFailed = () => {
  2455. 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>`
  2456. const text = `<span>${dtTranslateText("LBL_STATE_AUTH_FAILED")}</span>`
  2457. return icon + text
  2458. }
  2459. </script>
  2460. <!-- VALOR DE EXIBIÇÃO DO CAMPO DE SELECIONAR OPERADORA -->
  2461. <script>
  2462. const areaCarrierSelector = () => {
  2463. const data = dtGetDefaultConfig()
  2464. if (data !== undefined) {
  2465. return JSON.parse(data).name
  2466. } else {
  2467. return dtTranslateText("LBL_CHOOSE_CONFIG")
  2468. }
  2469. }
  2470. </script>
  2471. <!-- VALOR DE EXIBIÇÃO DO INPUT USUÁRIO DO USUÁRIO -->
  2472. <script>
  2473. const inputUserPlaceholder = () => dtTranslateText("LBL_USERNAME")
  2474. const inputUserValue = () => {
  2475. if (dtGetUsername()) {
  2476. return dtGetUsername()
  2477. } else {
  2478. return ""
  2479. }
  2480. }
  2481. </script>
  2482. <!-- VALOR DE EXIBIÇÃO DO INPUT DA SENHA DO USUÁRIO -->
  2483. <script>
  2484. const inputPasswordPlaceholder = () => dtTranslateText("LBL_PASSWORD")
  2485. const inputPasswordValue = () => {
  2486. if (dtGetPassword()) {
  2487. return dtGetPassword()
  2488. } else {
  2489. return ""
  2490. }
  2491. }
  2492. </script>
  2493. <!-- VALOR DE EXIBIÇÃO DO INPUT DA SENHA DO USUÁRIO -->
  2494. <script>
  2495. const inputUUIDPlaceholder = () => dtTranslateText("LBL_UUID")
  2496. const inputUUIDValue = () => {
  2497. if (dtGetUUID()) {
  2498. return dtGetUUID()
  2499. } else {
  2500. return ""
  2501. }
  2502. }
  2503. </script>
  2504. <!-- DOM WRAPPER -->
  2505. <script>
  2506. const Dom = (selector) => {
  2507. const _elements = document.querySelectorAll(selector)
  2508. const wrapper = {
  2509. on(listeners) {
  2510. for (const [event, listener] of Object.entries(listeners)) {
  2511. _elements.forEach((element) => {
  2512. element.addEventListener(event, listener)
  2513. })
  2514. }
  2515. return wrapper
  2516. },
  2517. addClass: (...tokens) => {
  2518. _elements.forEach((element) => {
  2519. element.classList.add(...tokens)
  2520. })
  2521. return wrapper
  2522. },
  2523. removeClass: (...tokens) => {
  2524. _elements.forEach((element) => {
  2525. element.classList.remove(...tokens)
  2526. })
  2527. return wrapper
  2528. },
  2529. toggleClass: (token, force) => {
  2530. _elements.forEach((element) => {
  2531. element.classList.toggle(token, force)
  2532. })
  2533. return wrapper
  2534. },
  2535. style(styles) {
  2536. for (const [property, value] of Object.entries(styles)) {
  2537. console.log(value)
  2538. _elements.forEach((element) => {
  2539. element.style[property] = value
  2540. })
  2541. }
  2542. return wrapper
  2543. },
  2544. attr(attrs) {
  2545. for (const [name, value] of Object.entries(attrs)) {
  2546. _elements.forEach((element) => element.setAttribute(name, value))
  2547. }
  2548. return wrapper
  2549. },
  2550. html(value) {
  2551. _elements.forEach((element) => (element.innerHTML = value))
  2552. return wrapper
  2553. },
  2554. }
  2555. return wrapper
  2556. }
  2557. </script>
  2558. <!-- VÁRIAVIES -->
  2559. <script>
  2560. const main = Dom("main")
  2561. const vpnStatus = Dom("section.vpnStatus")
  2562. const networkStatus = Dom("section.local-ip")
  2563. const carrierSelector = Dom("div.carrierSelector")
  2564. const listOfCarriers = Dom("section.listOfCarriers")
  2565. const closeModalCarriers = Dom("#close-modal-configs")
  2566. const CarrierCategoryContainer = Dom("section.list-container")
  2567. const CarrierTextValue = Dom("div.carrierSelector span")
  2568. const buttonControl = Dom("section.controls")
  2569. const refreshButton = Dom("#refresh-button")
  2570. const renewButton = Dom("#renew")
  2571. const backToHome = Dom("#backToHome")
  2572. const ToolsButton = Dom("#utilitys")
  2573. const profileButton = Dom("#profile-button")
  2574. const ContainerInputUser = Dom("#container-user-input")
  2575. const ContainerInputPassword = Dom("#container-password-input")
  2576. const ContainerInputUUID = Dom("#container-uuid-input")
  2577. const inputUser = Dom("#inputUser")
  2578. const inputPassword = Dom("#inputPassword")
  2579. const inputUUID = Dom("#uuid-input")
  2580. const buttonStartStopVpn = Dom("#startStopVpn")
  2581. const buttonLogs = Dom("#buttonLogs")
  2582. const buttonStartStopVpnValue = Dom("#startStopVpnButtonValue")
  2583. const mainCheckuser = Dom("section.main-checkuser")
  2584. const mainCheckuserClose = Dom("section.main-checkuser header svg")
  2585. const mainCheckuserContent = Dom(
  2586. "section.main-checkuser section.container-content-checkuser"
  2587. )
  2588. const loadingContainer = Dom("section.loading")
  2589. const loadingContainerClose = Dom("section.loading header svg")
  2590. const mainProfile = Dom("section.profile-checkuser")
  2591. const notViewUser = Dom("#not-profile-user")
  2592. const viewUser = Dom("#list-profile")
  2593. const MainTools = Dom("section.tools")
  2594. const ConfigApnButton = Dom("#config-apn")
  2595. const BatteryOptimizeButton = Dom("#battery-optimization")
  2596. const SpeedtestButton = Dom("#speedtest")
  2597. const ClearDataAppButton = Dom("#clean-data-app")
  2598. const MainRenew = Dom("section.renew-window")
  2599. const ModalSpeedtest = Dom("section.modal-speedtest")
  2600. const CloseModalSpeedtest = Dom("section.modal-speedtest header svg")
  2601. const IframeModalSpeedtest = Dom("section.modal-speedtest section iframe")
  2602. const ModalError = Dom("section.modal-error-alert")
  2603. const CloseModalError = Dom("section.modal-error-alert header svg")
  2604. const ContentModalError = Dom("section.modal-error-alert section")
  2605. const ModalLogger = Dom("section.modal-logs")
  2606. const CloseModalLogger = Dom("#hidden-modal-logs")
  2607. const ModalLoggerContent = Dom("section.modal-logs p")
  2608. const CleanLoggerContent = Dom("#clean-data-logs")
  2609. const eyeHidden = Dom("svg.eye-hidden")
  2610. const eyeShow = Dom("svg.eye-show")
  2611. const ButtonRenew = Dom("#renew_acess")
  2612. </script>
  2613. <!-- AÇÕES -->
  2614. <script>
  2615. main.style({ padding: `${dtStatusBarHeight() + 100}px 0px 0px 0px` })
  2616. mainProfile.style({
  2617. padding: `${dtStatusBarHeight() + 10}px 0px ${
  2618. dtNavHeight() + 90
  2619. }px 0px`,
  2620. })
  2621. MainTools.style({
  2622. padding: `${dtStatusBarHeight() + 10}px 0px ${
  2623. dtNavHeight() + 90
  2624. }px 0px`,
  2625. })
  2626. MainRenew.style({
  2627. padding: `${dtStatusBarHeight() + 10}px 0px ${
  2628. dtNavHeight() + 90
  2629. }px 0px`,
  2630. })
  2631. ModalLogger.style({
  2632. top: `${dtStatusBarHeight() + 95}px`,
  2633. bottom: `${dtNavHeight() + 95}px`,
  2634. })
  2635. vpnStatus.html(vpnState())
  2636. networkStatus.html(writeNetworkStatus())
  2637. carrierSelector.on({
  2638. click: () => {
  2639. allConfigs()
  2640. listOfCarriers.toggleClass("active")
  2641. },
  2642. })
  2643. closeModalCarriers.on({
  2644. click: () => listOfCarriers.toggleClass("active"),
  2645. })
  2646. CarrierTextValue.html(areaCarrierSelector())
  2647. inputUser.on({ input: (e) => dtSetUsername(e.target.value) })
  2648. inputPassword.on({ input: (e) => dtSetPassword(e.target.value) })
  2649. inputUUID.on({ input: (e) => dtSetUUID(e.target.value) })
  2650. eyeHidden.on({ click: () => showPassword() })
  2651. eyeShow.on({ click: () => showPassword() })
  2652. inputUser.attr({
  2653. placeholder: inputUserPlaceholder(),
  2654. value: inputUserValue(),
  2655. })
  2656. inputPassword.attr({
  2657. placeholder: inputPasswordPlaceholder(),
  2658. value: inputPasswordValue(),
  2659. })
  2660. inputUUID.attr({
  2661. value: inputUUIDValue(),
  2662. placeholder: inputUUIDPlaceholder(),
  2663. })
  2664. buttonControl.style({ bottom: `${dtNavHeight() + 10}px` })
  2665. refreshButton.on({ click: () => dtUpdate() })
  2666. renewButton.on({ click: () => showRenew() })
  2667. backToHome.on({
  2668. click: () => {
  2669. hiddenAll()
  2670. },
  2671. })
  2672. ToolsButton.on({ click: () => showMainTools() })
  2673. profileButton.on({ click: () => showProfile(dataCheckuser) })
  2674. buttonStartStopVpn.on({ click: () => startStopVpn() })
  2675. buttonLogs.on({ click: () => showModalLogger() })
  2676. loadingContainerClose.on({ click: () => hiddenLoadContainer() })
  2677. mainCheckuserClose.on({ click: () => mainCheckuser.toggleClass("show") })
  2678. ConfigApnButton.on({ click: () => dtApnConfig() })
  2679. BatteryOptimizeButton.on({ click: () => DtStartWebViewActivity.execute('http://youtube.com')})
  2680. SpeedtestButton.on({ click: () => showModalSpeedtest() })
  2681. CloseModalSpeedtest.on({ click: () => hiddenModalSpeedtest() })
  2682. ClearDataAppButton.on({ click: () => dtCleanApp() })
  2683. ButtonRenew.on({click: () => DtStartWebViewActivity.execute('https://painel.space/renovar.php')})
  2684. CloseModalError.on({ click: () => hiddenModalError() })
  2685. ModalLoggerContent.html(writeModalLogger())
  2686. CleanLoggerContent.on({ click: () => dtClearLogs() })
  2687. CloseModalLogger.on({ click: () => hiddenModalRegister() })
  2688. const checkV2ray = () => {
  2689. const data = JSON.parse(dtGetDefaultConfig())
  2690. const isV2ray = data?.mode?.toLowerCase()?.startsWith("v2ray")
  2691. if (!dtGetDefaultConfig()) {
  2692. return false
  2693. } else if (isV2ray && data?.auth?.v2ray_uuid) {
  2694. return "have_uuid"
  2695. } else if (isV2ray && !data?.auth?.v2ray_uuid) {
  2696. return "not_have_uuid"
  2697. } else {
  2698. return false
  2699. }
  2700. }
  2701. const toggleInput = () => {
  2702. if (checkV2ray() === "not_have_uuid") {
  2703. ContainerInputUser.style({ display: "none" })
  2704. ContainerInputPassword.style({ display: "none" })
  2705. ContainerInputUUID.style({ display: "flex" })
  2706. } else if (checkV2ray() === "have_uuid") {
  2707. ContainerInputUser.style({ display: "none" })
  2708. ContainerInputPassword.style({ display: "none" })
  2709. ContainerInputUUID.style({ display: "none" })
  2710. } else {
  2711. ContainerInputUser.style({ display: "flex" })
  2712. ContainerInputPassword.style({ display: "flex" })
  2713. ContainerInputUUID.style({ display: "none" })
  2714. }
  2715. }
  2716. toggleInput()
  2717. </script>
  2718. </body>
  2719. </html>

comments powered by Disqus