PageSourceSearch

https://instrumental.com/nitropack_static/UHjMJvnMwYKKZAZjxBouAppv…d9ef7d9d490b7acbcd29.instrumental-custom.js

js instrumental.com collected 2026-10-03 19:27:19 UTC 23,010 bytes, 549 lines download raw bytes

1jQuery(document).ready( function($) {
2	var timeout;
3	var delay = 600;
4
5	function getYouTubeIdFromThumbnail(url) {
6		var match = String(url || '').match(/\/vi(?:_webp)?\/([A-Za-z0-9_-]{11})\//);
7		return match ? match[1] : '';
8	}
9
10	function getStableYouTubeThumbnail(videoId) {
11		return 'https://img.youtube.com/vi/' + videoId + '/hqdefault.jpg';
12	}
13
14	function repairYouTubeShowcaseThumbnails() {
15		$('.youtube-showcase-thumb img').each(function() {
16			var $img = $(this);
17			var videoId = $img.data('youtube-id') || getYouTubeIdFromThumbnail($img.attr('src'));
18
19			if (!videoId) return;
20
21			var stableThumbnail = getStableYouTubeThumbnail(videoId);
22
23			$img.off('error.youtubeThumbnailFallback').on('error.youtubeThumbnailFallback', function() {
24				if (this.src !== stableThumbnail) {
25					this.src = stableThumbnail;
26				}
27			});
28
29			if (/\/\/i\d+\.ytimg\.com\/vi(?:_webp)?\//.test($img.attr('src') || '')) {
30				$img.attr('src', stableThumbnail);
31			}
32		});
33	}
34
35	function initYearTabSelect() {
36		var $select = $('#tab-year');
37
38		if (!$select.length) return;
39
40		if (!$select.parent('.tab-year-select-wrap').length) {
41			$select.wrap('<span class="tab-year-select-wrap"></span>');
42		}
43
44		function getYearTab(value) {
45			var selectedYear = String(value || '').trim();
46			var $tabs = $('.elementor-tabs-wrapper .elementor-tab-title');
47			var $match = $();
48
49			$tabs.each(function() {
50				if ($.trim($(this).text()) === selectedYear) {
51					$match = $(this);
52					return false;
53				}
54			});
55
56			return $match;
57		}
58
59		function setSelectYear(year) {
60			var selectedYear = String(year || '').trim();
61
62			if (!selectedYear) return;
63
64			$select.find('option').each(function() {
65				var $option = $(this);
66
67				if ($.trim($option.text()) === selectedYear || String($option.val()).trim() === selectedYear) {
68					$select.val($option.val());
69					return false;
70				}
71			});
72		}
73
74		function syncSelectWithActiveTab() {
75			var activeYear = $.trim($('.elementor-tabs-wrapper .elementor-tab-title.elementor-active').first().text());
76
77			if (activeYear) {
78				setSelectYear(activeYear);
79			}
80		}
81
82		$('.elementor-tabs-wrapper').off('click.yearTabs').on('click.yearTabs', '.elementor-tab-title', function() {
83			setSelectYear($(this).text());
84		});
85
86		$select.on('change.yearTabs', function() {
87			var $tab = getYearTab($(this).val());
88
89			if ($tab.length) {
90				$tab.trigger('click');
91			}
92		});
93
94		syncSelectWithActiveTab();
95	}
96
97	repairYouTubeShowcaseThumbnails();
98	initYearTabSelect();
99
100   jQuery(".ais-SearchBox-input").keyup(function() {
101		var s = $('.ais-SearchBox-input').val();
102	   clearTimeout(timeout);
103	   if(s.length == 1){
104		   delaySearchFunction();
105	   }
106	   timeout = setTimeout(function() {
107              delaySearchFunction();
108       }, delay);
109
110   });
111   
112   
113   /*From New home only*/
114	inView.threshold(0.7);
115
116	inView('.greyfilter')
117    .on('enter', el => {
118        el.classList.add("not-greyfilter");
119    })
120    .on('exit', el => {
121        el.classList.remove("not-greyfilter");
122    });
123
124
125	jQuery(".open-pop a").click(function( event ){
126		event.preventDefault();
127		jQuery('.hideto').show();
128		jQuery('.thank').remove();
129		jQuery(".pop-overlay").addClass("show-pop-overlay");
130	});
131	
132	jQuery('.greyfilter').hover(function() {
133		jQuery(this).addClass('not-greyfilter');
134	});
135	
136	/*Product page*/
137	jQuery("#firstcarousal-1").hover(
138		function() {
139			jQuery('.image-point-1').css('opacity', '1');
140		},
141		function() {
142			jQuery('.image-point-1').css('opacity', '0');
143		}
144	);
145	jQuery("#firstcarousal-2").hover(
146		function() {
147			jQuery('.image-point-2').css('opacity', '1');
148		},
149		function() {
150			jQuery('.image-point-2').css('opacity', '0');
151		}
152	);
153	jQuery("#firstcarousal-3").hover(
154		function() {
155			jQuery('.image-point-3').css('opacity', '1');
156		},
157		function() {
158			jQuery('.image-point-3').css('opacity', '0');
159		}
160	);
161	
162	jQuery(".doclose").click(function(event){
163		event.preventDefault();
164		jQuery('.overallpage').hide('slow');
165	});
166	jQuery(".doopen").click(function(event){
167		event.preventDefault();
168		jQuery('.overallpage').show('slow');
169	});
170
171
172	/* Partner Page */
173	inView('#manufacturing-partners').on('enter', function(){  jQuery('.is-active').removeClass('is-active'); jQuery('#ml1').addClass('is-active')  });
174
175
176	inView('#technology-partners').on('enter', function(){  jQuery('.is-active').removeClass('is-active'); jQuery('#ml2').addClass('is-active')  });
177   
178   
179	inView('#imaging-partners').on('enter', function(){  jQuery('.is-active').removeClass('is-active'); jQuery('#ml3').addClass('is-active')  });
180   
181   
182
183
184	/*https://instrumental.com/cm/*/
185		if( $('#demo--hero-top').length ){
186			var width = (window.innerWidth > 0) ? window.innerWidth : document.documentElement.clientWidth;
187			if(width > 1024){
188				var fixmeTop = $('#demo--hero-top').offset().top -380;  
189				$(window).scroll(function() {               
190					var currentScroll = $(window).scrollTop(); 
191					if (currentScroll >= fixmeTop) {      
192						$('#demo--hero-top').css({                   
193							position: 'fixed',
194							top: '0'
195						});
196
197						 $('#demo--hero-top .elementor-widget-container').css({ 
198							marginTop: '86px',
199						});
200						
201					} else {      
202											
203						$('#demo--hero-top').css({                    
204							position: 'static'
205						});
206
207						 $('#demo--hero-top .elementor-widget-container').css({                      
208							marginTop: '-380px',
209						});
210
211					}
212				});
213
214				inView('#footer')
215					.on('enter', el => {
216					   jQuery('#demo--hero-top').css({opacity:0}
216)
217					})
218					.on('exit', el => {
219						 jQuery('#demo--hero-top').css({opacity:1})
220				});
221
222				inView('#quetionbox')
223				.on('enter', el => {
224				   jQuery('#demo--hero-top').hide()
225				})
226				.on('exit', el => {
227					jQuery('#demo--hero-top').show()
228				});
229			} else {
230
231			} 
232		}
233		
234		
235		 
236});
237
238
239function  delaySearchFunction(){
240	var s = $('.ais-SearchBox-input').val();
241	if (s == "") {
242	   jQuery("#build-better-handbook-hits").html(" ");
243	}
244	else {
245
246		var nonce = jQuery('.dd-search-nonce-h').val();
247		jQuery.ajax({
248			 type : "post",
249			 url :DEEP_DOCS.ajaxurl,
250			 data : {action: "deep_docs_search_docs", source : "deep_docs", nonce: nonce, "s": s},
251			 success: function(response) {
252				if(response.data.success == true) {
253					console.log(response);
254
255					let docs = JSON.parse( response.data.docs );
256					jQuery("#build-better-handbook-hits").html(' ');
257					jQuery("#build-better-handbook-hits").html(` 
258					<div>
259					   <div class="ais-Hits">
260						  <ol class="ais-Hits-list">
261							 
262						  </ol>
263					   </div>
264					</div>
265					`);
266					
267					if(docs.length <= 0){
268						jQuery("#build-better-handbook-hits .ais-Hits-list").html('<div class="ais-Hits ais-Hits--empty">No results</div>');
269					}
270					docs.map( function ( doc ) {
271						jQuery("#build-better-handbook-hits .ais-Hits-list").append(`
272							<li class="ais-Hits-item">
273								<div>
274								   <a href="`+doc.doc_link+`">
275									  <p class="search-result">`+doc.doc_title+`</p>
276									  <p class="search-extract"></p>
277								   </a>
278								</div>
279							 </li>
280						`);
281					});
282				}
283				else {
284					
285				}
286			 }
287		  });
288	}
289	
290}
291// New Home Page
292jQuery(document).ready(function(){
293
294	setTimeout(function(){
295		//first image
296		jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Review most anomalous regions</h2><div>Use the heat map the identify regions with the most variability in your entire build.</div></span></div></div>');
297		jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Discover Novel Defects</h2><div>Uncover unknown anomalies in your design and give feedback on units which are interesting.</div></span></div></div>');
298		
299		//second image
300		jQuery("#firstcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="firstcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Accelerate failure analysis</h2><div>Find and eliminate root causes with an AI-ranked list of correlations between failures, data, and images</div></span></div></div>');
301
302
303		//first image
304		jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Oversee Operations</h2><div>Get real-time insight into your factory’s performance with an out-of-the-box dashboard displaying KPIs over time and by each station. </div></span></div></div>');
305		jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Identify yield hitters</h2><div>Quickly dive into the stations and tests, causing you to miss your yield goals.</div></span></div></div>');
306		
307		//second image
308		jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Prioritize actions</h2><div>Take actions based on out-of-the-box Pareto of top failing parametric tests and defects.</div></span></div></div>');
309		jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Intercept known defects</h2><div>Set up live pass/fail tests on your assembly line to intercept known defects and monitor results on the app.</div></span></div></div>');
310		
311	},3000);
312	
313	setTimeout(function(){
314		if(!jQuery('#firstcarousal-1-1').length){
315			//first image
316			jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Review most anomalous regions</h2><div>Use the heat map the identify regions with the most variability in your entire build.</div></span></div></div>');
317			jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Discover Novel Defects</h2><div>Uncover unknown anomalies in your design and give feedback on units which are interesting.</div></span></div></div>');
318		
319			//second image
320			jQuery("#firstcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="firstcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Accelerate failure analysis</h2><div>Find and eliminate root causes with an AI-ranked list of correlations between failures, data, and images</div></span></div></div>');
321
322
323			//first image
324			jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Oversee Operations</h2><div>Get real-time insight into your factory’s performance with an out-of-the-box dashboard displaying KPIs over time and by each station. </div></span></div></div>');
325			jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Identify yield hitters</h2><div>Quickly dive into the stations and tests, causing you to miss your yield goals.</div></span></div></div>');
326		
327			//second image
328			jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Prioritize actions</h2><div>Take actions based on out-of-the-box Pareto of top failing parametric tests and defects.</div></span></div></div>');
329			jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Intercept known defects</h2><div>Set up live pass/fail tests on your assembly line to intercept known defects and monitor results on the app.</div></span></div></div>');
330		}
331	},5000);
332	
333	setTimeout(function(){
334		if(!jQuery('#firstcarousal-1-1').length){
335			//first image
336			jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Review most anomalous regions</h2><div>Use the heat map the identify regions with the most variability in your entire build.</div></span></div></div>');
337			jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Discover Novel Defects</h2><div>Uncover unknown anomalies in your design and give feedback on units which are interesting.</div></span></div></div>');
338		
339			//second image
340			jQuery("#firstcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="firstcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Accelerate failure analysis</h2><div>Find and eliminate root causes with an AI-ranked list of correlations between failures, data, and images</div></span></div></div>');
341
342
343			//first image
344			jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Oversee Operations</h2><div>Get real-time insight into your factory’s performance with an out-of-the-box dashboard displaying KPIs over time and by each station. </div></span></div></div>');
345			jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Identify yield hitters</h2><div>Quickly dive into the stations and tests, causing you to miss your yield goals.</div></span></div></div>');
346		
347			//second image
348			jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Prioritize actions</h2><div>Take actions based on out-of-the-box Pareto of top failing parametric tests and defects.</div></span></div></div>');
349			jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Intercept known defects</h2><div>Set up live pass/fail tests on your assembly line to intercept known defects and monitor results on the app.</div></span></div></div>');
350		}
351	},7000);
352	
353	setTimeout(function(){
354		if(!jQuery('#firstcarousal-1-1').length){
355			//first image
356			jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Review most anomalous regions</h2><div>Use the heat map the identify regions with the most variability in your entire build.</div></span></div></div>');
357			jQuery("#firstcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="firstcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Discover Novel Defects</h2><div>Uncover unknown anomalies in your design and give feedback on units which are interesting.</div></span></div></div>');
358		
359			//second image
360			jQuery("#firstcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="firstcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Accelerate failure analysis</h2><div>Find and eliminate root causes with an AI-ranked list of correlations between failures, data, and images</div></span></div></div>');
361
362
363			//first image
364			jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Oversee Operations</h2><div>Get real-time insight into your factory’s performance with an out-of-the-box dashboard displaying KPIs over time and by each station. </div></span></div></div>');
365			jQuery("#secondcarousal .swiper-slide[aria-label='1 / 2']").append('<div id="secondcarousal-1-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Identify yield hitters</h2><div>Quickly dive into the stations and tests, causing you to miss your yield goals.</div></span></div></div>');
366		
367			//second image
368			jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-1" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Prioritize actions</h2><div>Take actions based on out-of-the-box Pareto of top failing parametric tests and defects.</div></span></div></div>');
369			jQuery("#secondcarousal .swiper-slide[aria-label='2 / 2']").append('<div id="secondcarousal-2-2" class="ztooltip zblobs-container"><div class="zblob"><span class="ztooltiptext"><h2>Intercept known defects</h2><div>Set up live pass/fail tests on your assembly line to intercept known defects and monitor results on the app.</div></span></div></div>');
370		}
371	},10000);
372});
373
374
375
376jQuery(document).ready(function() {
377    jQuery('.wpr-grid-image-wrap').each(function() {
378        var imgTag = jQuery(this).find('img');
379        
380        var newSrc = jQuery(this).attr('data-src');
381        
382        imgTag.attr('src', newSrc);
383        imgTag.removeClass('wpr-hidden-image');
384    });
385});
386
387
388
389/*
390function submitFormToHubSpot(formId, hubId, formGuid, data) {
391
392
393        // Collect data in a format HubSpot can understand
394        data = {};
395        
396
397        // Send the data using AJAX
398        fetch(`https://forms.hubspot.com/uploads/form/v2/${hubId}/${formGuid}`, {
399            method: 'POST',
400            headers: {
401                'Content-Type': 'application/x-www-form-urlencoded',
402            },
403            body: new URLSearchParams(data).toString(),
404        }).then(response => {
405                if (response.ok) {
406                    console.log('Form data successfully sent to HubSpot.');
407                } else {
408                    console.error('Error sending data to HubSpot:', response);
409                }
410            })
411            .catch(error => console.error('Network error:', error));
412     
413}
414*/
415
416async function submitFormToHubSpot(formId, hubId, formGuid, data) {
417
418
419    try {
420        // Fetch user's IP address
421        const ipResponse = await fetch("https://api64.ipify.org?format=json");
422        const ipData = await ipResponse.json();
423        const userIP = ipData.ip || "";
424
425        // Retrieve the HubSpot User Token (hutk) from cookies
426        const hutk = getCookie("hubspotutk") || "";
427
428        // Add HubSpot-specific context
429        const hsContext = {
430            hutk: hutk, // HubSpot User Tracking Cookie
431            ipAddress: userIP, // User's IP address for analytics
432            pageUrl: window.location.href, // Current page URL
433        };
434
435        // Convert hsContext to a JSON string
436        data.hs_context = JSON.stringify(hsContext);
437
438        // Convert data to URL-encoded format
439        const encodedData = new URLSearchParams(data).toString();
440
441        // Send the data using Fetch API
442        const response = await fetch(`https://forms.hubspot.com/uploads/form/v2/${hubId}/${formGuid}`, {
443            method: "POST",
444            headers: {
445                "Content-Type": "application/x-www-form-urlencoded",
446            },
447            body: encodedData,
448        });
449
450        if (response.ok) {
451            console.log("✅ Form successfully submitted to HubSpot.");
452        } else {
453            console.error("❌ Error submitting form:", response);
454        }
455    } catch (error) {
456        console.error("❌ Error sending data to HubSpot:", error);
457    }
458}
459
460// Helper function to retrieve a cookie value by name
461function getCookie(name) {
462    const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`));
463    return match ? match[2] : "";
464}
465
466
467
468// Select the email input field
469const emailInput = document.getElementById("866002_199501pi_866002_199501");
470
471// Initialize a variable to store the email
472let emailValue = "";
473
474// Listen for input events on the email field
475emailInput.addEventListener("input", function (event) {
476	emailValue = event.target.value;
477	console.log("Current Email Value:", emailValue); // Debugging output
478});
479
480document.body.addEventListener('click', (event) => {
481  // Check if the clicked element is a button
482  if (event.target.id === 'newsletter-form-submit') {
483    let footerData = {};
484	
485	if(emailValue != ""){
486		footerData['email'] = emailValue;
487		submitFormToHubSpot('#newsletter-form', '46433248', '80c5a458-7f35-4f02-90cf-4bc5f88091d7', footerData);
488		emailValue = "";
489	}
490  }  
491  
492  if (event.target.parentElement.id === 'newsletterHBForm-submit' || event.target.id === 'newsletterHBForm-submit') {
493    let footerData = {};
494	let container_fullName = document.getElementById('jfirstName').value;
495	let container_email = document.getElementById('jemail').value;
496	let container_company = document.getElementById('jcompany').value;
497	if( container_fullName != "" && container_email != "" && container_company != ""){
498		let name = container_fullName.split(' ');
499		footerData['firstname'] = name[0];
500		footerData['lastname'] = name[1];
501		footerData['email'] = container_email;
502		footerData['company'] = container_company;
503		submitFormToHubSpot('#jarform', '46433248', '0d9ebe24-8198-475a-86b7-0be893635a10', footerData);
504	}
505  }
506});
507
508
509
510
511
512 document.addEventListener('DOMContentLoaded', function() {
513      // 1. Select all h1, h2, h3
514      const headings = document.querySelectorAll('.toc-content h1, .toc-content h2,  .toc-content h3');
515      if (!headings.length) return;
516
517      // 2. Create the root <ul>
518      const tocList = document.createElement('ul');
519
520      headings.forEach(heading => {
521        // 3. Generate an ID if missing
522        if (!heading.id) {
523          const slug = heading.textContent
524            .trim()
525            .toLowerCase()
526            .replace(/\s+/g, '-')
527            .replace(/[^\w\-]+/g, '');
528          heading.id = slug;
529        }
530
531        // 4. Create a link to the heading
532        const link = document.createElement('a');
533        link.href = `#${heading.id}`;
534        link.textContent = heading.textContent;
535
536        // 5. Wrap in an <li> and add level class
537        const item = document.createElement('li');
538        const level = parseInt(heading.tagName.charAt(1), 10); // 1, 2 or 3
539        item.classList.add(`level-${level}`);
540        item.appendChild(link);
541
542        // 6. Append to our TOC list
543        tocList.appendChild(item);
544      });
545
546      // 7. Inject into the #toc container
547      const tocContainer = document.getElementById('toc');
548      tocContainer.appendChild(tocList);
549    });

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.