function parseUri(_1){if(_1){this.parse(_1);}};(function(){parseUri.prototype.options={strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","basename","extension","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)(([^?#\.]*)\.?([^?#\.]*)))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?(([^?#\/\.]*)\.?([^?#\/]*)?))(?:\?([^#]*))?(?:#(.*))?)/}};parseUri.prototype.parse=function(_2){var o=this.options,_4=o.parser[o.strictMode?"strict":"loose"].exec(_2);for(var i=0,_6={};i<o.key.length;i++){_6[o.key[i]]=_4[i]||"";}_6[o.q.name]={};_6["query"].replace(o.q.parser,function($0,$1,$2){if($1){_6[o.q.name][$1]=$2;}});this.uri=_6;};parseUri.prototype.source=function(_a){if(_a){this.parse(_a);}return this.uri.source;};parseUri.prototype.authority=function(_b){if(typeof _b=="string"){this._source({authority:_b,userInfo:"",user:"",password:"",host:"",port:""});}else{if(typeof _b=="object"){this._source(_b);}}return this.uri.authority;};parseUri.prototype.userInfo=function(_c){if(typeof _c=="string"){this._source({userInfo:_c,user:"",password:""});}else{if(typeof _c=="object"){this._source(_c);}}return this.uri.userInfo;};parseUri.prototype.relative=function(_d){if(typeof _d=="string"){this._source({relative:_d,path:"",directory:"",file:"",query:"",queryKey:{},anchor:""});}else{if(typeof _d=="object"){this._source(_d);}}return this.uri.relative;};parseUri.prototype.path=function(_e){if(typeof _e=="string"){this._source({path:_e,directory:"",file:""});}else{if(typeof _e=="object"){this._source(_e);}}return this.uri.path;};parseUri.prototype.file=function(_f){if(typeof _f=="string"){this._source({file:_f,basename:"",extension:""});}else{if(typeof _f=="object"){this._source(_f);}}return this.uri.file;};parseUri.prototype.query=function(val){if(typeof val=="string"){this._source({query:val,queryKey:{}});}else{if(typeof val=="object"){this._source(val);}}return this.uri.query;};parseUri.prototype.queryKey=function(val){if(typeof val!="undefined"){this._source({queryKey:val,"query":""});}return this.uri.queryKey;};parseUri.prototype.queryKeyAdd=function(val){if(typeof val!="undefined"){var _13=this.queryKey();val=this._extend(_13,val);this._source({queryKey:val,"query":""});}return this.uri.queryKey;};var _14=["protocol","user","password","host","port","directory","basename","extension","anchor"];for(var key in _14){key=_14[key];(function(key){parseUri.prototype[key]=function(val){if(typeof val!="undefined"){var uri={};uri[key]=val;this._source(uri);}return this.uri[key];};})(key);}parseUri.prototype._source=function(uri){var _1a="";uri=this._extend(this.uri,uri);if(uri.protocol){_1a=uri.protocol+"://";}var _1b="";var _1c="";if(uri.user){_1c=uri.user;}if(uri.password){_1c=_1c+":"+uri.password;}if(_1c==""&&uri.userInfo){_1c=uri.userInfo;}if(_1c){_1b=_1c+"@";}if(this.uri.host){_1b=_1b+uri.host;}if(uri.port){_1b=_1b+":"+uri.port;}if(_1b==""&&uri.authority){_1b=uri.authority;}_1a=_1a+_1b;var _1d="";var _1e="";if(uri.directory){_1e=_1e+uri.directory;}var _1f="";if(uri.basename){_1f=uri.basename;}if(uri.extension){_1f=_1f+"."+uri.extension;}if(_1f==""&&uri.file){_1f=uri.file;}if(_1f){_1e=_1e+_1f;}if(_1e==""&&uri.path){_1e=uri.path;}_1d=_1e;var _20="";if(uri.queryKey){_20=[];for(var key in uri.queryKey){var _22=uri.queryKey[key];_20.push(key+"="+_22);}_20=_20.join("&");}if(_20==""&&uri.query){_20=uri.query;}if(_20){_1d=_1d+"?"+_20;}if(uri.anchor){_1d=_1d+"#"+uri.anchor;}if(_1d==""&&uri.relative){_1d=uri.relative;}_1a=_1a+_1d;this.parse(_1a);return _1a;};parseUri.prototype._extend=function(_23,_24){for(var i in _24){_23[i]=_24[i];}return _23;};})();