1<!doctype html> 2<html lang="en" class="h-100"> 3 <head> 4 <meta charset="utf-8"/> 5 <!-- needs to be right at the top to prevent Chrome from reloading favicon on every route change --> 6 <link rel="icon" type="image/x-icon" href="favicon.ico"/> 7 <title>IKO</title> 8 9 <!-- Preconnects --> 10 <link rel="preconnect" href="https://d8.ikointl.com"/> 11 <link rel="preconnect" href="https://connect.facebook.net"/> 12 13 <!-- Font Preloads --> 14 <link rel="prefetch" href="/assets/fonts/iko.woff2" as="font" type="font/woff2" crossorigin=""/> 15 <link rel="preload" href="/assets/fonts/opensans.woff2?v=13" as="font" type="font/woff2" crossorigin=""/> 16 <base href="/"/> 17 18 <!-- Viewport and Other Meta Tags --> 19 <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/> 20 <meta name="msapplication-tap-highlight" content="no"/> 21 <meta name="theme-color" content="#4e8ef7"/> 22 <meta name="apple-itunes-app" content="app-id=1314907796, affiliate-data=IKO, app-argument="/> 23 <meta property="og:image" content="https://beta.ikointl.com/assets/iko-logo-dark.png"/> 24 <meta property="og:image:width" content="512"/> 25 <meta property="og:image:height" content="512"/> 26 <meta name="twitter:image" content="https://beta.ikointl.com/assets/iko-logo-dark.png"/> 27 <meta name="twitter:image:width" content="512"/> 28 <meta name="twitter:image:height" content="512"/> 29 <meta property="og:type" content="website"/> 30 <!-- disable dark theme --> 31 <meta name="color-scheme" content="light dark"/> 32 <!-- TODO --> 33 <meta name="robots" content="index,follow"/> 34 35 <meta name="description" content="IKO is the world's leading kiteboarding organization specializing in kiteboard education, promoting safe practices and enhancing the highest standards for the industry."/> 36 37 <!-- add to homescreen for ios --> 38 <meta name="apple-mobile-web-app-capable" content="yes"/> 39 <meta name="apple-mobile-web-app-status-bar-style" content="default"/> 40 <link rel="manifest" href="manifest.webmanifest"/> 41 <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"/> 42 <link rel="canonical" href="https://www.ikointl.com/"/> 43 <!-- htmllint-disable --> 44 <style type="text/css"> 45 html { 46 /* height: 100vh !important; */ 47 width: 100vw !important; 48 } 49 .pac-container { 50 z-index: 1055; 51 } 52 53 #iko-splash-screen, 54 #browser-not-supported { 55 display: none; 56 position: absolute; 57 top: 0; 58 left: 0; 59 right: 0; 60 bottom: 0; 61 background-image: linear-gradient(to bottom, #005eb8, #005eb8, #003a72, #002950, #001930); 62 z-index: 99999; 63 pointer-events: none; 64 } 65 66 #iko-splash-screen .center { 67 display: block; 68 width: 100%; 69 position: absolute; 70 top: 50%; 71 transform: translateY(-50%); 72 } 73 74 #iko-splash-screen .logo { 75 width: 320px; 76 margin: 0 auto; 77 } 78 79 /* #iko-splash-screen .logo img { 80 filter: drop-shadow(0px 10px 6px rgba(0, 0, 0, 0.2)); 81 } */ 82 83 #iko-splash-screen .spinner-wrapper { 84 display: block; 85 position: relative; 86 width: 100%; 87 min-height: 100px; 88 height: 100px; 89 } 90 91 #iko-splash-screen .spinner-wrapper .spinner { 92 position: absolute; 93 overflow: hidden; 94 left: 50%; 95 margin-left: -50px; 96 animation: outer-rotate 2.91667s linear infinite; 97 } 98 99 #iko-splash-screen .spinner-wrapper .spinner .inner { 100 width: 100px; 101 height: 100px; 102 position: relative; 103 animation: sporadic-rotate 5.25s cubic-bezier(0.35, 0, 0.25, 1) infinite; 104 } 105 106 #iko-splash-screen .spinner-wrapper .spinner .inner .gap { 107 position: absolute; 108 left: 49px; 109 right: 49px; 110 top: 0; 111 bottom: 0; 112 border-top: 10px solid; 113 box-sizing: border-box; 114 } 115 116 #iko-splash-screen .spinner-wrapper .spinner .inner .left, 117 #iko-splash-screen .spinner-wrapper .spinner .inner .right { 118 position: absolute; 119 top: 0; 120 height: 100px; 121 width: 50px; 122 overflow: hidden; 123 } 124 125 #iko-splash-screen .spinner-wrapper .spinner .inner .left .half-circle, 126 #iko-splash-screen .spinner-wrapper .spinner .inner .right .half-circle { 127 position: absolute; 128 top: 0; 129 width: 100px; 130 height: 100px; 131 box-sizing: border-box; 132 /* border: 10px solid #4285F4; */ 133 border: 10px solid white; 134 border-bottom-color: transparent; 135 border-radius: 50%; 136 } 137 138 #iko-splash-screen .spinner-wrapper .spinner .inner .left { 139 left: 0; 140 } 141 142 #iko-splash-screen .spinner-wrapper .spinner .inner .left .half-circle { 143 left: 0; 144 border-right-color: transparent; 145 animation: left-wobble 1.3125s cubic-bezier(0.35, 0, 0.25, 1) infinite; 146 -webkit-animation: left-wobble 1.3125s cubic-bezier(0.35, 0, 0.25, 1) infinite; 147 } 148 149 #iko-splash-screen .spinner-wrapper .spinner .inner .right { 150 right: 0; 151 } 152 153 #iko-splash-screen .spinner-wrapper .spinner .inner .right .half-circle { 154 right: 0; 155 border-left-color: transparent; 156 animation: right-wobble 1.3125s cubic-bezier(0.35, 0, 0.25, 1) infinite; 157 -webkit-animation: right-wobble 1.3125s cubic-bezier(0.35, 0, 0.25, 1) infinite; 158 } 159 160 @keyframes outer-rotate { 161 0% { 162 transform: rotate(0deg) scale(0.5); 163 } 164 100% { 165 transform: rotate(360deg) scale(0.5); 166 } 167 } 168 169 @keyframes left-wobble { 170 0%, 171 100% { 172 transform: rotate(130deg); 173 } 174 50% { 175 transform: rotate(-5deg); 176 } 177 } 178 179 @keyframes right-wobble { 180 0%, 181 100% { 182 transform: rotate(-130deg); 183 } 184 50% { 185 transform: rotate(5deg); 186 } 187 } 188 189 @keyframes sporadic-rotate { 190 12.5% { 191 transform: rotate(135deg); 192 } 193 25% { 194 transform: rotate(270deg); 195 } 196 37.5% { 197 transform: rotate(405deg); 198 } 199 50% { 200 transform: rotate(540deg); 201 } 202 62.5% { 203 transform: rotate(675deg); 204 } 205 75% { 206 transform: rotate(810deg); 207 } 208 87.5% { 209 transform: rotate(945deg); 210 } 211 100% { 212 transform: rotate(1080deg); 213 } 214 } 215 216 #browser-not-supported { 217 text-align: center; 218 color: white; 219 flex-direction: column; 220 align-items: center; 221 } 222 223 #browser-not-supported img.logo { 224 margin-bottom: 20px; 225 width: 320px; 226 } 227 #browser-not-supported img.warning { 228 margin-bottom: 10px; 229 width: 80px; 230 } 231 #browser-not-supported .warning-text { 232 margin: 0 30px; 233 text-align: left; 234 } 235 236 #browser-not-supported .warning-text .justify { 237 text-align: justify; 238 } 239 240 #browser-not-supported .warning-text .center { 241 text-align: center; 242 } 243 </style> 244 <link rel="stylesheet" href="styles.5e609ef359bda722.css"></head> 245 246 <body class="h-100"> 247 <iko-splash-screen id="iko-splash-screen"> 248 <div class="center"> 249 <div class="logo"> 250 <img width="320" height="96" src="/assets/images/iko-logo.svg" fetchpriority="high" alt="iko-logo"/> 251 </div> 252 253 <!-- Material Design Spinner --> 254 <div class="spinner-wrapper"> 255 <div class="spinner"> 256 <div class="inner"> 257 <div class="gap"></div> 258 <div class="left"> 259 <div class="half-circle"></div> 260 </div> 261 <div class="right"> 262 <div class="half-circle"></div> 263 </div> 264 </div> 265 </div> 266 </div> 267 <!-- / Material Design Spinner --> 268 </div> 269 </iko-splash-screen> 270 <div id="browser-not-supported"> 271 <img class="logo" data-src="/assets/images/iko-logo.svg" alt="iko-logo"/> 272 <img class="warning" data-src="/assets/images/warning-yellow.png" alt="warning-yellow"/> 273 <div class="warning-text"> 274 <div class="justify"> 275 The version of the Android System WebView that you are currently running is incompatible with our application. 276 To continue enjoying the smooth experience of our app, we kindly request that you update your Android System 277 WebView to the latest version. 278 </div> 279 <br/><br/> 280 <ol> 281 <li>Google Play Store: <b>Android System WebView</b></li> 282 283 <li>Press the "Update" button.</li> 284 </ol> 285 <br/> 286 <div class="center"> 287 If the issue persists please contact <b href="mailto:[email protected]"><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0e7d7b7e7e617c7a4e67656167607a62206d6163">[email protected]</a></b> 288 </div> 289 </div> 290 </div> 291 <!--[if lt IE 10]> 292 <p> 293 You are using an <strong>outdated</strong> browser. Please 294 <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience. 295 </p> 296 <![endif]--> 297 298 <noscript> 299 <p>This page requires JavaScript to work properly. Please enable JavaScript in your browser.</p> 300 </noscript> 301 <!-- Include Cordova script only when needed -->
vendor: 113 bytes, lines 301-302
301 302 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
302<script> 303 document.querySelector('#iko-splash-screen').style.display = 'block'; 304 if ( 305 (/^localhost/.test(location.host) && location.protocol === 'https:') || 306 /^app.ikointl.com/.test(location.host) 307 ) { 308 // checking if the browser has the support for > ES6 309 if (![].flat) { 310 const images = document.querySelectorAll('#browser-not-supported img'); 311 images.forEach((image) => { 312 image.src = image.getAttribute('data-src'); 313 image.removeAttribute('data-src'); 314 }); 315 document.querySelector('#iko-splash-screen').style.display = 'none'; 316 document.querySelector('#browser-not-supported').style.display = 'flex'; 317 } else { 318 document.write('
318<script src="cordova.js"><\/script>'); 319 } 320 } 321 </script>
321 322
322<script> 323 /*! modernizr 3.6.0 (Custom Build) | MIT * 324 * https://modernizr.com/download/?-webp-setclasses !*/ 325 !(function (e, n, A) { 326 function o(e, n) { 327 return typeof e === n; 328 } 329 function t() { 330 var e, n, A, t, a, i, r; 331 for (var f in l) 332 if (l.hasOwnProperty(f)) { 333 if ( 334 ((e = []), 335 (n = l[f]), 336 n.name && (e.push(n.name.toLowerCase()), n.options && n.options.aliases && n.options.aliases.length)) 337 ) 338 for (A = 0; A < n.options.aliases.length; A++) e.push(n.options.aliases[A].toLowerCase()); 339 for (t = o(n.fn, 'function') ? n.fn() : n.fn, a = 0; a < e.length; a++) 340 ((i = e[a]), 341 (r = i.split('.')), 342 1 === r.length 343 ? (Modernizr[r[0]] = t) 344 : (!Modernizr[r[0]] || 345 Modernizr[r[0]] instanceof Boolean || 346 (Modernizr[r[0]] = new Boolean(Modernizr[r[0]])), 347 (Modernizr[r[0]][r[1]] = t)), 348 s.push((t ? '' : 'no-') + r.join('-'))); 349 } 350 } 351 function a(e) { 352 var n = r.className, 353 A = Modernizr._config.classPrefix || ''; 354 if ((c && (n = n.baseVal), Modernizr._config.enableJSClass)) { 355 var o = new RegExp('(^|\\s)' + A + 'no-js(\\s|$)'); 356 n = n.replace(o, '$1' + A + 'js$2'); 357 } 358 Modernizr._config.enableClasses && 359 ((n += ' ' + A + e.join(' ' + A)), c ? (r.className.baseVal = n) : (r.className = n)); 360 } 361 function i(e, n) { 362 if ('object' == typeof e) for (var A in e) u(e, A) && i(A, e[A]); 363 else { 364 e = e.toLowerCase(); 365 var o = e.split('.'), 366 t = Modernizr[o[0]]; 367 if ((2 == o.length && (t = t[o[1]]), 'undefined' != typeof t)) return Modernizr; 368 ((n = 'function' == typeof n ? n() : n), 369 1 == o.length 370 ? (Modernizr[o[0]] = n) 371 : (!Modernizr[o[0]] || 372 Modernizr[o[0]] instanceof Boolean || 373 (Modernizr[o[0]] = new Boolean(Modernizr[o[0]])), 374 (Modernizr[o[0]][o[1]] = n)), 375 a([(n && 0 != n ? '' : 'no-') + o.join('-')]), 376 Modernizr._trigger(e, n)); 377 } 378 return Modernizr; 379 } 380 var s = [], 381 r = n.documentElement, 382 l = [], 383 f = { 384 _version: '3.6.0', 385 _config: { classPrefix: '', enableClasses: !0, enableJSClass: !0, usePrefixes: !0 }, 386 _q: [], 387 on: function (e, n) { 388 var A = this; 389 setTimeout(function () { 390 n(A[e]); 391 }, 0); 392 }, 393 addTest: function (e, n, A) { 394 l.push({ name: e, fn: n, options: A }); 395 }, 396 addAsyncTest: function (e) { 397 l.push({ name: null, fn: e }); 398 }, 399 }, 400 Modernizr = function () {}; 401 ((Modernizr.prototype = f), (Modernizr = new Modernizr())); 402 var u, 403 c = 'svg' === r.nodeName.toLowerCase(); 404 (!(function () { 405 var e = {}.hasOwnProperty; 406 u = 407 o(e, 'undefined') || o(e.call, 'undefined') 408 ? function (e, n) { 409 return n in e && o(e.constructor.prototype[n], 'undefined'); 410 } 411 : function (n, A) { 412 return e.call(n, A); 413 }; 414 })(), 415 (f._l = {}), 416 (f.on = function (e, n) { 417 (this._l[e] || (this._l[e] = []), 418 this._l[e].push(n), 419 Modernizr.hasOwnProperty(e) && 420 setTimeout(function () { 421 Modernizr._trigger(e, Modernizr[e]); 422 }, 0)); 423 }), 424 (f._trigger = function (e, n) { 425 if (this._l[e]) { 426 var A = this._l[e]; 427 (setTimeout(function () { 428 var e, o; 429 for (e = 0; e < A.length; e++) (o = A[e])(n); 430 }, 0), 431 delete this._l[e]); 432 } 433 }), 434 Modernizr._q.push(function () { 435 f.addTest = i; 436 }), 437 Modernizr.addAsyncTest(function () { 438 function e(e, n, A) { 439 function o(n) { 440 var o = n && 'load' === n.type ? 1 == t.width : !1, 441 a = 'webp' === e; 442 (i(e, a && o ? new Boolean(o) : o), A && A(n)); 443 } 444 var t = new Image(); 445 ((t.onerror = o), (t.onload = o), (t.src = n)); 446 } 447 var n = [ 448 { 449 uri: 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=', 450 name: 'webp', 451 }, 452 { 453 uri: 'data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==', 454 name: 'webp.alpha', 455 }, 456 { 457 uri: 'data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA', 458 name: 'webp.animation', 459 }, 460 { 461 uri: 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=', 462 name: 'webp.lossless', 463 }, 464 ], 465 A = n.shift(); 466 e(A.name, A.uri, function (A) { 467 if (A && 'load' === A.type) for (var o = 0; o < n.length; o++) e(n[o].name, n[o].uri); 468 }); 469 }), 470 t(), 471 a(s), 472 delete f.addTest, 473 delete f.addAsyncTest); 474 for (var p = 0; p < Modernizr._q.length; p++) Modernizr._q[p](); 475 e.Modernizr = Modernizr; 476 })(window, document); 477 </script>
477 478 <app-root></app-root> 479
479<script src="runtime.cd1382908e1d048e.js" type="module"></script>
479<script src="polyfills.b852f1eb5b9812ba.js" type="module"></script>
479<script src="scripts.8a3b31fc685e4fba.js" defer></script>
479<script src="main.8eda810190c03354.js" type="module"></script>
479<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"3ae0ea8c7ac44061be0d671e252619a3","r":1,"spa":2}' crossorigin="anonymous"></script>
479 480</body> 481</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.