1 import { c, msgid } from 'ttag';
3 import { PLANS } from '@proton/payments';
6 CALENDAR_SHORT_APP_NAME,
12 } from '@proton/shared/lib/constants';
13 import type { VPNServersCountData } from '@proton/shared/lib/interfaces';
14 import { Audience } from '@proton/shared/lib/interfaces';
15 import { getFreeServers, getPlusServers } from '@proton/shared/lib/vpn/features';
17 import type { PlanCardFeature, PlanCardFeatureDefinition } from './interface';
19 export const getB2BFreeVPNConnectionsText = (n: number) => {
20 return c('Subscription attribute').ngettext(
21 msgid`${n} free VPN connection per user`,
22 `${n} free VPN connections per user`,
27 export const getAdvancedVPNFeature = (): PlanCardFeatureDefinition => ({
28 icon: 'checkmark-circle',
30 text: c('new_plans: Upsell attribute').t`Access advanced VPN features`,
33 export const getB2BHighSpeedVPNConnectionsText = (n: number) => {
34 return c('Subscription attribute').ngettext(
35 msgid`${n} high-speed VPN connection per user`,
36 `${n} high-speed VPN connections per user`,
41 export const getB2BHighSpeedVPNConnectionsFeature = (): PlanCardFeatureDefinition => ({
42 icon: 'brand-proton-vpn',
43 text: getB2BHighSpeedVPNConnectionsText(VPN_CONNECTIONS),
47 export const getB2BVPNConnectionsText = (n: number) => {
48 return c('Subscription attribute').ngettext(
49 msgid`${n} VPN connection per user`,
50 `${n} VPN connections per user`,
55 export const getHighSpeedVPNConnectionsText = (n: number) => {
56 return c('Subscription attribute').ngettext(
57 msgid`${n} high-speed VPN connection`,
58 `${n} high-speed VPN connections`,
63 export const getHighSpeedVPNConnectionsFeature = (n: number = VPN_CONNECTIONS): PlanCardFeatureDefinition => ({
64 icon: 'brand-proton-vpn',
65 text: getHighSpeedVPNConnectionsText(n),
69 export const getVPNConnectionsText = (n: number) => {
70 return c('Subscription attribute').ngettext(msgid`${n} VPN connection`, `${n} VPN connections`, n);
73 export const getVPNConnectionsFeature = (n: number = VPN_CONNECTIONS): PlanCardFeatureDefinition => ({
74 icon: 'brand-proton-vpn',
75 text: getVPNConnectionsText(n),
79 export const getB2BHighSpeedVPNConnections = (): PlanCardFeatureDefinition => {
81 text: getB2BHighSpeedVPNConnectionsText(VPN_CONNECTIONS),
83 icon: 'brand-proton-vpn',
87 export const getVPNAppFeature = ({
92 serversCount: VPNServersCountData;
95 }): PlanCardFeatureDefinition => {
96 const serversAndCountries = getPlusServers(serversCount.paid.servers, serversCount.paid.countries);
97 let tooltip = c('new_plans: tooltip')
98 .t`${VPN_APP_NAME}: Access blocked content and browse privately. Includes ${serversAndCountries}, highest VPN speeds, access to worldwide streaming services, malware and ad-blocker, fast BitTorrent downloads, and more.`;
101 tooltip = c('new_plans: tooltip')
102 .t`Protect your family from harmful websites and access our high-speed VPN servers to stream your favorite content`;
109 icon: 'brand-proton-vpn',
113 export const getCountries = (text: string, highlight?: boolean): PlanCardFeatureDefinition => {
122 export const getVPNSpeed = (type: 'medium' | 'highest', highlight?: boolean): PlanCardFeatureDefinition => {
124 text: type === 'medium' ? c('new_plans').t`Medium VPN speed` : c('new_plans').t`Highest VPN speed`,
127 icon: 'chevrons-right',
131 export const getStreaming = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
133 text: c('new_plans: feature').t`High-speed streaming`,
134 tooltip: c('new_plans: tooltip')
135 .t`Access content on streaming services, including Netflix, Disney+, and Prime Video, from anywhere`,
142 export const getP2P = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
144 text: c('new_plans: feature').t`Fast P2P/BitTorrent downloads`,
145 tooltip: c('new_plans: tooltip').t`Support for file-sharing protocols like BitTorrent`,
148 icon: 'arrows-switch',
152 export const getAdvancedVPNCustomizations = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
154 text: c('vpn_2step: feature').t`Advanced VPN customizations`,
155 tooltip: c('vpn_2step: tooltip')
156 .t`Access to Secure Core servers, fast P2P/BitTorrent downloads, Tor over VPN, and more.`,
159 icon: 'arrows-switch',
163 export const getDoubleHop = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
165 text: c('new_plans: feature').t`Double hop`,
166 tooltip: c('new_plans: tooltip')
167 .t`Defends against the threat to VPN privacy by passing your internet traffic through multiple servers.`,
170 icon: 'arrows-switch',
174 export const getNetShield = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
176 text: c('new_plans: feature').t`Ad-blocker and malware protection`,
177 tooltip: c('new_plans: tooltip')
178 .t`Specially designed NetShield protects your device and speeds up your browsing by blocking ads, trackers, and malware`,
184 export const getSecureCore = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
186 text: c('new_plans: feature').t`Secure Core servers`,
187 tooltip: c('new_plans: tooltip')
188 .t`Defends against the threat to VPN privacy by passing your internet traffic through multiple servers`,
194 export const getTor = (included: boolean, highlight?: boolean): PlanCardFeatureDefinition => {
196 text: c('new_plans: feature').t`TOR over VPN`,
197 tooltip: c('new_plans: tooltip').t`Route your internet traffic through the Tor network with a single click`,
204 const getVPNConnectionsB2B = (n = 0, highlight?: boolean): PlanCardFeatureDefinition => {
206 text: n === 1 ? getB2BFreeVPNConnectionsText(1) : getB2BHighSpeedVPNConnectionsText(n),
207 tooltip: c('new_plans: tooltip')
208 .t`One VPN connection allows one device to connect to ${VPN_APP_NAME} at any given time. For instance, to connect a phone and a laptop to ${VPN_APP_NAME} at the same time, you need two VPN connections.`,
211 icon: 'brand-proton-vpn',
215 export const getVPNConnections = (n = 0, highlight?: boolean): PlanCardFeatureDefinition => {
217 text: c('new_plans: feature').ngettext(msgid`${n} VPN connection`, `${n} VPN connections`, n),
220 icon: 'brand-proton-vpn',
223 export const getProtectDevices = (n = 0, highlight?: boolean): PlanCardFeatureDefinition => {
225 text: c('new_plans: feature').ngettext(
226 msgid`Protect ${n} device at a time`,
227 `Protect ${n} devices at a time`,
232 icon: 'brand-proton-vpn',
235 export const getNoLogs = (highlight?: boolean): PlanCardFeatureDefinition => {
237 text: c('new_plans: feature').t`Strict no-logs policy`,
238 tooltip: c('new_plans: tooltip')
239 .t`We keep no session usage logs of what you do online, and we do not log metadata that can compromise your privacy`,
245 export const getBandwidth = (): PlanCardFeatureDefinition => {
247 text: c('new_plans: feature').t`Unlimited volume/bandwidth`,
252 export const getNoAds = (): PlanCardFeatureDefinition => {
254 text: c('vpn_2step: feature').t`No ads`,
258 const getDNSLeak = (): PlanCardFeatureDefinition => {
260 text: c('new_plans: feature').t`DNS leak prevention`,
261 tooltip: c('new_plans: tooltip')
262 .t`When connected to our VPN, your DNS queries through our encrypted VPN tunnel, adding to your online privacy and security`,
266 export const getKillSwitch = (): PlanCardFeatureDefinition => {
268 text: c('new_plans: feature').t`Kill switch/always-on VPN`,
269 tooltip: c('new_plans: tooltip')
270 .t`Keeps you protected by blocking all network connections when you are unexpectedly disconnected from our VPN server.`,
274 const getEncryption = (): PlanCardFeatureDefinition => {
276 text: c('new_plans: feature').t`Encrypted VPN servers`,
277 tooltip: c('new_plans: tooltip')
278 .t`Our servers’ hard disks are fully encrypted with multiple password layers so your data is protected even if our hardware is compromised`,
282 const getRouterSupport = (): PlanCardFeatureDefinition => {
284 text: c('new_plans: feature').t`Router support`,
285 tooltip: c('new_plans: tooltip')
286 .t`Protect every device connected to your WiFi network. It’s also useful if you have devices that do not support VPN settings directly.`,
290 export const getPrioritySupport = (): PlanCardFeatureDefinition => {
292 text: c('new_plans: feature').t`Priority support & live chat`,
298 export const getFreeFeatures = (): PlanCardFeatureDefinition => {
300 text: c('new_plans: feature')
301 .t`Free features from ${BRAND_NAME} ${MAIL_SHORT_APP_NAME}, ${CALENDAR_SHORT_APP_NAME}, and ${DRIVE_SHORT_APP_NAME}`,
306 export const getAllPlatforms = (): PlanCardFeatureDefinition => {
308 text: c('new_plans: feature').t`Available on all platforms`,
313 export const getRefundable = (): PlanCardFeatureDefinition => {
315 text: c('new_plans: feature').t`Fully refundable for 30 days`,
320 const getSplitTunnel = (included: boolean): PlanCardFeatureDefinition => {
322 text: c('new_plans: feature').t`Split tunneling (Android and Windows)`,
323 tooltip: c('new_plans: tooltip')
324 .t`Allows you to access more than one network at the same time, e.g., stream a film from another country while still getting local search results`,
328 export const getVPNDevices = (n: number): PlanCardFeatureDefinition => {
331 text: c('new_plans: feature').t`Free VPN on a single device`,
332 tooltip: c('new_plans: tooltip')
333 .t`Allows you to access more than one network at the same time, e.g., stream a film from another country while still getting local search results`,
338 text: c('new_plans: feature').ngettext(
339 msgid`High-speed VPN on ${n} device`,
340 `High-speed VPN on ${n} devices`,
347 export const getDedicatedServersVPNFeature = (serversCount?: VPNServersCountData): PlanCardFeatureDefinition => {
350 if (serversCount === undefined) {
351 text = c('new_plans: Upsell attribute').t`Dedicated server locations in North America and Europe`;
353 const numberOfCountries = serversCount.paid.countries;
354 text = c('new_plans: Upsell attribute').t`Dedicated server locations in ${numberOfCountries}+ countries`;
361 tooltip: c('new_plans: tooltip')
362 .t`Dedicated servers with dedicated IP addresses can be added to private gateways to enable fine-tuned access control`,
366 export const getDedicatedAccountManagerVPNFeature = (): PlanCardFeatureDefinition => ({
369 text: c('new_plans: Upsell attribute').t`Dedicated Account manager`,
372 export const getAESEncryptionVPNFeature = (): PlanCardFeatureDefinition => ({
375 text: c('new_plans: Upsell attribute').t`AES 256-bit VPN encryption`,
378 export const getCensorshipCircumventionVPNFeature = (): PlanCardFeatureDefinition => ({
381 text: c('new_plans: Upsell attribute').t`Censorship circumvention`,
384 export const getCentralControlPanelVPNFeature = (): PlanCardFeatureDefinition => ({
387 text: c('new_plans: Upsell attribute').t`Central control panel`,
390 export const getAutoConnectVPNFeature = (): PlanCardFeatureDefinition => ({
393 text: c('new_plans: Upsell attribute').t`Auto-connect`,
396 export const getMultiPlatformSupportVPNFeature = (): PlanCardFeatureDefinition => ({
399 text: c('new_plans: Upsell attribute').t`Multi-platform support`,
402 export const get24x7SupportVPNFeature = (): PlanCardFeatureDefinition => ({
405 text: c('new_plans: Upsell attribute').t`24/7 support`,
408 export const getRequire2FAVPNFeature = (): PlanCardFeatureDefinition => ({
411 text: c('new_plans: Upsell attribute').t`Require 2FA`,
414 export const getBrowserExtensionVPNFeature = (): PlanCardFeatureDefinition => ({
417 text: c('new_plans: Upsell attribute').t`Browser extension`,
420 export const getPrivateGatewaysVPNFeature = (): PlanCardFeatureDefinition => ({
423 text: c('new_plans: Upsell attribute').t`Private gateways`,
424 tooltip: c('new_plans: tooltip')
425 .t`Lock down your company resources from the public internet and make them accessible only via your private gateways`,
428 export const getVPNFeatures = (serversCount: VPNServersCountData): PlanCardFeature[] => {
429 const freeServers = getFreeServers(serversCount.free.servers, serversCount.free.countries);
430 const plusServers = getPlusServers(serversCount.paid.servers, serversCount.paid.countries);
434 target: Audience.B2C,
436 [PLANS.FREE]: getVPNConnections(FREE_VPN_CONNECTIONS),
437 [PLANS.BUNDLE]: getVPNConnections(VPN_CONNECTIONS),
438 [PLANS.MAIL]: getVPNConnections(FREE_VPN_CONNECTIONS),
439 [PLANS.VPN]: getVPNConnections(VPN_CONNECTIONS),
440 [PLANS.DRIVE]: getVPNConnections(FREE_VPN_CONNECTIONS),
441 [PLANS.DRIVE_BUSINESS]: getVPNConnections(FREE_VPN_CONNECTIONS),
442 [PLANS.PASS]: getVPNConnections(FREE_VPN_CONNECTIONS),
443 [PLANS.PASS_FAMILY]: getVPNConnections(FREE_VPN_CONNECTIONS),
444 [PLANS.WALLET]: getVPNConnections(FREE_VPN_CONNECTIONS),
445 [PLANS.FAMILY]: getVPNConnections(VPN_CONNECTIONS),
446 [PLANS.DUO]: getVPNConnections(VPN_CONNECTIONS),
447 [PLANS.MAIL_PRO]: getVPNConnections(FREE_VPN_CONNECTIONS),
448 [PLANS.MAIL_BUSINESS]: getVPNConnections(FREE_VPN_CONNECTIONS),
449 [PLANS.BUNDLE_PRO]: getVPNConnections(VPN_CONNECTIONS),
450 [PLANS.BUNDLE_PRO_2024]: getVPNConnections(VPN_CONNECTIONS),
451 [PLANS.PASS_PRO]: getVPNConnections(FREE_VPN_CONNECTIONS),
452 [PLANS.PASS_BUSINESS]: getVPNConnections(FREE_VPN_CONNECTIONS),
453 [PLANS.VPN_PRO]: getVPNConnections(VPN_CONNECTIONS),
454 [PLANS.VPN_BUSINESS]: getVPNConnections(VPN_CONNECTIONS),
458 name: 'vpn-connections-per-user',
459 target: Audience.B2B,
461 [PLANS.FREE]: getVPNConnections(1),
462 [PLANS.BUNDLE]: getVPNConnectionsB2B(VPN_CONNECTIONS),
463 [PLANS.MAIL]: getVPNConnections(1),
464 [PLANS.VPN]: getVPNConnectionsB2B(VPN_CONNECTIONS),
465 [PLANS.DRIVE]: getVPNConnections(1),
466 [PLANS.DRIVE_BUSINESS]: getVPNConnections(1),
467 [PLANS.PASS]: getVPNConnections(1),
468 [PLANS.PASS_FAMILY]: getVPNConnections(1),
469 [PLANS.WALLET]: getVPNConnections(1),
470 [PLANS.FAMILY]: getVPNConnectionsB2B(1),
471 [PLANS.DUO]: getVPNConnectionsB2B(1),
472 [PLANS.MAIL_PRO]: getVPNConnectionsB2B(1),
473 [PLANS.MAIL_BUSINESS]: getVPNConnectionsB2B(1),
474 [PLANS.BUNDLE_PRO]: getVPNConnectionsB2B(VPN_CONNECTIONS),
475 [PLANS.BUNDLE_PRO_2024]: getVPNConnectionsB2B(VPN_CONNECTIONS),
476 [PLANS.PASS_PRO]: getVPNConnections(1),
477 [PLANS.PASS_BUSINESS]: getVPNConnections(1),
478 [PLANS.VPN_PRO]: getVPNConnectionsB2B(VPN_CONNECTIONS),
479 [PLANS.VPN_BUSINESS]: getVPNConnectionsB2B(VPN_CONNECTIONS),
483 name: 'vpn-connections-per-user-family',
484 target: Audience.FAMILY,
486 [PLANS.FREE]: getVPNConnections(1),
487 [PLANS.BUNDLE]: getVPNConnections(VPN_CONNECTIONS),
488 [PLANS.MAIL]: getVPNConnections(1),
489 [PLANS.VPN]: getVPNConnections(VPN_CONNECTIONS),
490 [PLANS.DRIVE]: getVPNConnections(1),
491 [PLANS.DRIVE_BUSINESS]: getVPNConnections(1),
492 [PLANS.PASS]: getVPNConnections(1),
493 [PLANS.PASS_FAMILY]: getVPNConnections(1),
494 [PLANS.WALLET]: getVPNConnections(1),
495 [PLANS.FAMILY]: getVPNConnectionsB2B(VPN_CONNECTIONS),
496 [PLANS.DUO]: getVPNConnectionsB2B(VPN_CONNECTIONS),
497 [PLANS.MAIL_PRO]: getVPNConnectionsB2B(1),
498 [PLANS.MAIL_BUSINESS]: getVPNConnectionsB2B(1),
499 [PLANS.BUNDLE_PRO]: getVPNConnectionsB2B(VPN_CONNECTIONS),
500 [PLANS.BUNDLE_PRO_2024]: getVPNConnectionsB2B(VPN_CONNECTIONS),
501 [PLANS.PASS_PRO]: getVPNConnections(1),
502 [PLANS.PASS_BUSINESS]: getVPNConnections(1),
503 [PLANS.VPN_PRO]: getVPNConnectionsB2B(VPN_CONNECTIONS),
504 [PLANS.VPN_BUSINESS]: getVPNConnectionsB2B(VPN_CONNECTIONS),
510 [PLANS.FREE]: getCountries(freeServers),
511 [PLANS.BUNDLE]: getCountries(plusServers),
512 [PLANS.MAIL]: getCountries(freeServers),
513 [PLANS.VPN]: getCountries(plusServers),
514 [PLANS.DRIVE]: getCountries(freeServers),
515 [PLANS.DRIVE_BUSINESS]: getCountries(freeServers),
516 [PLANS.PASS]: getCountries(freeServers),
517 [PLANS.PASS_FAMILY]: getCountries(freeServers),
518 [PLANS.WALLET]: getCountries(freeServers),
519 [PLANS.FAMILY]: getCountries(plusServers),
520 [PLANS.DUO]: getCountries(plusServers),
521 [PLANS.MAIL_PRO]: getCountries(freeServers),
522 [PLANS.MAIL_BUSINESS]: getCountries(freeServers),
523 [PLANS.BUNDLE_PRO]: getCountries(plusServers),
524 [PLANS.BUNDLE_PRO_2024]: getCountries(plusServers),
525 [PLANS.PASS_PRO]: getCountries(freeServers),
526 [PLANS.PASS_BUSINESS]: getCountries(freeServers),
527 [PLANS.VPN_PRO]: getCountries(plusServers),
528 [PLANS.VPN_BUSINESS]: getCountries(plusServers),
534 [PLANS.FREE]: getVPNSpeed('medium'),
535 [PLANS.BUNDLE]: getVPNSpeed('highest'),
536 [PLANS.MAIL]: getVPNSpeed('medium'),
537 [PLANS.VPN]: getVPNSpeed('highest'),
538 [PLANS.DRIVE]: getVPNSpeed('medium'),
539 [PLANS.DRIVE_BUSINESS]: getVPNSpeed('medium'),
540 [PLANS.PASS]: getVPNSpeed('medium'),
541 [PLANS.PASS_FAMILY]: getVPNSpeed('medium'),
542 [PLANS.WALLET]: getVPNSpeed('medium'),
543 [PLANS.FAMILY]: getVPNSpeed('highest'),
544 [PLANS.DUO]: getVPNSpeed('highest'),
545 [PLANS.MAIL_PRO]: getVPNSpeed('medium'),
546 [PLANS.MAIL_BUSINESS]: getVPNSpeed('medium'),
547 [PLANS.BUNDLE_PRO]: getVPNSpeed('highest'),
548 [PLANS.BUNDLE_PRO_2024]: getVPNSpeed('highest'),
549 [PLANS.PASS_PRO]: getVPNSpeed('medium'),
550 [PLANS.PASS_BUSINESS]: getVPNSpeed('medium'),
551 [PLANS.VPN_PRO]: getVPNSpeed('highest'),
552 [PLANS.VPN_BUSINESS]: getVPNSpeed('highest'),
558 [PLANS.FREE]: getNetShield(false),
559 [PLANS.BUNDLE]: getNetShield(true),
560 [PLANS.MAIL]: getNetShield(false),
561 [PLANS.VPN]: getNetShield(true),
562 [PLANS.DRIVE]: getNetShield(false),
563 [PLANS.DRIVE_BUSINESS]: getNetShield(false),
564 [PLANS.PASS]: getNetShield(false),
565 [PLANS.PASS_FAMILY]: getNetShield(false),
566 [PLANS.WALLET]: getNetShield(false),
567 [PLANS.FAMILY]: getNetShield(true),
568 [PLANS.DUO]: getNetShield(true),
569 [PLANS.MAIL_PRO]: getNetShield(false),
570 [PLANS.MAIL_BUSINESS]: getNetShield(false),
571 [PLANS.PASS_PRO]: getNetShield(false),
572 [PLANS.PASS_BUSINESS]: getNetShield(false),
573 [PLANS.BUNDLE_PRO]: getNetShield(true),
574 [PLANS.BUNDLE_PRO_2024]: getNetShield(true),
575 [PLANS.VPN_PRO]: getNetShield(true),
576 [PLANS.VPN_BUSINESS]: getNetShield(true),
582 [PLANS.FREE]: getStreaming(false),
583 [PLANS.BUNDLE]: getStreaming(true),
584 [PLANS.MAIL]: getStreaming(false),
585 [PLANS.VPN]: getStreaming(true),
586 [PLANS.DRIVE]: getStreaming(false),
587 [PLANS.DRIVE_BUSINESS]: getStreaming(false),
588 [PLANS.PASS]: getStreaming(false),
589 [PLANS.PASS_FAMILY]: getStreaming(false),
590 [PLANS.WALLET]: getStreaming(false),
591 [PLANS.FAMILY]: getStreaming(true),
592 [PLANS.DUO]: getStreaming(true),
593 [PLANS.MAIL_PRO]: getStreaming(false),
594 [PLANS.MAIL_BUSINESS]: getStreaming(false),
595 [PLANS.BUNDLE_PRO]: getStreaming(true),
596 [PLANS.BUNDLE_PRO_2024]: getStreaming(true),
597 [PLANS.PASS_PRO]: getStreaming(false),
598 [PLANS.PASS_BUSINESS]: getStreaming(false),
599 [PLANS.VPN_PRO]: getStreaming(true),
600 [PLANS.VPN_BUSINESS]: getStreaming(true),
606 [PLANS.FREE]: getP2P(false),
607 [PLANS.BUNDLE]: getP2P(true),
608 [PLANS.MAIL]: getP2P(false),
609 [PLANS.VPN]: getP2P(true),
610 [PLANS.DRIVE]: getP2P(false),
611 [PLANS.DRIVE_BUSINESS]: getP2P(false),
612 [PLANS.PASS]: getP2P(false),
613 [PLANS.PASS_FAMILY]: getP2P(false),
614 [PLANS.WALLET]: getP2P(false),
615 [PLANS.FAMILY]: getP2P(true),
616 [PLANS.DUO]: getP2P(true),
617 [PLANS.MAIL_PRO]: getP2P(false),
618 [PLANS.MAIL_BUSINESS]: getP2P(false),
619 [PLANS.BUNDLE_PRO]: getP2P(true),
620 [PLANS.BUNDLE_PRO_2024]: getP2P(true),
621 [PLANS.PASS_PRO]: getP2P(false),
622 [PLANS.PASS_BUSINESS]: getP2P(false),
623 [PLANS.VPN_PRO]: getP2P(true),
624 [PLANS.VPN_BUSINESS]: getP2P(true),
630 [PLANS.FREE]: getDoubleHop(false),
631 [PLANS.BUNDLE]: getDoubleHop(true, true),
632 [PLANS.MAIL]: getDoubleHop(false),
633 [PLANS.VPN]: getDoubleHop(true, true),
634 [PLANS.DRIVE]: getDoubleHop(false),
635 [PLANS.DRIVE_BUSINESS]: getDoubleHop(false),
636 [PLANS.PASS]: getDoubleHop(false),
637 [PLANS.PASS_FAMILY]: getDoubleHop(false),
638 [PLANS.WALLET]: getDoubleHop(false),
639 [PLANS.FAMILY]: getDoubleHop(true, true),
640 [PLANS.DUO]: getDoubleHop(true, true),
641 [PLANS.MAIL_PRO]: getDoubleHop(false),
642 [PLANS.MAIL_BUSINESS]: getDoubleHop(false),
643 [PLANS.BUNDLE_PRO]: getDoubleHop(true, true),
644 [PLANS.BUNDLE_PRO_2024]: getDoubleHop(true, true),
645 [PLANS.PASS_PRO]: getDoubleHop(false),
646 [PLANS.PASS_BUSINESS]: getDoubleHop(false),
647 [PLANS.VPN_PRO]: getDoubleHop(true, true),
648 [PLANS.VPN_BUSINESS]: getDoubleHop(true, true),
654 [PLANS.FREE]: getSecureCore(false),
655 [PLANS.BUNDLE]: getSecureCore(true),
656 [PLANS.MAIL]: getSecureCore(false),
657 [PLANS.VPN]: getSecureCore(true),
658 [PLANS.DRIVE]: getSecureCore(false),
659 [PLANS.DRIVE_BUSINESS]: getSecureCore(false),
660 [PLANS.PASS]: getSecureCore(false),
661 [PLANS.PASS_FAMILY]: getSecureCore(false),
662 [PLANS.WALLET]: getSecureCore(false),
663 [PLANS.FAMILY]: getSecureCore(true),
664 [PLANS.DUO]: getSecureCore(true),
665 [PLANS.MAIL_PRO]: getSecureCore(false),
666 [PLANS.MAIL_BUSINESS]: getSecureCore(false),
667 [PLANS.BUNDLE_PRO]: getSecureCore(true),
668 [PLANS.BUNDLE_PRO_2024]: getSecureCore(true),
669 [PLANS.PASS_PRO]: getSecureCore(false),
670 [PLANS.PASS_BUSINESS]: getSecureCore(false),
671 [PLANS.VPN_PRO]: getSecureCore(true),
672 [PLANS.VPN_BUSINESS]: getSecureCore(true),
678 [PLANS.FREE]: getTor(false),
679 [PLANS.BUNDLE]: getTor(true),
680 [PLANS.MAIL]: getTor(false),
681 [PLANS.VPN]: getTor(true),
682 [PLANS.DRIVE]: getTor(false),
683 [PLANS.DRIVE_BUSINESS]: getTor(false),
684 [PLANS.PASS]: getTor(false),
685 [PLANS.PASS_FAMILY]: getTor(false),
686 [PLANS.WALLET]: getTor(false),
687 [PLANS.FAMILY]: getTor(true),
688 [PLANS.DUO]: getTor(true),
689 [PLANS.MAIL_PRO]: getTor(false),
690 [PLANS.MAIL_BUSINESS]: getTor(false),
691 [PLANS.BUNDLE_PRO]: getTor(true),
692 [PLANS.BUNDLE_PRO_2024]: getTor(true),
693 [PLANS.PASS_PRO]: getTor(false),
694 [PLANS.PASS_BUSINESS]: getTor(false),
695 [PLANS.VPN_PRO]: getTor(true),
696 [PLANS.VPN_BUSINESS]: getTor(true),
702 [PLANS.FREE]: getNoLogs(),
703 [PLANS.BUNDLE]: getNoLogs(),
704 [PLANS.MAIL]: getNoLogs(),
705 [PLANS.VPN]: getNoLogs(),
706 [PLANS.DRIVE]: getNoLogs(),
707 [PLANS.DRIVE_BUSINESS]: getNoLogs(),
708 [PLANS.PASS]: getNoLogs(),
709 [PLANS.PASS_FAMILY]: getNoLogs(),
710 [PLANS.WALLET]: getNoLogs(),
711 [PLANS.FAMILY]: getNoLogs(),
712 [PLANS.DUO]: getNoLogs(),
713 [PLANS.MAIL_PRO]: getNoLogs(),
714 [PLANS.MAIL_BUSINESS]: getNoLogs(),
715 [PLANS.BUNDLE_PRO]: getNoLogs(),
716 [PLANS.BUNDLE_PRO_2024]: getNoLogs(),
717 [PLANS.PASS_PRO]: getNoLogs(),
718 [PLANS.PASS_BUSINESS]: getNoLogs(),
719 [PLANS.VPN_PRO]: getNoLogs(),
720 [PLANS.VPN_BUSINESS]: getNoLogs(),
726 [PLANS.FREE]: getBandwidth(),
727 [PLANS.BUNDLE]: getBandwidth(),
728 [PLANS.MAIL]: getBandwidth(),
729 [PLANS.VPN]: getBandwidth(),
730 [PLANS.DRIVE]: getBandwidth(),
731 [PLANS.DRIVE_BUSINESS]: getBandwidth(),
732 [PLANS.PASS]: getBandwidth(),
733 [PLANS.PASS_FAMILY]: getBandwidth(),
734 [PLANS.WALLET]: getBandwidth(),
735 [PLANS.FAMILY]: getBandwidth(),
736 [PLANS.DUO]: getBandwidth(),
737 [PLANS.MAIL_PRO]: getBandwidth(),
738 [PLANS.MAIL_BUSINESS]: getBandwidth(),
739 [PLANS.BUNDLE_PRO]: getBandwidth(),
740 [PLANS.BUNDLE_PRO_2024]: getBandwidth(),
741 [PLANS.PASS_PRO]: getBandwidth(),
742 [PLANS.PASS_BUSINESS]: getBandwidth(),
743 [PLANS.VPN_PRO]: getBandwidth(),
744 [PLANS.VPN_BUSINESS]: getBandwidth(),
750 [PLANS.FREE]: getDNSLeak(),
751 [PLANS.BUNDLE]: getDNSLeak(),
752 [PLANS.MAIL]: getDNSLeak(),
753 [PLANS.VPN]: getDNSLeak(),
754 [PLANS.DRIVE]: getDNSLeak(),
755 [PLANS.DRIVE_BUSINESS]: getDNSLeak(),
756 [PLANS.PASS]: getDNSLeak(),
757 [PLANS.PASS_FAMILY]: getDNSLeak(),
758 [PLANS.WALLET]: getDNSLeak(),
759 [PLANS.FAMILY]: getDNSLeak(),
760 [PLANS.DUO]: getDNSLeak(),
761 [PLANS.MAIL_PRO]: getDNSLeak(),
762 [PLANS.MAIL_BUSINESS]: getDNSLeak(),
763 [PLANS.BUNDLE_PRO]: getDNSLeak(),
764 [PLANS.BUNDLE_PRO_2024]: getDNSLeak(),
765 [PLANS.PASS_PRO]: getDNSLeak(),
766 [PLANS.PASS_BUSINESS]: getDNSLeak(),
767 [PLANS.VPN_PRO]: getDNSLeak(),
768 [PLANS.VPN_BUSINESS]: getDNSLeak(),
774 [PLANS.FREE]: getKillSwitch(),
775 [PLANS.BUNDLE]: getKillSwitch(),
776 [PLANS.MAIL]: getKillSwitch(),
777 [PLANS.VPN]: getKillSwitch(),
778 [PLANS.DRIVE]: getKillSwitch(),
779 [PLANS.DRIVE_BUSINESS]: getKillSwitch(),
780 [PLANS.PASS]: getKillSwitch(),
781 [PLANS.PASS_FAMILY]: getKillSwitch(),
782 [PLANS.WALLET]: getKillSwitch(),
783 [PLANS.FAMILY]: getKillSwitch(),
784 [PLANS.DUO]: getKillSwitch(),
785 [PLANS.MAIL_PRO]: getKillSwitch(),
786 [PLANS.MAIL_BUSINESS]: getKillSwitch(),
787 [PLANS.BUNDLE_PRO]: getKillSwitch(),
788 [PLANS.BUNDLE_PRO_2024]: getKillSwitch(),
789 [PLANS.PASS_PRO]: getKillSwitch(),
790 [PLANS.PASS_BUSINESS]: getKillSwitch(),
791 [PLANS.VPN_PRO]: getKillSwitch(),
792 [PLANS.VPN_BUSINESS]: getKillSwitch(),
798 [PLANS.FREE]: getEncryption(),
799 [PLANS.BUNDLE]: getEncryption(),
800 [PLANS.MAIL]: getEncryption(),
801 [PLANS.VPN]: getEncryption(),
802 [PLANS.DRIVE]: getEncryption(),
803 [PLANS.DRIVE_BUSINESS]: getEncryption(),
804 [PLANS.PASS]: getEncryption(),
805 [PLANS.PASS_FAMILY]: getEncryption(),
806 [PLANS.WALLET]: getEncryption(),
807 [PLANS.FAMILY]: getEncryption(),
808 [PLANS.DUO]: getEncryption(),
809 [PLANS.MAIL_PRO]: getEncryption(),
810 [PLANS.MAIL_BUSINESS]: getEncryption(),
811 [PLANS.BUNDLE_PRO]: getEncryption(),
812 [PLANS.BUNDLE_PRO_2024]: getEncryption(),
813 [PLANS.PASS_PRO]: getEncryption(),
814 [PLANS.PASS_BUSINESS]: getEncryption(),
815 [PLANS.VPN_PRO]: getEncryption(),
816 [PLANS.VPN_BUSINESS]: getEncryption(),
822 [PLANS.FREE]: getRouterSupport(),
823 [PLANS.BUNDLE]: getRouterSupport(),
824 [PLANS.MAIL]: getRouterSupport(),
825 [PLANS.VPN]: getRouterSupport(),
826 [PLANS.DRIVE]: getRouterSupport(),
827 [PLANS.DRIVE_BUSINESS]: getRouterSupport(),
828 [PLANS.PASS]: getRouterSupport(),
829 [PLANS.PASS_FAMILY]: getRouterSupport(),
830 [PLANS.WALLET]: getRouterSupport(),
831 [PLANS.FAMILY]: getRouterSupport(),
832 [PLANS.DUO]: getRouterSupport(),
833 [PLANS.MAIL_PRO]: getRouterSupport(),
834 [PLANS.MAIL_BUSINESS]: getRouterSupport(),
835 [PLANS.BUNDLE_PRO]: getRouterSupport(),
836 [PLANS.BUNDLE_PRO_2024]: getRouterSupport(),
837 [PLANS.PASS_PRO]: getRouterSupport(),
838 [PLANS.PASS_BUSINESS]: getRouterSupport(),
839 [PLANS.VPN_PRO]: getRouterSupport(),
840 [PLANS.VPN_BUSINESS]: getRouterSupport(),
844 name: 'split-tunnel',
846 [PLANS.FREE]: getSplitTunnel(false),
847 [PLANS.BUNDLE]: getSplitTunnel(true),
848 [PLANS.MAIL]: getSplitTunnel(false),
849 [PLANS.VPN]: getSplitTunnel(true),
850 [PLANS.DRIVE]: getSplitTunnel(false),
851 [PLANS.DRIVE_BUSINESS]: getSplitTunnel(false),
852 [PLANS.PASS]: getSplitTunnel(false),
853 [PLANS.PASS_FAMILY]: getSplitTunnel(false),
854 [PLANS.WALLET]: getSplitTunnel(false),
855 [PLANS.FAMILY]: getSplitTunnel(true),
856 [PLANS.DUO]: getSplitTunnel(true),
857 [PLANS.MAIL_PRO]: getSplitTunnel(false),
858 [PLANS.MAIL_BUSINESS]: getSplitTunnel(false),
859 [PLANS.BUNDLE_PRO]: getSplitTunnel(true),
860 [PLANS.BUNDLE_PRO_2024]: getSplitTunnel(true),
861 [PLANS.PASS_PRO]: getSplitTunnel(false),
862 [PLANS.PASS_BUSINESS]: getSplitTunnel(false),
863 [PLANS.VPN_PRO]: getSplitTunnel(true),
864 [PLANS.VPN_BUSINESS]: getSplitTunnel(true),