(function(a,b){if(a===b||a.registerLanguage===b){throw"Include sunlight.js before including language files";}a.registerLanguage("objective-c",{keywords:["and","default","noexcept","template","and_eq","delete","not","this","alignof","double","not_eq","thread_local","asm","dynamic_cast","nullptr","throw","auto","else","operator","true","bitand","enum","or","try","bitor","explicittodo","or_eq","typedef","bool","export","private","typeid","break","externtodo","protected","typename","case","false","public","union","catch","float","register","using","char","for","reinterpret_cast","unsigned","char16_t","friend","return","void","char32_t","goto","short","wchar_t","if","signed","virtual","compl","inline","sizeof","volatile","const","int","static","while","constexpr","long","static_assert","xor","const_cast","mutable","static_cast","xor_eq","continue","namespace","struct","decltype","new","switch","id","self","nil","super","in","out","inout","bycopy","byval","oneway","SEL","BOOL","YES","NO","@interface","@implementation","@end","@class","@private","@public","@package","@protected","@protocol","@optional","@required","@property","@synthesize","@dynamic","@selector","@try","@catch","@finally","@throw","@synchronized","@encode","__attribute__","__weak","__strong"],customTokens:{constant:{values:["EXIT_SUCCESS","EXIT_FAILURE","SIG_DFL","SIG_IGN","SIG_ERR","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SIGTERM"],boundary:"\\b"}},scopes:{string:[['"','"',a.util.escapeSequences.concat(['\\"'])],['@"','"',["\\\\",'\\"']]],"char":[["'","'",["\\'","\\\\"]]],comment:[["//","\n",null,true],["/*","*/"]],preprocessorDirective:[["#","\n",null,true]]},customParseRules:[function(c){var m,l,i,e,j,h,d,g,k,f;if(!c.language.identFirstLetter.test(c.reader.current())){return null;}l=0;while((m=c.reader.peek(++l))&&m.length===l){if(!c.language.identAfterFirstLetter.test(a.util.last(m))){break;}}i=c.reader.current()+m.substring(0,m.length-1);l=l-1;e=false;while((m=c.reader.peek(++l))&&m.length===l){if(!/\s$/.test(m)){j=/([\]:])$/.exec(m);if(j===null){return null;}e=j[1]===":"&&!/::$/.test(c.reader.peek(l+1));break;}}h=0;d=0;k=c.count();f=1;while(g=c.token(--k)){if(f>1&&!e){return null;}if(g.name==="punctuation"){switch(g.value){case";":case"{":case"}":return null;case"(":h--;break;case")":h++;break;case"[":if(d===0&&h===0){if(f>=1){g=c.createToken(e&&f>1?"messageArgumentName":"messageDestination",i,c.reader.getLine(),c.reader.getColumn());c.reader.read(i.length-1);return g;}return null;}d--;break;case"]":d++;break;}}if(d===0&&h===0&&g.name==="default"){f++;}}return null;},function(){var c=a.util.createHashMap(["getter","setter","readonly","readwrite","assign","retain","copy","nonatomic"],"\\b");return function(f){var e=a.util.matchWord(f,c,"keyword",true),g,d;if(!e){return null;}d=f.count();while(g=f.token(--d)){if(g.name==="punctuation"){if(g.value==="("){g=a.util.getPreviousNonWsToken(f.getAllTokens(),d);if(!g||g.name!=="keyword"||g.value!=="@property"){return null;}e.line=f.reader.getLine();e.column=f.reader.getColumn();f.reader.read(e.value.length-1);return e;}else{if(g.value===";"){return null;}}}}return null;};}()],identFirstLetter:/[A-Za-z_]/,identAfterFirstLetter:/\w/,namedIdentRules:{custom:[function(d){var e=/^(NS|CG).+$/,c=a.util.getNextNonWsToken(d.tokens,d.index);return e.test(d.tokens[d.index].value)&&(!c||c.name!=="punctuation"||c.value!=="(");},function(d){var c=a.util.getNextNonWsToken(d.tokens,d.index);return c&&c.name==="messageDestination"&&(c.value==="class"||c.value==="alloc");},function(e){var d,c,f;if(!a.util.createProceduralRule(e.index+1,1,[{token:"default"},{token:"ident"}])(e.tokens)){return false;}c=e.index;f=0;while(d=e.tokens[--c]){if(d.name==="punctuation"){switch(d.value){case"[":return false;case"{":case",":return true;case"(":if(f===0){return true;}f++;break;case")":f--;break;}}}return true;},function(){var c=[[a.util.whitespace,{token:"operator",values:["*","**"]},a.util.whitespace,{token:"ident"},a.util.whitespace,{token:"punctuation",values:[";"]}],[a.util.whitespace,{token:"operator",values:["&","*","**"]},a.util.whitespace,{token:"ident"}]];return function(i){var e,f,d,h,g;e=function(k){var j;for(j=0;j<c.length;j++){if(a.util.createProceduralRule(i.index+1,1,c[j],false)(k)){return true;}}return false;}(i.tokens);if(!e){return false;}f=false;d=false;g=i.index;while(h=i.tokens[--g]){if(h.name==="punctuation"&&(h.value===";"||h.value==="{")){return f||!d;}if(h.name==="operator"&&h.value==="="){d=true;}else{if(h.name==="keyword"&&h.value==="@property"){f=true;}}}return false;};}(),function(){var c=[[a.util.whitespace,{token:"punctuation",values:[")"]},a.util.whitespace,{token:"ident"}],[a.util.whitespace,{token:"punctuation",values:[")"]},a.util.whitespace,{token:"punctuation",values:["["]}],[a.util.whitespace,{token:"operator",values:["*","**"]},a.util.whitespace,{token:"punctuation",values:[")"]},a.util.whitespace,{token:"operator",values:["&"],optional:true},{token:"ident"}],[a.util.whitespace,{token:"operator",values:["*","**"]},a.util.whitespace,{token:"punctuation",values:[")"]},a.util.whitespace,{token:"operator",values:["&"],optional:true},{token:"punctuation",values:["["]}]];return function(g){var f,e,h,d;d=function(k){var j;for(j=0;j<c.length;j++){if(a.util.createProceduralRule(g.index+1,1,c[j],false)(k)){return true;}}return false;}(g.tokens);if(!d){return false;}e=g.index;while(f=g.tokens[--e]){if(f.name==="punctuation"&&f.value==="("){h=a.util.getPreviousNonWsToken(g.tokens,e);if(h){if(h.name==="ident"){return false;}if(h.name==="keyword"&&a.util.contains(["if","while"],h.value)){return false;}}return true;}}return false;};}(),function(g){var e=g.index,f,d,c,h;h=a.util.getPreviousNonWsToken(g.tokens,g.index);if(!h||h.name==="keyword"){return false;}d=false;c=[0,0];while((f=g.tokens[--e])!==b){if(f.name==="operator"){switch(f.value){case"<":case"<<":c[0]+=f.value.length;continue;case">":case">>":if(c[0]===0){return false;}c[1]+=f.value.length;continue;case".":case"::":case"*":continue;}}if(f.name==="default"||(f.name==="punctuation"&&f.value===",")){continue;}if(f.name==="ident"||(f.name==="keyword"&&a.util.contains(["id","static_cast"],f.value))){d=true;continue;}break;}if(!d||c[0]===0){return false;}e=g.index;while((f=g.tokens[++e])!==b){if(f.name==="operator"&&(f.value===">"||f.value===">>")){return true;}if((f.name==="operator"&&a.util.contains(["<","<<",">",">>","::","*"],f.value))||(f.name==="punctuation"&&f.value===",")||f.name==="ident"||f.name==="default"){continue;}return false;}return false;},function(f){var e=a.util.getPreviousNonWsToken(f.tokens,f.index),d,c;if(e!==b){if(e.name==="ident"||(e.name==="operator"&&e.value===".")){return false;}}e=a.util.getNextNonWsToken(f.tokens,f.index);if(!e||e.name!=="operator"||e.value!=="<"){return false;}d=f.index;c=[0,0];while((e=f.tokens[++d])!==b){if(e.name==="operator"){switch(e.value){case"<":c[0]++;break;case"<<":c[0]+=2;break;case">":c[1]++;break;case">>":c[1]+=2;break;default:return false;}if(c[0]===c[1]){break;}continue;}if(e.name==="default"||e.name==="ident"||(e.name==="punctuation"&&e.value===",")){continue;}return false;}if(c[0]!==c[1]){return false;}e=f.tokens[++d];if(!e||(e.name!=="default"&&e.name!=="ident")){return false;}if(e.name==="default"){e=f.tokens[++d];if(!e||e.name!=="ident"){return false;}}return true;}],follows:[[{token:"keyword",values:["@interface","@protocol","@implementation"]},{token:"default"}]],precedes:[[{token:"operator",values:["::"]}],[a.util.whitespace,{token:"operator",values:["*","**"]},{token:"default"},{token:"ident"},a.util.whitespace,{token:"operator",values:["=",","]}],[a.util.whitespace,{token:"operator",values:["*","**"]},a.util.whitespace,{token:"operator",values:["&"]},a.util.whitespace,{token:"ident"},a.util.whitespace,{token:"operator",values:["=",","]}]]},operators:["==","=","+=","++","+","->*","->","-=","--","-","**","*=","*","/=","/","%=","%","!=","!",">>=",">>",">=",">","<<=","<<","<=","<","&=","&&","&","|=","||","|","~","^=","^",".*",".","?","::",":",","]});}(this["Sunlight"]));
