").append(element).html();try{return 3===element[0].nodeType?lowercase(elemHtml):elemHtml.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,(function(match,nodeName){return"<"+lowercase(nodeName)}))}catch(e){return lowercase(elemHtml)}}function tryDecodeURIComponent(value){try{return decodeURIComponent(value)}catch(e){}}function parseKeyValue(keyValue){var key_value,key,obj={};return forEach((keyValue||"").split("&"),(function(keyValue){if(keyValue&&(key_value=keyValue.replace(/\+/g,"%20").split("="),isDefined(key=tryDecodeURIComponent(key_value[0])))){var val=!isDefined(key_value[1])||tryDecodeURIComponent(key_value[1]);hasOwnProperty.call(obj,key)?isArray(obj[key])?obj[key].push(val):obj[key]=[obj[key],val]:obj[key]=val}})),obj}function toKeyValue(obj){var parts=[];return forEach(obj,(function(value,key){isArray(value)?forEach(value,(function(arrayValue){parts.push(encodeUriQuery(key,!0)+(!0===arrayValue?"":"="+encodeUriQuery(arrayValue,!0)))})):parts.push(encodeUriQuery(key,!0)+(!0===value?"":"="+encodeUriQuery(value,!0)))})),parts.length?parts.join("&"):""}function encodeUriSegment(val){return encodeUriQuery(val,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function encodeUriQuery(val,pctEncodeSpaces){return encodeURIComponent(val).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,pctEncodeSpaces?"%20":"+")}function bootstrap(element,modules){var doBootstrap=function(){if((element=jqLite(element)).injector()){var tag=element[0]===document?"document":startingTag(element);throw ngMinErr("btstrpd","App Already Bootstrapped with this Element '{0}'",tag.replace(//,">"))}(modules=modules||[]).unshift(["$provide",function($provide){$provide.value("$rootElement",element)}]),modules.unshift("ng");var injector=createInjector(modules);return injector.invoke(["$rootScope","$rootElement","$compile","$injector","$animate",function(scope,element,compile,injector,animate){scope.$apply((function(){element.data("$injector",injector),compile(element)(scope)}))}]),injector},NG_DEFER_BOOTSTRAP=/^NG_DEFER_BOOTSTRAP!/;if(window&&!NG_DEFER_BOOTSTRAP.test(window.name))return doBootstrap();window.name=window.name.replace(NG_DEFER_BOOTSTRAP,""),angular.resumeBootstrap=function(extraModules){forEach(extraModules,(function(module){modules.push(module)})),doBootstrap()}}var SNAKE_CASE_REGEXP=/[A-Z]/g;function snake_case(name,separator){return separator=separator||"_",name.replace(SNAKE_CASE_REGEXP,(function(letter,pos){return(pos?separator:"")+letter.toLowerCase()}))}function assertArg(arg,name,reason){if(!arg)throw ngMinErr("areq","Argument '{0}' is {1}",name||"?",reason||"required");return arg}function assertArgFn(arg,name,acceptArrayAnnotation){return acceptArrayAnnotation&&isArray(arg)&&(arg=arg[arg.length-1]),assertArg(isFunction(arg),name,"not a function, got "+(arg&&"object"==typeof arg?arg.constructor.name||"Object":typeof arg)),arg}function assertNotHasOwnProperty(name,context){if("hasOwnProperty"===name)throw ngMinErr("badname","hasOwnProperty is not a valid {0} name",context)}function getter(obj,path,bindFnToScope){if(!path)return obj;for(var key,keys=path.split("."),lastInstance=obj,len=keys.length,i=0;i
(?:<\/\1>|)$/,HTML_REGEXP=/<|&#?\w+;/,TAG_NAME_REGEXP=/<([\w:]+)/,XHTML_TAG_REGEXP=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,wrapMap={option:[1,'"],thead:[1,"",""],col:[2,"",""],tr:[2,"",""],td:[3,"",""],_default:[0,"",""]};function jqLiteIsTextNode(html){return!HTML_REGEXP.test(html)}function jqLiteParseHTML(html,context){var parsed;return context=context||document,(parsed=SINGLE_TAG_REGEXP.exec(html))?[context.createElement(parsed[1])]:function(html,context){var tmp,tag,wrap,i,j,jj,fragment=context.createDocumentFragment(),nodes=[];if(jqLiteIsTextNode(html))nodes.push(context.createTextNode(html));else{for(tmp=fragment.appendChild(context.createElement("div")),tag=(TAG_NAME_REGEXP.exec(html)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML="
"+wrap[1]+html.replace(XHTML_TAG_REGEXP,"<$1>")+wrap[2],tmp.removeChild(tmp.firstChild),i=wrap[0];i--;)tmp=tmp.lastChild;for(j=0,jj=tmp.childNodes.length;j-1}function jqLiteRemoveClass(element,cssClasses){cssClasses&&element.setAttribute&&forEach(cssClasses.split(" "),(function(cssClass){element.setAttribute("class",trim((" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+trim(cssClass)+" "," ")))}))}function jqLiteAddClass(element,cssClasses){if(cssClasses&&element.setAttribute){var existingClasses=(" "+(element.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");forEach(cssClasses.split(" "),(function(cssClass){cssClass=trim(cssClass),-1===existingClasses.indexOf(" "+cssClass+" ")&&(existingClasses+=cssClass+" ")})),element.setAttribute("class",trim(existingClasses))}}function jqLiteAddNodes(root,elements){if(elements){elements=elements.nodeName||!isDefined(elements.length)||isWindow(elements)?[elements]:elements;for(var i=0;i=0?this[index]:this[this.length+index])},length:0,push:push,sort:[].sort,splice:[].splice},BOOLEAN_ATTR={};forEach("multiple,selected,checked,disabled,readOnly,required,open".split(","),(function(value){BOOLEAN_ATTR[lowercase(value)]=value}));var BOOLEAN_ELEMENTS={};function getBooleanAttrName(element,name){var booleanAttr=BOOLEAN_ATTR[name.toLowerCase()];return booleanAttr&&BOOLEAN_ELEMENTS[element.nodeName]&&booleanAttr}function hashKey(obj,nextUidFn){var key,objType=typeof obj;return"function"==objType||"object"==objType&&null!==obj?"function"==typeof(key=obj.$$hashKey)?key=obj.$$hashKey():undefined===key&&(key=obj.$$hashKey=(nextUidFn||nextUid)()):key=obj,objType+":"+key}function HashMap(array,isolatedUid){if(isolatedUid){var uid=0;this.nextUid=function(){return++uid}}forEach(array,this.put,this)}forEach("input,select,option,textarea,button,form,details".split(","),(function(value){BOOLEAN_ELEMENTS[uppercase(value)]=!0})),forEach({data:jqLiteData,removeData:jqLiteRemoveData},(function(fn,name){JQLite[name]=fn})),forEach({data:jqLiteData,inheritedData:jqLiteInheritedData,scope:function(element){return jqLite.data(element,"$scope")||jqLiteInheritedData(element.parentNode||element,["$isolateScope","$scope"])},isolateScope:function(element){return jqLite.data(element,"$isolateScope")||jqLite.data(element,"$isolateScopeNoTemplate")},controller:jqLiteController,injector:function(element){return jqLiteInheritedData(element,"$injector")},removeAttr:function(element,name){element.removeAttribute(name)},hasClass:jqLiteHasClass,css:function(element,name,value){var val;if(name=camelCase(name),!isDefined(value))return msie<=8&&""===(val=element.currentStyle&&element.currentStyle[name])&&(val="auto"),val=val||element.style[name],msie<=8&&(val=""===val?undefined:val),val;element.style[name]=value},attr:function(element,name,value){var lowercasedName=lowercase(name);if(BOOLEAN_ATTR[lowercasedName]){if(!isDefined(value))return element[name]||(element.attributes.getNamedItem(name)||noop).specified?lowercasedName:undefined;value?(element[name]=!0,element.setAttribute(name,lowercasedName)):(element[name]=!1,element.removeAttribute(lowercasedName))}else if(isDefined(value))element.setAttribute(name,value);else if(element.getAttribute){var ret=element.getAttribute(name,2);return null===ret?undefined:ret}},prop:function(element,name,value){if(!isDefined(value))return element[name];element[name]=value},text:function(){var NODE_TYPE_TEXT_PROPERTY=[];return msie<9?(NODE_TYPE_TEXT_PROPERTY[1]="innerText",NODE_TYPE_TEXT_PROPERTY[3]="nodeValue"):NODE_TYPE_TEXT_PROPERTY[1]=NODE_TYPE_TEXT_PROPERTY[3]="textContent",getText.$dv="",getText;function getText(element,value){var textProp=NODE_TYPE_TEXT_PROPERTY[element.nodeType];if(isUndefined(value))return textProp?element[textProp]:"";element[textProp]=value}}(),val:function(element,value){if(isUndefined(value)){if("SELECT"===nodeName_(element)&&element.multiple){var result=[];return forEach(element.options,(function(option){option.selected&&result.push(option.value||option.text)})),0===result.length?null:result}return element.value}element.value=value},html:function(element,value){if(isUndefined(value))return element.innerHTML;for(var i=0,childNodes=element.childNodes;i0&&(name=unescape(cookie.substring(0,index)),undefined===lastCookies[name]&&(lastCookies[name]=unescape(cookie.substring(index+1))));return lastCookies}undefined===value?rawDocument.cookie=escape(name)+"=;path="+cookiePath+";expires=Thu, 01 Jan 1970 00:00:00 GMT":isString(value)&&(cookieLength=(rawDocument.cookie=escape(name)+"="+escape(value)+";path="+cookiePath).length+1)>4096&&$log.warn("Cookie '"+name+"' possibly not set or overflowed because it was too large ("+cookieLength+" > 4096 bytes)!")},self.defer=function(fn,delay){var timeoutId;return outstandingRequestCount++,timeoutId=setTimeout((function(){delete pendingDeferIds[timeoutId],completeOutstandingRequest(fn)}),delay||0),pendingDeferIds[timeoutId]=!0,timeoutId},self.defer.cancel=function(deferId){return!!pendingDeferIds[deferId]&&(delete pendingDeferIds[deferId],clearTimeout(deferId),completeOutstandingRequest(noop),!0)}}function $BrowserProvider(){this.$get=["$window","$log","$sniffer","$document",function($window,$log,$sniffer,$document){return new Browser($window,$document,$log,$sniffer)}]}function $CacheFactoryProvider(){this.$get=function(){var caches={};function cacheFactory(cacheId,options){if(cacheId in caches)throw minErr("$cacheFactory")("iid","CacheId '{0}' is already taken!",cacheId);var size=0,stats=extend({},options,{id:cacheId}),data={},capacity=options&&options.capacity||Number.MAX_VALUE,lruHash={},freshEnd=null,staleEnd=null;return caches[cacheId]={put:function(key,value){capacitycapacity&&this.remove(staleEnd.key),value},get:function(key){if(capacity0&&$animate.addClass(this.$$element,classVal)},$removeClass:function(classVal){classVal&&classVal.length>0&&$animate.removeClass(this.$$element,classVal)},$updateClass:function(newClasses,oldClasses){var toAdd=tokenDifference(newClasses,oldClasses),toRemove=tokenDifference(oldClasses,newClasses);0===toAdd.length?$animate.removeClass(this.$$element,toRemove):0===toRemove.length?$animate.addClass(this.$$element,toAdd):$animate.setClass(this.$$element,toAdd,toRemove)},$set:function(key,value,writeAttr,attrName){var nodeName,booleanKey=getBooleanAttrName(this.$$element[0],key);booleanKey&&(this.$$element.prop(key,value),attrName=booleanKey),this[key]=value,attrName?this.$attr[key]=attrName:(attrName=this.$attr[key])||(this.$attr[key]=attrName=snake_case(key,"-")),("A"===(nodeName=nodeName_(this.$$element).toUpperCase())&&("href"===key||"xlinkHref"===key)||"IMG"===nodeName&&"src"===key)&&(this[key]=value=$$sanitizeUri(value,"src"===key)),!1!==writeAttr&&(null==value?this.$$element.removeAttr(attrName):this.$$element.attr(attrName,value));var $$observers=this.$$observers;$$observers&&forEach($$observers[key],(function(fn){try{fn(value)}catch(e){$exceptionHandler(e)}}))},$observe:function(key,fn){var attrs=this,$$observers=attrs.$$observers||(attrs.$$observers={}),listeners=$$observers[key]||($$observers[key]=[]);return listeners.push(fn),$rootScope.$evalAsync((function(){listeners.$$inter||fn(attrs[key])})),fn}};var startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),denormalizeTemplate="{{"==startSymbol||"}}"==endSymbol?identity:function(template){return template.replace(/\{\{/g,startSymbol).replace(/}}/g,endSymbol)},NG_ATTR_BINDING=/^ngAttr[A-Z]/;return compile;function compile($compileNodes,transcludeFn,maxPriority,ignoreDirective,previousCompileContext){$compileNodes instanceof jqLite||($compileNodes=jqLite($compileNodes)),forEach($compileNodes,(function(node,index){3==node.nodeType&&node.nodeValue.match(/\S+/)&&($compileNodes[index]=node=jqLite(node).wrap("").parent()[0])}));var compositeLinkFn=compileNodes($compileNodes,transcludeFn,$compileNodes,maxPriority,ignoreDirective,previousCompileContext);return safeAddClass($compileNodes,"ng-scope"),function(scope,cloneConnectFn,transcludeControllers,parentBoundTranscludeFn){assertArg(scope,"scope");var $linkNode=cloneConnectFn?JQLitePrototype.clone.call($compileNodes):$compileNodes;forEach(transcludeControllers,(function(instance,name){$linkNode.data("$"+name+"Controller",instance)}));for(var i=0,ii=$linkNode.length;i=8||attr.specified){name=attr.name,value=trim(attr.value),ngAttrName=directiveNormalize(name),(isNgAttr=NG_ATTR_BINDING.test(ngAttrName))&&(name=snake_case(ngAttrName.substr(6),"-"));var directiveNName=ngAttrName.replace(/(Start|End)$/,"");ngAttrName===directiveNName+"Start"&&(attrStartName=name,attrEndName=name.substr(0,name.length-5)+"end",name=name.substr(0,name.length-6)),attrsMap[nName=directiveNormalize(name.toLowerCase())]=name,!isNgAttr&&attrs.hasOwnProperty(nName)||(attrs[nName]=value,getBooleanAttrName(node,nName)&&(attrs[nName]=!0)),addAttrInterpolateDirective(node,directives,value,nName),addDirective(directives,nName,"A",maxPriority,ignoreDirective,attrStartName,attrEndName)}}if("input"===nodeName&&"hidden"===node.getAttribute("type")&&node.setAttribute("autocomplete","off"),isString(className=node.className)&&""!==className)for(;match=CLASS_DIRECTIVE_REGEXP.exec(className);)addDirective(directives,nName=directiveNormalize(match[2]),"C",maxPriority,ignoreDirective)&&(attrs[nName]=trim(match[3])),className=className.substr(match.index+match[0].length);break;case 3:if(11===msie)for(;node.parentNode&&node.nextSibling&&3===node.nextSibling.nodeType;)node.nodeValue=node.nodeValue+node.nextSibling.nodeValue,node.parentNode.removeChild(node.nextSibling);!function(directives,text){var interpolateFn=$interpolate(text,!0);interpolateFn&&directives.push({priority:0,compile:function(templateNode){var hasCompileParent=templateNode.parent().length;return hasCompileParent&&safeAddClass(templateNode.parent(),"ng-binding"),function(scope,node){var parent=node.parent(),bindings=parent.data("$binding")||[];bindings.push(interpolateFn),parent.data("$binding",bindings),hasCompileParent||safeAddClass(parent,"ng-binding"),scope.$watch(interpolateFn,(function(value){node[0].nodeValue=value}))}}})}(directives,node.nodeValue);break;case 8:try{(match=COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue))&&addDirective(directives,nName=directiveNormalize(match[1]),"M",maxPriority,ignoreDirective)&&(attrs[nName]=trim(match[2]))}catch(e){}}return directives.sort(byPriority),directives}function groupScan(node,attrStart,attrEnd){var nodes=[],depth=0;if(attrStart&&node.hasAttribute&&node.hasAttribute(attrStart)){do{if(!node)throw $compileMinErr("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",attrStart,attrEnd);1==node.nodeType&&(node.hasAttribute(attrStart)&&depth++,node.hasAttribute(attrEnd)&&depth--),nodes.push(node),node=node.nextSibling}while(depth>0)}else nodes.push(node);return jqLite(nodes)}function groupElementsLinkFnWrapper(linkFn,attrStart,attrEnd){return function(scope,element,attrs,controllers,transcludeFn){return element=groupScan(element[0],attrStart,attrEnd),linkFn(scope,element,attrs,controllers,transcludeFn)}}function applyDirectivesToNode(directives,compileNode,templateAttrs,transcludeFn,jqCollection,originalReplaceDirective,preLinkFns,postLinkFns,previousCompileContext){previousCompileContext=previousCompileContext||{};for(var newScopeDirective,directive,directiveName,$template,linkFn,directiveValue,terminalPriority=-Number.MAX_VALUE,controllerDirectives=previousCompileContext.controllerDirectives,newIsolateScopeDirective=previousCompileContext.newIsolateScopeDirective,templateDirective=previousCompileContext.templateDirective,nonTlbTranscludeDirective=previousCompileContext.nonTlbTranscludeDirective,hasTranscludeDirective=!1,hasTemplate=!1,hasElementTranscludeDirective=previousCompileContext.hasElementTranscludeDirective,$compileNode=templateAttrs.$$element=jqLite(compileNode),replaceDirective=originalReplaceDirective,childTranscludeFn=transcludeFn,i=0,ii=directives.length;idirective.priority)break;if((directiveValue=directive.scope)&&(newScopeDirective=newScopeDirective||directive,directive.templateUrl||(assertNoDuplicate("new/isolated scope",newIsolateScopeDirective,directive,$compileNode),isObject(directiveValue)&&(newIsolateScopeDirective=directive))),directiveName=directive.name,!directive.templateUrl&&directive.controller&&(directiveValue=directive.controller,assertNoDuplicate("'"+directiveName+"' controller",(controllerDirectives=controllerDirectives||{})[directiveName],directive,$compileNode),controllerDirectives[directiveName]=directive),(directiveValue=directive.transclude)&&(hasTranscludeDirective=!0,directive.$$tlb||(assertNoDuplicate("transclusion",nonTlbTranscludeDirective,directive,$compileNode),nonTlbTranscludeDirective=directive),"element"==directiveValue?(hasElementTranscludeDirective=!0,terminalPriority=directive.priority,$template=$compileNode,$compileNode=templateAttrs.$$element=jqLite(document.createComment(" "+directiveName+": "+templateAttrs[directiveName]+" ")),compileNode=$compileNode[0],replaceWith(jqCollection,sliceArgs($template),compileNode),childTranscludeFn=compile($template,transcludeFn,terminalPriority,replaceDirective&&replaceDirective.name,{nonTlbTranscludeDirective:nonTlbTranscludeDirective})):($template=jqLite(jqLiteClone(compileNode)).contents(),$compileNode.empty(),childTranscludeFn=compile($template,transcludeFn))),directive.template)if(hasTemplate=!0,assertNoDuplicate("template",templateDirective,directive,$compileNode),templateDirective=directive,directiveValue=isFunction(directive.template)?directive.template($compileNode,templateAttrs):directive.template,directiveValue=denormalizeTemplate(directiveValue),directive.replace){if(replaceDirective=directive,$template=jqLiteIsTextNode(directiveValue)?[]:jqLite(trim(directiveValue)),compileNode=$template[0],1!=$template.length||1!==compileNode.nodeType)throw $compileMinErr("tplrt","Template for directive '{0}' must have exactly one root element. {1}",directiveName,"");replaceWith(jqCollection,$compileNode,compileNode);var newTemplateAttrs={$attr:{}},templateDirectives=collectDirectives(compileNode,[],newTemplateAttrs),unprocessedDirectives=directives.splice(i+1,directives.length-(i+1));newIsolateScopeDirective&&markDirectivesAsIsolate(templateDirectives),directives=directives.concat(templateDirectives).concat(unprocessedDirectives),mergeTemplateAttributes(templateAttrs,newTemplateAttrs),ii=directives.length}else $compileNode.html(directiveValue);if(directive.templateUrl)hasTemplate=!0,assertNoDuplicate("template",templateDirective,directive,$compileNode),templateDirective=directive,directive.replace&&(replaceDirective=directive),nodeLinkFn=compileTemplateUrl(directives.splice(i,directives.length-i),$compileNode,templateAttrs,jqCollection,hasTranscludeDirective&&childTranscludeFn,preLinkFns,postLinkFns,{controllerDirectives:controllerDirectives,newIsolateScopeDirective:newIsolateScopeDirective,templateDirective:templateDirective,nonTlbTranscludeDirective:nonTlbTranscludeDirective}),ii=directives.length;else if(directive.compile)try{isFunction(linkFn=directive.compile($compileNode,templateAttrs,childTranscludeFn))?addLinkFns(null,linkFn,attrStart,attrEnd):linkFn&&addLinkFns(linkFn.pre,linkFn.post,attrStart,attrEnd)}catch(e){$exceptionHandler(e,startingTag($compileNode))}directive.terminal&&(nodeLinkFn.terminal=!0,terminalPriority=Math.max(terminalPriority,directive.priority))}return nodeLinkFn.scope=newScopeDirective&&!0===newScopeDirective.scope,nodeLinkFn.transcludeOnThisElement=hasTranscludeDirective,nodeLinkFn.templateOnThisElement=hasTemplate,nodeLinkFn.transclude=childTranscludeFn,previousCompileContext.hasElementTranscludeDirective=hasElementTranscludeDirective,nodeLinkFn;function addLinkFns(pre,post,attrStart,attrEnd){pre&&(attrStart&&(pre=groupElementsLinkFnWrapper(pre,attrStart,attrEnd)),pre.require=directive.require,pre.directiveName=directiveName,(newIsolateScopeDirective===directive||directive.$$isolateScope)&&(pre=cloneAndAnnotateFn(pre,{isolateScope:!0})),preLinkFns.push(pre)),post&&(attrStart&&(post=groupElementsLinkFnWrapper(post,attrStart,attrEnd)),post.require=directive.require,post.directiveName=directiveName,(newIsolateScopeDirective===directive||directive.$$isolateScope)&&(post=cloneAndAnnotateFn(post,{isolateScope:!0})),postLinkFns.push(post))}function getControllers(directiveName,require,$element,elementControllers){var value,retrievalMethod="data",optional=!1;if(isString(require)){for(;"^"==(value=require.charAt(0))||"?"==value;)require=require.substr(1),"^"==value&&(retrievalMethod="inheritedData"),optional=optional||"?"==value;if(value=null,elementControllers&&"data"===retrievalMethod&&(value=elementControllers[require]),!(value=value||$element[retrievalMethod]("$"+require+"Controller"))&&!optional)throw $compileMinErr("ctreq","Controller '{0}', required by directive '{1}', can't be found!",require,directiveName);return value}return isArray(require)&&(value=[],forEach(require,(function(require){value.push(getControllers(directiveName,require,$element,elementControllers))}))),value}function nodeLinkFn(childLinkFn,scope,linkNode,$rootElement,boundTranscludeFn){var attrs,$element,i,ii,linkFn,controller,isolateScope,transcludeFn,elementControllers={};if(attrs=compileNode===linkNode?templateAttrs:shallowCopy(templateAttrs,new Attributes(jqLite(linkNode),templateAttrs.$attr)),$element=attrs.$$element,newIsolateScopeDirective){var LOCAL_REGEXP=/^\s*([@=&])(\??)\s*(\w*)\s*$/;isolateScope=scope.$new(!0),!templateDirective||templateDirective!==newIsolateScopeDirective&&templateDirective!==newIsolateScopeDirective.$$originalDirective?$element.data("$isolateScopeNoTemplate",isolateScope):$element.data("$isolateScope",isolateScope),safeAddClass($element,"ng-isolate-scope"),forEach(newIsolateScopeDirective.scope,(function(definition,scopeName){var lastValue,parentGet,parentSet,compare,match=definition.match(LOCAL_REGEXP)||[],attrName=match[3]||scopeName,optional="?"==match[2],mode=match[1];switch(isolateScope.$$isolateBindings[scopeName]=mode+attrName,mode){case"@":attrs.$observe(attrName,(function(value){isolateScope[scopeName]=value})),attrs.$$observers[attrName].$$scope=scope,attrs[attrName]&&(isolateScope[scopeName]=$interpolate(attrs[attrName])(scope));break;case"=":if(optional&&!attrs[attrName])return;parentGet=$parse(attrs[attrName]),compare=parentGet.literal?equals:function(a,b){return a===b||a!=a&&b!=b},parentSet=parentGet.assign||function(){throw lastValue=isolateScope[scopeName]=parentGet(scope),$compileMinErr("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",attrs[attrName],newIsolateScopeDirective.name)},lastValue=isolateScope[scopeName]=parentGet(scope),isolateScope.$watch((function(){var parentValue=parentGet(scope);return compare(parentValue,isolateScope[scopeName])||(compare(parentValue,lastValue)?parentSet(scope,parentValue=isolateScope[scopeName]):isolateScope[scopeName]=parentValue),lastValue=parentValue}),null,parentGet.literal);break;case"&":parentGet=$parse(attrs[attrName]),isolateScope[scopeName]=function(locals){return parentGet(scope,locals)};break;default:throw $compileMinErr("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",newIsolateScopeDirective.name,scopeName,definition)}}))}for(transcludeFn=boundTranscludeFn&&function(scope,cloneAttachFn){var transcludeControllers;arguments.length<2&&(cloneAttachFn=scope,scope=undefined);hasElementTranscludeDirective&&(transcludeControllers=elementControllers);return boundTranscludeFn(scope,cloneAttachFn,transcludeControllers)},controllerDirectives&&forEach(controllerDirectives,(function(directive){var controllerInstance,locals={$scope:directive===newIsolateScopeDirective||directive.$$isolateScope?isolateScope:scope,$element:$element,$attrs:attrs,$transclude:transcludeFn};"@"==(controller=directive.controller)&&(controller=attrs[directive.name]),controllerInstance=$controller(controller,locals),elementControllers[directive.name]=controllerInstance,hasElementTranscludeDirective||$element.data("$"+directive.name+"Controller",controllerInstance),directive.controllerAs&&(locals.$scope[directive.controllerAs]=controllerInstance)})),i=0,ii=preLinkFns.length;i=0;i--)try{(linkFn=postLinkFns[i])(linkFn.isolateScope?isolateScope:scope,$element,attrs,linkFn.require&&getControllers(linkFn.directiveName,linkFn.require,$element,elementControllers),transcludeFn)}catch(e){$exceptionHandler(e,startingTag($element))}}}function markDirectivesAsIsolate(directives){for(var j=0,jj=directives.length;jdirective.priority)&&-1!=directive.restrict.indexOf(location)&&(startAttrName&&(directive=inherit(directive,{$$start:startAttrName,$$end:endAttrName})),tDirectives.push(directive),match=directive)}catch(e){$exceptionHandler(e)}return match}function mergeTemplateAttributes(dst,src){var srcAttr=src.$attr,dstAttr=dst.$attr,$element=dst.$$element;forEach(dst,(function(value,key){"$"!=key.charAt(0)&&(src[key]&&src[key]!==value&&(value+=("style"===key?";":" ")+src[key]),dst.$set(key,value,!0,srcAttr[key]))})),forEach(src,(function(value,key){"class"==key?(safeAddClass($element,value),dst.class=(dst.class?dst.class+" ":"")+value):"style"==key?($element.attr("style",$element.attr("style")+";"+value),dst.style=(dst.style?dst.style+";":"")+value):"$"==key.charAt(0)||dst.hasOwnProperty(key)||(dst[key]=value,dstAttr[key]=srcAttr[key])}))}function compileTemplateUrl(directives,$compileNode,tAttrs,$rootElement,childTranscludeFn,preLinkFns,postLinkFns,previousCompileContext){var afterTemplateNodeLinkFn,afterTemplateChildLinkFn,linkQueue=[],beforeTemplateCompileNode=$compileNode[0],origAsyncDirective=directives.shift(),derivedSyncDirective=extend({},origAsyncDirective,{templateUrl:null,transclude:null,replace:null,$$originalDirective:origAsyncDirective}),templateUrl=isFunction(origAsyncDirective.templateUrl)?origAsyncDirective.templateUrl($compileNode,tAttrs):origAsyncDirective.templateUrl;return $compileNode.empty(),$http.get($sce.getTrustedResourceUrl(templateUrl),{cache:$templateCache}).success((function(content){var compileNode,tempTemplateAttrs,$template,childBoundTranscludeFn;if(content=denormalizeTemplate(content),origAsyncDirective.replace){if($template=jqLiteIsTextNode(content)?[]:jqLite(trim(content)),compileNode=$template[0],1!=$template.length||1!==compileNode.nodeType)throw $compileMinErr("tplrt","Template for directive '{0}' must have exactly one root element. {1}",origAsyncDirective.name,templateUrl);tempTemplateAttrs={$attr:{}},replaceWith($rootElement,$compileNode,compileNode);var templateDirectives=collectDirectives(compileNode,[],tempTemplateAttrs);isObject(origAsyncDirective.scope)&&markDirectivesAsIsolate(templateDirectives),directives=templateDirectives.concat(directives),mergeTemplateAttributes(tAttrs,tempTemplateAttrs)}else compileNode=beforeTemplateCompileNode,$compileNode.html(content);for(directives.unshift(derivedSyncDirective),afterTemplateNodeLinkFn=applyDirectivesToNode(directives,compileNode,tAttrs,childTranscludeFn,$compileNode,origAsyncDirective,preLinkFns,postLinkFns,previousCompileContext),forEach($rootElement,(function(node,i){node==compileNode&&($rootElement[i]=$compileNode[0])})),afterTemplateChildLinkFn=compileNodes($compileNode[0].childNodes,childTranscludeFn);linkQueue.length;){var scope=linkQueue.shift(),beforeTemplateLinkNode=linkQueue.shift(),linkRootElement=linkQueue.shift(),boundTranscludeFn=linkQueue.shift(),linkNode=$compileNode[0];if(beforeTemplateLinkNode!==beforeTemplateCompileNode){var oldClasses=beforeTemplateLinkNode.className;previousCompileContext.hasElementTranscludeDirective&&origAsyncDirective.replace||(linkNode=jqLiteClone(compileNode)),replaceWith(linkRootElement,jqLite(beforeTemplateLinkNode),linkNode),safeAddClass(jqLite(linkNode),oldClasses)}childBoundTranscludeFn=afterTemplateNodeLinkFn.transcludeOnThisElement?createBoundTranscludeFn(scope,afterTemplateNodeLinkFn.transclude,boundTranscludeFn):boundTranscludeFn,afterTemplateNodeLinkFn(afterTemplateChildLinkFn,scope,linkNode,$rootElement,childBoundTranscludeFn)}linkQueue=null})).error((function(response,code,headers,config){throw $compileMinErr("tpload","Failed to load template: {0}",config.url)})),function(ignoreChildLinkFn,scope,node,rootElement,boundTranscludeFn){var childBoundTranscludeFn=boundTranscludeFn;linkQueue?(linkQueue.push(scope),linkQueue.push(node),linkQueue.push(rootElement),linkQueue.push(childBoundTranscludeFn)):(afterTemplateNodeLinkFn.transcludeOnThisElement&&(childBoundTranscludeFn=createBoundTranscludeFn(scope,afterTemplateNodeLinkFn.transclude,boundTranscludeFn)),afterTemplateNodeLinkFn(afterTemplateChildLinkFn,scope,node,rootElement,childBoundTranscludeFn))}}function byPriority(a,b){var diff=b.priority-a.priority;return 0!==diff?diff:a.name!==b.name?a.name0?" ":"")+token}return values}function $ControllerProvider(){var controllers={},CNTRL_REG=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(name,constructor){assertNotHasOwnProperty(name,"controller"),isObject(name)?extend(controllers,name):controllers[name]=constructor},this.$get=["$injector","$window",function($injector,$window){return function(expression,locals){var instance,match,constructor,identifier;if(isString(expression)&&(constructor=(match=expression.match(CNTRL_REG))[1],identifier=match[3],assertArgFn(expression=controllers.hasOwnProperty(constructor)?controllers[constructor]:getter(locals.$scope,constructor,!0)||getter($window,constructor,!0),constructor,!0)),instance=$injector.instantiate(expression,locals),identifier){if(!locals||"object"!=typeof locals.$scope)throw minErr("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",constructor||expression.name,identifier);locals.$scope[identifier]=instance}return instance}}]}function $DocumentProvider(){this.$get=["$window",function(window){return jqLite(window.document)}]}function $ExceptionHandlerProvider(){this.$get=["$log",function($log){return function(exception,cause){$log.error.apply($log,arguments)}}]}function parseHeaders(headers){var key,val,i,parsed={};return headers?(forEach(headers.split("\n"),(function(line){i=line.indexOf(":"),key=lowercase(trim(line.substr(0,i))),val=trim(line.substr(i+1)),key&&(parsed[key]=parsed[key]?parsed[key]+", "+val:val)})),parsed):parsed}function headersGetter(headers){var headersObj=isObject(headers)?headers:undefined;return function(name){return headersObj||(headersObj=parseHeaders(headers)),name?headersObj[lowercase(name)]||null:headersObj}}function transformData(data,headers,fns){return isFunction(fns)?fns(data,headers):(forEach(fns,(function(fn){data=fn(data,headers)})),data)}function isSuccess(status){return 200<=status&&status<300}function $HttpProvider(){var JSON_START=/^\s*(\[|\{[^\{])/,JSON_END=/[\}\]]\s*$/,PROTECTION_PREFIX=/^\)\]\}',?\n/,CONTENT_TYPE_APPLICATION_JSON={"Content-Type":"application/json;charset=utf-8"},defaults=this.defaults={transformResponse:[function(data){return isString(data)&&(data=data.replace(PROTECTION_PREFIX,""),JSON_START.test(data)&&JSON_END.test(data)&&(data=fromJson(data))),data}],transformRequest:[function(d){return isObject(d)&&(obj=d,"[object File]"!==toString.call(obj))&&!function(obj){return"[object Blob]"===toString.call(obj)}(d)?toJson(d):d;var obj}],headers:{common:{Accept:"application/json, text/plain, */*"},post:shallowCopy(CONTENT_TYPE_APPLICATION_JSON),put:shallowCopy(CONTENT_TYPE_APPLICATION_JSON),patch:shallowCopy(CONTENT_TYPE_APPLICATION_JSON)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},interceptorFactories=this.interceptors=[],responseInterceptorFactories=this.responseInterceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function($httpBackend,$browser,$cacheFactory,$rootScope,$q,$injector){var defaultCache=$cacheFactory("$http"),reversedInterceptors=[];function $http(requestConfig){var config={method:"get",transformRequest:defaults.transformRequest,transformResponse:defaults.transformResponse},headers=function(config){var defHeaderName,lowercaseDefHeaderName,reqHeaderName,defHeaders=defaults.headers,reqHeaders=extend({},config.headers);defHeaders=extend({},defHeaders.common,defHeaders[lowercase(config.method)]);defaultHeadersIteration:for(defHeaderName in defHeaders){for(reqHeaderName in lowercaseDefHeaderName=lowercase(defHeaderName),reqHeaders)if(lowercase(reqHeaderName)===lowercaseDefHeaderName)continue defaultHeadersIteration;reqHeaders[defHeaderName]=defHeaders[defHeaderName]}return function(headers){var headerContent;forEach(headers,(function(headerFn,header){isFunction(headerFn)&&(null!=(headerContent=headerFn())?headers[header]=headerContent:delete headers[header])}))}(reqHeaders),reqHeaders}(requestConfig);extend(config,requestConfig),config.headers=headers,config.method=uppercase(config.method);var chain=[function(config){headers=config.headers;var reqData=transformData(config.data,headersGetter(headers),config.transformRequest);return isUndefined(reqData)&&forEach(headers,(function(value,header){"content-type"===lowercase(header)&&delete headers[header]})),isUndefined(config.withCredentials)&&!isUndefined(defaults.withCredentials)&&(config.withCredentials=defaults.withCredentials),function(config,reqData,reqHeaders){var cache,cachedResp,deferred=$q.defer(),promise=deferred.promise,url=function(url,params){if(!params)return url;var parts=[];(function(obj,iterator,context){for(var keys=sortedKeys(obj),i=0;i0&&(url+=(-1==url.indexOf("?")?"?":"&")+parts.join("&"));return url}(config.url,config.params);$http.pendingRequests.push(config),promise.then(removePendingReq,removePendingReq),!config.cache&&!defaults.cache||!1===config.cache||"GET"!==config.method&&"JSONP"!==config.method||(cache=isObject(config.cache)?config.cache:isObject(defaults.cache)?defaults.cache:defaultCache);if(cache)if(isDefined(cachedResp=cache.get(url))){if(isPromiseLike(cachedResp))return cachedResp.then(removePendingReq,removePendingReq),cachedResp;isArray(cachedResp)?resolvePromise(cachedResp[1],cachedResp[0],shallowCopy(cachedResp[2]),cachedResp[3]):resolvePromise(cachedResp,200,{},"OK")}else cache.put(url,promise);if(isUndefined(cachedResp)){var xsrfValue=urlIsSameOrigin(config.url)?$browser.cookies()[config.xsrfCookieName||defaults.xsrfCookieName]:undefined;xsrfValue&&(reqHeaders[config.xsrfHeaderName||defaults.xsrfHeaderName]=xsrfValue),$httpBackend(config.method,url,reqData,done,reqHeaders,config.timeout,config.withCredentials,config.responseType)}return promise;function done(status,response,headersString,statusText){cache&&(isSuccess(status)?cache.put(url,[status,response,parseHeaders(headersString),statusText]):cache.remove(url)),resolvePromise(response,status,headersString,statusText),$rootScope.$$phase||$rootScope.$apply()}function resolvePromise(response,status,headers,statusText){(isSuccess(status=Math.max(status,0))?deferred.resolve:deferred.reject)({data:response,status:status,headers:headersGetter(headers),config:config,statusText:statusText})}function removePendingReq(){var idx=indexOf($http.pendingRequests,config);-1!==idx&&$http.pendingRequests.splice(idx,1)}}(config,reqData,headers).then(transformResponse,transformResponse)},undefined],promise=$q.when(config);for(forEach(reversedInterceptors,(function(interceptor){(interceptor.request||interceptor.requestError)&&chain.unshift(interceptor.request,interceptor.requestError),(interceptor.response||interceptor.responseError)&&chain.push(interceptor.response,interceptor.responseError)}));chain.length;){var thenFn=chain.shift(),rejectFn=chain.shift();promise=promise.then(thenFn,rejectFn)}return promise.success=function(fn){return promise.then((function(response){fn(response.data,response.status,response.headers,config)})),promise},promise.error=function(fn){return promise.then(null,(function(response){fn(response.data,response.status,response.headers,config)})),promise},promise;function transformResponse(response){var resp=extend({},response,{data:transformData(response.data,response.headers,config.transformResponse)});return isSuccess(response.status)?resp:$q.reject(resp)}}return forEach(interceptorFactories,(function(interceptorFactory){reversedInterceptors.unshift(isString(interceptorFactory)?$injector.get(interceptorFactory):$injector.invoke(interceptorFactory))})),forEach(responseInterceptorFactories,(function(interceptorFactory,index){var responseFn=isString(interceptorFactory)?$injector.get(interceptorFactory):$injector.invoke(interceptorFactory);reversedInterceptors.splice(index,0,{response:function(response){return responseFn($q.when(response))},responseError:function(response){return responseFn($q.reject(response))}})})),$http.pendingRequests=[],function(names){forEach(arguments,(function(name){$http[name]=function(url,config){return $http(extend(config||{},{method:name,url:url}))}}))}("get","delete","head","jsonp"),function(name){forEach(arguments,(function(name){$http[name]=function(url,data,config){return $http(extend(config||{},{method:name,url:url,data:data}))}}))}("post","put","patch"),$http.defaults=defaults,$http}]}function createXhr(method){if(msie<=8&&(!method.match(/^(get|post|head|put|delete|options)$/i)||!window.XMLHttpRequest))return new window.ActiveXObject("Microsoft.XMLHTTP");if(window.XMLHttpRequest)return new window.XMLHttpRequest;throw minErr("$httpBackend")("noxhr","This browser does not support XMLHttpRequest.")}function $HttpBackendProvider(){this.$get=["$browser","$window","$document",function($browser,$window,$document){return function($browser,createXhr,$browserDefer,callbacks,rawDocument){var ABORTED=-1;return function(method,url,post,callback,headers,timeout,withCredentials,responseType){var status;if($browser.$$incOutstandingRequestCount(),url=url||$browser.url(),"jsonp"==lowercase(method)){var callbackId="_"+(callbacks.counter++).toString(36);callbacks[callbackId]=function(data){callbacks[callbackId].data=data,callbacks[callbackId].called=!0};var jsonpDone=jsonpReq(url.replace("JSON_CALLBACK","angular.callbacks."+callbackId),callbackId,(function(status,text){completeRequest(callback,status,callbacks[callbackId].data,"",text),callbacks[callbackId]=noop}))}else{var xhr=createXhr(method);if(xhr.open(method,url,!0),forEach(headers,(function(value,key){isDefined(value)&&xhr.setRequestHeader(key,value)})),xhr.onreadystatechange=function(){if(xhr&&4==xhr.readyState){var responseHeaders=null,response=null,statusText="";status!==ABORTED&&(responseHeaders=xhr.getAllResponseHeaders(),response="response"in xhr?xhr.response:xhr.responseText),status===ABORTED&&msie<10||(statusText=xhr.statusText),completeRequest(callback,status||xhr.status,response,responseHeaders,statusText)}},withCredentials&&(xhr.withCredentials=!0),responseType)try{xhr.responseType=responseType}catch(e){if("json"!==responseType)throw e}xhr.send(post||null)}if(timeout>0)var timeoutId=$browserDefer(timeoutRequest,timeout);else isPromiseLike(timeout)&&timeout.then(timeoutRequest);function timeoutRequest(){status=ABORTED,jsonpDone&&jsonpDone(),xhr&&xhr.abort()}function completeRequest(callback,status,response,headersString,statusText){timeoutId&&$browserDefer.cancel(timeoutId),jsonpDone=xhr=null,0===status&&(status=response?200:"file"==urlResolve(url).protocol?404:0),callback(status=1223===status?204:status,response,headersString,statusText=statusText||""),$browser.$$completeOutstandingRequest(noop)}};function jsonpReq(url,callbackId,done){var script=rawDocument.createElement("script"),callback=null;return script.type="text/javascript",script.src=url,script.async=!0,callback=function(event){removeEventListenerFn(script,"load",callback),removeEventListenerFn(script,"error",callback),rawDocument.body.removeChild(script),script=null;var status=-1,text="unknown";event&&("load"!==event.type||callbacks[callbackId].called||(event={type:"error"}),text=event.type,status="error"===event.type?404:200),done&&done(status,text)},addEventListenerFn(script,"load",callback),addEventListenerFn(script,"error",callback),msie<=8&&(script.onreadystatechange=function(){isString(script.readyState)&&/loaded|complete/.test(script.readyState)&&(script.onreadystatechange=null,callback({type:"load"}))}),rawDocument.body.appendChild(script),callback}}($browser,createXhr,$browser.defer,$window.angular.callbacks,$document[0])}]}var $interpolateMinErr=minErr("$interpolate");function $InterpolateProvider(){var startSymbol="{{",endSymbol="}}";this.startSymbol=function(value){return value?(startSymbol=value,this):startSymbol},this.endSymbol=function(value){return value?(endSymbol=value,this):endSymbol},this.$get=["$parse","$exceptionHandler","$sce",function($parse,$exceptionHandler,$sce){var startSymbolLength=startSymbol.length,endSymbolLength=endSymbol.length;function $interpolate(text,mustHaveExpression,trustedContext){for(var startIndex,endIndex,fn,exp,index=0,parts=[],length=text.length,hasInterpolation=!1,concat=[];index1)throw $interpolateMinErr("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",text);if(!mustHaveExpression||hasInterpolation)return concat.length=length,(fn=function(context){try{for(var part,i=0,ii=length;i0&&iteration>=count&&(deferred.resolve(iteration),clearInterval(promise.$$intervalId),delete intervals[promise.$$intervalId]),skipApply||$rootScope.$apply()}),delay),intervals[promise.$$intervalId]=deferred,promise}return interval.cancel=function(promise){return!(!promise||!(promise.$$intervalId in intervals))&&(intervals[promise.$$intervalId].reject("canceled"),$window.clearInterval(promise.$$intervalId),delete intervals[promise.$$intervalId],!0)},interval}]}function $LocaleProvider(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a",short:"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(num){return 1===num?"one":"other"}}}}var PATH_MATCH=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,DEFAULT_PORTS={http:80,https:443,ftp:21},$locationMinErr=minErr("$location");function encodePath(path){for(var segments=path.split("/"),i=segments.length;i--;)segments[i]=encodeUriSegment(segments[i]);return segments.join("/")}function parseAbsoluteUrl(absoluteUrl,locationObj,appBase){var parsedUrl=urlResolve(absoluteUrl,appBase);locationObj.$$protocol=parsedUrl.protocol,locationObj.$$host=parsedUrl.hostname,locationObj.$$port=int(parsedUrl.port)||DEFAULT_PORTS[parsedUrl.protocol]||null}function parseAppUrl(relativeUrl,locationObj,appBase){var prefixed="/"!==relativeUrl.charAt(0);prefixed&&(relativeUrl="/"+relativeUrl);var match=urlResolve(relativeUrl,appBase);locationObj.$$path=decodeURIComponent(prefixed&&"/"===match.pathname.charAt(0)?match.pathname.substring(1):match.pathname),locationObj.$$search=parseKeyValue(match.search),locationObj.$$hash=decodeURIComponent(match.hash),locationObj.$$path&&"/"!=locationObj.$$path.charAt(0)&&(locationObj.$$path="/"+locationObj.$$path)}function beginsWith(begin,whole){if(0===whole.indexOf(begin))return whole.substr(begin.length)}function stripHash(url){var index=url.indexOf("#");return-1==index?url:url.substr(0,index)}function trimEmptyHash(url){return url.replace(/(#.+)|#$/,"$1")}function stripFile(url){return url.substr(0,stripHash(url).lastIndexOf("/")+1)}function LocationHtml5Url(appBase,basePrefix){this.$$html5=!0,basePrefix=basePrefix||"";var appBaseNoFile=stripFile(appBase);parseAbsoluteUrl(appBase,this,appBase),this.$$parse=function(url){var pathUrl=beginsWith(appBaseNoFile,url);if(!isString(pathUrl))throw $locationMinErr("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',url,appBaseNoFile);parseAppUrl(pathUrl,this,appBase),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var search=toKeyValue(this.$$search),hash=this.$$hash?"#"+encodeUriSegment(this.$$hash):"";this.$$url=encodePath(this.$$path)+(search?"?"+search:"")+hash,this.$$absUrl=appBaseNoFile+this.$$url.substr(1)},this.$$parseLinkUrl=function(url,relHref){var appUrl,prevAppUrl,rewrittenUrl;return undefined!==(appUrl=beginsWith(appBase,url))?(prevAppUrl=appUrl,rewrittenUrl=undefined!==(appUrl=beginsWith(basePrefix,appUrl))?appBaseNoFile+(beginsWith("/",appUrl)||appUrl):appBase+prevAppUrl):undefined!==(appUrl=beginsWith(appBaseNoFile,url))?rewrittenUrl=appBaseNoFile+appUrl:appBaseNoFile==url+"/"&&(rewrittenUrl=appBaseNoFile),rewrittenUrl&&this.$$parse(rewrittenUrl),!!rewrittenUrl}}function LocationHashbangUrl(appBase,hashPrefix){var appBaseNoFile=stripFile(appBase);parseAbsoluteUrl(appBase,this,appBase),this.$$parse=function(url){var withoutBaseUrl=beginsWith(appBase,url)||beginsWith(appBaseNoFile,url),withoutHashUrl="#"==withoutBaseUrl.charAt(0)?beginsWith(hashPrefix,withoutBaseUrl):this.$$html5?withoutBaseUrl:"";if(!isString(withoutHashUrl))throw $locationMinErr("ihshprfx",'Invalid url "{0}", missing hash prefix "{1}".',url,hashPrefix);parseAppUrl(withoutHashUrl,this,appBase),this.$$path=function(path,url,base){var firstPathSegmentMatch,windowsFilePathExp=/^\/[A-Z]:(\/.*)/;0===url.indexOf(base)&&(url=url.replace(base,""));if(windowsFilePathExp.exec(url))return path;return(firstPathSegmentMatch=windowsFilePathExp.exec(path))?firstPathSegmentMatch[1]:path}(this.$$path,withoutHashUrl,appBase),this.$$compose()},this.$$compose=function(){var search=toKeyValue(this.$$search),hash=this.$$hash?"#"+encodeUriSegment(this.$$hash):"";this.$$url=encodePath(this.$$path)+(search?"?"+search:"")+hash,this.$$absUrl=appBase+(this.$$url?hashPrefix+this.$$url:"")},this.$$parseLinkUrl=function(url,relHref){return stripHash(appBase)==stripHash(url)&&(this.$$parse(url),!0)}}function LocationHashbangInHtml5Url(appBase,hashPrefix){this.$$html5=!0,LocationHashbangUrl.apply(this,arguments);var appBaseNoFile=stripFile(appBase);this.$$parseLinkUrl=function(url,relHref){var rewrittenUrl,appUrl;return appBase==stripHash(url)?rewrittenUrl=url:(appUrl=beginsWith(appBaseNoFile,url))?rewrittenUrl=appBase+hashPrefix+appUrl:appBaseNoFile===url+"/"&&(rewrittenUrl=appBaseNoFile),rewrittenUrl&&this.$$parse(rewrittenUrl),!!rewrittenUrl},this.$$compose=function(){var search=toKeyValue(this.$$search),hash=this.$$hash?"#"+encodeUriSegment(this.$$hash):"";this.$$url=encodePath(this.$$path)+(search?"?"+search:"")+hash,this.$$absUrl=appBase+hashPrefix+this.$$url}}function locationGetter(property){return function(){return this[property]}}function locationGetterSetter(property,preprocess){return function(value){return isUndefined(value)?this[property]:(this[property]=preprocess(value),this.$$compose(),this)}}function $LocationProvider(){var hashPrefix="",html5Mode=!1;this.hashPrefix=function(prefix){return isDefined(prefix)?(hashPrefix=prefix,this):hashPrefix},this.html5Mode=function(mode){return isDefined(mode)?(html5Mode=mode,this):html5Mode},this.$get=["$rootScope","$browser","$sniffer","$rootElement",function($rootScope,$browser,$sniffer,$rootElement){var $location,LocationMode,appBase,url,baseHref=$browser.baseHref(),initialUrl=$browser.url();html5Mode?(appBase=(url=initialUrl).substring(0,url.indexOf("/",url.indexOf("//")+2))+(baseHref||"/"),LocationMode=$sniffer.history?LocationHtml5Url:LocationHashbangInHtml5Url):(appBase=stripHash(initialUrl),LocationMode=LocationHashbangUrl),($location=new LocationMode(appBase,"#"+hashPrefix)).$$parseLinkUrl(initialUrl,initialUrl);var IGNORE_URI_REGEXP=/^\s*(javascript|mailto):/i;$rootElement.on("click",(function(event){if(!event.ctrlKey&&!event.metaKey&&2!=event.which){for(var elm=jqLite(event.target);"a"!==lowercase(elm[0].nodeName);)if(elm[0]===$rootElement[0]||!(elm=elm.parent())[0])return;var absHref=elm.prop("href"),relHref=elm.attr("href")||elm.attr("xlink:href");isObject(absHref)&&"[object SVGAnimatedString]"===absHref.toString()&&(absHref=urlResolve(absHref.animVal).href),IGNORE_URI_REGEXP.test(absHref)||!absHref||elm.attr("target")||event.isDefaultPrevented()||$location.$$parseLinkUrl(absHref,relHref)&&(event.preventDefault(),$location.absUrl()!=$browser.url()&&($rootScope.$apply(),window.angular["ff-684208-preventDefault"]=!0))}})),$location.absUrl()!=initialUrl&&$browser.url($location.absUrl(),!0),$browser.onUrlChange((function(newUrl){$location.absUrl()!=newUrl&&($rootScope.$evalAsync((function(){var oldUrl=$location.absUrl();$location.$$parse(newUrl),$rootScope.$broadcast("$locationChangeStart",newUrl,oldUrl).defaultPrevented?($location.$$parse(oldUrl),$browser.url(oldUrl)):afterLocationChange(oldUrl)})),$rootScope.$$phase||$rootScope.$digest())}));var changeCounter=0;return $rootScope.$watch((function(){var oldUrl=trimEmptyHash($browser.url()),newUrl=trimEmptyHash($location.absUrl()),currentReplace=$location.$$replace;return changeCounter&&oldUrl==newUrl||(changeCounter++,$rootScope.$evalAsync((function(){$rootScope.$broadcast("$locationChangeStart",$location.absUrl(),oldUrl).defaultPrevented?$location.$$parse(oldUrl):($browser.url($location.absUrl(),currentReplace),afterLocationChange(oldUrl))}))),$location.$$replace=!1,changeCounter})),$location;function afterLocationChange(oldUrl){$rootScope.$broadcast("$locationChangeSuccess",$location.absUrl(),oldUrl)}}]}function $LogProvider(){var debug=!0,self=this;this.debugEnabled=function(flag){return isDefined(flag)?(debug=flag,this):debug},this.$get=["$window",function($window){return{log:consoleLog("log"),info:consoleLog("info"),warn:consoleLog("warn"),error:consoleLog("error"),debug:(fn=consoleLog("debug"),function(){debug&&fn.apply(self,arguments)})};var fn;function formatError(arg){return arg instanceof Error&&(arg.stack?arg=arg.message&&-1===arg.stack.indexOf(arg.message)?"Error: "+arg.message+"\n"+arg.stack:arg.stack:arg.sourceURL&&(arg=arg.message+"\n"+arg.sourceURL+":"+arg.line)),arg}function consoleLog(type){var console=$window.console||{},logFn=console[type]||console.log||noop,hasApply=!1;try{hasApply=!!logFn.apply}catch(e){}return hasApply?function(){var args=[];return forEach(arguments,(function(arg){args.push(formatError(arg))})),logFn.apply(console,args)}:function(arg1,arg2){logFn(arg1,null==arg2?"":arg2)}}}]}LocationHashbangInHtml5Url.prototype=LocationHashbangUrl.prototype=LocationHtml5Url.prototype={$$html5:!1,$$replace:!1,absUrl:locationGetter("$$absUrl"),url:function(url){if(isUndefined(url))return this.$$url;var match=PATH_MATCH.exec(url);return match[1]&&this.path(decodeURIComponent(match[1])),(match[2]||match[1])&&this.search(match[3]||""),this.hash(match[5]||""),this},protocol:locationGetter("$$protocol"),host:locationGetter("$$host"),port:locationGetter("$$port"),path:locationGetterSetter("$$path",(function(path){return"/"==(path=null!==path?path.toString():"").charAt(0)?path:"/"+path})),search:function(search,paramValue){switch(arguments.length){case 0:return this.$$search;case 1:if(isString(search)||isNumber(search))search=search.toString(),this.$$search=parseKeyValue(search);else{if(!isObject(search))throw $locationMinErr("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");forEach(search,(function(value,key){null==value&&delete search[key]})),this.$$search=search}break;default:isUndefined(paramValue)||null===paramValue?delete this.$$search[search]:this.$$search[search]=paramValue}return this.$$compose(),this},hash:locationGetterSetter("$$hash",(function(hash){return null!==hash?hash.toString():""})),replace:function(){return this.$$replace=!0,this}};var promiseWarning,$parseMinErr=minErr("$parse"),promiseWarningCache={};function ensureSafeMemberName(name,fullExpression){if("__defineGetter__"===name||"__defineSetter__"===name||"__lookupGetter__"===name||"__lookupSetter__"===name||"__proto__"===name)throw $parseMinErr("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",fullExpression);return name}function getStringValue(name,fullExpression){if(!isString(name+=""))throw $parseMinErr("iseccst","Cannot convert object to primitive value! Expression: {0}",fullExpression);return name}function ensureSafeObject(obj,fullExpression){if(obj){if(obj.constructor===obj)throw $parseMinErr("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",fullExpression);if(obj.document&&obj.location&&obj.alert&&obj.setInterval)throw $parseMinErr("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",fullExpression);if(obj.children&&(obj.nodeName||obj.prop&&obj.attr&&obj.find))throw $parseMinErr("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",fullExpression);if(obj===Object)throw $parseMinErr("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",fullExpression)}return obj}var CALL=Function.prototype.call,APPLY=Function.prototype.apply,BIND=Function.prototype.bind;var OPERATORS={null:function(){return null},true:function(){return!0},false:function(){return!1},undefined:noop,"+":function(self,locals,a,b){return a=a(self,locals),b=b(self,locals),isDefined(a)?isDefined(b)?a+b:a:isDefined(b)?b:undefined},"-":function(self,locals,a,b){return a=a(self,locals),b=b(self,locals),(isDefined(a)?a:0)-(isDefined(b)?b:0)},"*":function(self,locals,a,b){return a(self,locals)*b(self,locals)},"/":function(self,locals,a,b){return a(self,locals)/b(self,locals)},"%":function(self,locals,a,b){return a(self,locals)%b(self,locals)},"^":function(self,locals,a,b){return a(self,locals)^b(self,locals)},"=":noop,"===":function(self,locals,a,b){return a(self,locals)===b(self,locals)},"!==":function(self,locals,a,b){return a(self,locals)!==b(self,locals)},"==":function(self,locals,a,b){return a(self,locals)==b(self,locals)},"!=":function(self,locals,a,b){return a(self,locals)!=b(self,locals)},"<":function(self,locals,a,b){return a(self,locals)":function(self,locals,a,b){return a(self,locals)>b(self,locals)},"<=":function(self,locals,a,b){return a(self,locals)<=b(self,locals)},">=":function(self,locals,a,b){return a(self,locals)>=b(self,locals)},"&&":function(self,locals,a,b){return a(self,locals)&&b(self,locals)},"||":function(self,locals,a,b){return a(self,locals)||b(self,locals)},"&":function(self,locals,a,b){return a(self,locals)&b(self,locals)},"|":function(self,locals,a,b){return b(self,locals)(self,locals,a(self,locals))},"!":function(self,locals,a){return!a(self,locals)}},ESCAPE={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Lexer=function(options){this.options=options};Lexer.prototype={constructor:Lexer,lex:function(text){for(this.text=text,this.index=0,this.ch=undefined,this.lastCh=":",this.tokens=[];this.index1;i++){var propertyObj=ensureSafeObject(obj[key=ensureSafeMemberName(element.shift(),fullExp)],fullExp);propertyObj||(propertyObj={},obj[key]=propertyObj),(obj=propertyObj).then&&options.unwrapPromises&&(promiseWarning(fullExp),"$$v"in obj||function(promise){promise.then((function(val){promise.$$v=val}))}(obj),undefined===obj.$$v&&(obj.$$v={}),obj=obj.$$v)}return ensureSafeObject(obj[key=ensureSafeMemberName(element.shift(),fullExp)],fullExp),obj[key]=setValue,setValue}Parser.ZERO=extend((function(){return 0}),{constant:!0}),Parser.prototype={constructor:Parser,parse:function(text){this.text=text,this.tokens=this.lexer.lex(text);var value=this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),value.literal=!!value.literal,value.constant=!!value.constant,value},primary:function(){var primary,next,context;if(this.expect("("))primary=this.filterChain(),this.consume(")");else if(this.expect("["))primary=this.arrayDeclaration();else if(this.expect("{"))primary=this.object();else{var token=this.expect();(primary=token.fn)||this.throwError("not a primary expression",token),primary.literal=!!token.literal,primary.constant=!!token.constant}for(;next=this.expect("(","[",".");)"("===next.text?(primary=this.functionCall(primary,context),context=null):"["===next.text?(context=primary,primary=this.objectIndex(primary)):"."===next.text?(context=primary,primary=this.fieldAccess(primary)):this.throwError("IMPOSSIBLE");return primary},throwError:function(msg,token){throw $parseMinErr("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",token.text,msg,token.index+1,this.text,this.text.substring(token.index))},peekToken:function(){if(0===this.tokens.length)throw $parseMinErr("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e1,e2,e3,e4){if(this.tokens.length>0){var token=this.tokens[0],t=token.text;if(t===e1||t===e2||t===e3||t===e4||!e1&&!e2&&!e3&&!e4)return token}return!1},expect:function(e1,e2,e3,e4){var token=this.peek(e1,e2,e3,e4);return!!token&&(this.tokens.shift(),token)},consume:function(e1){this.expect(e1)||this.throwError("is unexpected, expecting ["+e1+"]",this.peek())},unaryFn:function(fn,right){return extend((function(self,locals){return fn(self,locals,right)}),{constant:right.constant})},ternaryFn:function(left,middle,right){return extend((function(self,locals){return left(self,locals)?middle(self,locals):right(self,locals)}),{constant:left.constant&&middle.constant&&right.constant})},binaryFn:function(left,fn,right){return extend((function(self,locals){return fn(self,locals,left,right)}),{constant:left.constant&&right.constant})},statements:function(){for(var statements=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&statements.push(this.filterChain()),!this.expect(";"))return 1===statements.length?statements[0]:function(self,locals){for(var value,i=0;i","<=",">="))&&(left=this.binaryFn(left,token.fn,this.relational())),left},additive:function(){for(var token,left=this.multiplicative();token=this.expect("+","-");)left=this.binaryFn(left,token.fn,this.multiplicative());return left},multiplicative:function(){for(var token,left=this.unary();token=this.expect("*","/","%");)left=this.binaryFn(left,token.fn,this.unary());return left},unary:function(){var token;return this.expect("+")?this.primary():(token=this.expect("-"))?this.binaryFn(Parser.ZERO,token.fn,this.unary()):(token=this.expect("!"))?this.unaryFn(token.fn,this.unary()):this.primary()},fieldAccess:function(object){var parser=this,field=this.expect().text,getter=getterFn(field,this.options,this.text);return extend((function(scope,locals,self){return getter(self||object(scope,locals))}),{assign:function(scope,value,locals){var o=object(scope,locals);return o||object.assign(scope,o={}),setter(o,field,value,parser.text,parser.options)}})},objectIndex:function(obj){var parser=this,indexFn=this.expression();return this.consume("]"),extend((function(self,locals){var v,p,o=obj(self,locals),i=getStringValue(indexFn(self,locals),parser.text);if(ensureSafeMemberName(i,parser.text),o)return(v=ensureSafeObject(o[i],parser.text))&&v.then&&parser.options.unwrapPromises&&(p=v,"$$v"in v||(p.$$v=undefined,p.then((function(val){p.$$v=val}))),v=v.$$v),v}),{assign:function(self,value,locals){var key=ensureSafeMemberName(getStringValue(indexFn(self,locals),parser.text),parser.text),o=ensureSafeObject(obj(self,locals),parser.text);return o||obj.assign(self,o={}),o[key]=value}})},functionCall:function(fn,contextGetter){var argsFn=[];if(")"!==this.peekToken().text)do{argsFn.push(this.expression())}while(this.expect(","));this.consume(")");var parser=this;return function(scope,locals){for(var args=[],context=contextGetter?contextGetter(scope,locals):scope,i=0;i1,changeDetected=0,objGetter=$parse(obj),internalArray=[],internalObject={},initRun=!0,oldLength=0;return this.$watch((function(){var newLength,key;if(isObject(newValue=objGetter(self)))if(isArrayLike(newValue)){oldValue!==internalArray&&(oldLength=(oldValue=internalArray).length=0,changeDetected++),newLength=newValue.length,oldLength!==newLength&&(changeDetected++,oldValue.length=oldLength=newLength);for(var i=0;inewLength)for(key in changeDetected++,oldValue)oldValue.hasOwnProperty(key)&&!newValue.hasOwnProperty(key)&&(oldLength--,delete oldValue[key])}else oldValue!==newValue&&(oldValue=newValue,changeDetected++);return changeDetected}),(function(){if(initRun?(initRun=!1,listener(newValue,newValue,self)):listener(newValue,veryOldValue,self),trackVeryOldValue)if(isObject(newValue))if(isArrayLike(newValue)){veryOldValue=new Array(newValue.length);for(var i=0;i=8)||""===(normalizedVal=urlResolve(uri).href)||normalizedVal.match(regex)?uri:"unsafe:"+normalizedVal}}}var $sceMinErr=minErr("$sce"),SCE_CONTEXTS={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"};function adjustMatchers(matchers){var adjustedMatchers=[];return isDefined(matchers)&&forEach(matchers,(function(matcher){adjustedMatchers.push(function(matcher){if("self"===matcher)return matcher;if(isString(matcher)){if(matcher.indexOf("***")>-1)throw $sceMinErr("iwcard","Illegal sequence *** in string matcher. String: {0}",matcher);return matcher=(s=matcher,s.replace(/([-()\[\]{}+?*.$\^|,:# to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var sce=shallowCopy(SCE_CONTEXTS);sce.isEnabled=function(){return enabled},sce.trustAs=$sceDelegate.trustAs,sce.getTrusted=$sceDelegate.getTrusted,sce.valueOf=$sceDelegate.valueOf,enabled||(sce.trustAs=sce.getTrusted=function(type,value){return value},sce.valueOf=identity),sce.parseAs=function(type,expr){var parsed=$parse(expr);return parsed.literal&&parsed.constant?parsed:function(self,locals){return sce.getTrusted(type,parsed(self,locals))}};var parse=sce.parseAs,getTrusted=sce.getTrusted,trustAs=sce.trustAs;return forEach(SCE_CONTEXTS,(function(enumValue,name){var lName=lowercase(name);sce[camelCase("parse_as_"+lName)]=function(expr){return parse(enumValue,expr)},sce[camelCase("get_trusted_"+lName)]=function(value){return getTrusted(enumValue,value)},sce[camelCase("trust_as_"+lName)]=function(value){return trustAs(enumValue,value)}})),sce}]}function $SnifferProvider(){this.$get=["$window","$document",function($window,$document){var vendorPrefix,match,eventSupport={},android=int((/android (\d+)/.exec(lowercase(($window.navigator||{}).userAgent))||[])[1]),boxee=/Boxee/i.test(($window.navigator||{}).userAgent),document=$document[0]||{},documentMode=document.documentMode,vendorRegex=/^(Moz|webkit|O|ms)(?=[A-Z])/,bodyStyle=document.body&&document.body.style,transitions=!1,animations=!1;if(bodyStyle){for(var prop in bodyStyle)if(match=vendorRegex.exec(prop)){vendorPrefix=(vendorPrefix=match[0]).substr(0,1).toUpperCase()+vendorPrefix.substr(1);break}vendorPrefix||(vendorPrefix="WebkitOpacity"in bodyStyle&&"webkit"),transitions=!(!("transition"in bodyStyle)&&!(vendorPrefix+"Transition"in bodyStyle)),animations=!(!("animation"in bodyStyle)&&!(vendorPrefix+"Animation"in bodyStyle)),!android||transitions&&animations||(transitions=isString(document.body.style.webkitTransition),animations=isString(document.body.style.webkitAnimation))}return{history:!(!$window.history||!$window.history.pushState||android<4||boxee),hashchange:"onhashchange"in $window&&(!documentMode||documentMode>7),hasEvent:function(event){if("input"==event&&9==msie)return!1;if(isUndefined(eventSupport[event])){var divElm=document.createElement("div");eventSupport[event]="on"+event in divElm}return eventSupport[event]},csp:csp(),vendorPrefix:vendorPrefix,transitions:transitions,animations:animations,android:android,msie:msie,msieDocumentMode:documentMode}}]}function $TimeoutProvider(){this.$get=["$rootScope","$browser","$q","$exceptionHandler",function($rootScope,$browser,$q,$exceptionHandler){var deferreds={};function timeout(fn,delay,invokeApply){var timeoutId,deferred=$q.defer(),promise=deferred.promise,skipApply=isDefined(invokeApply)&&!invokeApply;return timeoutId=$browser.defer((function(){try{deferred.resolve(fn())}catch(e){deferred.reject(e),$exceptionHandler(e)}finally{delete deferreds[promise.$$timeoutId]}skipApply||$rootScope.$apply()}),delay),promise.$$timeoutId=timeoutId,deferreds[timeoutId]=deferred,promise}return timeout.cancel=function(promise){return!(!promise||!(promise.$$timeoutId in deferreds))&&(deferreds[promise.$$timeoutId].reject("canceled"),delete deferreds[promise.$$timeoutId],$browser.defer.cancel(promise.$$timeoutId))},timeout}]}var urlParsingNode=document.createElement("a"),originUrl=urlResolve(window.location.href,!0);function urlResolve(url,base){var href=url;return msie&&(urlParsingNode.setAttribute("href",href),href=urlParsingNode.href),urlParsingNode.setAttribute("href",href),{href:urlParsingNode.href,protocol:urlParsingNode.protocol?urlParsingNode.protocol.replace(/:$/,""):"",host:urlParsingNode.host,search:urlParsingNode.search?urlParsingNode.search.replace(/^\?/,""):"",hash:urlParsingNode.hash?urlParsingNode.hash.replace(/^#/,""):"",hostname:urlParsingNode.hostname,port:urlParsingNode.port,pathname:"/"===urlParsingNode.pathname.charAt(0)?urlParsingNode.pathname:"/"+urlParsingNode.pathname}}function urlIsSameOrigin(requestUrl){var parsed=isString(requestUrl)?urlResolve(requestUrl):requestUrl;return parsed.protocol===originUrl.protocol&&parsed.host===originUrl.host}function $WindowProvider(){this.$get=valueFn(window)}function $FilterProvider($provide){function register(name,factory){if(isObject(name)){var filters={};return forEach(name,(function(filter,key){filters[key]=register(key,filter)})),filters}return $provide.factory(name+"Filter",factory)}this.register=register,this.$get=["$injector",function($injector){return function(name){return $injector.get(name+"Filter")}}],register("currency",currencyFilter),register("date",dateFilter),register("filter",filterFilter),register("json",jsonFilter),register("limitTo",limitToFilter),register("lowercase",lowercaseFilter),register("number",numberFilter),register("orderBy",orderByFilter),register("uppercase",uppercaseFilter)}function filterFilter(){return function(array,expression,comparator){if(!isArray(array))return array;var comparatorType=typeof comparator,predicates=[];predicates.check=function(value){for(var j=0;j-1});var search=function(obj,text){if("string"==typeof text&&"!"===text.charAt(0))return!search(obj,text.substr(1));switch(typeof obj){case"boolean":case"number":case"string":return comparator(obj,text);case"object":if("object"==typeof text)return comparator(obj,text);for(var objKey in obj)if("$"!==objKey.charAt(0)&&search(obj[objKey],text))return!0;return!1;case"array":for(var i=0;ifractionSize+1?(numStr="0",number=0):(formatedText=numStr,hasExponent=!0)}if(hasExponent)fractionSize>0&&number>-1&&number<1&&(formatedText=number.toFixed(fractionSize));else{var fractionLen=(numStr.split(".")[1]||"").length;isUndefined(fractionSize)&&(fractionSize=Math.min(Math.max(pattern.minFrac,fractionLen),pattern.maxFrac)),0===(number=+(Math.round(+(number.toString()+"e"+fractionSize)).toString()+"e"+-fractionSize))&&(isNegative=!1);var fraction=(""+number).split("."),whole=fraction[0];fraction=fraction[1]||"";var i,pos=0,lgroup=pattern.lgSize,group=pattern.gSize;if(whole.length>=lgroup+group)for(pos=whole.length-lgroup,i=0;i0||value>-offset)&&(value+=offset),0===value&&-12==offset&&(value=12),padNumber(value,size,trim)}}function dateStrGetter(name,shortForm){return function(date,formats){var value=date["get"+name]();return formats[uppercase(shortForm?"SHORT"+name:name)][value]}}var DATE_FORMATS={yyyy:dateGetter("FullYear",4),yy:dateGetter("FullYear",2,0,!0),y:dateGetter("FullYear",1),MMMM:dateStrGetter("Month"),MMM:dateStrGetter("Month",!0),MM:dateGetter("Month",2,1),M:dateGetter("Month",1,1),dd:dateGetter("Date",2),d:dateGetter("Date",1),HH:dateGetter("Hours",2),H:dateGetter("Hours",1),hh:dateGetter("Hours",2,-12),h:dateGetter("Hours",1,-12),mm:dateGetter("Minutes",2),m:dateGetter("Minutes",1),ss:dateGetter("Seconds",2),s:dateGetter("Seconds",1),sss:dateGetter("Milliseconds",3),EEEE:dateStrGetter("Day"),EEE:dateStrGetter("Day",!0),a:function(date,formats){return date.getHours()<12?formats.AMPMS[0]:formats.AMPMS[1]},Z:function(date){var zone=-1*date.getTimezoneOffset(),paddedZone=zone>=0?"+":"";return paddedZone+=padNumber(Math[zone>0?"floor":"ceil"](zone/60),2)+padNumber(Math.abs(zone%60),2)}},DATE_FORMATS_SPLIT=/((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/,NUMBER_STRING=/^\-?\d+$/;function dateFilter($locale){var R_ISO8601_STR=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(date,format){var fn,match,text="",parts=[];if(format=format||"mediumDate",format=$locale.DATETIME_FORMATS[format]||format,isString(date)&&(date=NUMBER_STRING.test(date)?int(date):function(string){var match;if(match=string.match(R_ISO8601_STR)){var date=new Date(0),tzHour=0,tzMin=0,dateSetter=match[8]?date.setUTCFullYear:date.setFullYear,timeSetter=match[8]?date.setUTCHours:date.setHours;match[9]&&(tzHour=int(match[9]+match[10]),tzMin=int(match[9]+match[11])),dateSetter.call(date,int(match[1]),int(match[2])-1,int(match[3]));var h=int(match[4]||0)-tzHour,m=int(match[5]||0)-tzMin,s=int(match[6]||0),ms=Math.round(1e3*parseFloat("0."+(match[7]||0)));return timeSetter.call(date,h,m,s,ms),date}return string}(date)),isNumber(date)&&(date=new Date(date)),!isDate(date))return date;for(;format;)(match=DATE_FORMATS_SPLIT.exec(format))?format=(parts=concat(parts,match,1)).pop():(parts.push(format),format=null);return forEach(parts,(function(value){text+=(fn=DATE_FORMATS[value])?fn(date,$locale.DATETIME_FORMATS):value.replace(/(^'|'$)/g,"").replace(/''/g,"'")})),text}}function jsonFilter(){return function(object){return toJson(object,!0)}}dateFilter.$inject=["$locale"];var lowercaseFilter=valueFn(lowercase),uppercaseFilter=valueFn(uppercase);function limitToFilter(){return function(input,limit){return isArray(input)||isString(input)?(limit=Math.abs(Number(limit))===1/0?Number(limit):int(limit))?limit>0?input.slice(0,limit):input.slice(limit):isString(input)?"":[]:input}}function orderByFilter($parse){return function(array,sortPredicate,reverseOrder){return isArrayLike(array)?(0===(sortPredicate=isArray(sortPredicate)?sortPredicate:[sortPredicate]).length&&(sortPredicate=["+"]),iterator=function(predicate){var descending=!1,get=predicate||identity;if(isString(predicate)){if("+"!=predicate.charAt(0)&&"-"!=predicate.charAt(0)||(descending="-"==predicate.charAt(0),predicate=predicate.substring(1)),""===predicate)return reverseComparator((function(a,b){return compare(a,b)}),descending);if((get=$parse(predicate)).constant){var key=get();return reverseComparator((function(a,b){return compare(a[key],b[key])}),descending)}}return reverseComparator((function(a,b){return compare(get(a),get(b))}),descending)},results=[],forEach(sortPredicate,(function(value,index,list){results.push(iterator.call(context,value,index,list))})),sortPredicate=results,slice.call(array).sort(reverseComparator((function(o1,o2){for(var i=0;i=min,value)};ctrl.$parsers.push(minValidator),ctrl.$formatters.push(minValidator)}if(attr.max){var maxValidator=function(value){var max=parseFloat(attr.max);return validate(ctrl,"max",ctrl.$isEmpty(value)||value<=max,value)};ctrl.$parsers.push(maxValidator),ctrl.$formatters.push(maxValidator)}ctrl.$formatters.push((function(value){return validate(ctrl,"number",ctrl.$isEmpty(value)||isNumber(value),value)}))},url:function(scope,element,attr,ctrl,$sniffer,$browser){textInputType(scope,element,attr,ctrl,$sniffer,$browser);var urlValidator=function(value){return validate(ctrl,"url",ctrl.$isEmpty(value)||URL_REGEXP.test(value),value)};ctrl.$formatters.push(urlValidator),ctrl.$parsers.push(urlValidator)},email:function(scope,element,attr,ctrl,$sniffer,$browser){textInputType(scope,element,attr,ctrl,$sniffer,$browser);var emailValidator=function(value){return validate(ctrl,"email",ctrl.$isEmpty(value)||EMAIL_REGEXP.test(value),value)};ctrl.$formatters.push(emailValidator),ctrl.$parsers.push(emailValidator)},radio:function(scope,element,attr,ctrl){isUndefined(attr.name)&&element.attr("name",nextUid());element.on("click",(function(){element[0].checked&&scope.$apply((function(){ctrl.$setViewValue(attr.value)}))})),ctrl.$render=function(){var value=attr.value;element[0].checked=value==ctrl.$viewValue},attr.$observe("value",ctrl.$render)},checkbox:function(scope,element,attr,ctrl){var trueValue=attr.ngTrueValue,falseValue=attr.ngFalseValue;isString(trueValue)||(trueValue=!0);isString(falseValue)||(falseValue=!1);element.on("click",(function(){scope.$apply((function(){ctrl.$setViewValue(element[0].checked)}))})),ctrl.$render=function(){element[0].checked=ctrl.$viewValue},ctrl.$isEmpty=function(value){return value!==trueValue},ctrl.$formatters.push((function(value){return value===trueValue})),ctrl.$parsers.push((function(value){return value?trueValue:falseValue}))},hidden:noop,button:noop,submit:noop,reset:noop,file:noop};function validate(ctrl,validatorName,validity,value){return ctrl.$setValidity(validatorName,validity),validity?value:undefined}function testFlags(validity,flags){var i;if(flags)for(i=0;i=minlength,value)};ctrl.$parsers.push(minLengthValidator),ctrl.$formatters.push(minLengthValidator)}if(attr.ngMaxlength){var maxlength=int(attr.ngMaxlength),maxLengthValidator=function(value){return validate(ctrl,"maxlength",ctrl.$isEmpty(value)||value.length<=maxlength,value)};ctrl.$parsers.push(maxLengthValidator),ctrl.$formatters.push(maxLengthValidator)}}var numberBadFlags=["badInput"];var inputDirective=["$browser","$sniffer",function($browser,$sniffer){return{restrict:"E",require:"?ngModel",link:function(scope,element,attr,ctrl){ctrl&&(inputType[lowercase(attr.type)]||inputType.text)(scope,element,attr,ctrl,$sniffer,$browser)}}}],VALID_CLASS="ng-valid",INVALID_CLASS="ng-invalid",PRISTINE_CLASS="ng-pristine",DIRTY_CLASS="ng-dirty",NgModelController=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate",function($scope,$exceptionHandler,$attr,$element,$parse,$animate){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$name=$attr.name;var ngModelGet=$parse($attr.ngModel),ngModelSet=ngModelGet.assign;if(!ngModelSet)throw minErr("ngModel")("nonassign","Expression '{0}' is non-assignable. Element: {1}",$attr.ngModel,startingTag($element));this.$render=noop,this.$isEmpty=function(value){return isUndefined(value)||""===value||null===value||value!=value};var parentForm=$element.inheritedData("$formController")||nullFormCtrl,invalidCount=0,$error=this.$error={};function toggleValidCss(isValid,validationErrorKey){validationErrorKey=validationErrorKey?"-"+snake_case(validationErrorKey,"-"):"",$animate.removeClass($element,(isValid?INVALID_CLASS:VALID_CLASS)+validationErrorKey),$animate.addClass($element,(isValid?VALID_CLASS:INVALID_CLASS)+validationErrorKey)}$element.addClass(PRISTINE_CLASS),toggleValidCss(!0),this.$setValidity=function(validationErrorKey,isValid){$error[validationErrorKey]!==!isValid&&(isValid?($error[validationErrorKey]&&invalidCount--,invalidCount||(toggleValidCss(!0),this.$valid=!0,this.$invalid=!1)):(toggleValidCss(!1),this.$invalid=!0,this.$valid=!1,invalidCount++),$error[validationErrorKey]=!isValid,toggleValidCss(isValid,validationErrorKey),parentForm.$setValidity(validationErrorKey,isValid,this))},this.$setPristine=function(){this.$dirty=!1,this.$pristine=!0,$animate.removeClass($element,DIRTY_CLASS),$animate.addClass($element,PRISTINE_CLASS)},this.$setViewValue=function(value){this.$viewValue=value,this.$pristine&&(this.$dirty=!0,this.$pristine=!1,$animate.removeClass($element,PRISTINE_CLASS),$animate.addClass($element,DIRTY_CLASS),parentForm.$setDirty()),forEach(this.$parsers,(function(fn){value=fn(value)})),this.$modelValue!==value&&(this.$modelValue=value,ngModelSet($scope,value),forEach(this.$viewChangeListeners,(function(listener){try{listener()}catch(e){$exceptionHandler(e)}})))};var ctrl=this;$scope.$watch((function(){var value=ngModelGet($scope);if(ctrl.$modelValue!==value){var formatters=ctrl.$formatters,idx=formatters.length;for(ctrl.$modelValue=value;idx--;)value=formatters[idx](value);ctrl.$viewValue!==value&&(ctrl.$viewValue=value,ctrl.$render())}return value}))}],ngModelDirective=function(){return{require:["ngModel","^?form"],controller:NgModelController,link:function(scope,element,attr,ctrls){var modelCtrl=ctrls[0],formCtrl=ctrls[1]||nullFormCtrl;formCtrl.$addControl(modelCtrl),scope.$on("$destroy",(function(){formCtrl.$removeControl(modelCtrl)}))}}},ngChangeDirective=valueFn({require:"ngModel",link:function(scope,element,attr,ctrl){ctrl.$viewChangeListeners.push((function(){scope.$eval(attr.ngChange)}))}}),requiredDirective=function(){return{require:"?ngModel",link:function(scope,elm,attr,ctrl){if(ctrl){attr.required=!0;var validator=function(value){return attr.required&&ctrl.$isEmpty(value)?void ctrl.$setValidity("required",!1):(ctrl.$setValidity("required",!0),value)};ctrl.$formatters.push(validator),ctrl.$parsers.unshift(validator),attr.$observe("required",(function(){validator(ctrl.$viewValue)}))}}}},ngListDirective=function(){return{require:"ngModel",link:function(scope,element,attr,ctrl){var match=/\/(.*)\//.exec(attr.ngList),separator=match&&new RegExp(match[1])||attr.ngList||",";ctrl.$parsers.push((function(viewValue){if(!isUndefined(viewValue)){var list=[];return viewValue&&forEach(viewValue.split(separator),(function(value){value&&list.push(trim(value))})),list}})),ctrl.$formatters.push((function(value){if(isArray(value))return value.join(", ")})),ctrl.$isEmpty=function(value){return!value||!value.length}}}},CONSTANT_VALUE_REGEXP=/^(true|false|\d+)$/,ngValueDirective=function(){return{priority:100,compile:function(tpl,tplAttr){return CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)?function(scope,elm,attr){attr.$set("value",scope.$eval(attr.ngValue))}:function(scope,elm,attr){scope.$watch(attr.ngValue,(function(value){attr.$set("value",value)}))}}}},ngBindDirective=ngDirective({compile:function(templateElement){return templateElement.addClass("ng-binding"),function(scope,element,attr){element.data("$binding",attr.ngBind),scope.$watch(attr.ngBind,(function(value){element.text(null==value?"":value)}))}}}),ngBindTemplateDirective=["$interpolate",function($interpolate){return function(scope,element,attr){var interpolateFn=$interpolate(element.attr(attr.$attr.ngBindTemplate));element.addClass("ng-binding").data("$binding",interpolateFn),attr.$observe("ngBindTemplate",(function(value){element.text(value)}))}}],ngBindHtmlDirective=["$sce","$parse",function($sce,$parse){return{compile:function(tElement){return tElement.addClass("ng-binding"),function(scope,element,attr){element.data("$binding",attr.ngBindHtml);var parsed=$parse(attr.ngBindHtml);scope.$watch((function(){return(parsed(scope)||"").toString()}),(function(value){element.html($sce.getTrustedHtml(parsed(scope))||"")}))}}}}];function classDirective(name,selector){return name="ngClass"+name,["$animate",function($animate){return{restrict:"AC",link:function(scope,element,attr){var oldVal;function addClasses(classes){var newClasses=digestClassCounts(classes,1);attr.$addClass(newClasses)}function digestClassCounts(classes,count){var classCounts=element.data("$classCounts")||{},classesToUpdate=[];return forEach(classes,(function(className){(count>0||classCounts[className])&&(classCounts[className]=(classCounts[className]||0)+count,classCounts[className]===+(count>0)&&classesToUpdate.push(className))})),element.data("$classCounts",classCounts),classesToUpdate.join(" ")}function ngClassWatchAction(newVal){if(!0===selector||scope.$index%2===selector){var newClasses=arrayClasses(newVal||[]);if(oldVal){if(!equals(newVal,oldVal)){!function(oldClasses,newClasses){var toAdd=arrayDifference(newClasses,oldClasses),toRemove=arrayDifference(oldClasses,newClasses);toRemove=digestClassCounts(toRemove,-1),0===(toAdd=digestClassCounts(toAdd,1)).length?$animate.removeClass(element,toRemove):0===toRemove.length?$animate.addClass(element,toAdd):$animate.setClass(element,toAdd,toRemove)}(arrayClasses(oldVal),newClasses)}}else addClasses(newClasses)}oldVal=shallowCopy(newVal)}scope.$watch(attr[name],ngClassWatchAction,!0),attr.$observe("class",(function(value){ngClassWatchAction(scope.$eval(attr[name]))})),"ngClass"!==name&&scope.$watch("$index",(function($index,old$index){var mod=1&$index;if(mod!==(1&old$index)){var classes=arrayClasses(scope.$eval(attr[name]));mod===selector?addClasses(classes):function(classes){var newClasses=digestClassCounts(classes,-1);attr.$removeClass(newClasses)}(classes)}}))}};function arrayDifference(tokens1,tokens2){var values=[];outer:for(var i=0;iindex;)option=existingOptions.pop(),selectCtrl.removeOption(option.label),option.element.remove()}for(;optionGroupsCache.length>groupIndex;)optionGroupsCache.pop()[0].element.remove()}}(scope,element,ngModelCtrl):multiple?function(scope,selectElement,ctrl){var lastView;ctrl.$render=function(){var items=new HashMap(ctrl.$viewValue);forEach(selectElement.find("option"),(function(option){option.selected=isDefined(items.get(option.value))}))},scope.$watch((function(){equals(lastView,ctrl.$viewValue)||(lastView=shallowCopy(ctrl.$viewValue),ctrl.$render())})),selectElement.on("change",(function(){scope.$apply((function(){var array=[];forEach(selectElement.find("option"),(function(option){option.selected&&array.push(option.value)})),ctrl.$setViewValue(array)}))}))}(scope,element,ngModelCtrl):function(scope,selectElement,ngModelCtrl,selectCtrl){ngModelCtrl.$render=function(){var viewValue=ngModelCtrl.$viewValue;selectCtrl.hasOption(viewValue)?(unknownOption.parent()&&unknownOption.remove(),selectElement.val(viewValue),""===viewValue&&emptyOption.prop("selected",!0)):isUndefined(viewValue)&&emptyOption?selectElement.val(""):selectCtrl.renderUnknownOption(viewValue)},selectElement.on("change",(function(){scope.$apply((function(){unknownOption.parent()&&unknownOption.remove(),ngModelCtrl.$setViewValue(selectElement.val())}))}))}(scope,element,ngModelCtrl,selectCtrl)}}}}],optionDirective=["$interpolate",function($interpolate){var nullSelectCtrl={addOption:noop,removeOption:noop};return{restrict:"E",priority:100,compile:function(element,attr){if(isUndefined(attr.value)){var interpolateFn=$interpolate(element.text(),!0);interpolateFn||attr.$set("value",element.text())}return function(scope,element,attr){var parent=element.parent(),selectCtrl=parent.data("$selectController")||parent.parent().data("$selectController");selectCtrl&&selectCtrl.databound?element.prop("selected",!1):selectCtrl=nullSelectCtrl,interpolateFn?scope.$watch(interpolateFn,(function(newVal,oldVal){attr.$set("value",newVal),newVal!==oldVal&&selectCtrl.removeOption(oldVal),selectCtrl.addOption(newVal)})):selectCtrl.addOption(attr.value),element.on("$destroy",(function(){selectCtrl.removeOption(attr.value)}))}}}}],styleDirective=valueFn({restrict:"E",terminal:!0});window.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):((jQuery=window.jQuery)&&jQuery.fn.on?(jqLite=jQuery,extend(jQuery.fn,{scope:JQLitePrototype.scope,isolateScope:JQLitePrototype.isolateScope,controller:JQLitePrototype.controller,injector:JQLitePrototype.injector,inheritedData:JQLitePrototype.inheritedData}),jqLitePatchJQueryRemove("remove",!0,!0,!1),jqLitePatchJQueryRemove("empty",!1,!1,!1),jqLitePatchJQueryRemove("html",!1,!1,!0)):jqLite=JQLite,angular.element=jqLite,function(angular){extend(angular,{bootstrap:bootstrap,copy:copy,extend:extend,equals:equals,element:jqLite,forEach:forEach,injector:createInjector,noop:noop,bind:bind,toJson:toJson,fromJson:fromJson,identity:identity,isUndefined:isUndefined,isDefined:isDefined,isString:isString,isFunction:isFunction,isObject:isObject,isNumber:isNumber,isElement:isElement,isArray:isArray,version:version,isDate:isDate,lowercase:lowercase,uppercase:uppercase,callbacks:{counter:0},$$minErr:minErr,$$csp:csp}),angularModule=function(window){var $injectorMinErr=minErr("$injector"),ngMinErr=minErr("ng");function ensure(obj,name,factory){return obj[name]||(obj[name]=factory())}var angular=ensure(window,"angular",Object);return angular.$$minErr=angular.$$minErr||minErr,ensure(angular,"module",(function(){var modules={};return function(name,requires,configFn){return function(name,context){if("hasOwnProperty"===name)throw ngMinErr("badname","hasOwnProperty is not a valid {0} name","module")}(name),requires&&modules.hasOwnProperty(name)&&(modules[name]=null),ensure(modules,name,(function(){if(!requires)throw $injectorMinErr("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",name);var invokeQueue=[],runBlocks=[],config=invokeLater("$injector","invoke"),moduleInstance={_invokeQueue:invokeQueue,_runBlocks:runBlocks,requires:requires,name:name,provider:invokeLater("$provide","provider"),factory:invokeLater("$provide","factory"),service:invokeLater("$provide","service"),value:invokeLater("$provide","value"),constant:invokeLater("$provide","constant","unshift"),animation:invokeLater("$animateProvider","register"),filter:invokeLater("$filterProvider","register"),controller:invokeLater("$controllerProvider","register"),directive:invokeLater("$compileProvider","directive"),config:config,run:function(block){return runBlocks.push(block),this}};return configFn&&config(configFn),moduleInstance;function invokeLater(provider,method,insertMethod){return function(){return invokeQueue[insertMethod||"push"]([provider,method,arguments]),moduleInstance}}}))}}))}(window);try{angularModule("ngLocale")}catch(e){angularModule("ngLocale",[]).provider("$locale",$LocaleProvider)}angularModule("ng",["ngLocale"],["$provide",function($provide){$provide.provider({$$sanitizeUri:$$SanitizeUriProvider}),$provide.provider("$compile",$CompileProvider).directive({a:htmlAnchorDirective,input:inputDirective,textarea:inputDirective,form:formDirective,script:scriptDirective,select:selectDirective,style:styleDirective,option:optionDirective,ngBind:ngBindDirective,ngBindHtml:ngBindHtmlDirective,ngBindTemplate:ngBindTemplateDirective,ngClass:ngClassDirective,ngClassEven:ngClassEvenDirective,ngClassOdd:ngClassOddDirective,ngCloak:ngCloakDirective,ngController:ngControllerDirective,ngForm:ngFormDirective,ngHide:ngHideDirective,ngIf:ngIfDirective,ngInclude:ngIncludeDirective,ngInit:ngInitDirective,ngNonBindable:ngNonBindableDirective,ngPluralize:ngPluralizeDirective,ngRepeat:ngRepeatDirective,ngShow:ngShowDirective,ngStyle:ngStyleDirective,ngSwitch:ngSwitchDirective,ngSwitchWhen:ngSwitchWhenDirective,ngSwitchDefault:ngSwitchDefaultDirective,ngOptions:ngOptionsDirective,ngTransclude:ngTranscludeDirective,ngModel:ngModelDirective,ngList:ngListDirective,ngChange:ngChangeDirective,required:requiredDirective,ngRequired:requiredDirective,ngValue:ngValueDirective}).directive({ngInclude:ngIncludeFillContentDirective}).directive(ngAttributeAliasDirectives).directive(ngEventDirectives),$provide.provider({$anchorScroll:$AnchorScrollProvider,$animate:$AnimateProvider,$browser:$BrowserProvider,$cacheFactory:$CacheFactoryProvider,$controller:$ControllerProvider,$document:$DocumentProvider,$exceptionHandler:$ExceptionHandlerProvider,$filter:$FilterProvider,$interpolate:$InterpolateProvider,$interval:$IntervalProvider,$http:$HttpProvider,$httpBackend:$HttpBackendProvider,$location:$LocationProvider,$log:$LogProvider,$parse:$ParseProvider,$rootScope:$RootScopeProvider,$q:$QProvider,$sce:$SceProvider,$sceDelegate:$SceDelegateProvider,$sniffer:$SnifferProvider,$templateCache:$TemplateCacheProvider,$timeout:$TimeoutProvider,$window:$WindowProvider,$$rAF:$$RAFProvider,$$asyncCallback:$$AsyncCallbackProvider})}])}(angular),jqLite(document).ready((function(){!function(element,bootstrap){var appElement,module,elements=[element],names=["ng:app","ng-app","x-ng-app","data-ng-app"],NG_APP_CLASS_REGEXP=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;function append(element){element&&elements.push(element)}forEach(names,(function(name){names[name]=!0,append(document.getElementById(name)),name=name.replace(":","\\:"),element.querySelectorAll&&(forEach(element.querySelectorAll("."+name),append),forEach(element.querySelectorAll("."+name+"\\:"),append),forEach(element.querySelectorAll("["+name+"]"),append))})),forEach(elements,(function(element){if(!appElement){var className=" "+element.className+" ",match=NG_APP_CLASS_REGEXP.exec(className);match?(appElement=element,module=(match[2]||"").replace(/\s+/g,",")):forEach(element.attributes,(function(attr){!appElement&&names[attr.name]&&(appElement=element,module=attr.value)}))}})),appElement&&bootstrap(appElement,module?[module]:[])}(document,bootstrap)})))}(window,document),!window.angular.$$csp()&&window.angular.element(document).find("head").prepend(''),
/**
* @license AngularJS v1.2.32
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
function(window,angular,undefined){"use strict";var $resourceMinErr=angular.$$minErr("$resource"),MEMBER_NAME_REGEX=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;function lookupDottedPath(obj,path){if(!function(path){return null!=path&&""!==path&&"hasOwnProperty"!==path&&MEMBER_NAME_REGEX.test("."+path)}(path))throw $resourceMinErr("badmember",'Dotted member path "@{0}" is invalid.',path);for(var keys=path.split("."),i=0,ii=keys.length;i\s]+))?)*)\s*(\/?)\s*(>?)/,END_TAG_REGEXP=/^<\/\s*([\w:-]+)[^>]*>/,ATTR_REGEXP=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,BEGIN_TAG_REGEXP=/^/g,DOCTYPE_REGEXP=/]*?)>/i,CDATA_REGEXP=//g,SURROGATE_PAIR_REGEXP=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,NON_ALPHANUMERIC_REGEXP=/([^\#-~| |!])/g,voidElements=makeMap("area,br,col,hr,img,wbr"),optionalEndTagBlockElements=makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),optionalEndTagInlineElements=makeMap("rp,rt"),optionalEndTagElements=angular.extend({},optionalEndTagInlineElements,optionalEndTagBlockElements),blockElements=angular.extend({},optionalEndTagBlockElements,makeMap("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),inlineElements=angular.extend({},optionalEndTagInlineElements,makeMap("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),specialElements=makeMap("script,style"),validElements=angular.extend({},voidElements,blockElements,inlineElements,optionalEndTagElements),uriAttrs=makeMap("background,cite,href,longdesc,src"),validAttrs=angular.extend({},uriAttrs,makeMap("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width"));function makeMap(str){var i,obj={},items=str.split(",");for(i=0;i/g,">")}function htmlSanitizeWriter(buf,uriValidator){var ignore=!1,out=angular.bind(buf,buf.push);return{start:function(tag,attrs,unary){tag=angular.lowercase(tag),!ignore&&specialElements[tag]&&(ignore=tag),ignore||!0!==validElements[tag]||(out("<"),out(tag),angular.forEach(attrs,(function(value,key){var lkey=angular.lowercase(key),isImage="img"===tag&&"src"===lkey||"background"===lkey;!0!==validAttrs[lkey]||!0===uriAttrs[lkey]&&!uriValidator(value,isImage)||(out(" "),out(key),out('="'),out(encodeEntities(value)),out('"'))})),out(unary?"/>":">"))},end:function(tag){tag=angular.lowercase(tag),ignore||!0!==validElements[tag]||(out("")),tag==ignore&&(ignore=!1)},chars:function(chars){ignore||out(encodeEntities(chars))}}}angular.module("ngSanitize",[]).provider("$sanitize",(function(){this.$get=["$$sanitizeUri",function($$sanitizeUri){return function(html){var buf=[];return function(html,handler){"string"!=typeof html&&(html=null==html?"":""+html);var index,chars,match,text,stack=[],last=html;stack.last=function(){return stack[stack.length-1]};for(;html;){if(text="",chars=!0,stack.last()&&specialElements[stack.last()]?(html=html.replace(new RegExp("(.*)<\\s*\\/\\s*"+stack.last()+"[^>]*>","i"),(function(all,text){return text=text.replace(COMMENT_REGEXP,"$1").replace(CDATA_REGEXP,"$1"),handler.chars&&handler.chars(decodeEntities(text)),""})),parseEndTag("",stack.last())):(0===html.indexOf("\x3c!--")?(index=html.indexOf("--",4))>=0&&html.lastIndexOf("--\x3e",index)===index&&(handler.comment&&handler.comment(html.substring(4,index)),html=html.substring(index+3),chars=!1):DOCTYPE_REGEXP.test(html)?(match=html.match(DOCTYPE_REGEXP))&&(html=html.replace(match[0],""),chars=!1):BEGING_END_TAGE_REGEXP.test(html)?(match=html.match(END_TAG_REGEXP))&&(html=html.substring(match[0].length),match[0].replace(END_TAG_REGEXP,parseEndTag),chars=!1):BEGIN_TAG_REGEXP.test(html)&&((match=html.match(START_TAG_REGEXP))?(match[4]&&(html=html.substring(match[0].length),match[0].replace(START_TAG_REGEXP,parseStartTag)),chars=!1):(text+="<",html=html.substring(1))),chars&&(text+=(index=html.indexOf("<"))<0?html:html.substring(0,index),html=index<0?"":html.substring(index),handler.chars&&handler.chars(decodeEntities(text)))),html==last)throw $sanitizeMinErr("badparse","The sanitizer was unable to parse the following block of html: {0}",html);last=html}function parseStartTag(tag,tagName,rest,unary){if(tagName=angular.lowercase(tagName),blockElements[tagName])for(;stack.last()&&inlineElements[stack.last()];)parseEndTag("",stack.last());optionalEndTagElements[tagName]&&stack.last()==tagName&&parseEndTag("",tagName),(unary=voidElements[tagName]||!!unary)||stack.push(tagName);var attrs={};rest.replace(ATTR_REGEXP,(function(match,name,doubleQuotedValue,singleQuotedValue,unquotedValue){var value=doubleQuotedValue||singleQuotedValue||unquotedValue||"";attrs[name]=decodeEntities(value)})),handler.start&&handler.start(tagName,attrs,unary)}function parseEndTag(tag,tagName){var i,pos=0;if(tagName=angular.lowercase(tagName))for(pos=stack.length-1;pos>=0&&stack[pos]!=tagName;pos--);if(pos>=0){for(i=stack.length-1;i>=pos;i--)handler.end&&handler.end(stack[i]);stack.length=pos}}parseEndTag()}(html,htmlSanitizeWriter(buf,(function(uri,isImage){return!/^unsafe/.test($$sanitizeUri(uri,isImage))}))),buf.join("")}}]})),angular.module("ngSanitize").filter("linky",["$sanitize",function($sanitize){var LINKY_URL_REGEXP=/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,MAILTO_REGEXP=/^mailto:/;return function(text,target){if(!text)return text;for(var match,url,i,raw=text,html=[];match=raw.match(LINKY_URL_REGEXP);)url=match[0],match[2]==match[3]&&(url="mailto:"+url),i=match.index,addText(raw.substr(0,i)),addLink(url,match[0].replace(MAILTO_REGEXP,"")),raw=raw.substring(i+match[0].length);return addText(raw),$sanitize(html.join(""));function addText(text){var chars,buf;text&&html.push((chars=text,htmlSanitizeWriter(buf=[],angular.noop).chars(chars),buf.join("")))}function addLink(url,text){html.push("'),addText(text),html.push("")}}}])}(window,window.angular),
/**
* @license AngularJS v1.2.32
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
function(window,angular,undefined){"use strict";angular.module("ngAnimate",["ng"]).directive("ngAnimateChildren",(function(){return function(scope,element,attrs){var val=attrs.ngAnimateChildren;angular.isString(val)&&0===val.length?element.data("$$ngAnimateChildren",!0):scope.$watch(val,(function(value){element.data("$$ngAnimateChildren",!!value)}))}})).factory("$$animateReflow",["$$rAF","$document",function($$rAF,$document){var bod=$document[0].body;return function(fn){return $$rAF((function(){fn(bod.offsetWidth)}))}}]).config(["$provide","$animateProvider",function($provide,$animateProvider){var noop=angular.noop,forEach=angular.forEach,selectors=$animateProvider.$$selectors,NG_ANIMATE_STATE="$$ngAnimateState",rootAnimateState={running:!0};function extractElementNode(element){for(var i=0;i0){var animationsToCancel=[];if(runner.isClassBased){if("setClass"==lastAnimation.event)animationsToCancel.push(lastAnimation),cleanup(element,className);else if(runningAnimations[className]){var current=runningAnimations[className];current.event==animationEvent?skipAnimation=!0:(animationsToCancel.push(current),cleanup(element,className))}}else if("leave"==animationEvent&&runningAnimations["ng-leave"])skipAnimation=!0;else{for(var klass in runningAnimations)animationsToCancel.push(runningAnimations[klass]),cleanup(element,klass);runningAnimations={},totalActiveAnimations=0}animationsToCancel.length>0&&forEach(animationsToCancel,(function(operation){operation.cancel()}))}if(!runner.isClassBased||runner.isSetClassOperation||skipAnimation||(skipAnimation="addClass"==animationEvent==element.hasClass(className)),skipAnimation)return fireDOMOperation(),fireBeforeCallbackAsync(),fireAfterCallbackAsync(),void fireDoneCallbackAsync();"leave"==animationEvent&&element.one("$destroy",(function(e){var element=angular.element(this),state=element.data(NG_ANIMATE_STATE);if(state){var activeLeaveAnimation=state.active["ng-leave"];activeLeaveAnimation&&(activeLeaveAnimation.cancel(),cleanup(element,"ng-leave"))}})),element.addClass("ng-animate");var localAnimationCount=globalAnimationCounter++;function fireDOMCallback(animationPhase){var eventName="$animate:"+animationPhase;elementEvents&&elementEvents[eventName]&&elementEvents[eventName].length>0&&$$asyncCallback((function(){element.triggerHandler(eventName,{event:animationEvent,className:className})}))}function fireBeforeCallbackAsync(){fireDOMCallback("before")}function fireAfterCallbackAsync(){fireDOMCallback("after")}function fireDoneCallbackAsync(){fireDOMCallback("close"),doneCallback&&$$asyncCallback((function(){doneCallback()}))}function fireDOMOperation(){fireDOMOperation.hasBeenRun||(fireDOMOperation.hasBeenRun=!0,domOperation())}function closeAnimation(){if(!closeAnimation.hasBeenRun){closeAnimation.hasBeenRun=!0;var data=element.data(NG_ANIMATE_STATE);data&&(runner&&runner.isClassBased?cleanup(element,className):($$asyncCallback((function(){var data=element.data(NG_ANIMATE_STATE)||{};localAnimationCount==data.index&&cleanup(element,className)})),element.data(NG_ANIMATE_STATE,data))),fireDoneCallbackAsync()}}totalActiveAnimations++,runningAnimations[className]=runner,element.data(NG_ANIMATE_STATE,{last:runner,active:runningAnimations,index:localAnimationCount,totalActive:totalActiveAnimations}),fireBeforeCallbackAsync(),runner.before((function(cancelled){var data=element.data(NG_ANIMATE_STATE);cancelled=cancelled||!data||!data.active[className]||runner.isClassBased&&data.active[className].event!=animationEvent,fireDOMOperation(),!0===cancelled?closeAnimation():(fireAfterCallbackAsync(),runner.after(closeAnimation))}))}function cancelChildAnimations(element){var node=extractElementNode(element);if(node){var nodes=angular.isFunction(node.getElementsByClassName)?node.getElementsByClassName("ng-animate"):node.querySelectorAll(".ng-animate");forEach(nodes,(function(element){var data=(element=angular.element(element)).data(NG_ANIMATE_STATE);data&&data.active&&forEach(data.active,(function(runner){runner.cancel()}))}))}}function cleanup(element,className){if(isMatchingElement(element,$rootElement))rootAnimateState.disabled||(rootAnimateState.running=!1,rootAnimateState.structural=!1);else if(className){var data=element.data(NG_ANIMATE_STATE)||{},removeAnimations=!0===className;!removeAnimations&&data.active&&data.active[className]&&(data.totalActive--,delete data.active[className]),!removeAnimations&&data.totalActive||(element.removeClass("ng-animate"),element.removeData(NG_ANIMATE_STATE))}}}]),$animateProvider.register("",["$window","$sniffer","$timeout","$$animateReflow",function($window,$sniffer,$timeout,$$animateReflow){var TRANSITION_PROP,TRANSITIONEND_EVENT,ANIMATION_PROP,ANIMATIONEND_EVENT,CSS_PREFIX="";undefined===window.ontransitionend&&undefined!==window.onwebkittransitionend?(CSS_PREFIX="-webkit-",TRANSITION_PROP="WebkitTransition",TRANSITIONEND_EVENT="webkitTransitionEnd transitionend"):(TRANSITION_PROP="transition",TRANSITIONEND_EVENT="transitionend"),undefined===window.onanimationend&&undefined!==window.onwebkitanimationend?(CSS_PREFIX="-webkit-",ANIMATION_PROP="WebkitAnimation",ANIMATIONEND_EVENT="webkitAnimationEnd animationend"):(ANIMATION_PROP="animation",ANIMATIONEND_EVENT="animationend");var cancelAnimationReflow,lookupCache={},parentCounter=0,animationReflowQueue=[];function clearCacheAfterReflow(){cancelAnimationReflow||(cancelAnimationReflow=$$animateReflow((function(){animationReflowQueue=[],cancelAnimationReflow=null,lookupCache={}})))}function afterReflow(element,callback){cancelAnimationReflow&&cancelAnimationReflow(),animationReflowQueue.push(callback),cancelAnimationReflow=$$animateReflow((function(){forEach(animationReflowQueue,(function(fn){fn()})),animationReflowQueue=[],cancelAnimationReflow=null,lookupCache={}}))}var closingTimer=null,closingTimestamp=0,animationElementQueue=[];function animationCloseHandler(element,totalTime){var node=extractElementNode(element);element=angular.element(node),animationElementQueue.push(element);var futureTimestamp=Date.now()+totalTime;futureTimestamp<=closingTimestamp||($timeout.cancel(closingTimer),closingTimestamp=futureTimestamp,closingTimer=$timeout((function(){forEach(animationElementQueue,(function(element){var elementData=element.data("$$ngAnimateCSS3Data");elementData&&(elementData.closeAnimationFn||noop)()})),animationElementQueue=[]}),totalTime,!1))}function getElementAnimationDetails(element,cacheKey){var data=cacheKey?lookupCache[cacheKey]:null;if(!data){var transitionDelayStyle,animationDelayStyle,transitionDurationStyle,transitionPropertyStyle,transitionDuration=0,transitionDelay=0,animationDuration=0,animationDelay=0;forEach(element,(function(element){if(1==element.nodeType){var elementStyles=$window.getComputedStyle(element)||{};transitionDurationStyle=elementStyles[TRANSITION_PROP+"Duration"],transitionDuration=Math.max(parseMaxTime(transitionDurationStyle),transitionDuration),transitionPropertyStyle=elementStyles[TRANSITION_PROP+"Property"],transitionDelayStyle=elementStyles[TRANSITION_PROP+"Delay"],transitionDelay=Math.max(parseMaxTime(transitionDelayStyle),transitionDelay),animationDelayStyle=elementStyles[ANIMATION_PROP+"Delay"],animationDelay=Math.max(parseMaxTime(animationDelayStyle),animationDelay);var aDuration=parseMaxTime(elementStyles[ANIMATION_PROP+"Duration"]);aDuration>0&&(aDuration*=parseInt(elementStyles[ANIMATION_PROP+"IterationCount"],10)||1),animationDuration=Math.max(aDuration,animationDuration)}})),data={total:0,transitionPropertyStyle:transitionPropertyStyle,transitionDurationStyle:transitionDurationStyle,transitionDelayStyle:transitionDelayStyle,transitionDelay:transitionDelay,transitionDuration:transitionDuration,animationDelayStyle:animationDelayStyle,animationDelay:animationDelay,animationDuration:animationDuration},cacheKey&&(lookupCache[cacheKey]=data)}return data}function parseMaxTime(str){var maxValue=0,values=angular.isString(str)?str.split(/\s*,\s*/):[];return forEach(values,(function(value){maxValue=Math.max(parseFloat(value)||0,maxValue)})),maxValue}function animateSetup(animationEvent,element,className,calculationDecorator){var cacheKey=function(element){var parentElement=element.parent(),parentID=parentElement.data("$$ngAnimateKey");return parentID||(parentElement.data("$$ngAnimateKey",++parentCounter),parentID=parentCounter),parentID+"-"+extractElementNode(element).getAttribute("class")}(element),eventCacheKey=cacheKey+" "+className,itemIndex=lookupCache[eventCacheKey]?++lookupCache[eventCacheKey].total:0,stagger={};if(itemIndex>0){var staggerClassName=className+"-stagger",staggerCacheKey=cacheKey+" "+staggerClassName,applyClasses=!lookupCache[staggerCacheKey];applyClasses&&element.addClass(staggerClassName),stagger=getElementAnimationDetails(element,staggerCacheKey),applyClasses&&element.removeClass(staggerClassName)}calculationDecorator=calculationDecorator||function(fn){return fn()},element.addClass(className);var formerData=element.data("$$ngAnimateCSS3Data")||{},timings=calculationDecorator((function(){return getElementAnimationDetails(element,eventCacheKey)})),transitionDuration=timings.transitionDuration,animationDuration=timings.animationDuration;if(0===transitionDuration&&0===animationDuration)return element.removeClass(className),!1;element.data("$$ngAnimateCSS3Data",{running:formerData.running||0,itemIndex:itemIndex,stagger:stagger,timings:timings,closeAnimationFn:noop});var isCurrentlyAnimating=formerData.running>0||"setClass"==animationEvent;return transitionDuration>0&&function(element,className,isAnimating){!function(className){return"ng-enter"==className||"ng-move"==className||"ng-leave"==className}(className)&&isAnimating?element.addClass("ng-animate-block-transitions"):extractElementNode(element).style[TRANSITION_PROP+"Property"]="none"}(element,className,isCurrentlyAnimating),animationDuration>0&&stagger.animationDelay>0&&0===stagger.animationDuration&&function(element){extractElementNode(element).style[ANIMATION_PROP]="none 0s"}(element),!0}function unblockTransitions(element,className){var prop=TRANSITION_PROP+"Property",node=extractElementNode(element);node.style[prop]&&node.style[prop].length>0&&(node.style[prop]=""),element.removeClass("ng-animate-block-transitions")}function unblockKeyframeAnimations(element){var prop=ANIMATION_PROP,node=extractElementNode(element);node.style[prop]&&node.style[prop].length>0&&(node.style[prop]="")}function prepareStaggerDelay(delayStyle,staggerDelay,index){var style="";return forEach(delayStyle.split(","),(function(val,i){style+=(i>0?",":"")+(index*staggerDelay+parseInt(val,10))+"s"})),style}function animateBefore(animationEvent,element,className,calculationDecorator){if(animateSetup(animationEvent,element,className,calculationDecorator))return function(cancelled){cancelled&&animateClose(element,className)}}function animateAfter(animationEvent,element,className,afterAnimationComplete){if(element.data("$$ngAnimateCSS3Data"))return function(animationEvent,element,className,activeAnimationComplete){var node=extractElementNode(element),elementData=element.data("$$ngAnimateCSS3Data");if(-1!=node.getAttribute("class").indexOf(className)&&elementData){var activeClassName="";forEach(className.split(" "),(function(klass,i){activeClassName+=(i>0?" ":"")+klass+"-active"}));var stagger=elementData.stagger,timings=elementData.timings,itemIndex=elementData.itemIndex,maxDuration=Math.max(timings.transitionDuration,timings.animationDuration),maxDelay=Math.max(timings.transitionDelay,timings.animationDelay),maxDelayTime=1e3*maxDelay,startTime=Date.now(),css3AnimationEvents=ANIMATIONEND_EVENT+" "+TRANSITIONEND_EVENT,style="",appliedStyles=[];if(timings.transitionDuration>0){var propertyStyle=timings.transitionPropertyStyle;-1==propertyStyle.indexOf("all")&&(style+=CSS_PREFIX+"transition-property: "+propertyStyle+";",style+=CSS_PREFIX+"transition-duration: "+timings.transitionDurationStyle+";",appliedStyles.push(CSS_PREFIX+"transition-property"),appliedStyles.push(CSS_PREFIX+"transition-duration"))}if(itemIndex>0){if(stagger.transitionDelay>0&&0===stagger.transitionDuration){var delayStyle=timings.transitionDelayStyle;style+=CSS_PREFIX+"transition-delay: "+prepareStaggerDelay(delayStyle,stagger.transitionDelay,itemIndex)+"; ",appliedStyles.push(CSS_PREFIX+"transition-delay")}stagger.animationDelay>0&&0===stagger.animationDuration&&(style+=CSS_PREFIX+"animation-delay: "+prepareStaggerDelay(timings.animationDelayStyle,stagger.animationDelay,itemIndex)+"; ",appliedStyles.push(CSS_PREFIX+"animation-delay"))}if(appliedStyles.length>0){var oldStyle=node.getAttribute("style")||"";node.setAttribute("style",oldStyle+"; "+style)}element.on(css3AnimationEvents,onAnimationProgress),element.addClass(activeClassName),elementData.closeAnimationFn=function(){onEnd(),activeAnimationComplete()};var totalTime=1e3*(itemIndex*(Math.max(stagger.animationDelay,stagger.transitionDelay)||0)+1.5*(maxDelay+maxDuration));return elementData.running++,animationCloseHandler(element,totalTime),onEnd}function onEnd(cancelled){element.off(css3AnimationEvents,onAnimationProgress),element.removeClass(activeClassName),animateClose(element,className);var node=extractElementNode(element);for(var i in appliedStyles)node.style.removeProperty(appliedStyles[i])}function onAnimationProgress(event){event.stopPropagation();var ev=event.originalEvent||event,timeStamp=ev.$manualTimeStamp||Date.now(),elapsedTime=parseFloat(ev.elapsedTime.toFixed(3));Math.max(timeStamp-startTime,0)>=maxDelayTime&&elapsedTime>=maxDuration&&activeAnimationComplete()}activeAnimationComplete()}(0,element,className,afterAnimationComplete);animateClose(element,className),afterAnimationComplete()}function animate(animationEvent,element,className,animationComplete){var preReflowCancellation=animateBefore(animationEvent,element,className);if(!preReflowCancellation)return clearCacheAfterReflow(),void animationComplete();var cancel=preReflowCancellation;return afterReflow(0,(function(){unblockTransitions(element),unblockKeyframeAnimations(element),cancel=animateAfter(0,element,className,animationComplete)})),function(cancelled){(cancel||noop)(cancelled)}}function animateClose(element,className){element.removeClass(className);var data=element.data("$$ngAnimateCSS3Data");data&&(data.running&&data.running--,data.running&&0!==data.running||element.removeData("$$ngAnimateCSS3Data"))}return{enter:function(element,animationCompleted){return animate("enter",element,"ng-enter",animationCompleted)},leave:function(element,animationCompleted){return animate("leave",element,"ng-leave",animationCompleted)},move:function(element,animationCompleted){return animate("move",element,"ng-move",animationCompleted)},beforeSetClass:function(element,add,remove,animationCompleted){var className=suffixClasses(remove,"-remove")+" "+suffixClasses(add,"-add"),cancellationMethod=animateBefore("setClass",element,className,(function(fn){var klass=element.attr("class");element.removeClass(remove),element.addClass(add);var timings=fn();return element.attr("class",klass),timings}));if(cancellationMethod)return afterReflow(0,(function(){unblockTransitions(element),unblockKeyframeAnimations(element),animationCompleted()})),cancellationMethod;clearCacheAfterReflow(),animationCompleted()},beforeAddClass:function(element,className,animationCompleted){var cancellationMethod=animateBefore("addClass",element,suffixClasses(className,"-add"),(function(fn){element.addClass(className);var timings=fn();return element.removeClass(className),timings}));if(cancellationMethod)return afterReflow(0,(function(){unblockTransitions(element),unblockKeyframeAnimations(element),animationCompleted()})),cancellationMethod;clearCacheAfterReflow(),animationCompleted()},setClass:function(element,add,remove,animationCompleted){return animateAfter(0,element,(remove=suffixClasses(remove,"-remove"))+" "+(add=suffixClasses(add,"-add")),animationCompleted)},addClass:function(element,className,animationCompleted){return animateAfter(0,element,suffixClasses(className,"-add"),animationCompleted)},beforeRemoveClass:function(element,className,animationCompleted){var cancellationMethod=animateBefore("removeClass",element,suffixClasses(className,"-remove"),(function(fn){var klass=element.attr("class");element.removeClass(className);var timings=fn();return element.attr("class",klass),timings}));if(cancellationMethod)return afterReflow(0,(function(){unblockTransitions(element),unblockKeyframeAnimations(element),animationCompleted()})),cancellationMethod;animationCompleted()},removeClass:function(element,className,animationCompleted){return animateAfter(0,element,suffixClasses(className,"-remove"),animationCompleted)}};function suffixClasses(classes,suffix){var className="";return classes=angular.isArray(classes)?classes:classes.split(/\s+/),forEach(classes,(function(klass,i){klass&&klass.length>0&&(className+=(i>0?" ":"")+klass+suffix)})),className}}])}])}(window,window.angular),
/**
* @license AngularJS v1.2.32
* (c) 2010-2014 Google, Inc. http://angularjs.org
* License: MIT
*/
function(window,angular,undefined){"use strict";var ngTouch=angular.module("ngTouch",[]);function makeSwipeDirective(directiveName,direction,eventName){ngTouch.directive(directiveName,["$parse","$swipe",function($parse,$swipe){return function(scope,element,attr){var startCoords,valid,swipeHandler=$parse(attr[directiveName]);$swipe.bind(element,{start:function(coords,event){startCoords=coords,valid=!0},cancel:function(event){valid=!1},end:function(coords,event){(function(coords){if(!startCoords)return!1;var deltaY=Math.abs(coords.y-startCoords.y),deltaX=(coords.x-startCoords.x)*direction;return valid&&deltaY<75&&deltaX>0&&deltaX>30&&deltaY/deltaX<.3})(coords)&&scope.$apply((function(){element.triggerHandler(eventName),swipeHandler(scope,{$event:event})}))}})}}])}ngTouch.factory("$swipe",[function(){function getCoordinates(event){var touches=event.touches&&event.touches.length?event.touches:[event],e=event.changedTouches&&event.changedTouches[0]||event.originalEvent&&event.originalEvent.changedTouches&&event.originalEvent.changedTouches[0]||touches[0].originalEvent||touches[0];return{x:e.clientX,y:e.clientY}}return{bind:function(element,eventHandlers){var totalX,totalY,startCoords,lastPos,active=!1;element.on("touchstart mousedown",(function(event){startCoords=getCoordinates(event),active=!0,totalX=0,totalY=0,lastPos=startCoords,eventHandlers.start&&eventHandlers.start(startCoords,event)})),element.on("touchcancel",(function(event){active=!1,eventHandlers.cancel&&eventHandlers.cancel(event)})),element.on("touchmove mousemove",(function(event){if(active&&startCoords){var coords=getCoordinates(event);if(totalX+=Math.abs(coords.x-lastPos.x),totalY+=Math.abs(coords.y-lastPos.y),lastPos=coords,!(totalX<10&&totalY<10))return totalY>totalX?(active=!1,void(eventHandlers.cancel&&eventHandlers.cancel(event))):(event.preventDefault(),void(eventHandlers.move&&eventHandlers.move(coords,event)))}})),element.on("touchend mouseup",(function(event){active&&(active=!1,eventHandlers.end&&eventHandlers.end(getCoordinates(event),event))}))}}}]),ngTouch.config(["$provide",function($provide){$provide.decorator("ngClickDirective",["$delegate",function($delegate){return $delegate.shift(),$delegate}])}]),ngTouch.directive("ngClick",["$parse","$timeout","$rootElement",function($parse,$timeout,$rootElement){var lastPreventedTime,touchCoordinates,lastLabelClickCoordinates;function checkAllowableRegions(touchCoordinates,x,y){for(var i=0;i2500)){var touches=event.touches&&event.touches.length?event.touches:[event],x=touches[0].clientX,y=touches[0].clientY;x<1&&y<1||lastLabelClickCoordinates&&lastLabelClickCoordinates[0]===x&&lastLabelClickCoordinates[1]===y||(lastLabelClickCoordinates&&(lastLabelClickCoordinates=null),"label"===event.target.tagName.toLowerCase()&&(lastLabelClickCoordinates=[x,y]),checkAllowableRegions(touchCoordinates,x,y)||(event.stopPropagation(),event.preventDefault(),event.target&&event.target.blur()))}}function onTouchStart(event){var touches=event.touches&&event.touches.length?event.touches:[event],x=touches[0].clientX,y=touches[0].clientY;touchCoordinates.push(x,y),$timeout((function(){for(var i=0;i
* @license MIT License, http://www.opensource.org/licenses/MIT
*/
function(window,angular){var isDefined=angular.isDefined,isUndefined=angular.isUndefined,isNumber=angular.isNumber,isObject=angular.isObject,isArray=angular.isArray,extend=angular.extend,toJson=angular.toJson;angular.module("LocalStorageModule",[]).provider("localStorageService",(function(){this.prefix="ls",this.storageType="localStorage",this.cookie={expiry:30,path:"/"},this.notify={setItem:!0,removeItem:!1},this.setPrefix=function(prefix){return this.prefix=prefix,this},this.setStorageType=function(storageType){return this.storageType=storageType,this},this.setStorageCookie=function(exp,path){return this.cookie.expiry=exp,this.cookie.path=path,this},this.setStorageCookieDomain=function(domain){return this.cookie.domain=domain,this},this.setNotify=function(itemSet,itemRemove){return this.notify={setItem:itemSet,removeItem:itemRemove},this},this.$get=["$rootScope","$window","$document","$parse",function($rootScope,$window,$document,$parse){var webStorage,self=this,prefix=self.prefix,cookie=self.cookie,notify=self.notify,storageType=self.storageType;$document?$document[0]&&($document=$document[0]):$document=document,"."!==prefix.substr(-1)&&(prefix=prefix?prefix+".":"");var deriveQualifiedKey=function(key){return prefix+key},browserSupportsLocalStorage=function(){try{var supported=storageType in $window&&null!==$window[storageType],key=deriveQualifiedKey("__"+Math.round(1e7*Math.random()));return supported&&((webStorage=$window[storageType]).setItem(key,""),webStorage.removeItem(key)),supported}catch(e){return storageType="cookie",$rootScope.$broadcast("LocalStorageModule.notification.error",e.message),!1}}(),addToLocalStorage=function(key,value){if(value=isUndefined(value)?null:toJson(value),!browserSupportsLocalStorage||"cookie"===self.storageType)return browserSupportsLocalStorage||$rootScope.$broadcast("LocalStorageModule.notification.warning","LOCAL_STORAGE_NOT_SUPPORTED"),notify.setItem&&$rootScope.$broadcast("LocalStorageModule.notification.setitem",{key:key,newvalue:value,storageType:"cookie"}),addToCookies(key,value);try{webStorage&&webStorage.setItem(deriveQualifiedKey(key),value),notify.setItem&&$rootScope.$broadcast("LocalStorageModule.notification.setitem",{key:key,newvalue:value,storageType:self.storageType})}catch(e){return $rootScope.$broadcast("LocalStorageModule.notification.error",e.message),addToCookies(key,value)}return!0},getFromLocalStorage=function(key){if(!browserSupportsLocalStorage||"cookie"===self.storageType)return browserSupportsLocalStorage||$rootScope.$broadcast("LocalStorageModule.notification.warning","LOCAL_STORAGE_NOT_SUPPORTED"),getFromCookies(key);var item=webStorage?webStorage.getItem(deriveQualifiedKey(key)):null;if(!item||"null"===item)return null;try{return JSON.parse(item)}catch(e){return item}},removeFromLocalStorage=function(){var i,key;for(i=0;i0||($document.cookie="test").indexOf.call($document.cookie,"test")>-1)}catch(e){return $rootScope.$broadcast("LocalStorageModule.notification.error",e.message),!1}}(),addToCookies=function(key,value,daysToExpiry){if(isUndefined(value))return!1;if((isArray(value)||isObject(value))&&(value=toJson(value)),!browserSupportsCookies)return $rootScope.$broadcast("LocalStorageModule.notification.error","COOKIES_NOT_SUPPORTED"),!1;try{var expiry="",expiryDate=new Date,cookieDomain="";if(null===value?(expiryDate.setTime(expiryDate.getTime()+-864e5),expiry="; expires="+expiryDate.toGMTString(),value=""):isNumber(daysToExpiry)&&0!==daysToExpiry?(expiryDate.setTime(expiryDate.getTime()+24*daysToExpiry*60*60*1e3),expiry="; expires="+expiryDate.toGMTString()):0!==cookie.expiry&&(expiryDate.setTime(expiryDate.getTime()+24*cookie.expiry*60*60*1e3),expiry="; expires="+expiryDate.toGMTString()),key){var cookiePath="; path="+cookie.path;cookie.domain&&(cookieDomain="; domain="+cookie.domain),$document.cookie=deriveQualifiedKey(key)+"="+encodeURIComponent(value)+expiry+cookiePath+cookieDomain}}catch(e){return $rootScope.$broadcast("LocalStorageModule.notification.error",e.message),!1}return!0},getFromCookies=function(key){if(!browserSupportsCookies)return $rootScope.$broadcast("LocalStorageModule.notification.error","COOKIES_NOT_SUPPORTED"),!1;for(var cookies=$document.cookie&&$document.cookie.split(";")||[],i=0;i