
(function(){$(document).ready(function(){$('#quote').quotify(quotes);$('.ertl').unobfuscate();$('#q').suggest();$('#t').tweetSuggest();$('#time-remaining').countdown();$('#comment-form label:visible').inFieldLabels();$('#contact-form label:visible').inFieldLabels();$('#portfolio').makeFolioMagic();});$(window).load(function(){$('#top-link').click(function(ev){$('html,body').animate({scrollTop:0},'slow',function(){$('a:first').focus();});ev.preventDefault();});$('#top').hide();if(document.documentElement.scrollHeight>document.documentElement.clientHeight){$('#top').show();};var comment_form=$('#comment-form');if($('.error',comment_form).length){$('html,body').animate({scrollTop:comment_form.offset().top},'slow');};if($('#comment-preview',comment_form).length){$('html,body').animate({scrollTop:$('#comment-preview',comment_form).offset().top},'slow');};});})();jQuery.fn.countdown=function(){var countdown_container=$(this);if(countdown_container.length){var days=$('#time-remaining-days');var hour=$('#time-remaining-hours');var mins=$('#time-remaining-mins');var secs=$('#time-remaining-secs');var now=new Date();var closing_date_array=countdown_container.attr('title').split(',');var closing_date=new Date(closing_date_array[0],closing_date_array[1]-1,closing_date_array[2],closing_date_array[3],closing_date_array[4],closing_date_array[5]);var milliseconds_remaining=closing_date.getTime()-now.getTime();doCountDown(milliseconds_remaining);countdown_container.removeAttr('title');};return this;function doCountDown(ms){var cur_ms=ms;var ms=ms/1000;var seconds_remaining=parseInt(ms%60,10);ms/=60;var minutes_remaining=parseInt(ms%60,10);ms/=60;var hours_remaining=parseInt(ms%24,10);ms/=24;var days_remaining=parseInt(ms,10);days.html(days_remaining+' jour'+(days_remaining<=1?'':'s'));hour.html(hours_remaining+' heure'+(hours_remaining<=1?'':'s'));mins.html(minutes_remaining+' minute'+(minutes_remaining<=1?'':'s'));secs.html(seconds_remaining+' seconde'+(seconds_remaining<=1?'':'s'));if(ms>0){setTimeout(function(){doCountDown(cur_ms-1000);},1000);}else{$('#comment-form').hide('fast');};};};jQuery.fn.tweetSuggest=function(){var keywords_input=this;if(keywords_input.length){var result_list=$('#tweets-list');var cache=result_list.html();var tweets_count=$('#tweets-count');var tweets_count_cache=tweets_count.html();var ajax_loader=$('#twitter-ajax-loader');var json_url=keywords_input.attr('alt');keywords_input.removeAttr('alt');var json_data=undefined;keywords_input.blur(function(){if($(this).val().length===0){tweets_count.html(tweets_count_cache);result_list.html(cache);};}).ajaxStart(function(){ajax_loader.show();}).ajaxStop(function(){ajax_loader.hide();}).keyup(init).attr('autocomplete','off');$('#twitter-search-form').submit(function(e){e.preventDefault();});if(window.location.hash.length>0){$.getJSON(json_url,function(data,textStatus){json_data=data;var location_hash=unescape(window.location.hash.replace('#','').replace('+',' '));keywords_input.val(location_hash)
searchTweet(location_hash);});};};return this;function init(event){var input=keywords_input.val();if(input.length>0&&input!==''&&json_data===undefined){$.getJSON(json_url,function(data,textStatus){json_data=data;searchTweet(input);});};if(json_data===undefined){return;};if(input===''){return endProcess();};if(event.keyCode==27){keywords_input.val('');return endProcess();};searchTweet(input);};function endProcess(){window.location.hash='';tweets_count.html(tweets_count_cache);result_list.html(cache);return false;};function searchTweet(input){var raw_input=input;input=input.replace(/'/g,"\\'").replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');query="$[?t~'*"+input+"*'][0:150]";var results=JSONQuery(query,json_data);if(results.length){result_list.removeHighlight();var content='';for(var i=0,len=results.length;i<len;i++){var title=results[i].t;var url_match=/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/g;title=title.replace(url_match,'<a href="$1">$1</a>');var url='http://twitter.com/_kemar/statuses/'+results[i].id;content+='<li><span>'+title+' <a href="'+url+'">#</a></span></li>';};tweets_count.html(results.length);result_list.html(content).highlight(raw_input);window.location.hash=escape(raw_input).replace(/%20/g,'+');}else{result_list.html('<li>Pas de résultat</li>');};};};jQuery.fn.suggest=function(){var keywords_input=this;if(keywords_input.length){var json_url=keywords_input.attr('alt');keywords_input.removeAttr('alt');var json_data=undefined;keywords_input.focus(function(){if(json_data===undefined){$.getJSON(json_url,function(data,textStatus){json_data=data;});};});keywords_input.blur(function(){setTimeout(function(){$('#suggest').hide(100);},500);});keywords_input.keyup(init);keywords_input.attr('autocomplete','off');};return this;function init(event){if(json_data===undefined){return;};var input=$.trim($(keywords_input).val());if(input===''||input==='?'){return endProcess();};if(event.keyCode==27){return endProcess();};if(/^(37|39)$/.test(event.keyCode)){return;};buildSuggestionBox(keywords_input);if(event.keyCode==40){selectNextResult();return;};if(event.keyCode==38){selectPrevResult();return;};if(event.keyCode==13){if($('#suggest li.selected').length){goToPost();keywords_input.keypress(function(e){e.preventDefault();});};};getSuggestions(input);};function endProcess(){$('#suggest').hide();return false;};function buildSuggestionBox(keywords_input){if(!$('#suggest').length){var input=jQuery(keywords_input);var suggestion_box=$('<ul></ul>');suggestion_box.attr('id','suggest').hide();input.parent().append(suggestion_box);};};function getSuggestions(input){var suggestion_box=$('#suggest'),content='';var raw_input=input;var input=input.replace(/'/g,"\\'");query="$[?title~'*"+input+"*'][0:6]";var results=JSONQuery(query,json_data);if(results.length){for(var i=0,len=results.length;i<len;i++){var title=results[i].title.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');var year=results[i].year;var url=results[i].url;content+='<li><a href="'+url+'">'+title+' <em>('+year+')</em>'+'</a></li>'};suggestion_box.html(content).show().highlight(raw_input);}else{suggestion_box.hide();};};function selectNextResult(){if($('#suggest li.selected').next().length){$('#suggest li.selected').removeClass('selected').next().addClass('selected');return;}else{$('#suggest li').removeClass('selected');$('#suggest li:first').addClass('selected');return;};};function selectPrevResult(){if($('#suggest li.selected').prev().length){$('#suggest li.selected').removeClass('selected').prev().addClass('selected');return;}else{$('#suggest li').removeClass('selected');return;};};function goToPost(){if($('#suggest li.selected').length){window.location=$('#suggest li.selected a').attr('href');};};};jQuery.fn.inFieldLabels=function(){var labels=this;if(labels.length){labels.each(function(){var label=$(this);label.addClass('infield').data('displayed',true);var f=$(this).next('input, textarea');if(f.val()){label.hide().data('displayed',false)};f.focus(function(){hideOnFocus(label,$(this));}).blur(function(){showOnBlur(label,$(this));});});};function hideOnFocus(label,form){if(!form.val()||form.val()===''){label.data('displayed',true).show().css({'opacity':'0.5'});};form.keyup(function(e){if(label.data('displayed')&&$(this).val()){label.data('displayed',false).hide();};if(!form.val()||form.val()===''){label.data('displayed',true).show().css({'opacity':'0.5'});};});};function showOnBlur(label,form){if(form.val()===''){label.data('displayed',true).show().css({'opacity':'1'});};};return this;};jQuery.fn.quotify=function(quotes){var container=this;if(container.length){var len=quotes.length-1;var rand=randNum(len);var quote_container=$('cite',container);$('p',container).prepend('<a id="quote-reload" href="#">New quote</a>');var author_container=$('p span',container);newQuote(quotes[rand]);$('#quote-reload').bind('click',function(e){rand=randNum(len);newQuote(quotes[rand]);e.preventDefault();});};function randNum(len){return Math.floor(Math.random()*(len+1));};function newQuote(quote){quote_container.text('"'+quote.quote+'"');if(quote.url){author_container.html('-- <a href="'+quote.url+'">'+quote.author+'</a>');}else{author_container.text('-- '+quote.author);};};return this;};jQuery.fn.unobfuscate=function(){var elements=this;if(elements.length){elements.each(function(i){var reversed=$(this).text().split('').reverse().join('');if(this.nodeName.toUpperCase()==='LI'){$(this).wrap('<a href="mailto:'+reversed+'"></a>')}else if(this.nodeName.toUpperCase()==='A'){var href='mailto:'+reversed;$(this).attr('href',href);};});};return this;};jQuery.fn.makeFolioMagic=function(){var portfolio=$(this);if(portfolio.length){var main_wrapper=$('#portfolio-item-wrapper');var slide_up=$('<a id="slide-up" href="#">Slide up</a>').css('outline',0);var slide_down=$('<a id="slide-down" href="#">Slide down</a>').css('outline',0);var items=$('.portfolio-item',portfolio);var ready_to_scroll=true;var ready_to_fade=true;var current_item=undefined;var cur_pos=0;var item_height=304;var max_height=item_height*items.length;var current_pic_index=0;var photos_containers=$('.portfolio-pics',items);photos_containers.each(function(){initPics(this);});init();displayControl();slide_up.bind('click',function(e){if(ready_to_scroll){ready_to_scroll=false;slideUp();};e.preventDefault();});slide_down.bind('click',function(e){if(ready_to_scroll){ready_to_scroll=false;slideDown();};e.preventDefault();});$('#portfolio-nav a').click(function(e){if(ready_to_scroll){var item_to_display=$('#p-'+this.href.replace(/^http.*#/,''));if(item_to_display.length){$('#portfolio-nav a').removeClass('current');$(this).addClass('current');ready_to_scroll=false;current_item=setCurrentItem(item_to_display);var pos=(item_to_display.index())*item_height;slideTo(-pos);displayControl();};};});$(document).bind('keydown',function(e){if(e.keyCode===40||e.keyCode===38){e.preventDefault();};if(e.keyCode===38&&ready_to_scroll){ready_to_scroll=false;slideUp();};if(e.keyCode===40&&ready_to_scroll){ready_to_scroll=false;slideDown();};if(e.keyCode===39){showNextPic();};if(e.keyCode===37){showPrevPic();};});$('a.slide-right-small').click(function(e){showNextPic();e.preventDefault();});$('a.slide-left-small').click(function(e){showPrevPic();e.preventDefault();});};return this;function init(){portfolio.css({'height':item_height+'px'});main_wrapper.css({'position':'absolute','top':0,'left':0});portfolio.before(slide_up);portfolio.after(slide_down);$('#content').append('<div class="keyboard">Use The Keyboard, Luke</div>');var nav=$('<p id="portfolio-nav"></p>');var nav_content='';items.each(function(i){nav_content+='<a href="#'+this.id.replace('p-','')+'">'+(i+1)+'</a>';});$('#content').append(nav.html(nav_content))
var l=location.toString();var hash=undefined;if(l.indexOf('#')>0){hash=l.replace(/^http.*#/,'');};if(hash){var item_to_display=$('#p-'+hash);if(item_to_display.length){current_item=setCurrentItem(item_to_display);var pos=(item_to_display.index())*item_height;slideTo(-pos);};}else{current_item=setCurrentItem($(items.get(0)));window.location.hash=current_item.attr('id').replace('p-','');highlightCurrentNavItem();};};function setCurrentItem(el){items.removeClass('current');el.addClass('current');$('a',items).attr('tabindex',-1);$('a',el).removeAttr('tabindex');return el;};function slideUp(){cur_pos=main_wrapper.css('top').match(/^-?\d+/)[0];var new_pos=Number(cur_pos)-item_height;if(-new_pos===max_height){ready_to_scroll=true;}else{slideTo(new_pos);};if(current_item.next('.portfolio-item').length){current_item=setCurrentItem(current_item.next('.portfolio-item'));};displayControl();};function slideDown(){cur_pos=main_wrapper.css('top').match(/^-?\d+/)[0];var new_pos=Number(cur_pos)+item_height;if(new_pos>0){ready_to_scroll=true;}else{slideTo(new_pos);};if(current_item.prev('.portfolio-item').length){current_item=setCurrentItem(current_item.prev('.portfolio-item'));};displayControl();};function slideTo(pos){main_wrapper.animate({top:pos+'px'},'slow',function(){window.location.hash=current_item.attr('id').replace('p-','');highlightCurrentNavItem();ready_to_scroll=true;});cur_pos=pos;};function highlightCurrentNavItem(){$('#portfolio-nav a').removeClass('current');$($('#portfolio-nav a').get(current_item.index())).addClass('current');};function displayControl(){if(-cur_pos+item_height>=max_height){slide_up.animate({'opacity':0.6},'fast').addClass('deactivated');}else{slide_up.animate({'opacity':1},'fast').removeClass('deactivated');};if(cur_pos>=0){slide_down.animate({'opacity':0.6},'fast').addClass('deactivated');}else{slide_down.animate({'opacity':1},'fast').removeClass('deactivated');};};function initPics(photos_container){var photos_container=$(photos_container);var pics=$('img',photos_container).hide();if(pics.length>1){var prev=$('<a class="slide-left-small" href="#">&lt;</a>').css('outline',0).attr('tabindex',-1);var next=$('<a class="slide-right-small" href="#">&lt;</a>').css('outline',0).attr('tabindex',-1);photos_container.append(prev);photos_container.append(next);var first_pic=$(pics.get(0)).addClass('visible').show();};};function showNextPic(pic_to_hide,pic_to_show){if(ready_to_fade){var pics=$('.portfolio-pics img',current_item);if(pics.length>1){ready_to_fade=false;var pic_to_hide=$('.portfolio-pics img.visible',current_item);var pic_to_show=$(pics.get(pic_to_hide.index()+1));if(!pic_to_show.length){pic_to_show=$(pics.get(0));};switchPic(pic_to_hide,pic_to_show);};};};function showPrevPic(pic_to_hide,pic_to_show){if(ready_to_fade){var pics=$('.portfolio-pics img',current_item);if(pics.length>1){ready_to_fade=false;var pic_to_hide=$('.portfolio-pics img.visible',current_item);var pic_to_show=$(pics.get(pic_to_hide.index()-1));switchPic(pic_to_hide,pic_to_show);};};};function switchPic(pic_to_hide,pic_to_show){pic_to_show.css('z-index',10).addClass('visible').show();pic_to_hide.css({'z-index':100,'opacity':1}).animate({'opacity':0},500,function(){$(this).removeClass('visible').hide().css('opacity',1);ready_to_fade=true;});};};var quotes=[{"quote":"On se voit demain pour parler de ton suicide professionnel","author":"Manager from teh hell","url":""},{"quote":"Cuba quiero bailar la salsa","author":"Gibson Brothers - Cuba 1978","url":"http://www.youtube.com/watch?v=Wp9ecwfjbUU"},{"quote":"If you're good at something, never do it for free.","author":"The Joker","url":"http://www.youtube.com/watch?v=uYMnAUGFuG0"},{"quote":"Look at This Fucking Graph, It's Fucking Going Upwards","author":"Someone from teh internet","url":"http://imgur.com/DzZdf.jpg"},{"quote":"Sup dawg, we heard you like kernels, so we put a kernel in your micro-kernel (so you can Mach while you BSD)","author":"Someone from teh internet","url":""},{"quote":"w00t! i just pwn3d that n00b!","author":"Someone from teh irc","url":""},{"quote":"Where's all the fucking water coming from?","author":"Captain of the Titanic - 1912","url":"http://justin.justnet.com.au/rudestuff/uses-of-the-word-fuck.html"},{"quote":"Don't hate the ripper, hate the game","author":"Someone from teh internet","url":"http://www.tuaw.com/2006/10/31/dont-hate-the-ripper-hate-the-game/"},{"quote":"Dude, Sam Jackson mothafuckin' hates me!","author":"Someone from teh internet","url":""},{"quote":"Shit happens when you party naked","author":"Thurman","url":""},{"quote":"Don't Copy That Floppy","author":"Oppressor from teh HADOPI","url":"http://www.youtube.com/watch?v=up863eQKGUI"},{"quote":"Personnelement, c'est pas Dieu qui me dérange, c'est son putain de fan club","author":"Someone from teh internet","url":""},{"quote":"Quand tout le reste a échoué, lisez le mode d'emploi.","author":"Someone using LINUX","url":""},{"quote":"Told you so. Linux rulez teh internets","author":"Someone high","url":""},{"quote":"Ta mère est un ingénieur FrontPage","author":"Un développeur web en colère","url":""},{"quote":"Hé mec, mon nom à moi C'est Hubert Valéry Patrick Stanislas Duc de Montmorency","author":"Les inconnus","url":"http://www.youtube.com/watch?v=0uHikQqc4ik"},{"quote":"Jesus saves, but only Buddha makes incremental backups","author":"MrZebra","url":"http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke/234159#comments-234159"},{"quote":"Yeah, whatever, motherfucker","author":"Pinky Chauffeur, Next Friday","url":"http://www.youtube.com/watch?v=HkqXgn50CjM"},{"quote":"Vengeance blackens the soul, Bruce","author":"Alfred, Batman: Mask of the Phantasm","url":"http://www.imdb.com/title/tt0106364/quotes?qt0203936"},{"quote":"This goes out to my Brooklyn crew represtin all the freaky bitches, fuck 'em all day and fuck 'em all night, we don't love these hoes","author":"The Notorious B.I.G. - Nasty Boy","url":"http://www.youtube.com/watch?v=Wx8uI6swbzE"},{"quote":"I don't know why the fuck I'm fuckin wit you","author":"Slum Village - I Don't Know","url":"http://www.youtube.com/watch?v=rXd5ZXTjStA"},{"quote":"Aiyyo, I got a slight problem, I smoke weed too much","author":"Redman - Smoke Buddah","url":"http://www.youtube.com/watch?v=4LDpgkoRtL8"},{"quote":"I done told you boy I'm a soldier boy, I got no choice but to be a rider","author":"G-Unit - Rider Pt.2","url":"http://www.youtube.com/watch?v=H0aAEchtPBQ"},{"quote":"Faire d'l'argent avant de mourir le dilemme d'la race humaine","author":"Rockin Squat, Illegal Mixtape","url":""},{"quote":"Life As A Shorty Shouldn't Be So Rough","author":"Wu-Tang Clan - C.R.E.A.M.","url":"http://www.youtube.com/watch?v=e69laCvKxEw"},{"quote":"What would you do... if the vicious enemy suddenly started comin at you... armed to the teeth, and ready to kill you?","author":"Chorus from Da Enemy - D.I.T.C.","url":"http://www.youtube.com/watch?v=ObuP9mHWOdw"},{"quote":"Kilo is SO going to be a #1 hit","author":"Un fan de Ghostface","url":""},{"quote":"We don't give a fuck when we smoked out","author":"Redman - Whateva Man","url":"http://www.youtube.com/watch?v=UXI0S-5ToPs"},{"quote":"Thats my word, I'm mothafuckin' stressed - It seems like life's tryin' to put me through a test","author":"Blaq Poet - The Heat is On","url":"http://www.youtube.com/watch?v=SUf7zr690q8"},{"quote":"I'm writin my name in graffiti on the wall - So when I'm on tour I represent the hardcore - I'm taggin up your blackbook sure, I'm out for fame","author":"KRS One - Out For Fame","url":"http://www.youtube.com/watch?v=hpCnhtY2Pp8"},{"quote":"They rally round tha family! With a pocket full of shells","author":"RATM","url":"http://www.ratm.net/lyrics/bull.html"},{"quote":"Who the fuck is this? Pagin me at 5:46 in the mornin","author":"Notorious B.I.G. - Warning","url":"http://www.youtube.com/watch?v=QQlmLf67m18"},{"quote":"Motherfucker don't you know I'm stranded on the row? Beeyatch","author":"Kurupt - Puffin on Blunts and Drankin Tanqueray","url":"http://www.youtube.com/watch?v=XSY8waSPDTk"},{"quote":"If you not gonna take care of business... STOP TAKING UP SPAAACE","author":"Superb & Solomon Childs - Take Up Space","url":"http://www.youtube.com/watch?v=jNiRdZyHuvo"},{"quote":"You know you can't fuck with my motherfuckin DJ - That's my homey and we call him Warren G","author":"Snoop - Stranded On Death Row","url":"http://www.youtube.com/watch?v=h-UkjmkHfW4"},{"quote":"Toujours le Filet'O'Fish au Mc Do, bitches","author":"Sefyu - Molotov 4","url":"http://www.youtube.com/watch?v=mcZQHPvcn5M"},{"quote":"Oooweeee the beat BANGS","author":"Someone from teh YouTube","url":""},{"quote":"I work the angles sharp and precise, Dilated Peoples so you better build twice","author":"Dilated Peoples - Work The Angles","url":"http://www.youtube.com/watch?v=a2kYVCl8Kh0"},{"quote":"My life depends upon my gun and my gun spells hope in the land where the rope and the colt are king","author":"Scott Walker - The Rope And The Colt","url":"http://www.youtube.com/watch?v=1U5WlMWiDSY"},{"quote":"Yo, this way to savings! Save your dollars bills, yo!","author":"Breaking Bad s01e05","url":""},{"quote":"I'm an example of western civilization's decline. I'm a loner, a rebel, samurai solo","author":"Bun B - Choose Your Side","url":"http://www.youtube.com/watch?v=oCdvPp5OP5o"}];jQuery.fn.highlight=function(pat){function innerHighlight(node,pat){var skip=0;if(node.nodeType==3){var pos=node.data.toUpperCase().indexOf(pat);if(pos>=0){var strongnode=document.createElement('strong');strongnode.className='highlight';var middlebit=node.splitText(pos);var endbit=middlebit.splitText(pat.length);var middleclone=middlebit.cloneNode(true);strongnode.appendChild(middleclone);middlebit.parentNode.replaceChild(strongnode,middlebit);skip=1;};}else if(node.nodeType==1&&node.childNodes&&!/(script|style)/i.test(node.tagName)){for(var i=0;i<node.childNodes.length;++i){i+=innerHighlight(node.childNodes[i],pat);};};return skip;};return this.each(function(){innerHighlight(this,pat.toUpperCase());});};jQuery.fn.removeHighlight=function(){return this.find("strong.highlight").each(function(){this.parentNode.firstChild.nodeName;with(this.parentNode){replaceChild(this.firstChild,this);normalize();};}).end();};(function(){function map(arr,fun){var len=arr.length;if(typeof fun!="function")
throw new TypeError();var res=new Array(len);var thisp=arguments[2];for(var i=0;i<len;i++){if(i in arr)
res[i]=fun.call(thisp,arr[i],i,arr);}
return res;}
function filter(arr,fun){var len=arr.length;if(typeof fun!="function")
throw new TypeError();var res=new Array();var thisp=arguments[2];for(var i=0;i<len;i++){if(i in arr){var val=arr[i];if(fun.call(thisp,val,i,arr))
res.push(val);}}
return res;};function slice(obj,start,end,step){var len=obj.length,results=[];end=end||len;start=(start<0)?Math.max(0,start+len):Math.min(len,start);end=(end<0)?Math.max(0,end+len):Math.min(len,end);for(var i=start;i<end;i+=step){results.push(obj[i]);}
return results;}
function expand(obj,name){var results=[];function walk(obj){if(name){if(name===true&&!(obj instanceof Array)){results.push(obj);}else if(obj[name]){results.push(obj[name]);}}
for(var i in obj){var val=obj[i];if(!name){results.push(val);}else if(val&&typeof val=='object'){walk(val);}}}
if(name instanceof Array){if(name.length==1){return obj[name[0]];}
for(var i=0;i<name.length;i++){results.push(obj[name[i]]);}}else{walk(obj);}
return results;}
function distinctFilter(array,callback){var outArr=[];var primitives={};for(var i=0,l=array.length;i<l;++i){var value=array[i];if(callback(value,i,array)){if((typeof value=='object')&&value){if(!value.__included){value.__included=true;outArr.push(value);}}else if(!primitives[value+typeof value]){primitives[value+typeof value]=true;outArr.push(value);}}}
for(i=0,l=outArr.length;i<l;++i){if(outArr[i]){delete outArr[i].__included;}}
return outArr;}
var JSONQuery=function(query,obj){tokens=[];var depth=0;var str=[];query=query.replace(/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'|[\[\]]/g,function(t){depth+=t=='['?1:t==']'?-1:0;return(t==']'&&depth>0)?'`]':(t.charAt(0)=='"'||t.charAt(0)=="'")?"`"+(str.push(t)-1):t;});var prefix='';function call(name){prefix=name+"("+prefix;}
function makeRegex(t,a,b,c,d){return str[d].match(/[\*\?]/)||c=='~'?"/^"+str[d].substring(1,str[d].length-1).replace(/\\([btnfr\\"'])|([^\w\*\?])/g,"\\$1$2").replace(/([\*\?])/g,".$1")+(c=='~'?'$/i':'$/')+".test("+a+")":t;}
query.replace(/(\]|\)|push|pop|shift|splice|sort|reverse)\s*\(/,function(){throw new Error("Unsafe function call");});query=query.replace(/([^<>=]=)([^=])/g,"$1=$2").replace(/@|(\.\s*)?[a-zA-Z\$_]+(\s*:)?/g,function(t){return t.charAt(0)=='.'?t:t=='@'?"$obj":(t.match(/:|^(\$|Math|true|false|null)$/)?"":"$obj.")+t;}).replace(/\.?\.?\[(`\]|[^\]])*\]|\?.*|\.\.([\w\$_]+)|\.\*/g,function(t,a,b){var oper=t.match(/^\.?\.?(\[\s*\^?\?|\^?\?|\[\s*==)(.*?)\]?$/);if(oper){var prefix='';if(t.match(/^\./)){call("expand");prefix=",true)";}
call(oper[1].match(/\=/)?"map":oper[1].match(/\^/)?"distinctFilter":"filter");return prefix+",function($obj){return "+oper[2]+"})";}
oper=t.match(/^\[\s*([\/\\].*)\]/);if(oper){return".concat().sort(function(a,b){"+oper[1].replace(/\s*,?\s*([\/\\])\s*([^,\\\/]+)/g,function(t,a,b){return"var av= "+b.replace(/\$obj/,"a")+",bv= "+b.replace(/\$obj/,"b")+";if(av>bv||bv==null){return "+(a=="/"?1:-1)+";}\n"+"if(bv>av||av==null){return "+(a=="/"?-1:1)+";}\n";})+"})";}
oper=t.match(/^\[(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)\]/);if(oper){call("slice");return","+(oper[1]||0)+","+(oper[2]||0)+","+(oper[3]||1)+")";}
if(t.match(/^\.\.|\.\*|\[\s*\*\s*\]|,/)){call("expand");return(t.charAt(1)=='.'?",'"+b+"'":t.match(/,/)?","+t:"")+")";}
return t;}).replace(/(\$obj\s*(\.\s*[\w_$]+\s*)*)(==|~)\s*`([0-9]+)/g,makeRegex).replace(/`([0-9]+)\s*(==|~)\s*(\$obj(\s*\.\s*[\w_$]+)*)/g,function(t,a,b,c,d){return makeRegex(t,c,d,b,a);});query=prefix+(query.charAt(0)=='$'?"":"$")+query.replace(/`([0-9]+|\])/g,function(t,a){return a==']'?']':str[a];});var executor=eval("1&&function($,$1,$2,$3,$4,$5,$6,$7,$8,$9){var $obj=$;return "+query+"}");for(var i=0;i<arguments.length-1;i++){arguments[i]=arguments[i+1];}
return obj?executor.apply(this,arguments):executor;};if(typeof namespace=="function"){namespace("json::JSONQuery",JSONQuery);}
else{window["JSONQuery"]=JSONQuery;}})();