PageSourceSearch

https://computicket.com/faq

html computicket.com collected 2026-10-02 05:23:44 UTC 106,671 bytes, 370 lines download raw bytes

1<!DOCTYPE html><html lang="en" class="light"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png"/><link rel="stylesheet" href="/_next/static/chunks/04c6uvqr.rw3l.css" nonce="IovxAYKVL3TnvxJG901U9A==" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" nonce="IovxAYKVL3TnvxJG901U9A==" href="/_next/static/chunks/08j0-.hnrvsil.js"/>
1<script src="/_next/static/chunks/079p5_fs9teg2.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/144~j65021tzh.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0z6od303gcjzb.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/turbopack-0kl3211m~2pkq.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/11-hmxl2mmjt..js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0md2ilb1elzh7.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0ho~4mcu7_9qh.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0e45-q7k7uui2.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/166u_u1jr~j4y.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0w20gzpvgzwud.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/01167vh-d--ie.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0osj~rxb995xf.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0d78up986s16..js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/144cysjdge7g6.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/07c9gmb.7xj6o.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0h8ea52.j.8fg.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/14x..lz37ludd.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0cao1jff.2xc0.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0yjr0l0i~73al.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0q7g6_wzcfs5c.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/0y_jjs_2qrc~w.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<script src="/_next/static/chunks/12dk56r.nvbw3.js" async="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
1<link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-Y5KMVM7V84" as="script" nonce="IovxAYKVL3TnvxJG901U9A=="/><meta name="theme-color" content="#42434e"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="default"/><link rel="apple-touch-icon" href="https://content.computicket.com/bo/0f13010f-d472-4001-a5ad-afd578e2b805.png"/><link rel="manifest" href="/api/manifest"/><link rel="preconnect" href="https://content.computicket.com"/><link rel="preconnect" href="https://cf-content.computicket.com"/><title>Buy Tickets Online – Events, Travel, Flights &amp; More | Computicket</title><meta name="description" content="Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans."/><meta name="keywords" content="buy tickets online, concert tickets South Africa, cheap flights, bus tickets, theatre shows, hotel bookings, digital vouchers, South Africa events, Computicket, flight bookings South Africa, accommodation deals, gift cards online"/><meta name="application/ld+json" content="{
2  &quot;@context&quot;: &quot;https://schema.org&quot;,
3  &quot;@graph&quot;: [
4    {
5      &quot;@type&quot;: &quot;WebSite&quot;,
6      &quot;@id&quot;: &quot;https://computicket.com/#website&quot;,
7      &quot;url&quot;: &quot;https://computicket.com&quot;,
8      &quot;name&quot;: &quot;Computicket&quot;,
9      &quot;potentialAction&quot;: {
10        &quot;@type&quot;: &quot;SearchAction&quot;,
11        &quot;target&quot;: &quot;https://computicket.com/search?q={search_term_string}&quot;,
12        &quot;query-input&quot;: &quot;required name=search_term_string&quot;
13      }
14    },
15    {
16      &quot;@type&quot;: &quot;Organization&quot;,
17      &quot;@id&quot;: &quot;https://computicket.com/#organization&quot;,
18      &quot;name&quot;: &quot;Computicket&quot;,
19      &quot;url&quot;: &quot;https://computicket.com&quot;,
20      &quot;logo&quot;: &quot;https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png&quot;,
21      &quot;sameAs&quot;: [
22        &quot;https://www.facebook.com/computicket&quot;,
23        &quot;https://twitter.com/computicket&quot;,
24        &quot;https://www.instagram.com/computicket&quot;
25      ]
26    }
27  ]
28}
29"/><meta property="og:title" content="Buy Tickets Online – Events, Travel, Flights &amp; More | Computicket"/><meta property="og:description" content="Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans."/><meta property="og:site_name" content="Computicket"/><meta property="og:image" content="https://content.computicket.com/bo/2fd8a76e-cb46-4eee-b512-7156cb5a2738.png"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Buy Tickets Online – Events, Travel, Flights &amp; More | Computicket"/><meta name="twitter:description" content="Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans."/><meta name="twitter:image" content="https://content.computicket.com/bo/2fd8a76e-cb46-4eee-b512-7156cb5a2738.png"/><link rel="icon" href="/favicon.ico?favicon.0plg0~6_wnbeu.ico" sizes="48x48" type="image/x-icon"/>
29<script nonce="IovxAYKVL3TnvxJG901U9A==">
30            (function() {
31              const urlParams = new URLSearchParams(window.location.search);
32              const accessToken = urlParams.get('access_token');
33              const refreshToken = urlParams.get('refresh_token');
34              const expiresIn = urlParams.get('expires_in');
35              const refreshExpiresIn = urlParams.get('refresh_expires_in');
36              const tokenType = urlParams.get('token_type');
37              const idToken = urlParams.get('id_token');
38              
39              if (accessToken && refreshToken) {
40                try {
41                  const authData = {
42                    Customer_login_token: accessToken,
43                    Customer_login_refresh_token: refreshToken,
44                    expires_in: expiresIn ? parseInt(expiresIn) : 300,
45                    refresh_expires_in: refreshExpiresIn ? parseInt(refreshExpiresIn) : 1800,
46                    token_type: tokenType || 'Bearer',
47                    id_token: idToken
48                  };
49                  
50                  const now = Date.now();
51                  
52                  try {
53                    const base64Url = accessToken.split('.')[1];
54                    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
55                    const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
56                      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
57                    }).join(''));
58                    const payload = JSON.parse(jsonPayload);
59                    
60                    if (payload.exp) {
61                      authData.expires_at = payload.exp * 1000;
62                    } else {
63                      authData.expires_at = now + (authData.expires_in * 1000);
64                    }
65                  } catch (e) {
66                    authData.expires_at = now + (authData.expires_in * 1000);
67                  }
68                  
69                  authData.refresh_expires_at = now + (authData.refresh_expires_in * 1000);
70                  
71                  localStorage.removeItem('customer_login_token');
72                  localStorage.setItem('customer_login_token', JSON.stringify(authData));
73                  
74                  localStorage.setItem('oauth_login_success', JSON.stringify({
75                    timestamp: now,
76                    processed: false,
77                    tokens: {
78                      accessTokenPrefix: accessToken.substring(0, 10) + '...',
79                      refreshTokenPrefix: refreshToken.substring(0, 10) + '...'
80                    }
81                  }));
82                  
83                  const cleanUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
84                  const oauthRedirectUrl = localStorage.getItem('oauth_redirect_url') || '/';
85                  
86                  localStorage.removeItem('oauth_state');
87                  localStorage.removeItem('oauth_redirect_url');
88                  localStorage.removeItem('oauth_origin');
89                  localStorage.removeItem('oauth_initiated_at');
90                  
91                  window.history.replaceState({}, document.title, cleanUrl);
92                  
93                  if (oauthRedirectUrl !== '/' && window.location.pathname !== oauthRedirectUrl) {
94                    window.location.href = oauthRedirectUrl;
95                  }
96                  
97                } catch (error) {
98                }
99              }
100            })();
101          </script>
101<script nonce="IovxAYKVL3TnvxJG901U9A==">
102            (function() {
103              const urlParams = new URLSearchParams(window.location.search);
104              const eventPosToken = urlParams.get('event_pos_token');
105              const expiresIn = urlParams.get('expires_in');
106              const refreshToken = urlParams.get('refresh_token');
107              const refreshExpiresIn = urlParams.get('refresh_expires_in');
108              
109              if (eventPosToken) {
110                try {
111                  const now = Date.now();
112                  
113                  const authData = {
114                    access_token: eventPosToken,
115                    refresh_token: refreshToken || null,
116                    expires_in: expiresIn ? parseInt(expiresIn) : 3600,
117                    refresh_expires_in: refreshExpiresIn ? parseInt(refreshExpiresIn) : 86400,
118                    isEventPosToken: true
119                  };
120                  
121                  // Calculate expiration times from JWT if possible
122                  try {
123                    const base64Url = eventPosToken.split('.')[1];
124                    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
125                    const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
126                      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
127                    }).join(''));
128                    const payload = JSON.parse(jsonPayload);
129                    
130                    if (payload.exp) {
131                      authData.expires_at = payload.exp * 1000;
132                    } else {
133                      authData.expires_at = now + (authData.expires_in * 1000);
134                    }
135                  } catch (e) {
136                    authData.expires_at = now + (authData.expires_in * 1000);
137                  }
138                  
139                  authData.refresh_expires_at = now + (authData.refresh_expires_in * 1000);
140                  
141                  // Store the EventPOS token
142                  localStorage.setItem('auth_token', JSON.stringify(authData));
143                  localStorage.setItem('event_pos_mode', 'true');
144                  
145                  console.log('[EventPOS] Token received and stored successfully');
146                  
147                  // Clean URL by removing token parameters
148                  const cleanUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;
149                  window.history.replaceState({}, document.title, cleanUrl);
150                  
151                } catch (error) {
152                  console.error('[EventPOS] Error processing token:', error);
153                }
154              }
155            })();
156          </script>
156<style nonce="IovxAYKVL3TnvxJG901U9A==">
157            input[type="text"],
158            input[type="email"],
159            input[type="password"],
160            input[type="number"],
161            input[type="tel"],
162            input[type="url"],
163            input[type="search"],
164            textarea,
165            select {
166              font-size: 16px !important;
167            }
168            
169            * {
170              touch-action: manipulation;
171              -webkit-touch-callout: none;
172            }
173            
174            button, input, select, textarea {
175              touch-action: manipulation;
176            }
177            
178            body[data-page-path="true"] nav[role="navigation"] ul[data-justify="center"] {
179              display: none !important;
180            }
181            
182            body[data-page-path="true"] .navbar-sticky nav[role="navigation"] ul[data-justify="center"] {
183              display: flex !important;
184            }
185
186            .venue-map-container {
187              will-change: transform;
188              transform: translateZ(0);
189            }
190
191            .main-content {
192              min-height: calc(100vh - 200px);
193            }
194
195            .animate-slide-up {
196              animation: slideUp 0.3s ease-out;
197            }
198
199            @keyframes slideUp {
200              from {
201                transform: translateY(100%);
202              }
203              to {
204                transform: translateY(0);
205              }
206            }
207
208            .pwa-install-button {
209              transition: all 0.2s ease;
210            }
211
212            .pwa-install-button:hover {
213              transform: scale(1.05);
214              box-shadow: 0 4px 12px rgba(0,0,0,0.15);
215            }
216
217            .pwa-install-button:active {
218              transform: scale(0.98);
219            }
220
221            @media (max-width: 640px) {
222              #debug-console {
223                top: 50px;
224                right: 5px;
225                left: 5px;
226                width: auto;
227                max-height: 300px;
228              }
229            }
230          </style>
230<script src="/_next/static/chunks/03~yq9q893hmn.js" noModule="" nonce="IovxAYKVL3TnvxJG901U9A=="></script>
230</head><body class="bg-center min-h-screen flex flex-col"><div hidden=""><!--$--><!--/$--></div><!--$--><!--/$--><header class="jsx-18eda90d62bf2fdd"><div role="banner" aria-label="Announcement" style="background:#141a20;color:#ffffff" class="jsx-18eda90d62bf2fdd relative flex w-full items-center justify-center px-3 py-1.5 backdrop-blur-xl sm:px-6"><div class="jsx-18eda90d62bf2fdd flex items-center justify-center gap-x-2 w-full sm:w-auto sm:max-w-[80%]"><p class="jsx-18eda90d62bf2fdd text-[11px] sm:text-xs md:text-sm text-white truncate max-w-[75%] sm:max-w-none"><a class="relative inline-flex items-center tap-highlight-transparent outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 text-medium no-underline hover:opacity-hover active:opacity-disabled transition-opacity text-inherit" href="#" tabindex="0" data-react-aria-pressable="true" role="link">#AccessInTheWild</a></p></div></div><div class="jsx-18eda90d62bf2fdd navbar-wrapper relative"><nav style="--navbar-height:4rem;background-color:rgba(255,255,255,1)" role="navigation" aria-label="Main Navigation" class="flex z-40 w-full h-auto items-center justify-center data-[menu-open=true]:border-none sticky top-0 inset-x-0 border-b border-divider backdrop-blur-lg data-[menu-open=true]:backdrop-blur-xl backdrop-saturate-150 bg-background/70 transition-all duration-200"><header class="z-40 flex px-6 gap-4 w-full flex-row relative flex-nowrap items-center justify-between h-[var(--navbar-height)] max-w-full"><ul class="flex gap-4 h-full flex-row flex-nowrap items-center data-[justify=start]:justify-start data-[justify=start]:flex-grow data-[justify=start]:basis-0 data-[justify=center]:justify-center data-[justify=end]:justify-end data-[justify=end]:flex-grow data-[justify=end]:basis-0 sm:hidden" data-justify="start"><button class="group flex items-center justify-center w-6 h-full rounded-small tap-highlight-transparent outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 transition-all duration-300 hover:scale-110 active:scale-95" type="button" tabindex="0" data-react-aria-pressable="true" aria-label="Open menu" aria-pressed="false" style="color:#42434E"><span class="sr-only">open navigation menu</span><div class="jsx-18eda90d62bf2fdd flex flex-col justify-center items-center w-5 h-5 relative"><span class="jsx-18eda90d62bf2fdd block h-0.5 w-5 bg-current transform transition-all duration-300 ease-out absolute top-[3px]"></span><span class="jsx-18eda90d62bf2fdd block h-0.5 w-5 bg-current transition-all duration-300 ease-out absolute top-1/2 -translate-y-1/2 opacity-100 scale-100"></span><span class="jsx-18eda90d62bf2fdd block h-0.5 w-5 bg-current transform transition-all duration-300 ease-out absolute bottom-[3px]"></span></div></button></ul><div class="flex basis-0 flex-row flex-grow flex-nowrap justify-start bg-transparent items-center no-underline text-medium whitespace-nowrap box-border"><div role="link" aria-label="Computicket Home" class="jsx-18eda90d62bf2fdd flex items-center transition-opacity hover:opacity-90 cursor-pointer h-full"><div style="height:auto;width:auto;min-width:120px" class="jsx-18eda90d62bf2fdd relative flex items-center"><img alt="Computicket" width="166" height="40" decoding="async" data-nimg="1" class="object-contain" style="color:transparent;max-height:40px;width:auto" src="https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png"/></div></div></div><ul class="h-full flex-row flex-nowrap items-center data-[justify=start]:justify-start data-[justify=start]:flex-grow data-[justify=start]:basis-0 data-[justify=center]:justify-center data-[justify=end]:justify-end data-[justify=end]:flex-grow data-[justify=end]:basis-0 hidden sm:flex gap-4 mx-4" data-justify="center" data-sticky="false" data-page-path="false"><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div style="color:#42434E" role="link" tabindex="0" class="jsx-18eda90d62bf2fdd relative px-3 py-2 group transition-all duration-300 hover:bg-gray-50 rounded-md cursor-pointer font-medium"><span class="jsx-18eda90d62bf2fdd relative z-10 transition-transform hover:scale-105">Home</span><span style="background-color:#e71f3e" aria-hidden="true" class="jsx-18eda90d62bf2fdd absolute bottom-0 left-1/4 right-1/4 h-0.5 rounded-full opacity-0 transform scale-x-0 transition-all duration-300 group-hover:opacity-40 group-hover:scale-x-100"></span></div></li><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div style="color:#42434E" role="link" tabindex="0" class="jsx-18eda90d62bf2fdd relative px-3 py-2 group transition-all duration-300 hover:bg-gray-50 rounded-md cursor-pointer font-medium"><span class="jsx-18eda90d62bf2fdd relative z-10 transition-transform hover:scale-105">Events</span><span style="background-color:#e71f3e" aria-hidden="true" class="jsx-18eda90d62bf2fdd absolute bottom-0 left-1/4 right-1/4 h-0.5 rounded-full opacity-0 transform scale-x-0 transition-all duration-300 group-hover:opacity-40 group-hover:scale-x-100"></span></div></li><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div style="color:#42434E" role="link" tabindex="0" class="jsx-18eda90d62bf2fdd relative px-3 py-2 group transition-all duration-300 hover:bg-gray-50 rounded-md cursor-pointer font-medium"><span class="jsx-18eda90d62bf2fdd relative z-10 transition-transform hover:scale-105">Buses</span><span style="background-color:#e71f3e" aria-hidden="true" class="jsx-18eda90d62bf2fdd absolute bottom-0 left-1/4 right-1/4 h-0.5 rounded-full opacity-0 transform scale-x-0 transition-all duration-300 group-hover:opacity-40 group-hover:scale-x-100"></span></div></li><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div style="color:#42434E" role="link" tabindex="0" class="jsx-18eda90d62bf2fdd relative px-3 py-2 group transition-all duration-300 hover:bg-gray-50 rounded-md cursor-pointer font-medium"><span class="jsx-18eda90d62bf2fdd relative z-10 transition-transform hover:scale-105">Flights</span><span style="background-color:#e71f3e" aria-hidden="true" class="jsx-18eda90d62bf2fdd absolute bottom-0 left-1/4 right-1/4 h-0.5 rounded-full opacity-0 transform scale-x-0 transition-all duration-300 group-hover:opacity-40 group-hover:scale-x-100"></span></div></li><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div style="color:#42434E" role="link" tabindex="0" class="jsx-18eda90d62bf2fdd relative px-3 py-2 group transition-all duration-300 hover:bg-gray-50 rounded-md cursor-pointer font-medium"><span class="jsx-18eda90d62bf2fdd relative z-10 transition-transform hover:scale-105">Airtime &amp; Vouchers</span><span style="background-color:#e71f3e" aria-hidden="true" class="jsx-18eda90d62bf2fdd absolute bottom-0 left-1/4 right-1/4 h-0.5 rounded-full opacity-0 transform scale-x-0 transition-all duration-300 group-hover:opacity-40 group-hover:scale-x-100"></span></div></li><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div style="color:#42434E" role="link" tabindex="0" class="jsx-18eda90d62bf2fdd relative px-3 py-2 group transition-all duration-300 hover:bg-gray-50 rounded-md cursor-pointer font-medium"><span class="jsx-18eda90d62bf2fdd relative z-10 transition-transform hover:scale-105">Stay</span><span style="background-color:#e71f3e" aria-hidden="true" class="jsx-18eda90d62bf2fdd absolute bottom-0 left-1/4 right-1/4 h-0.5 rounded-full opacity-0 transform scale-x-0 transition-all duration-300 group-hover:opacity-40 group-hover:scale-x-100"></span></div></li></ul><ul class="flex h-full flex-row flex-nowrap items-center data-[justify=start]:justify-start data-[justify=start]:flex-grow data-[justify=start]:basis-0 data-[justify=center]:justify-center data-[justify=end]:justify-end data-[justify=end]:flex-grow data-[justify=end]:basis-0 gap-2" data-justify="end"><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><div class="relative basket-icon-container"><button data-disabled="true" type="button" disabled="" data-react-aria-pressable="true" aria-label="Basket is empty" class="z-0 group inline-flex items-center justify-center box-border appearance-none select-none whitespace-nowrap font-normal subpixel-antialiased overflow-hidden tap-highlight-transparent transform-gpu data-[pressed=true]:scale-[0.97] outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 text-small gap-2 rounded-medium opacity-disabled pointer-events-none px-0 !gap-0 transition-transform-colors-opacity motion-reduce:transition-none bg-transparent text-default-foreground data-[hover=true]:bg-default/40 min-w-10 w-10 h-10 transition-transform hover:scale-110 relative"><span></span></button></div></li><li class="text-medium whitespace-nowrap box-border list-none data-[active=true]:font-semibold"><button type="button" tabindex="0" data-react-aria-pressable="true" aria-label="Login" class="z-0 group relative justify-center box-border appearance-none select-none whitespace-nowrap font-normal subpixel-antialiased overflow-hidden tap-highlight-transparent transform-gpu data-[pressed=true]:scale-[0.97] outline-none data-[focus-visible=true]:z-10 data-[focus-visible=true]:outline-2 data-[focus-visible=true]:outline-focus data-[focus-visible=true]:outline-offset-2 h-10 text-small roun
230ded-medium [&amp;&gt;svg]:max-w-[theme(spacing.8)] transition-transform-colors-opacity motion-reduce:transition-none bg-transparent text-default-foreground data-[hover=true]:bg-default/40 flex items-center gap-2 px-2 py-1.5 min-w-0"><span></span><span style="color:#42434E" class="jsx-18eda90d62bf2fdd text-sm font-medium hidden sm:inline">Login</span></button></li></ul></header></nav></div></header><div class="flex-grow main-content-wrapper"><main class="flex-grow main-content"><main class="min-h-screen bg-gray-50"><section class="h-52 sm:h-72 md:h-70 relative overflow-hidden bg-gradient-to-r from-gray-300 to-gray-400" aria-label="Loading banner"><div class="absolute right-0 bottom-0 opacity-10"><div class="w-32 h-32 sm:w-40 sm:h-40 md:w-52 md:h-52 lg:w-64 lg:h-64 bg-white opacity-10 rounded-full"></div></div><div class="container mx-auto px-4 py-8 sm:py-12 md:py-16 text-white relative z-10"><div class="max-w-4xl"><div class="h-8 sm:h-10 md:h-14 bg-white bg-opacity-20 rounded w-3/4 max-w-md mb-3 sm:mb-4"></div><div class="h-4 sm:h-5 md:h-6 bg-white bg-opacity-20 rounded w-full max-w-2xl"></div></div></div></section><div id="faq-content" class="container mx-auto px-4 py-8" aria-busy="true" aria-live="polite"><nav aria-label="Breadcrumb skeleton"><div class="mb-6 flex items-center gap-2"><div class="h-4 bg-gray-200 rounded w-16"></div><div class="h-4 bg-gray-200 rounded-full w-4 flex items-center justify-center"><div class="w-2 h-2 border-r-2 border-t-2 border-gray-300 transform rotate-45"></div></div><div class="h-4 bg-gray-200 rounded w-16"></div></div></nav><div class="grid grid-cols-1 lg:grid-cols-4 gap-8"><aside class="hidden lg:block lg:col-span-1"><div class="flex flex-col bg-white shadow-medium rounded-large sticky top-4 p-3"><div class="h-7 bg-gray-200 rounded w-32 mb-4"></div><div class="space-y-2 mb-6"><div class="h-10 bg-gray-200 rounded w-full"></div><div class="h-10 bg-gray-200 rounded w-full"></div><div class="h-10 bg-gray-200 rounded w-full"></div><div class="h-10 bg-gray-200 rounded w-full"></div></div><hr class="my-4 bg-gray-200 h-px border-0"/><div class="h-6 bg-gray-200 rounded w-28 mb-3"></div><div class="flex flex-wrap gap-2 max-h-[200px] overflow-hidden"><div class="h-7 bg-gray-200 rounded-full w-24 mb-2"></div><div class="h-7 bg-gray-200 rounded-full w-24 mb-2"></div><div class="h-7 bg-gray-200 rounded-full w-24 mb-2"></div><div class="h-7 bg-gray-200 rounded-full w-24 mb-2"></div><div class="h-7 bg-gray-200 rounded-full w-24 mb-2"></div></div></div></aside><div class="lg:col-span-3"><div class="lg:hidden mb-4 flex gap-2"><div class="flex-1 h-10 bg-gray-200 rounded"></div><div class="h-10 w-20 bg-gray-200 rounded"></div></div><div class="bg-white shadow-medium rounded-large"><div class="p-3"><div class="flex justify-between items-center flex-wrap gap-3 mb-4"><div><div class="h-7 bg-gray-200 rounded w-40 mb-2"></div><div class="h-4 bg-gray-200 rounded w-32"></div></div><div class="flex gap-2 items-center"><div class="hidden lg:block"><div class="h-8 bg-gray-200 rounded w-32"></div></div><div class="h-8 bg-gray-200 rounded w-24"></div></div></div><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><hr class="h-px bg-gray-200 border-0 my-1"/><div class="border rounded-lg mb-2 px-4 py-4"><div class="flex justify-between"><div class="h-6 bg-gray-200 rounded w-3/4"></div><div class="h-6 w-6 bg-gray-200 rounded-full"></div></div></div><nav class="mt-6 flex justify-center"><div class="flex items-center gap-1"><div class="h-9 w-9 bg-gray-200 rounded-md"></div><div class="h-9 w-9 bg-gray-300 rounded-md"></div><div class="h-9 w-9 bg-gray-200 rounded-md"></div><div class="h-9 w-9 bg-gray-200 rounded-md"></div><div class="h-9 w-9 bg-gray-200 rounded-md"></div><div class="h-9 w-9 bg-gray-200 rounded-md"></div><div class="h-9 w-9 bg-gray-200 rounded-md"></div></div></nav></div></div><section class="mt-8"><div class="bg-white shadow-medium rounded-large p-6"><div class="flex flex-col md:flex-row items-center gap-6"><div class="rounded-full p-4 bg-gray-100 w-16 h-16 shrink-0 flex items-center justify-center"><div class="w-8 h-8 bg-gray-200 rounded-full"></div></div><div class="text-center md:text-left"><div class="h-7 bg-gray-200 rounded w-64 mb-2"></div><div class="h-4 bg-gray-200 rounded w-full mb-1"></div><div class="h-4 bg-gray-200 rounded w-4/5"></div></div><div class="md:ml-auto shrink-0"><div class="h-10 bg-gray-200 rounded w-36"></div></div></div></div></section></div></div></div></main><!--$--><!--/$--></main></div><footer class="w-full pt-10 pb-6" style="background-color:#E9EDF1;color:#42434E" role="contentinfo" aria-label="Site footer"><div class="container mx-auto px-4"><div class="grid grid-cols-1 md:grid-cols-2 gap-8 mb-8"><div class="flex flex-col"><div class="flex items-center mb-3"><div class="mr-3 flex items-center"><span class="inline-block w-8 h-8" style="background-color:#42434E;-webkit-mask-image:url(https://content.computicket.com/bo/5b27bbfc-2046-4ca7-98ca-e909efa1dc77.svg);mask-image:url(https://content.computicket.com/bo/5b27bbfc-2046-4ca7-98ca-e909efa1dc77.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center" aria-hidden="true"></span></div><span class="text-lg font-medium" style="color:#42434E">Computicket<!-- --> (Pty) Ltd - <!-- -->2026</span></div><div class="flex space-x-4 pt-2"><a href="https://www.facebook.com/Computicket" class="transition-colors" aria-label="Facebook" style="color:#42434E" target="_blank" rel="noopener noreferrer"><span></span></a><a href="https://x.com/Computicket" class="transition-colors" aria-label="X (formerly Twitter)" style="color:#42434E" target="_blank" rel="noopener noreferrer"><span></span></a><a href="https://www.instagram.com/computicket/" class="transition-colors" aria-label="Instagram" style="color:#42434E" target="_blank" rel="noopener noreferrer"><span></span></a></div></div><div class="flex flex-col"><h2 class="font-semibold text-base mb-4" style="color:#42434E" id="contact-heading">Contact Us</h2><ul class="space-y-3" aria-labelledby="contact-heading"><li class="flex items-center space-x-3 text-sm"><span></span><a href="tel:0861915800" style="color:#42434E">0861 915 800</a></li><li class="flex items-center space-x-3 text-sm"><span></span><a href="mailto:[email protected]" class="hover:underline" style="color:#42434E">[email protected]</a></li><li class="flex items-start space-x-3 text-sm"><span></span><a href="https://www.google.co.za/maps/place/Computicket+(Pty)+Ltd/@-26.1427324,28.0059962,17z/data=!3m1!4b1!4m6!3m5!1s0x1e950b7b1a140fb9:0x5e57df13a1016edd!8m2!3d-26.1427324!4d28.0085711!16s%2Fg%2F1td6vhx3?hl=en&amp;entry=ttu&amp;g_ep=EgoyMDI1MDIyNi4xIKXMDSoJLDEwMjExNDUzSAFQAw%3D%3D" target="_blank" rel="noopener noreferrer" style="color:#42434E" class="not-italic hover:underline"><address class="not-italic">Computicket House, Greenacres Office Park, Cnr Victory and Rustenburg Roads, Victory Park 2195</address></a></li></ul></div></div><nav aria-label="Legal links"><div class="flex flex-wrap gap-y-2 gap-x-6 justify-center border-t py-5 border-gray-300 text-xs"><a class="hover:underline" style="color:#42434E" href="/legal">Legal Terms</a><a class="hover:underline" style="color:#42434E" href="/faq">FAQs</a><a class="hover:underline" style="color:#42434E" href="/contact">Contact Us</a><a class="hover:underline" style="color:#42434E" href="/find-a-store">Find A Store</a></div></nav><div class="mt-4 text-center"><p class="text-xs" style="color:#42434E">Computicket (Pty) Ltd - 2025</p></div></div></footer>
230<script nonce="IovxAYKVL3TnvxJG901U9A==">
231              if ('serviceWorker' in navigator) {
232                window.addEventListener('load', async () => {
233                  try {
234                    const existingRegistrations = await navigator.serviceWorker.getRegistrations();
235                    
236                    const oldRegistrations = existingRegistrations.filter(reg => {
237                      return reg.scope.includes('/sw.js') || 
238                             (reg.active && reg.active.scriptURL && reg.active.scriptURL.includes('/sw.js')) ||
239                             (!reg.scope.includes('/api/sw') && reg.scope !== window.location.origin + '/');
240                    });
241                    
242                    if (oldRegistrations.length > 0) {
243                      for (const registration of oldRegistrations) {
244                        try {
245                          await registration.unregister();
246                        } catch (error) {
247                          // Silent error handling
248                        }
249                      }
250                    }
251                    
252                    if ('caches' in window) {
253                      try {
254                        const cacheNames = await caches.keys();
255                        
256                        const legacyCacheNames = cacheNames.filter(name => 
257                          name.includes('sw-cache') || 
258                          name.includes('workbox') || 
259                          name.includes('precache') ||
260                          (name.includes('runtime-cache') && !name.includes('computicket'))
261                        );
262                        
263                        if (legacyCacheNames.length > 0) {
264                          for (const cacheName of legacyCacheNames) {
265                            await caches.delete(cacheName);
266                          }
267                        }
268                      } catch (error) {
269                        // Silent error handling
270                      }
271                    }
272                    
273                    const registration = await navigator.serviceWorker.register('/api/sw', {
274                      scope: '/',
275                      updateViaCache: 'none'
276                    });
277                    
278                    registration.addEventListener('updatefound', () => {
279                      const newWorker = registration.installing;
280                      
281                      newWorker.addEventListener('statechange', () => {
282                        if (newWorker.state === 'installed') {
283                          if (navigator.serviceWorker.controller) {
284                            window.swUpdateAvailable = true;
285                          }
286                        }
287                      });
288                    });
289                    
290                    setInterval(() => {
291                      registration.update().catch(err => {
292                        // Silent error handling
293                      });
294                    }, 60000);
295                    
296                    window.swRegistration = registration;
297                    window.swRegistrationTime = new Date().toISOString();
298                    
299                  } catch (error) {
300                    window.swRegistrationError = error;
301                  }
302                });
303                
304                navigator.serviceWorker.addEventListener('message', (event) => {
305                  if (event.data && event.data.type === 'NEW_VERSION') {
306                    window.swVersion = event.data.version;
307                    window.swUpdateTime = event.data.timestamp;
308                  }
309                });
310                
311                navigator.serviceWorker.addEventListener('controllerchange', () => {
312                  window.swControllerChanged = true;
313                });
314                
315              } else {
316                window.swNotSupported = true;
317              }
318            </script>
318<script nonce="IovxAYKVL3TnvxJG901U9A==">
319              // Simplified PWA event handling - user actions only
320              (function() {
321                let deferredPrompt = null;
322
323                // Handle beforeinstallprompt event for Android/Desktop
324                window.addEventListener('beforeinstallprompt', (e) => {
325                  e.preventDefault();
326                  deferredPrompt = e;
327                  window.deferredPrompt = deferredPrompt;
328                });
329
330                // App installed event - only log user-confirmed installations
331                window.addEventListener('appinstalled', () => {
332                  // Hide React modal if shown
333                  if (window.hideAndroidInstallModal && typeof window.hideAndroidInstallModal === 'function') {
334                    window.hideAndroidInstallModal();
335                  }
336                  
337                  // Log successful installation via fetch
338                  if (window.fetch) {
339                    fetch('/api/logger', {
340                      method: 'POST',
341                      headers: { 'Content-Type': 'application/json' },
342                      body: JSON.stringify({
343                        level: 'info',
344                        message: 'PWA Install Successful - Android',
345                        action: 'install_completed',
346                        installEvent: 'browser_install_success',
347                        source: 'pwa-install',
348                        installDetails: {
349                          platform: 'android',
350                          installMethod: 'browser_confirmed',
351                          completionType: 'appinstalled_event'
352                        },
353                        userContext: {
354                          sessionId: 'unknown',
355                          userAgent: navigator.userAgent || 'unknown'
356                        },
357                        metadata: {
358                          timestamp: new Date().toISOString(),
359                          loggedFromClient: true
360                        }
361                      })
362                    }).catch(() => {}); // Silent fail
363                  }
364                  
365                  localStorage.setItem('pwa-app-installed', 'true');
366                  deferredPrompt = null;
367                  window.deferredPrompt = null;
368                });
369              })();
370            </script>
370<script src="/_next/static/chunks/08j0-.hnrvsil.js" nonce="IovxAYKVL3TnvxJG901U9A==" id="_R_" async=""></script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">(self.__next_f=self.__next_f||[]).push([0])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[339756,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n4:I[837457,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n5:I[347257,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"ClientPageRoot\"]\n6:I[963883,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\",\"/_next/static/chunks/0yjr0l0i~73al.js\",\"/_next/static/chunks/0q7g6_wzcfs5c.js\"],\"default\"]\n7:I[897367,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\nb:I[897367,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"ViewportBoundary\"]\nd:I[897367,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..
370js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,".js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"MetadataBoundary\"]\nf:I[168027,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/04c6uvqr.rw3l.css\",\"style\",{\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}]\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"faq\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"faq\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/04c6uvqr.rw3l.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/11-hmxl2mmjt..js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0md2ilb1elzh7.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0e45-q7k7uui2.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/166u_u1jr~j4y.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/0w20gzpvgzwud.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/chunks/01167vh-d--ie.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/_next/static/chunks/0osj~rxb995xf.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/_next/static/chunks/0d78up986s16..js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/_next/static/chunks/144cysjdge7g6.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/_next/static/chunks/14x..lz37ludd.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-13\",{\"src\":\"/_next/static/chunks/0cao1jff.2xc0.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":null}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0yjr0l0i~73al.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0q7g6_wzcfs5c.js\",\"async\":true,\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}]],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,\"$@a\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/04c6uvqr.rw3l.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\"}]]],\"S\":false,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"D8Ybx9kwjCBHON-jhEJuM\"}\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"10:[]\na:\"$W10\"\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"15:I[27201,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"IconMark\"]\n11:Tdca,"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"\n            (function() {\n              const urlParams = new URLSearchParams(window.location.search);\n              const accessToken = urlParams.get('access_token');\n              const refreshToken = urlParams.get('refresh_token');\n              const expiresIn = urlParams.get('expires_in');\n              const refreshExpiresIn = urlParams.get('refresh_expires_in');\n              const tokenType = urlParams.get('token_type');\n              const idToken = urlParams.get('id_token');\n              \n              if (accessToken \u0026\u0026 refreshToken) {\n                try {\n                  const authData = {\n                    Customer_login_token: accessToken,\n                    Customer_login_refresh_token: refreshToken,\n                    expires_in: expiresIn ? parseInt(expiresIn) : 300,\n                    refresh_expires_in: refreshExpiresIn ? parseInt(refreshExpiresIn) : 1800,\n                    token_type: tokenType || 'Bearer',\n                    id_token: idToken\n                  };\n                  \n                  const now = Date.now();\n                  \n                  try {\n                    const base64Url = accessToken.split('.')[1];\n                    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n                    const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\n                      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n                    }).join(''));\n                    const payload = JSON.parse(jsonPayload);\n                    \n                    if (payload.exp) {\n                      authData.expires_at = payload.exp * 1000;\n                    } else {\n                      authData.expires_at = now + (authData.expires_in * 1000);\n                    }\n                  } catch (e) {\n                    authData.expires_at = now + (authData.expires_in * 1000);\n                  }\n                  \n                  authData.refresh_expires_at = now + (authData.refresh_expires_in * 1000);\n                  \n                  localStorage.removeItem('customer_login_token');\n                  localStorage.setItem('customer_login_token', JSON.stringify(authData));\n                  \n                  localStorage.setItem('oauth_login_success', JSON.stringify({\n                    timestamp: now,\n                    processed: false,\n                    tokens: {\n                      accessTokenPrefix: accessToken.substring(0, 10) + '...',\n                      refreshTokenPrefix: refreshToken.substring(0, 10) + '...'\n                    }\n                  }));\n                  \n                  const cleanUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;\n                  const oauthRedirectUrl = localStorage.getItem('oauth_redirect_url') || '/';\n                  \n                  localStorage.removeItem('oauth_state');\n                  localStorage.removeItem('oauth_redirect_url');\n                  localStorage.removeItem('oauth_origin');\n                  localStorage.removeItem('oauth_initiated_at');\n                  \n                  window.history.replaceState({}, document.title, cleanUrl);\n                  \n                  if (oauthRedirectUrl !== '/' \u0026\u0026 window.location.pathname !== oauthRedirectUrl) {\n                    window.location.href = oauthRedirectUrl;\n                  }\n                  \n                } catch (error) {\n                }\n              }\n            })();\n          "])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"light\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#42434e\"}],[[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",null,{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",null,{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"default\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"https://content.computicket.com/bo/0f13010f-d472-4001-a5ad-afd578e2b805.png\"}],[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"/api/manifest\"}]],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://content.computicket.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://cf-content.computicket.com\"}],[\"$\",\"script\",null,{\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$11\"}}],\"$L12\",\"$L13\"]}],\"$L14\"]}]\n9:null\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"Buy Tickets Online – Events, Travel, Flights \u0026 More | Computicket\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"buy tickets online, concert tickets South Africa, cheap flights, bus tickets, theatre shows, hotel bookings, digital vouchers, South Africa events, Computicket, flight bookings South Africa, accommodation deals, gift cards online\"}],[\"$\",\"meta\",\"3\",{\"name\":\"application/ld+json\",\"content\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@graph\\\": [\\r\\n    {\\r\\n      \\\"@type\\\": \\\"WebSite\\\",\\r\\n      \\\"@id\\\": \\\"https://computicket.com/#website\\\",\\r\\n      \\\"url\\\": \\\"https://computicket.com\\\",\\r\\n      \\\"name\\\": \\\"Computicket\\\",\\r\\n      \\\"potentialAction\\\": {\\r\\n        \\\"@type\\\": \\\"SearchAction\\\",\\r\\n        \\\"target\\\": \\\"https://computicket.com/search?q={search_term_string}\\\",\\r\\n        \\\"query-input\\\": \\\"required name=search_term_string\\\"\\r\\n      }\\r\\n    },\\r\\n    {\\r\\n      \\\"@type\\\": \\\"Organization\\\",\\r\\n      \\\"@id\\\": \\\"https://computicket.com/#organization\\\",\\r\\n      \\\"name\\\": \\\"Computicket\\\",\\r\\n      \\\"url\\\": \\\"https://computicket.com\\\",\\r\\n      \\\"logo\\\": \\\"https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png\\\",\\r\\n      \\\"sameAs\\\": [\\r\\n        \\\"https://www.facebook.com/computicket\\\",\\r\\n        \\\"https://twitter.com/computicket\\\",\\r\\n        \\\"https://www.instagram.com/computicket\\\"\\r\\n      ]\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Buy Tickets Online – Events, Travel, Flights \u0026 More | Computicket\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans.\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:site_name\",\"content\":\"Computicket\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image\",\"content\":\"https://content.computicket.com/bo/2fd8a76e-cb46-4eee-b512-7156cb5a2738.png\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:title\",\"content\":\"Buy Tickets Online – Events, Travel, Flights \u0026 More | Computicket\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:description\",\"content\":\"Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans.\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:image\",\"content\":\"https://content.computicket.com/bo/2fd8a76e-cb46-4eee-b512-7156cb5a2738.png\"}],[\"$\",\"link\",\"13\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0plg0~6_wnbeu.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"$L15\",\"14\",{}]]\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"18:I[89566,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n16:Ta90,"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"\n            (function() {\n              const urlParams = new URLSearchParams(window.location.search);\n              const eventPosToken = urlParams.get('event_pos_token');\n              const expiresIn = urlParams.get('expires_in');\n              const refreshToken = urlParams.get('refresh_token');\n              const refreshExpiresIn = urlParams.get('refresh_expires_in');\n              \n              if (eventPosToken) {\n                try {\n                  const now = Date.now();\n                  \n                  const authData = {\n                    access_token: eventPosToken,\n                    refresh_token: refreshToken || null,\n                    expires_in: expiresIn ? parseInt(expiresIn) : 3600,\n                    refresh_expires_in: refreshExpiresIn ? parseInt(refreshExpiresIn) : 86400,\n                    isEventPosToken: true\n                  };\n                  \n                  // Calculate expiration times from JWT if possible\n                  try {\n                    const base64Url = eventPosToken.split('.')[1];\n                    const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n                    const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\n                      return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n                    }).join(''));\n                    const payload = JSON.parse(jsonPayload);\n                    \n                    if (payload.exp) {\n                      authData.expires_at = payload.exp * 1000;\n                    } else {\n                      authData.expires_at = now + (authData.expires_in * 1000);\n                    }\n                  } catch (e) {\n                    authData.expires_at = now + (authData.expires_in * 1000);\n                  }\n                  \n                  authData.refresh_expires_at = now + (authData.refresh_expires_in * 1000);\n                  \n                  // Store the EventPOS token\n                  localStorage.setItem('auth_token', JSON.stringify(authData));\n                  localStorage.setItem('event_pos_mode', 'true');\n                  \n                  console.log('[EventPOS] Token received and stored successfully');\n                  \n                  // Clean URL by removing token parameters\n                  const cleanUrl = window.location.protocol + '//' + window.location.host + window.location.pathname;\n                  window.history.replaceState({}, document.title, cleanUrl);\n                  \n                } catch (error) {\n                  console.error('[EventPOS] Error processing token:', error);\n                }\n              }\n            })();\n          "])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"12:[\"$\",\"script\",null,{\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$16\"}}]\n17:T7df,"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"\n            input[type=\"text\"],\n            input[type=\"email\"],\n            input[type=\"password\"],\n            input[type=\"number\"],\n            input[type=\"tel\"],\n            input[type=\"url\"],\n            input[type=\"search\"],\n            textarea,\n            select {\n              font-size: 16px !important;\n            }\n            \n            * {\n              touch-action: manipulation;\n              -webkit-touch-callout: none;\n            }\n            \n            button, input, select, textarea {\n              touch-action: manipulation;\n            }\n            \n            body[data-page-path=\"true\"] nav[role=\"navigation\"] ul[data-justify=\"center\"] {\n              display: none !important;\n            }\n            \n            body[data-page-path=\"true\"] .navbar-sticky nav[role=\"navigation\"] ul[data-justify=\"center\"] {\n              display: flex !important;\n            }\n\n            .venue-map-container {\n              will-change: transform;\n              transform: translateZ(0);\n            }\n\n            .main-content {\n              min-height: calc(100vh - 200px);\n            }\n\n            .animate-slide-up {\n              animation: slideUp 0.3s ease-out;\n            }\n\n            @keyframes slideUp {\n              from {\n                transform: translateY(100%);\n              }\n              to {\n                transform: translateY(0);\n              }\n            }\n\n            .pwa-install-button {\n              transition: all 0.2s ease;\n            }\n\n            .pwa-install-button:hover {\n              transform: scale(1.05);\n              box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n            }\n\n            .pwa-install-button:active {\n              transform: scale(0.98);\n            }\n\n            @media (max-width: 640px) {\n              #debug-console {\n                top: 50px;\n                right: 5px;\n                left: 5px;\n                width: auto;\n                max-height: 300px;\n              }\n            }\n          "])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"13:[\"$\",\"style\",null,{\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$17\"}}]\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"14:[\"$\",\"body\",null,{\"className\":\"bg-center min-h-screen flex flex-col\",\"children\":[[\"$\",\"$L18\",null,{\"initialSiteConfig\":{\"menuItems\":[{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/bf89b9e1-4bfb-46b9-9b18-30bfd1119ad5.jpg\",\"displayText\":\"Home\",\"page\":{\"internalDescription\":\"Home Prod\",\"route\":\"/page/home\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-homePage\"}],\"seo\":{\"title\":\"Buy Tickets Online – Events, Travel, Flights \u0026 More | Computicket\",\"description\":\"Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans.\",\"keywords\":\"buy tickets online, concert tickets South Africa, cheap flights, bus tickets, theatre shows, hotel bookings, digital vouchers, South Africa events, Computicket, flight bookings South Africa, accommodation deals, gift cards online\",\"ogImage\":\"https://content.computicket.com/bo/2fd8a76e-cb46-4eee-b512-7156cb5a2738.png\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@graph\\\": [\\r\\n    {\\r\\n      \\\"@type\\\": \\\"WebSite\\\",\\r\\n      \\\"@id\\\": \\\"https://computicket.com/#website\\\",\\r\\n      \\\"url\\\": \\\"https://computicket.com\\\",\\r\\n      \\\"name\\\": \\\"Computicket\\\",\\r\\n      \\\"potentialAction\\\": {\\r\\n        \\\"@type\\\": \\\"SearchAction\\\",\\r\\n        \\\"target\\\": \\\"https://computicket.com/search?q={search_term_string}\\\",\\r\\n        \\\"query-input\\\": \\\"required name=search_term_string\\\"\\r\\n      }\\r\\n    },\\r\\n    {\\r\\n      \\\"@type\\\": \\\"Organization\\\",\\r\\n      \\\"@id\\\": \\\"https://computicket.com/#organization\\\",\\r\\n      \\\"name\\\": \\\"Computicket\\\",\\r\\n      \\\"url\\\": \\\"https://computicket.com\\\",\\r\\n      \\\"logo\\\": \\\"https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png\\\",\\r\\n      \\\"sameAs\\\": [\\r\\n        \\\"https://www.facebook.com/computicket\\\",\\r\\n        \\\"https://twitter.com/computicket\\\",\\r\\n        \\\"https://www.instagram.com/computicket\\\"\\r\\n      ]\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"},\"featuredItems\":[]}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/d0565b7b-f9c7-4372-8825-08e6ee74fecc.jpg\",\"displayText\":\"Events\",\"page\":{\"internalDescription\":\"Events Prod\",\"route\":\"/event\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-eventHome\"}],\"seo\":{\"title\":\"Buy Tickets Online for Events, Concerts, Theatre \u0026 Sport | Computicket\",\"description\":\"Get tickets to the hottest live events in South Africa – concerts, theatre, sport, festivals and more. Secure your seat today with Computicket.\",\"keywords\":\"event tickets South Africa, concert tickets online, buy theatre tickets, sports tickets South Africa, live show tickets, live entertainment South Africa, comedy shows, music festivals, arts and culture events, Johannesburg theatre tickets, Cape Town concerts, festival tickets online, buy tickets for shows\",\"ogImage\":\"https://content.computicket.com/bo/7b44ee00-444b-4795-84d7-b1697c589b41.png\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@type\\\": \\\"CollectionPage\\\",\\r\\n  \\\"name\\\": \\\"Event Tickets – Concerts, Theatre, Sport \u0026 More | Computicket\\\",\\r\\n  \\\"description\\\": \\\"Explore and book tickets for concerts, live shows, festivals, theatre, and sports events. Find what's on now and secure your seat with Computicket.\\\",\\r\\n  \\\"url\\\": \\\"https://computicket.com/event\\\",\\r\\n  \\\"isPartOf\\\": {\\r\\n    \\\"@type\\\": \\\"WebSite\\\",\\r\\n    \\\"name\\\": \\\"Computicket\\\",\\r\\n    \\\"url\\\": \\\"https://computicket.com\\\"\\r\\n  },\\r\\n  \\\"breadcrumb\\\": {\\r\\n    \\\"@type\\\": \\\"BreadcrumbList\\\",\\r\\n    \\\"itemListElement\\\": [\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 1,\\r\\n        \\\"name\\\": \\\"Home\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 2,\\r\\n        \\\"name\\\": \\\"Events\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com/event/list\\\"\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\\r\\n\"}}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/998e8e6f-5682-4ded-a3ab-8c822d275746.jpg\",\"displayText\":\"Buses\",\"page\":{\"internalDescription\":\"Bus Prod\",\"route\":\"/travel/bus/booking\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-busHome\"}
370],\"seo\":{\"title\":\"Cheap Long-Distance Bus Tickets in South Africa | Computicket\",\"description\":\"Compare and book affordable long-distance bus tickets across South Africa. Safe, reliable transport with top bus operators\",\"keywords\":\"long distance bus tickets South Africa, book bus travel online, intercity bus tickets, cheap bus tickets, bus from Johannesburg to Durban, online bus booking South Africa, safe bus transport, luxury coach tickets, bus fare comparison South Africa, Intercape bus tickets, Greyhound, long distance travel South Africa\",\"ogImage\":\"https://content.computicket.com/bo/12538533-3bc7-491e-b18b-f4c78a31ff6c.png\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@type\\\": \\\"CollectionPage\\\",\\r\\n  \\\"name\\\": \\\"Book Long-Distance Bus Tickets Online | Computicket Travel\\\",\\r\\n  \\\"description\\\": \\\"Compare bus routes and book affordable long-distance bus travel across South Africa with top bus operators. Convenient, safe and reliable.\\\",\\r\\n  \\\"url\\\": \\\"https://computicket.comtravel/bus/booking\\\",\\r\\n  \\\"isPartOf\\\": {\\r\\n    \\\"@type\\\": \\\"WebSite\\\",\\r\\n    \\\"name\\\": \\\"Computicket Travel\\\",\\r\\n    \\\"url\\\": \\\"https://computicket.com\\\"\\r\\n  },\\r\\n  \\\"breadcrumb\\\": {\\r\\n    \\\"@type\\\": \\\"BreadcrumbList\\\",\\r\\n    \\\"itemListElement\\\": [\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 1,\\r\\n        \\\"name\\\": \\\"Home\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 2,\\r\\n        \\\"name\\\": \\\"Bus Travel\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.comtravel/bus/booking\\\"\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\\r\\n\"},\"featuredItems\":[{\"internalDescription\":\"Buses Feature item prod\",\"title\":\"BOOK YOUR BUS TICKETS HERE\",\"TextforPrice\":\"Same prices as in-store\",\"subText\":null,\"desktopImage\":\"https://content.computicket.com/wl/uploads/bus_2_generic_landing_banner_min_efe42c1d8a.png\",\"mobileImage\":\"https://content.computicket.com/wl/uploads/Travel_by_bus_mobi_min_49e1308206.png\",\"button\":null,\"buttonText\":null,\"buttonColor\":null,\"buttonUrl\":null,\"newWindow\":null,\"cssBackground\":null,\"dateFrom\":\"2022-11-09T07:17:22Z\",\"dateTo\":\"2025-02-28T07:17:28Z\"}]}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/87be7971-4bd7-49e2-8cbe-df20184f587d.jpg\",\"displayText\":\"Flights\",\"page\":{\"internalDescription\":\"Flight Prod\",\"route\":\"/travel/flight/booking\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-flightHome\"}],\"seo\":{\"title\":\"Book Cheap Flights – Domestic \u0026 International Airlines | Computicket\",\"description\":\"Search and book low-cost, domestic, regional, and international flights. Compare airlines, find flight deals and fly your way with Computicket.\",\"keywords\":\"cheap flight tickets South Africa, book flights online, domestic flights South Africa, international flights South Africa, low cost airlines South Africa, flight deals today, flights from Johannesburg to Cape Town, online flight booking, airfare comparison, budget airline tickets, FlySafair, Airlink, Lift Airlines, return flights South Africa\",\"ogImage\":\"https://content.computicket.com/bo/788dc6c8-f791-4a17-be0d-a4fb07a62437.png\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@type\\\": \\\"CollectionPage\\\",\\r\\n  \\\"name\\\": \\\"Book Cheap Flights – Domestic \u0026 International | Computicket Flights\\\",\\r\\n  \\\"description\\\": \\\"Search and compare flights on local and international airlines. Book low-cost or premium airline tickets with Computicket.\\\",\\r\\n  \\\"url\\\": \\\"https://computicket.com/travel/flight/booking\\\",\\r\\n  \\\"isPartOf\\\": {\\r\\n    \\\"@type\\\": \\\"WebSite\\\",\\r\\n    \\\"name\\\": \\\"Computicket Flights\\\",\\r\\n    \\\"url\\\": \\\"https://computicket.com\\\"\\r\\n  },\\r\\n  \\\"breadcrumb\\\": {\\r\\n    \\\"@type\\\": \\\"BreadcrumbList\\\",\\r\\n    \\\"itemListElement\\\": [\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 1,\\r\\n        \\\"name\\\": \\\"Home\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 2,\\r\\n        \\\"name\\\": \\\"Flights\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com/travel/flight/booking\\\"\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\\r\\n\"},\"featuredItems\":[{\"internalDescription\":\"Flights Feature item prod\",\"title\":\"INTERNATIONAL \u0026 LOCAL FLIGHTS\",\"TextforPrice\":\"\",\"subText\":null,\"desktopImage\":\"https://content.computicket.com/wl/uploads/Flights_min_8171962dde.png\",\"mobileImage\":\"https://content.computicket.com/wl/uploads/Flights_mobi_min_2af8620bd7.png\",\"button\":null,\"buttonText\":null,\"buttonColor\":null,\"buttonUrl\":null,\"newWindow\":null,\"cssBackgroun
370d\":null,\"dateFrom\":\"2022-11-09T07:17:22Z\",\"dateTo\":\"2025-02-28T07:17:28Z\"}]}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/5ba0a252-b8d5-493f-97e5-6e6246dc42c6.jpg\",\"displayText\":\"Airtime \u0026 Vouchers\",\"page\":{\"internalDescription\":\"Voucher\",\"route\":\"/product/list\",\"external\":false,\"layout\":[],\"featuredItems\":[],\"seo\":{\"title\":\"Buy Digital Vouchers \u0026 Grocery Gift Cards Online | Computicket\",\"description\":\"Instant delivery of digital vouchers, prepaid grocery gift cards and more. A quick and thoughtful gift, sent via SMS or email.\",\"keywords\":\"buy digital vouchers online, grocery gift cards South Africa, SMS voucher delivery, online vouchers South Africa, prepaid shopping vouchers, send voucher by SMS, digital gift cards, Checkers vouchers, Shoprite gift card, instant voucher South Africa, food vouchers online\",\"ogImage\":\"https://content.computicket.com/bo/c2ecf877-0fd8-4424-a7b4-93fc74bdbdf0.png\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@type\\\": \\\"CollectionPage\\\",\\r\\n  \\\"name\\\": \\\"Buy Digital Vouchers \u0026 Grocery Gift Cards | Computicket\\\",\\r\\n  \\\"description\\\": \\\"Get instant vouchers and prepaid grocery gift cards delivered via SMS or email. Perfect gifts or rewards, sent fast and securely.\\\",\\r\\n  \\\"url\\\": \\\"https://computicket.com/voucher/list\\\",\\r\\n  \\\"isPartOf\\\": {\\r\\n    \\\"@type\\\": \\\"WebSite\\\",\\r\\n    \\\"name\\\": \\\"Computicket\\\",\\r\\n    \\\"url\\\": \\\"https://computicket.com\\\"\\r\\n  },\\r\\n  \\\"breadcrumb\\\": {\\r\\n    \\\"@type\\\": \\\"BreadcrumbList\\\",\\r\\n    \\\"itemListElement\\\": [\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 1,\\r\\n        \\\"name\\\": \\\"Home\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 2,\\r\\n        \\\"name\\\": \\\"Vouchers\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com/voucher/list\\\"\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\\r\\n\"}}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/04cdc1ce-da3b-40ec-93a4-59d733aeeedc.jpg\",\"displayText\":\"Stay\",\"page\":{\"internalDescription\":\"Stay\",\"route\":\"/stay\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-stayHome\"}],\"seo\":{\"title\":\"Book Hotels, Guest Houses \u0026 B\u0026Bs Online | Computicket\",\"description\":\"Discover and book affordable accommodation in South Africa. Hotels, bed \u0026 breakfasts, and guest houses with flexible rates.\",\"keywords\":\"book accommodation South Africa, hotels guest houses B\u0026Bs, online hotel booking SA, affordable places to stay South Africa, bed and breakfast booking, guest house South Africa, weekend getaways SA, romantic accommodation South Africa, family friendly hotels, Cape Town accommodation, hotel deals South Africa\",\"ogImage\":\"https://content.computicket.com/bo/aa15add7-a1b2-41ce-af0d-4aea5c1aba2d.png\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@type\\\": \\\"CollectionPage\\\",\\r\\n  \\\"name\\\": \\\"Book Accommodation – Hotels, B\u0026Bs \u0026 Guest Houses | Computicket Stays\\\",\\r\\n  \\\"description\\\": \\\"Find and book stays across South Africa. Discover hotels, guest houses, and bed \u0026 breakfasts that suit your budget and location.\\\",\\r\\n  \\\"url\\\": \\\"https://computicket.com/stay\\\",\\r\\n  \\\"isPartOf\\\": {\\r\\n    \\\"@type\\\": \\\"WebSite\\\",\\r\\n    \\\"name\\\": \\\"Computicket Stays\\\",\\r\\n    \\\"url\\\": \\\"https://computicket.com\\\"\\r\\n  },\\r\\n  \\\"breadcrumb\\\": {\\r\\n    \\\"@type\\\": \\\"BreadcrumbList\\\",\\r\\n    \\\"itemListElement\\\": [\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 1,\\r\\n        \\\"name\\\": \\\"Home\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 2,\\r\\n        \\\"name\\\": \\\"Stay\\\",\\r\\n        \\\"item\\\": \\\"https://computicket.com/stay\\\"\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\\r\\n\"}}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/5f90970b-3385-4615-8002-0a3c5b3c1647.png\",\"displayText\":\"Blog\",\"hidden\":true,\"page\":{\"internalDescription\":\"Blog\",\"route\":\"/blog\",\"external\":null,\"layout\":[],\"seo\":{\"title\":\"Travel Tips, Events \u0026 Destination Guides | Computicket Blog\",\"description\":\"Discover insider travel tips, trending events, destination guides, and exclusive deals on the Computicket Blog. Get inspired for your next adventure in South Africa.\",\"keywords\":\"South Africa travel blog, travel tips and guides, event updates SA, Computicket blog, accommodation tips South Africa, concerts and shows blog, best events in Cape Town, weekend getaway ideas, romantic travel South Africa, family travel advice SA, budget travel South Africa\",\"ogImage\":\"https://content.computicket.com/bo/65270d1c-9559-47d8-85eb-1bebf213c7ba.jpg\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@type\\\": \\\"Blog\\\",\\r\\n  \\\"name\\\": \\\"Computicket Blog\\\",\\r\\n  \\\"url\\\": \\\"https://www.computicket.com/blog\\\",\\r\\n  \\\"description\\\": \\\"Explore top travel tips, trending events, and accommodation ideas with the Computicket Blog. Your local guide to exploring South Africa.\\\",\\r\\n  \\\"publisher\\\": {\\r\\n    \\\"@type\\\": \\\"Organization\\\",\\r\\n    \\\"name\\\": \\\"Computicket\\\",\\r\\n    \\\"url\\\": \\\"https://www.computicket.com\\\",\\r\\n    \\\"logo\\\": {\\r\\n      \\\"@type\\\": \\\"ImageObject\\\",\\r\\n      \\\"url\\\": \\\"https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png\\\"\\r\\n    }\\r\\n  },\\r\\n  \\\"breadcrumb\\\": {\\r\\n    \\\"@type\\\": \\\"BreadcrumbList\\\",\\r\\n    \\\"itemListElement\\\": [\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 1,\\r\\n        \\\"name\\\": \\\"Home\\\",\\r\\n        \\\"item\\\": \\\"https://www.computicket.com\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"@type\\\": \\\"ListItem\\\",\\r\\n        \\\"position\\\": 2,\\r\\n        \\\"name\\\": \\\"Blog\\\",\\r\\n        \\\"item\\\": \\\"https://www.computicket.com/blog\\\"\\r\\n      }\\r\\n    ]\\r\\n  }\\r\\n}\"}}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/5f90970b-3385-4615-8002-0a3c5b3c1647.png\",\"displayText\":\"Test\",\"hidden\":true,\"page\":{\"internalDescription\":\"Test\",\"route\":\"/page/dev\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-dev\"}
370],\"seo\":{\"title\":\"Book Accommodation | Hotels, B\u0026Bs \u0026 Self Catering | Computicket\",\"description\":\"Find and book accommodation across South Africa. Choose from hotels, guesthouses, B\u0026Bs and self-catering options at competitive prices with Computicket.\",\"keywords\":\"accommodation, hotels, B\u0026B, self catering, guesthouses, lodges, South Africa accommodation\",\"ogImage\":\"https://content.computicket.com/bo/85a77f6d-c1a6-454c-9af6-8da5a2935e09.png\"}}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/5f90970b-3385-4615-8002-0a3c5b3c1647.png\",\"displayText\":\"Access in the wild\",\"hidden\":true,\"page\":{\"internalDescription\":\"Test\",\"route\":\"/page/access-in-the-wild\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-accessInTheWild\"}],\"seo\":{\"title\":\"#AccessInTheWild Competition | Win R35k with Computicket\",\"description\":\"Join the #AccessInTheWild summer campaign! Download characters, get creative \u0026 win R35,000 in flights, events, and travel prizes. Enter now with Mpho, Zee \u0026 Nia!\",\"keywords\":\"AccessInTheWild, Computicket competition, win flights South Africa, travel prizes, event tickets competition, R35000 prize, Mpho Motion, Zee Voltage, Nia Wander, summer competition 2025, bus tickets competition, concert tickets prize, WhatsApp community, social media competition, travel vouchers, South Africa giveaway\",\"ogImage\":\"https://content.computicket.com/bo/e726ad18-8a7b-4fc2-a53a-6dd4ddc1d1ce.png\"}}},{\"menuIcon\":\"\",\"backgroundImage\":\"https://content.computicket.com/bo/5f90970b-3385-4615-8002-0a3c5b3c1647.png\",\"displayText\":\"Sell Your Tickets\",\"hidden\":true,\"page\":{\"internalDescription\":\"TSell Your Ticketsst\",\"route\":\"/page/sell-your-tickets\",\"external\":null,\"layout\":[{\"DisplayType\":\"lookup\",\"param\":\"computicket.com-sellYourTickets\"}],\"seo\":{\"title\":\"Sell Event Tickets | Computicket for Event Organizers\",\"description\":\"List your event on Computicket and reach 60M+ customers. 4.5% commission, free setup, no exclusivity. Sell tickets online and in 1,200+ stores across South Africa.\",\"keywords\":\"event ticketing platform, sell tickets online, event management software, ticketing system South Africa, online ticket sales, box office management, event organizer platform, retail ticket sales, low commission ticketing, free event ticketing, Computicket, Shoprite tickets, ticket scanning app, event registration system\",\"ogImage\":\"https://content.computicket.com/bo/0458f2bc-8a7c-442e-926c-3bb422015349.png\"}}}],\"siteTitle\":\"For all your Travel and Ticket requirements.\",\"agentName\":\"Computicket\",\"channelId\":\"1960\",\"channelType\":\"WEB\",\"supportEmailAddress\":\"[email protected]\",\"contactCentre\":\"0861 915 800\",\"siteDescription\":\"A world of experiences at your fingertips. Buy your Show tickets, Event tickets, Bus tickets, Sport tickets and entries, Theatre tickets, Races, Festivals or Flight tickets we have it all. Looking for some accommodation or a place to stay we cover Johannesburg, Durban, Cape Town and the whole of South Africa.\",\"aboutUsMessage\":\"Computicket since 1971 for all your entertainment and travel ticket requirements.\",\"showHeader\":true,\"showFooter\":true,\"showMenubar\":true,\"showBasket\":true,\"showLogin\":true,\"isDebugmode\":false,\"isPosmode\":false,\"displayHeaderBar\":true,\"headerBarMessage\":\"#AccessInTheWild\",\"footerHeader\":\"Computicket (Pty) Ltd - 2025\",\"menuHeader\":\"\u003cstyle\u003e@media (min-width: 1400px) {.hero-title-responsive {font-size: clamp(52px, 5.8vw, 60px) !important;}}@media (min-width: 1700px) {.hero-title-responsive {font-size: 60px !important;margin-bottom: 28px !important;}}\u003c/style\u003e\u003ch1 class=\\\"hero-title-responsive\\\" style=\\\"font-size: clamp(32px, 5.5vw, 60px);font-weight: 900;line-height: 1.1;letter-spacing: -2px;margin-bottom: 20px;color: #1a1a2e;margin-top: 0;padding: 0;\\\"\u003eYour Holiday Adventure\u003cbr\u003e\u003cspan style=\\\"background: linear-gradient(135deg, #8B2A6B 0%, #00CED1 100%);-webkit-background-clip: text;-webkit-text-fill-color: transparent;background-clip: text;\\\"\u003eStarts Right Here\u003c/span\u003e\u003c/h1\u003e\",\"menuType\":\"round\",\"physicalAddress\":\"Computicket House, Greenacres Office Park, Cnr Victory and Rustenburg Roads, Victory Park 2195\",\"postalAddress\":\"\",\"googleMapsApiKey\":\"AIzaSyCatYNtOe6rDeHmS_2_m8YeuiHNUqgVB5U\",\"gtmNo\":\"G-Y5KMVM7V84\",\"storeLocator\":\"0861915800\",\"allowCustomJs\":true,\"enableUserLocation\":null,\"timeAdd\":120,\"siteMetaTags\":\"[]\",\"pwa\":{\"enablePwa\":true,\"enableSw\":true,\"themeColor\":\"#42434e\",\"cacheVersion\":\"v2x\",\"backgroundColor\":\"#42434e\",\"appleIcon\":\"https://content.computicket.com/bo/0f13010f-d472-4001-a5ad-afd578e2b805.png\",\"installPrompt\":{\"enabled\":true,\"delayMs\":2000,\"dismissDurationHours\":168,\"showOnPages\":[\"/myprofile\",\"/page/access-in-the-wild\"],\"icon\":\"https://content.computicket.com/bo/08112b71-b96a-476a-ae9a-1d7c75a22fb8.png\",\"title\":\"Install Computicket\",\"message\"
370:\"Add to your home screen for easy access\",\"installButtonText\":\"Install\",\"dismissButtonText\":\"Not now\"},\"manifest\":{\"name\":\"Computicket\",\"shortName\":\"Computicket\",\"description\":\"A world of experiences at your fingertips\",\"startUrl\":\"/\",\"display\":\"standalone\",\"icons\":[{\"src\":\"https://content.computicket.com/bo/681d3d76-9113-47e4-87df-8fdcd031bff7.png\",\"sizes\":\"48x48\",\"type\":\"image/png\"},{\"src\":\"https://content.computicket.com/bo/7291350c-e4c7-41e8-940b-319527412fac.png\",\"sizes\":\"72x72\",\"type\":\"image/png\"},{\"src\":\"https://content.computicket.com/bo/08112b71-b96a-476a-ae9a-1d7c75a22fb8.png\",\"sizes\":\"96x96\",\"type\":\"image/png\"},{\"src\":\"https://content.computicket.com/bo/d6d0a798-a270-4c9b-a38c-7c72359da6d7.png\",\"sizes\":\"144x144\",\"type\":\"image/png\"},{\"src\":\"https://content.computicket.com/bo/0f13010f-d472-4001-a5ad-afd578e2b805.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"},{\"src\":\"https://content.computicket.com/bo/2cdd6f6c-e4c8-4df8-8a28-3cf17ac1f5b8.png\",\"sizes\":\"512x512\",\"type\":\"image/png\"}],\"splashScreens\":[{\"src\":\"https://content.computicket.com/bo/9bbc19d7-ff11-4d5b-8537-403b43fdd526.jpg\",\"sizes\":\"640x1136\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/a2baddee-c46e-4b78-8ea7-c11e64c6ad5a.jpg\",\"sizes\":\"750x1334\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/e1dc312b-a962-401c-a2c6-4134b7f4f128.jpg\",\"sizes\":\"1125x2436\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/17f7d5d0-5573-4088-996f-55211a6f3cb5.jpg\",\"sizes\":\"1242x2688\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/9076c26f-68d4-4973-ab8c-b038d56b0011.jpg\",\"sizes\":\"828x1792\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/5d9d89d6-0269-40c0-91f7-0f458f550074.jpg\",\"sizes\":\"1536x2048\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/acd5e517-4ea0-4190-b78f-6aa1cbec9d97.jpg\",\"sizes\":\"1668x2224\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/e592bf6c-23d2-4db7-8437-e2a40d6153cc.jpg\",\"sizes\":\"2048x2732\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/75e9e3cb-19ae-4463-b12b-1573fa455314.jpg\",\"sizes\":\"320x480\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/bc19d7f5-e7e8-4eef-8c0b-c4b661391c65.jpg\",\"sizes\":\"480x800\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/1bb14a53-3763-4752-b454-a96554221c6f.jpg\",\"sizes\":\"720x1280\",\"type\":\"image/jpeg\"},{\"src\":\"https://content.computicket.com/bo/2a6489b3-92a0-41b7-9882-36e260517f99.jpg\",\"sizes\":\"1080x1920\",\"type\":\"image/jpeg\"}]}},\"bus_discount\":[{\"id\":\"ADULT\",\"displayText\":\"Adult\",\"desc\":\"older than 12 years\"},{\"id\":\"SENIOR\",\"displayText\":\"Senior\",\"desc\":\"older than 60 years\"},{\"id\":\"CHILD\",\"displayText\":\"Child\",\"desc\":\"younger than 12 years\"},{\"id\":\"STUDENT\",\"displayText\":\"Student\",\"desc\":\"valid student card is required\"},{\"id\":\"SAPSANDF\",\"displayText\":\"SAPSANDF\",\"desc\":\"SAPSANDF identification is required\"}],\"seo\":{\"title\":\"Buy Tickets Online – Events, Travel, Flights \u0026 More | Computicket\",\"description\":\"Book tickets for events, concerts, theatre, flights, bus travel, vouchers and accommodation – all in one place. Trusted by millions of South Africans.\",\"keywords\":\"buy tickets online, concert tickets South Africa, cheap flights, bus tickets, theatre shows, hotel bookings, digital vouchers, South Africa events, Computicket, flight bookings South Africa, accommodation deals, gift cards online\",\"ogImage\":\"https://content.computicket.com/bo/2fd8a76e-cb46-4eee-b512-7156cb5a2738.png\",\"siteUrl\":\"https://computicket.com\",\"JSON-LD\":\"{\\r\\n  \\\"@context\\\": \\\"https://schema.org\\\",\\r\\n  \\\"@graph\\\": [\\r\\n    {\\r\\n      \\\"@type\\\": \\\"WebSite\\\",\\r\\n      \\\"@id\\\": \\\"https://computicket.com/#website\\\",\\r\\n      \\\"url\\\": \\\"https://computicket.com\\\",\\r\\n      \\\"name\\\": \\\"Computicket\\\",\\r\\n      \\\"potentialAction\\\": {\\r\\n        \\\"@type\\\": \\\"SearchAction\\\",\\r\\n        \\\"target\\\": \\\"https://computicket.com/search?q={search_term_string}\\\",\\r\\n        \\\"query-input\\\": \\\"required name=search_term_string\\\"\\r\\n      }\\r\\n    },\\r\\n    {\\r\\n      \\\"@type\\\": \\\"Organization\\\",\\r\\n      \\\"@id\\\": \\\"https://computicket.com/#organization\\\",\\r\\n      \\\"name\\\": \\\"Computicket\\\",\\r\\n      \\\"url\\\": \\\"https://computicket.com\\\",\\r\\n      \\\"logo\\\": \\\"https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png\\\",\\r\\n      \\\"sameAs\\\": [\\r\\n        \\\"https://www.facebook.com/computicket\\\",\\r\\n        \\\"https://twitter.com/computicket\\\",\\r\\n        \\\"https://www.instagram.com/computicket\\\"\\r\\n      ]\\r\\n    }\\r\\n  ]\\r\\n}\\r\\n\"},\"siteTheme\":{\"favicon\":\"https://cmsaccom.computicket.com/api/assets/accomodation/345d87ee-eb05-4b43-b487-8f452329dad2/\",\"siteLogo\":\"https://content.computicket.com/wl/uploads/ctknewlogo_2227c0ca2c.png\",\"primaryColor\":\"#e71f3e\",\"secondaryColor\":\"#141a20\",\"menubarColor\":\"rgba(255,255,255,1)\",\"backgroundColor\":\"#ffffff\",\"fontColorPrimary\":\"#ffffff\",\"fontColorSecondary\":\"#ffffff\",\"mobileLogo\":\"https://content.computicket.com/site/mobile.computicket.com/[email protected]\",\"footerIcon\":\"https://content.computicket.com/bo/5b27bbfc-2046-4ca7-98ca-e909efa1dc77.svg\",\"footerBackgroun
370dColor\":\"#E9EDF1\",\"perPersonColor\":\"#c71c87\",\"unitPriceColor\":\"#42434E\",\"amenitiesColor\":\"#e71f3e\",\"menuTextColor\":\"#42434E\",\"footerFontColor\":\"#42434E\",\"primaryColorGradient\":\"linear-gradient(209.39deg, #C61D86 4.24%, #CA1D7B 11.29%, #D71E5F 34.45%, #DF1F4B 57.61%, #E51F3F 81.78%, #E7203C 104.94%)\",\"secondaryColorGradient\":null},\"lastUpdated\":\"2026-10-02T05:22:16.835Z\"},\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\",\"children\":[\"$L19\",\"$L1a\"]}],\"$L1b\",\"$L1c\"]}]\n"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"1d:I[340221,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n1e:I[683644,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"PWAInstallProvider\"]\n1f:I[655942,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n20:I[760542,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\",\"/_next/static/chunks/0y_jjs_2qrc~w.js\"],\"default\"]\n21:I[906976,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\",\"/_next/static/chunks/12dk56r.nvbw3.js\"],\"default\"]\n22:I[446108,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n23:I[445382,[\"/_next/static/chunks/11-hmxl2mmjt..js\",\"/_next/static/chunks/0md2ilb1elzh7.js\",\"/_next/static/chunks/0ho~4mcu7_9qh.js\",\"/_next/static/chunks/0e45-q7k7uui2.js\",\"/_next/static/chunks/166u_u1jr~j4y.js\",\"/_next/static/chunks/0w20gzpvgzwud.js\",\"/_next/static/chunks/01167vh-d--ie.js\",\"/_next/static/chunks/0osj~rxb995xf.js\",\"/_next/static/chunks/0d78up986s16..
370js\",\"/_next/static/chunks/144cysjdge7g6.js\",\"/_next/static/chunks/07c9gmb.7xj6o.js\",\"/_next/static/chunks/0h8ea52.j.8fg.js\",\"/"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"_next/static/chunks/14x..lz37ludd.js\",\"/_next/static/chunks/0cao1jff.2xc0.js\"],\"default\"]\n19:[\"$\",\"$L1d\",null,{}]\n1a:[\"$\",\"$L1e\",null,{\"siteConfig\":\"$14:props:children:0:props:initialSiteConfig\",\"children\":[[\"$\",\"$L1f\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex-grow main-content-wrapper\",\"children\":[\"$\",\"main\",null,{\"className\":\"flex-grow main-content\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$20\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0y_jjs_2qrc~w.js\",\"async\":true}]],\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"$L21\",null,{}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}],[\"$\",\"$L22\",null,{}],[\"$\",\"$L23\",null,{\"siteConfig\":\"$14:props:children:0:props:initialSiteConfig\",\"pwaPromptConfig\":{\"enabled\":true,\"delayMs\":2000,\"dismissDurationHours\":168,\"showOnPages\":\"$14:props:children:0:props:initialSiteConfig:pwa:installPrompt:showOnPages\"},\"primaryColor\":\"#e71f3e\",\"menuTextColor\":\"#42434E\"}]]}]\n24:Tf4d,"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"\n              if ('serviceWorker' in navigator) {\n                window.addEventListener('load', async () =\u003e {\n                  try {\n                    const existingRegistrations = await navigator.serviceWorker.getRegistrations();\n                    \n                    const oldRegistrations = existingRegistrations.filter(reg =\u003e {\n                      return reg.scope.includes('/sw.js') || \n                             (reg.active \u0026\u0026 reg.active.scriptURL \u0026\u0026 reg.active.scriptURL.includes('/sw.js')) ||\n                             (!reg.scope.includes('/api/sw') \u0026\u0026 reg.scope !== window.location.origin + '/');\n                    });\n                    \n                    if (oldRegistrations.length \u003e 0) {\n                      for (const registration of oldRegistrations) {\n                        try {\n                          await registration.unregister();\n                        } catch (error) {\n                          // Silent error handling\n                        }\n                      }\n                    }\n                    \n                    if ('caches' in window) {\n                      try {\n                        const cacheNames = await caches.keys();\n                        \n                        const legacyCacheNames = cacheNames.filter(name =\u003e \n                          name.includes('sw-cache') || \n                          name.includes('workbox') || \n                          name.includes('precache') ||\n                          (name.includes('runtime-cache') \u0026\u0026 !name.includes('computicket'))\n                        );\n                        \n                        if (legacyCacheNames.length \u003e 0) {\n                          for (const cacheName of legacyCacheNames) {\n                            await caches.delete(cacheName);\n                          }\n                        }\n                      } catch (error) {\n                        // Silent error handling\n                      }\n                    }\n                    \n                    const registration = await navigator.serviceWorker.register('/api/sw', {\n                      scope: '/',\n                      updateViaCache: 'none'\n                    });\n                    \n                    registration.addEventListener('updatefound', () =\u003e {\n                      const newWorker = registration.installing;\n                      \n                      newWorker.addEventListener('statechange', () =\u003e {\n                        if (newWorker.state === 'installed') {\n                          if (navigator.serviceWorker.controller) {\n                            window.swUpdateAvailable = true;\n                          }\n                        }\n                      });\n                    });\n                    \n                    setInterval(() =\u003e {\n                      registration.update().catch(err =\u003e {\n                        // Silent error handling\n                      });\n                    }, 60000);\n                    \n                    window.swRegistration = registration;\n                    window.swRegistrationTime = new Date().toISOString();\n                    \n                  } catch (error) {\n                    window.swRegistrationError = error;\n                  }\n                });\n                \n                navigator.serviceWorker.addEventListener('message', (event) =\u003e {\n                  if (event.data \u0026\u0026 event.data.type === 'NEW_VERSION') {\n                    window.swVersion = event.data.version;\n                    window.swUpdateTime = event.data.timestamp;\n                  }\n                });\n                \n                navigator.serviceWorker.addEventListener('controllerchange', () =\u003e {\n                  window.swControllerChanged = true;\n                });\n                \n              } else {\n                window.swNotSupported = true;\n              }\n            "])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"1b:[\"$\",\"script\",null,{\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$24\"}}]\n25:T919,"])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"\n              // Simplified PWA event handling - user actions only\n              (function() {\n                let deferredPrompt = null;\n\n                // Handle beforeinstallprompt event for Android/Desktop\n                window.addEventListener('beforeinstallprompt', (e) =\u003e {\n                  e.preventDefault();\n                  deferredPrompt = e;\n                  window.deferredPrompt = deferredPrompt;\n                });\n\n                // App installed event - only log user-confirmed installations\n                window.addEventListener('appinstalled', () =\u003e {\n                  // Hide React modal if shown\n                  if (window.hideAndroidInstallModal \u0026\u0026 typeof window.hideAndroidInstallModal === 'function') {\n                    window.hideAndroidInstallModal();\n                  }\n                  \n                  // Log successful installation via fetch\n                  if (window.fetch) {\n                    fetch('/api/logger', {\n                      method: 'POST',\n                      headers: { 'Content-Type': 'application/json' },\n                      body: JSON.stringify({\n                        level: 'info',\n                        message: 'PWA Install Successful - Android',\n                        action: 'install_completed',\n                        installEvent: 'browser_install_success',\n                        source: 'pwa-install',\n                        installDetails: {\n                          platform: 'android',\n                          installMethod: 'browser_confirmed',\n                          completionType: 'appinstalled_event'\n                        },\n                        userContext: {\n                          sessionId: 'unknown',\n                          userAgent: navigator.userAgent || 'unknown'\n                        },\n                        metadata: {\n                          timestamp: new Date().toISOString(),\n                          loggedFromClient: true\n                        }\n                      })\n                    }).catch(() =\u003e {}); // Silent fail\n                  }\n                  \n                  localStorage.setItem('pwa-app-installed', 'true');\n                  deferredPrompt = null;\n                  window.deferredPrompt = null;\n                });\n              })();\n            "])</script>
370<script nonce="IovxAYKVL3TnvxJG901U9A==">self.__next_f.push([1,"1c:[\"$\",\"script\",null,{\"nonce\":\"IovxAYKVL3TnvxJG901U9A==\",\"suppressHydrationWarning\":true,\"dangerouslySetInnerHTML\":{\"__html\":\"$25\"}}]\n"])</script>
370</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.