PageSourceSearch

https://www.e29-matsumura.com/cmn/js/jquery.socialbutton-1.8.1.js

js e29-matsumura.com collected 2026-10-05 03:40:51 UTC 21,151 bytes, 796 lines download raw bytes

1/**
2 * jquery.socialbutton - jQuery plugin for social networking websites
3 * http://itra.jp/jquery_socialbutton_plugin/
4 * 
5 * Copyright 2010, Itrans, Inc. http://itra.jp/
6 * 
7 * Dual licensed under the MIT or GPL Version 2 licenses.
8 * http://jquery.org/license
9 * 
10 * Version: 1.8.1
11 */
12
13/**
14 * SYNOPSIS
15 * 
16 * 
17 * mixi_check
18 * http://developer.mixi.co.jp/connect/mixi_plugin/mixi_check/spec_mixi_check
19 * 
20 * $('#mixi_check').socialbutton('mixi_check', {
21 *     key: 'mixi-check-key'
22 * });
23 * 
24 * $('#mixi_check').socialbutton('mixi_check', {
25 *     key: 'mixi-check-key',
26 *     button: 'button-1',
27 *     url: 'http://itra.jp/'
28 * });
29 * 
30 * 
31 * mixi_like
32 * http://developer.mixi.co.jp/connect/mixi_plugin/favorite_button/spec
33 * 
34 * $('#mixi_like').socialbutton('mixi_like', {
35 *     key: 'mixi-check-key',
36 * });
37 * 
38 * $('#mixi_like').socialbutton('mixi_like', {
39 *     key: 'mixi-check-key',
40 *     url: 'http://itra.jp/',
41 *     width: 450,
42 *     height: 80,
43 *     show_faces: true,
44 *     style: 'additional-style-here'
45 * });
46 * 
47 * 
48 * facebook_like
49 * http://developers.facebook.com/docs/reference/plugins/like
50 * 
51 * $('#facebook_like').socialbutton('facebook_like');
52 * 
53 * $('#facebook_like').socialbutton('facebook_like', {
54 *     button: 'standard', // synonym 'layout'
55 *     url: 'http://itra.jp',
56 *     show_faces: true,
57 *     width: 450,
58 *     height: 80,
59 *     action: 'like',
60 *     locale: 'en_US',
61 *     font: 'arial',
62 *     colorscheme: 'light'
63 * });
64 * 
65 * 
66 * facebook_share
67 * http://developers.facebook.com/docs/share
68 * 
69 * $('#facebook_share').socialbutton('facebook_share');
70 * 
71 * $('#facebook_share').socialbutton('facebook_share', {
72 *     button: 'button_count', // synonym 'type'
73 *     url: 'http://itra.jp',
74 *     text: 'Share'
75 * });
76 * 
77 * 
78 * Twitter
79 * http://twitter.com/goodies/tweetbutton
80 * 
81 * $('#twitter').socialbutton('twitter');
82 * 
83 * $('#twitter').socialbutton('twitter', {
84 *     button: 'vertical', // synonym 'count'
85 *     url: 'http://itra.jp/',
86 *     text: 'tweet text',
87 *     lang: 'ja',
88 *     via: 'ishiiyoshinori',
89 *     related: 'twitter'
90 * });
91 * 
92 * 
93 * GREE Social Feedback
94 * http://developer.gree.co.jp/connect/plugins/sf
95 * 
96 * $('#gree_sf').socialbutton('gree_sf');
97 * 
98 * $('#gree_sf').socialbutton('gree_sf', {
99 *     button: 0, // synonym 'type'
100 *     url: 'http://itra.jp/',
101 *     width: 0, // auto
102 *     height: 20
103 * });
104 * 
105 * 
106 * Evernote Site Memory
107 * http://www.evernote.com/about/developer/sitememory/
108 * 
109 * $('#evernote').socialbutton('evernote');
110 * 
111 * $('#evernote').socialbutton('evernote', {
112 *     button: 'article-clipper',
113 *     url: 'http://itra.jp/',
114 *     provider_name: 'itra.jp',
115 *     suggest_notebook: 'webclip',
116 *     content_id: 'element-id-to-clip',
117 *     code: 'your-affiliate-code',
118 *     title: 'note-title',
119 *     suggest_tags: 'comma-separated-tags,up-to-three-tags',
120 *     styling: 'full'
121 * });
122 * 
123 * 
124 * Hatena Bookmark
125 * http://b.hatena.ne.jp/
126 * 
127 * $('#hatena').socialbutton('hatena');
128 * 
129 * $('#hatena').socialbutton('hatena', {
130 *     button: 'standard',
131 *     url: 'http://itra.jp/',
132 *     title: 'page-title'
133 * });
134 * 
135 * 
136 * Hatena Bookmark (Old Style)
137 * http://b.hatena.ne.jp/
138 * 
139 * $('#hatena').socialbutton('hatena_oldstyle');
140 * 
141 * $('#hatena').socialbutton('hatena_oldstyle', {
142 *     button: '/path/to/your-icon.png',
143 *     url: 'http://itra.jp/',
144 *     padding: 10,
145 *     height: 15
146 * });
147 * 
148 * 
149 * Google +1 Button
150 * http://www.google.com/webmasters/+1/button/
151 * 
152 * $('#google').socialbutton('google_plusone');
153 * 
154 * $('#google').socialbutton('google_plusone', {
155 *     button: 'standard', // synonym 'size'
156 *     url: 'http://itra.jp', // synonym 'href'
157 *     lang: 'ja',
158 *     parsetags: 'explicit',
159 *     callback: 'some_callback_function',
160 *     count: true
161 * });
162 * 
163 */
164(function($) {
165
166$.fn.socialbutton = function(service, options) {
167
168	options = options || {};
169
170	var defaults = {
171		mixi_check: {
172			key: '',
173			button: 'button-1', // button-1,button-2,button-3,button-4,button-5
174			url: '' // document.URL
175		},
176		mixi_like: {
177			key: '',
178			url: document.URL,
179			width: 0, // auto
180			height: 0, // auto
181			show_faces: true,
182			style: '',
183
184			sizes: {
185				width: {
186					with_faces: 450,
187					without_faces: 140
188				},
189				height: {
190					with_faces_minimum: 80,
191					without_faces_minimum: 20
192				}
193			}
194		},
195		facebook_like: {
196			button: 'standard', // standard / button_count / box_count
197			url: document.URL,
198
199			show_faces: true,
200			width: 0, // auto
201			height: 0, // auto
202
203			width_standard_default: 450, // orig: 450
204			width_standard_minimum: 225,
205			height_standard_without_photo: 35,
206			height_standard_with_photo: 80,
207
208			width_button_count_default: 120, // orig: 90, jp_min: 114
209			width_button_count_minimum: 90,
210			height_button_count: 25, // orig:20, jp_min: 21
211
212			width_box_count_default: 80, // orig:55, jp_min: 75
213			width_box_count_minimum: 55,
214			height_box_count: 70, // orig: 65, jp_min: 66
215
216			action: 'like', // like / recommend
217			locale: '', // auto
218			font: '',
219			colorscheme: 'light' // light / dark
220		},
221		facebook_share: {
222			button: 'button_count', // box_count / button / icon_link / icon
223			url: '', //document.URL
224			text: '' //Share
225		},
226		twitter: {
227			button: 'vertical', // vertical / horizontal / none
228			url: '', // document.URL
229			text: '',
230			lang: 'ja', // ja / en /de / fr / es
231			via: '',
232			related: ''
233		},
234		gree_sf: {
235			button: 0, // 0,1,2,3,4
236			url: document.URL,
237			width: 0, // auto
238			height: 20,
239
240			widths: {
241				type0_16: 58, type0_20: 70, type0_23: 76,
242				type1_16: 58, type1_20: 73, type1_23: 78,
243				type2_16: 58, type2_20: 73, type2_23: 78,
244				type3_16: 49, type3_20: 61, type3_23: 64,
245				type4_16: 16, type4_22: 21, type4_32: 32
246			}
247		},
248		evernote: {
249			button: 'article-clipper', // article-clipper, article-clipper-remember, article-clipper-jp, article-clipper-rus, article-clipper-fr, article-clipper-es, article-clipper-de, article-clipper-vert, site-mem-32, site-mem-36, site-mem-22, site-mem-16
250			url: '', // document.URL
251			provider_name: '', // domain name
252			suggest_notebook: '', // notebook name
253			content_id: '', // element id for clip
254			code: '', // affiliate code
255			title: '',
256			suggest_tags: '',
257			styling: '' // none(text-only), full
258		},
259		hatena: {
260			button: 'standard', // standard, vertical, simple
261			url: document.URL,
262			title: document.title
263		},
264		hatena_oldstyle: {
265			button: 'http://d.hatena.ne.jp/images/b_append.gif',
266			url: document.URL,
267			height: 13,
268			padding: 7
269		},
270		google_plusone: {
271			button: '', // small, standard, medium, tall
272			url: '',
273			lang: '', // en-US
274			parsetags: '', // none(onload), explicit
275			callback: '',
276			count: true // true, false
277		}
278	};
279
280	var max_index = this.size() - 1;
281
282	return this.each(function(index) {
283
284		switch (service) {
285			case 'mixi_check':
286				socialbutton_mixi_check(this, options, defaults.mixi_check, index, max_index);
287				break;
288
289			case 'mixi_like':
290				socialbutton_mixi_like(this, options, defaults.mixi_like, index, max_index);
291				break;
292
293			case 'facebook_like':
294				socialbutton_facebook_like(this, options, defaults.facebook_like, index, max_index);
295				break;
296
297			case 'facebook_share':
298				socialbutton_facebook_share(this, options, defaults.facebook_share, index, max_index);
299				break;
300
301			case 'twitter':
302				socialbutton_twitter(this, options, defaults.twitter, index, max_index);
303				break;
304
305			case 'gree_sf':
306				socialbutton_gree_sf(this, options, defaults.gree_sf, index, max_index);
307				break;
308
309			case 'evernote':
310				socialbutton_evernote(this, options, defaults.evernote, index, max_index);
311				break;
312
313			case 'hatena':
314				socialbutton_hatena(this, options, defaults.hatena, index, max_index);
315				break;
316
317			case 'hatena_oldstyle':
318				socialbutton_hatena_oldstyle(this, options, defaults.hatena_oldstyle, index, max_index);
319				break;
320
321			case 'google_plusone':
322				socialbutton_google_plusone(this, options, defaults.google_plusone, index, max_index);
323				break;
324
325			default:
326				break;
327		}
328
329		return true;
330	});
331}
332
333function socialbutton_mixi_check(target, options, defaults, index, max_index)
334{
335	var key = options.key || defaults.key;
336	var button = options.button || defaults.button;
337	var url = options.url || defaults.url;
338
339	if (key == '') {
340		return;
341	}
342
343	var attr = merge_attributes({
344		'data-key': key,
345		'data-url': htmlspecialchars(url),
346		'data-button': button
347	});
348
349	var tag = '<a href="http://mixi.jp/share.pl" class="mixi-check-button"' + attr + '>Check</a>';
350
351	$(target).html(tag);
352
353	if (index == max_index) {
354		$('body').append('<script type="text/javascript" src="http://static.mixi.jp/js/share.js"></script>');
355	}
356}
357
358function socialbutton_mixi_like(target, options, defaults, index, max_index)
359{
360	var key = options.key || defaults.key;
361	var url = options.url || defaults.url;
362	var width = options.width != undefined ? options.width : defaults.width;
363	var height = options.height != undefined ? options.height : defaults.height;
364	var show_faces = options.show_faces != undefined ? options.show_faces : defaults.show_faces;
365	var style = options.style || defaults.style;
366
367	if (key == '') {
368		return;
369	}
370
371	if (options.url) {
372		url = decodeURIComponent(url);
373	}
374	url = url_encode_rfc3986(url);
375
376	if (width == 0) {
377		width = show_faces ? defaults.sizes.width.with_faces : defaults.sizes.width.without_faces;
378	}
379
380	if (height == 0) {
381		height = show_faces ? defaults.sizes.height.with_faces_minimum : defaults.sizes.height.without_faces_minimum;
382	} else {
383		if (show_faces && height < defaults.sizes.height.with_faces_minimum) {
384			height = defaults.sizes.height.with_faces_minimum;
385		} else if (!show_faces && height < defaults.sizes.height.without_faces_minimum) {
386			height = defaults.sizes.height.without_faces_minimum;
387		}
388	}
389
390	var params = merge_parameters({
391		'href': url,
392		'service_key': key,
393		'width': width,
394		'show_faces': show_faces ? 'true' : 'false'
395	});
396
397	var attr = merge_attributes({
398		src: 'http://plugins.mixi.jp/favorite.pl?' + params,
399		scrolling: 'no',
400		frameborder: '0',
401		allowTransparency: 'true',
402		style: 'border:0; overflow:hidden; width:' + width + 'px; height:' + height + 'px; ' + style
403	});
404
405	var tag = '<iframe' + attr + '></iframe>';
406
407	$(target).html(tag);
408}
409
410function socialbutton_facebook_like(target, options, defaults, index, max_index)
411{
412	var layout = options.layout || options.button || defaults.button;
413	var url = options.url || defaults.url;
414
415	var show_faces = options.show_faces != undefined ? options.show_faces : defaults.show_faces;
416	var width = options.width != undefined ? options.width : defaults.width;
417	var height = options.height != undefined ? options.height : defaults.height;
418	var action = options.action || defaults.action;
419	var locale = options.locale || defaults.locale;
420	var font = options.font || defaults.font;
421	var colorscheme = options.colorscheme || defaults.colorscheme;
422
423	if (options.url) {
424		url = decodeURIComponent(url);
425	}
426	url = url_encode_rfc3986(url);
427
428	switch (layout) {
429		case 'standard':
430			if (width == 0) {
431				width = defaults.width_standard_default;
432			} else if (width < defaults.width_standard_minimum) {
433				width = defaults.width_standard_minimum;
434			}
435			if (height == 0) {
436				height = show_faces ? defaults.height_standard_with_photo : defaults.height_standard_without_photo;
437			} else if (height < defaults.height_standard_without_photo) {
438				height = defaults.height_standard_without_photo;
439			}
440			break;
441		case 'button_count':
442			if (width == 0) {
443				width = defaults.width_button_count_default;
444			} else if (width < defaults.width_button_count_minimum) {
445				width = defaults.width_button_count_minimum;
446			}
447			if (height == 0) {
448				height = defaults.height_button_count;
449			} else if (height < defaults.height_button_count) {
450				height = defaults.height_button_count;
451			}
452			break;
453		case 'box_count':
454			if (width == 0) {
455				width = defaults.width_box_count_default;
456			} else if (width < defaults.width_box_count_minimum) {
457				width = defaults.width_box_count_minimum;
458			}
459			if (height == 0) {
460				height = defaults.height_box_count;
461			} else if (height < defaults.height_box_count) {
462				height = defaults.height_box_count;
463			}
464			break;
465	}
466
467	var params = merge_parameters({
468		'href': url,
469		'layout': layout,
470		'show_faces': show_faces ? 'true' : 'false',
471		'width': width,
472		'action': action,
473		'locale': locale,
474		'font': font,
475		'colorscheme': colorscheme,
476		'height': height
477	});
478
479	var tag = '<iframe src="http://www.facebook.com/plugins/like.php?' + params + '" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:' + width + 'px; height:' + height + 'px;" allowTransparency="true"></iframe>';
480
481	$(target).html(tag);
482}
483
484function socialbutton_facebook_share(target, options, defaults, index, max_index)
485{
486	var type = options.type || options.button || defaults.button;
487	var url = options.url || defaults.url;
488	var text = options.text || defaults.text;
489
490	var attr = merge_attributes({
491		'type': type,
492		'share_url': htmlspecialchars(url)
493	});
494
495	var tag = '<a name="fb_share"' + attr + '>
495' + text + '</a>';
496
497	if(index == 0) {
498		tag += '<script type="text/javascript" src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"></script>';
499	}
500
501	$(target).html(tag);
502}
503
504function socialbutton_twitter(target, options, defaults, index, max_index)
505{
506	var count = options.count || options.button || defaults.button;
507	var url = options.url || defaults.url;
508
509	var text = options.text || defaults.text;
510	var lang = options.lang || defaults.lang;
511	var via = options.via || defaults.via;
512	var related = options.related || defaults.related;
513
514	var attr = merge_attributes({
515		'data-count': count,
516		'data-url': htmlspecialchars(url),
517		'data-text': text,
518		'data-lang': lang,
519		'data-via': via,
520		'data-related': related
521	});
522
523	var tag = '<a href="http://twitter.com/share" class="twitter-share-button"' + attr + '>Tweet</a>';
524
525	$(target).html(tag);
526
527	if (index == max_index) {
528		$('body').append('<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>');
529	}
530}
531
532function socialbutton_gree_sf(target, options, defaults, index, max_index)
533{
534	var type = options.type || options.button || defaults.button;
535	var url = options.url || defaults.url;
536
537	var width = options.width != undefined ? options.width : defaults.width;
538	var height = options.height != undefined ? options.height : defaults.height;
539
540	if (options.url) {
541		url = decodeURIComponent(url);
542	}
543	url = url_encode_rfc3986(url);
544
545	switch (type) {
546		case 0:
547		case 1:
548		case 2:
549		case 3:
550			if (height != 16 && height != 20 && height != 23) {
551				height = 20;
552			}
553			break;
554
555		case 4:
556			if (height != 16 && height != 22 && height != 32) {
557				height = 22;
558			}
559			break;
560
561		default:
562			type = 0;
563			width = 0;
564			height = 20;
565			break;
566	}
567
568	if (width == 0) {
569		width = defaults.widths['type' + type + '_' + height];
570	}
571
572	var params = merge_parameters({
573		'url': url,
574		'type': String(type),
575		'height': height
576	});
577
578	var tag = '<iframe src="http://share.gree.jp/share?' + params + '" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" style="border:none; overflow:hidden; width:' + width + 'px; height:' + height + 'px;" allowTransparency="true"></iframe>';
579
580	$(target).html(tag);
581}
582
583function socialbutton_evernote(target, options, defaults, index, max_index)
584{
585	var button = options.button || defaults.button;
586	var url = options.url || defaults.url;
587
588	var provider_name = options.provider_name || defaults.provider_name;
589	var suggest_notebook = options.suggest_notebook || defaults.suggest_notebook;
590	var content_id = options.content_id || defaults.content_id;
591	var code = options.code || defaults.code;
592	var title = options.title || defaults.title;
593	var suggest_tags = options.suggest_tags || defaults.suggest_tags;
594	var styling = options.styling || defaults.styling;
595
596	if (button == 'article-clipper' ||
597		button == 'article-clipper-remember' ||
598		button == 'article-clipper-jp' ||
599		button == 'article-clipper-rus' ||
600		button == 'article-clipper-fr' ||
601		button == 'article-clipper-es' ||
602		button == 'article-clipper-de' ||
603		button == 'article-clipper-vert' ||
604		button == 'site-mem-32' ||
605		button == 'site-mem-36' ||
606		button == 'site-mem-22' ||
607		button == 'site-mem-16'
608		) {
609			button = 'http://static.evernote.com/' + button + '.png';
610	}
611
612	var clipoptions = {
613		'url': url,
614		'providerName': provider_name,
615		'suggestNotebook': suggest_notebook,
616		'contentId': content_id,
617		'code': code,
618		'title': title,
619		'suggestTags': suggest_tags,
620		'styling': styling
621	};
622
623	if (index == 0) {
624		$('body').append('<script type="text/javascript" src="http://static.evernote.com/noteit.js"></script>');
625	}
626
627	var tag = $(document.createElement('a'))
628		.attr({href: '#'})
629		.click(function(){
630			if (Evernote) {
631				Evernote.doClip(clipoptions);
632			}
633			return false;
634		})
635		.append('<img src="' + button + '" alt="Clip to Evernote" style="border: none" />');
636
637	$(target).html(tag);
638}
639
640function socialbutton_hatena(target, options, defaults, index, max_index)
641{
642	var layout = options.layout || options.button || defaults.button;
643	var url = options.url || defaults.url;
644	var title = options.title || defaults.title;
645
646	url = htmlspecialchars(url);
647	title = htmlspecialchars(title);
648
649	var attr = merge_attributes({
650		'href': 'http://b.hatena.ne.jp/entry/' + url,
651		'class': 'hatena-bookmark-button',
652		'data-hatena-bookmark-title': title,
653		'data-hatena-bookmark-layout': layout,
654		'title': 'このエントリーをはてなブックマークに追加'
655	});
656	
657	var tag = '<a' + attr + '><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a>'
658			+ '<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>';
659
660	$(target).html(tag);
661}
662
663function socialbutton_hatena_oldstyle(target, options, defaults, index, max_index)
664{
665	var button = options.button || defaults.button;
666	var url = options.url || defaults.url;
667
668	var height = options.height != undefined ? options.height : defaults.height;
669	var padding = options.padding != undefined ? options.padding : defaults.padding;
670
671	url = htmlspecialchars(url);
672
673	var tag = '<span style="font-size: ' + height + 'px; line-height: 100%; ">'
674			+ '<span style="padding-right: ' + padding + 'px"><a href="http://b.hatena.ne.jp/entry/add/' + url + '" target="_blank"><img src="' + button + '" style="border: none; vertical-align: text-bottom" /></a></span>'
675			+ '<a href="http://b.hatena.ne.jp/entry/' + url + '" target="_blank"><img src="http://b.hatena.ne.jp/entry/image/' + url + '" style="border: none; vertical-align: text-bottom" /></a>'
676			+ '</span>';
677
678	$(target).html(tag);
679}
680
681function socialbutton_google_plusone(target, options, defaults, index, max_index)
682{
683	if ($.browser.msie && parseInt($.browser.version, 10) < 8) {
684		return;
685	}
686
687	var size = options.size || options.button || defaults.button;
688	var href = options.href || options.url || defaults.url;
689
690	var lang = options.lang || defaults.lang;
691	var parsetags = options.parsetags || defaults.parsetags;
692
693	var callback = options.callback || defaults.callback;
694	var count = options.count != undefined ? options.count : defaults.count;
695
696	switch (size) {
697		case 'small':
698		case 'standard':
699		case 'medium':
700			break;
701
702		case 'tall':
703			count = true;
704			break;
705
706		default:
707			size = 'standard';
708			count = true;
709	}
710
711	var tag = $('<div>')
712	.attr({
713		'data-callback': callback,
714		'data-count': count ? 'true' : 'false',
715		'data-href': href,
716		'data-size': size
717	}).addClass('g-plusone');
718	$(target).append(tag);
719
720	if (index == max_index) {
721
722		var script_params = '';
723
724		if (lang != '') {
725			script_params += 'lang: "' + htmlspecialchars(lang) + '"';
726		}
727		if (parsetags != '') {
728			script_params += script_params != '' ? ',' : '';
729			script_params += 'parsetags: "' + htmlspecialchars(parsetags) + "'";
730		}
731		if (script_params != '') {
732			script_params = '{' + script_params + '}';
733		}
734
735		if (typeof gapi === 'undefined' || typeof gapi.plusone === 'undefined') {
736			$('body').append('<script type="text/javascript" src="https://apis.google.com/js/plusone.js">' + script_params + '</script>');
737		} else {
738			gapi.plusone.go();
739		}
740	}
741}
742
743function merge_attributes(attr)
744{
745	var merged = '';
746
747	for (var i in attr) {
748		if (attr[i] == '') {
749			continue;
750		}
751		merged += ' ' + i + '="' + attr[i] + '"';
752	}
753
754	return merged;
755}
756
757function merge_parameters(params)
758{
759	var merged = '';
760
761	for (var i in params) {
762		if (params[i] == '') {
763			continue;
764		}
765		merged += merged != '' ? '&amp;' : '';
766		merged += i + '=' + params[i] + '';
767	}
768
769	return merged;
770}
771
772function htmlspecialchars(string)
773{
774	var table = [
775		[/&/g, '&amp;'],
776		[/</g, '&lt;'],
777		[/>/g, '&gt;'],
778		[/"/g, '&quot;'],
779		[/'/g, '&#039;']
780	];
781
782	for (var i in table) {
783		string = string.replace(table[i][0], table[i][1]);
784	}
785
786	return string;
787}
788
789function url_encode_rfc3986(url)
790{
791	return encodeURIComponent(url).replace(/[!*'()]/g, function(p) {
792		return "%" + p.charCodeAt(0).toString(16);
793	});
794}
795
796})(jQuery);

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.