PageSourceSearch

https://www.promunconcursos.com.br/

html promunconcursos.com.br collected 2026-10-09 21:53:31 UTC 5,833 bytes, 211 lines download raw bytes

1<!doctype html>
2<html lang="pt-BR">
3	<head>
4		<meta charset="UTF-8" />
5		<link rel="icon" type="image/svg+xml" href="/vite.svg" />
6		<meta name="generator" content="Hostinger Horizons" />
7		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
8		<meta http-equiv="Content-Language" content="pt-BR">
9		<title>Hostinger Horizons</title>
10		
10<script type="module" crossorigin src="/assets/index-BHKHmdtN.js"></script>
10
11		<link rel="stylesheet" crossorigin href="/assets/index-BUk8pmel.css">
12		
12<script type="module">
13window.onerror = (message, source, lineno, colno, errorObj) => {
14	const errorDetails = errorObj ? JSON.stringify({
15		name: errorObj.name,
16		message: errorObj.message,
17		stack: errorObj.stack,
18		source,
19		lineno,
20		colno,
21	}) : null;
22
23	window.parent.postMessage({
24		type: 'horizons-runtime-error',
25		message,
26		error: errorDetails
27	}, '*');
28};
29</script>
29
30		
30<script type="module">
31const observer = new MutationObserver((mutations) => {
32	for (const mutation of mutations) {
33		for (const addedNode of mutation.addedNodes) {
34			if (
35				addedNode.nodeType === Node.ELEMENT_NODE &&
36				(
37					addedNode.tagName?.toLowerCase() === 'vite-error-overlay' ||
38					addedNode.classList?.contains('backdrop')
39				)
40			) {
41				handleViteOverlay(addedNode);
42			}
43		}
44	}
45});
46
47observer.observe(document.documentElement, {
48	childList: true,
49	subtree: true
50});
51
52function handleViteOverlay(node) {
53	if (!node.shadowRoot) {
54		return;
55	}
56
57	const backdrop = node.shadowRoot.querySelector('.backdrop');
58
59	if (backdrop) {
60		const overlayHtml = backdrop.outerHTML;
61		const parser = new DOMParser();
62		const doc = parser.parseFromString(overlayHtml, 'text/html');
63		const messageBodyElement = doc.querySelector('.message-body');
64		const fileElement = doc.querySelector('.file');
65		const messageText = messageBodyElement ? messageBodyElement.textContent.trim() : '';
66		const fileText = fileElement ? fileElement.textContent.trim() : '';
67		const error = messageText + (fileText ? ' File:' + fileText : '');
68
69		window.parent.postMessage({
70			type: 'horizons-vite-error',
71			error,
72		}, '*');
73	}
74}
75</script>
75
76		
76<script type="module">
77const originalConsoleError = console.error;
78const MATCH_LINE_COL_REGEX = /:(\d+):(\d+)\)?\s*$/; // regex to match the :lineNum:colNum
79const MATCH_AT_REGEX = /^\s*at\s+(?:async\s+)?(?:.*?\s+)?\(?/; // regex to remove the 'at' keyword and any 'async' or function name
80const MATCH_PATH_REGEX = /^\//; // regex to remove the leading slash
81
82function parseStackFrameLine(line) {
83	const lineColMatch = line.match(MATCH_LINE_COL_REGEX);
84	if (!lineColMatch) return null;
85	const [, lineNum, colNum] = lineColMatch;
86	const suffix = `:${lineNum}:${colNum}`;
87	const idx = line.lastIndexOf(suffix);
88	if (idx === -1) return null;
89	const before = line.substring(0, idx);
90	const path = before.replace(MATCH_AT_REGEX, '').trim();
91	if (!path) return null;
92
93	try {
94		const pathname = new URL(path).pathname;
95		const filePath = pathname.replace(MATCH_PATH_REGEX, '') || pathname;
96		return `${filePath}:${lineNum}:${colNum}`;
97	} catch (e) {
98		const filePath = path.replace(MATCH_PATH_REGEX, '') || path;
99		return `${filePath}:${lineNum}:${colNum}`;
100	}
101}
102
103function getFilePathFromStack(stack, skipFrames = 0) {
104	if (!stack || typeof stack !== 'string') return null;
105	const lines = stack.split('\n').slice(1);
106
107	const frames = lines.map(line => parseStackFrameLine(line.replace(/\r$/, ''))).filter(Boolean);
108
109	return frames[skipFrames] ?? null;
110}
111
112console.error = function(...args) {
113	originalConsoleError.apply(console, args);
114
115	let errorString = '';
116	let filePath = null;
117
118	for (let i = 0; i < args.length; i++) {
119		const arg = args[i];
120		if (arg instanceof Error) {
121			filePath = getFilePathFromStack(arg.stack, 0);
122			errorString = `${arg.name}: ${arg.message}`;
123			if (filePath) {
124				errorString = `${errorString} at ${filePath}`;
125			}
126			break;
127		}
128	}
129
130	if (!errorString) {
131		errorString = args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ');
132		const stack = new Error().stack;
133		filePath = getFilePathFromStack(stack, 1);
134		if (filePath) {
135			errorString = `${errorString} at ${filePath}`;
136		}
137	}
138
139	window.parent.postMessage({
140		type: 'horizons-console-error',
141		error: errorString
142	}, '*');
143};
144</script>
144
145		
145<script type="module">
146const originalFetch = window.fetch;
147
148window.fetch = function(...args) {
149	const url = args[0] instanceof Request ? args[0].url : args[0];
150
151	// Skip WebSocket URLs
152	if (url.startsWith('ws:') || url.startsWith('wss:')) {
153		return originalFetch.apply(this, args);
154	}
155
156	return originalFetch.apply(this, args)
157		.then(async response => {
158			const contentType = response.headers.get('Content-Type') || '';
159
160			// Exclude HTML document responses
161			const isDocumentResponse =
162				contentType.includes('text/html') ||
163				contentType.includes('application/xhtml+xml');
164
165			if (!response.ok && !isDocumentResponse) {
166					const responseClone = response.clone();
167					const errorFromRes = await responseClone.text();
168					const requestUrl = response.url;
169					console.error(`Fetch error from ${requestUrl}: ${errorFromRes}`);
170			}
171
172			return response;
173		})
174		.catch(error => {
175			if (!url.match(/.html?$/i)) {
176				console.error(error);
177			}
178
179			throw error;
180		});
181};
182</script>
182
183		
183<script type="module">
184if (window.navigation && window.self !== window.top) {
185	window.navigation.addEventListener('navigate', (event) => {
186		const url = event.destination.url;
187
188		try {
189			const destinationUrl = new URL(url);
190			const destinationOrigin = destinationUrl.origin;
191			const currentOrigin = window.location.origin;
192
193			if (destinationOrigin === currentOrigin) {
194				return;
195			}
196		} catch (error) {
197			return;
198		}
199
200		window.parent.postMessage({
201			type: 'horizons-navigation-error',
202			url,
203		}, '*');
204	});
205}
206</script>
206
207	</head>
208	<body>
209		<div id="root"></div>
210	</body>
211</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.