1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <meta httpEquiv="X-UA-Compatible" content="IE=edge" /> 6 <meta 7 name="viewport" 8 content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=5, viewport-fit=cover" 9 /> 10 <title>Firehouse Subs</title> 11 <style> 12 /** 13 * Extend the react-native-web reset: 14 * https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/initialRules.js 15 */ 16 html, 17 body, 18 #root { 19 width: 100%; 20 /* To smooth any scrolling behavior */ 21 -webkit-overflow-scrolling: touch; 22 margin: 0px; 23 padding: 0px; 24 /* Allows content to fill the viewport and go beyond the bottom */ 25 min-height: 100%; 26 } 27 #root { 28 flex-shrink: 0; 29 flex-basis: auto; 30 flex-grow: 1; 31 display: flex; 32 flex: 1; 33 } 34 35 html { 36 scroll-behavior: smooth; 37 /* Prevent text size change on orientation change https://gist.github.com/tfausak/2222823#file-ios-8-web-app-html-L138 */ 38 -webkit-text-size-adjust: 100%; 39 height: calc(100% + env(safe-area-inset-top)); 40 } 41 42 body { 43 display: flex; 44 /* Allows you to scroll below the viewport; default value is visible */ 45 overflow-y: auto; 46 overscroll-behavior-y: none; 47 text-rendering: optimizeLegibility; 48 -webkit-font-smoothing: antialiased; 49 -moz-osx-font-smoothing: grayscale; 50 -ms-overflow-style: scrollbar; 51 } 52 53 input, 54 textarea { 55 border: none; 56 outline: none; 57 background: transparent; 58 -webkit-appearance: none; 59 appearance: none; 60 box-shadow: none; 61 } 62 63 input:focus-visible, 64 textarea:focus-visible { 65 outline: transparent; 66 outline-offset: -2px; 67 } 68 /* Enable for apps that support dark-theme */ 69 /*@media (prefers-color-scheme: dark) { 70 body { 71 background-color: black; 72 } 73 }*/ 74 </style> 75
75<script src="https://cdn.bc0a.com/autopilot/f00000000030803/autopilot_sdk.js"></script>
75 76
76<script async src="https://pay.google.com/gp/p/js/pay.js"></script>
76 77
77<script async src="https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js"></script>
77 78 <meta name="theme-color" content="#ffffff"> 79<link rel="icon" href="/favicon.ico" /></head> 80 81 <body> 82 <!-- WCAG 4.1.2: name third-party dialogs; label SDK inputs appended as body > input --> 83
83<script> 84 (function () { 85 function labelSdkBodyInput(input) { 86 if (!(input instanceof HTMLInputElement) || input.parentElement !== document.body) return; 87 if (input.type === 'hidden' || input.getAttribute('aria-label') || input.getAttribute('aria-labelledby')) return; 88 var s = getComputedStyle(input); 89 // Stealth SDK inputs are often 1â8px; real fields are much larger. A 4Ã2px 90 // pixel tracker was skipped when the max was 2px, which failed axe âlabelâ. 91 if (parseFloat(s.width) > 48 || parseFloat(s.height) > 48 || parseFloat(s.opacity) > 0.05) return; 92 if (s.position !== 'absolute') return; 93 input.setAttribute('aria-label', 'Internal application field'); 94 input.setAttribute('tabindex', '-1'); 95 } 96 97 function labelUnnamedThirdPartyDialog(el) { 98 if (el.getAttribute('aria-label')) return; 99 var refId = el.getAttribute('aria-labelledby'); 100 var refEl = refId ? document.getElementById(refId) : null; 101 if (refEl && refEl.textContent.trim()) return; 102 var label = 'Dialog'; 103 if (el.id === 'dialog-section') label = 'Apple Pay'; 104 else if (el.classList.contains('Outro') || el.classList.contains('Outro_module_outro')) label = 'Notification'; 105 else if (el.classList.contains('OverlayBase') || el.classList.contains('OverlayBase_module_overlayWrapper')) label = 'Promotional message'; 106 el.setAttribute('aria-label', label); 107 } 108 109 function handleAddedNode(node) { 110 if (!(node instanceof HTMLElement)) return; 111 if (node.tagName === 'INPUT') labelSdkBodyInput(node); 112 if (node.getAttribute('role') === 'dialog') labelUnnamedThirdPartyDialog(node); 113 node.querySelectorAll('[role="dialog"]').forEach(labelUnnamedThirdPartyDialog); 114 } 115 116 new MutationObserver(function (records) { 117 records.forEach(function (record) { 118 record.addedNodes.forEach(handleAddedNode); 119 }); 120 }).observe(document.body, { childList: true, subtree: true }); 121 122 function scanDirectBodyInputs() { 123 document.body.querySelectorAll(':scope > input').forEach(labelSdkBodyInput); 124 } 125 scanDirectBodyInputs(); 126 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', scanDirectBodyInputs); 127 setTimeout(scanDirectBodyInputs, 2000); 128 })(); 129 </script>
129 130 <!-- 131 A generic no script element with a reload button and a message. 132 Feel free to customize this however you'd like. 133 --> 134 <noscript> 135 <form 136 action="" 137 style=" 138 background-color: #fff; 139 position: fixed; 140 top: 0; 141 left: 0; 142 right: 0; 143 bottom: 0; 144 z-index: 9999; 145 " 146 > 147 <div 148 style=" 149 font-size: 18px; 150 font-family: Helvetica, sans-serif; 151 line-height: 24px; 152 margin: 10%; 153 width: 80%; 154 " 155 > 156 <p>Oh no! It looks like JavaScript is not enabled in your browser.</p> 157 <p style="margin: 20px 0"> 158 <button 159 type="submit" 160 style=" 161 background-color: #4630eb; 162 border-radius: 100px; 163 border: none; 164 box-shadow: none; 165 color: #fff; 166 cursor: pointer; 167 font-weight: bold; 168 line-height: 20px; 169 padding: 6px 16px; 170 " 171 > 172 Reload 173 </button> 174 </p> 175 </div> 176 </form> 177 </noscript> 178 <!-- The root element for your Expo app. --> 179 <div id="root"></div> 180
180<script src="/_expo/static/js/web/__expo-metro-runtime-42ac0f1b3eb7b209ce19027810a93d7a.js" defer></script>
180<script src="/_expo/static/js/web/__common-38a7accb935ab47d5ec0b90894e16c69.js" defer></script>
180<script src="/_expo/static/js/web/entry-6166c4f94f92b87333d41df782abcd35.js" defer></script>
180 181</body> 182</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.