sugar
Version:
A Javascript library for working with native objects.
67 lines (66 loc) • 25.4 kB
JavaScript
/*
* Sugar Library v1.2.2
*
* Freely distributable and licensed under the MIT-style license.
* Copyright (c) 2012 Andrew Plummer
* http://sugarjs.com/
*
* ---------------------------- */
(function(context){var h=true,j=null,k=false,m=Object,n=Array,o=RegExp,q=Date,r=String,s=Number,t=m.defineProperty&&m.defineProperties;function u(a,b,c,d){var e=b?a.prototype:a;v(a,b,d);w(d,function(f,g){if(typeof c==="function")x(e,f,aa(e[f],g,c));else if(c===h||!e[f])x(e,f,g);a.SugarMethods[f]={e:b,method:g}})}
function v(a){if(!a.SugarMethods){x(a,"SugarMethods",{});u(a,k,k,{restore:function(){var b=arguments.length===0,c=y(arguments);w(a.SugarMethods,function(d,e){if(b||z(c,d))x(e.e?a.prototype:a,d,e.method)})},extend:function(b,c,d){a===m&&arguments.length===0?A(B.concat(C),Object):u(a,d!==k,c,b)}})}}function aa(a,b,c){return function(){return a&&(c===h||!c.apply(this,arguments))?a.apply(this,arguments):b.apply(this,arguments)}}
function x(a,b,c){if(t)m.defineProperty(a,b,{value:c,configurable:h,enumerable:k,writable:h});else a[b]=c}function D(a,b){return m.prototype.hasOwnProperty.call(a,b)}function w(a,b){for(var c in a)D(a,c)&&b.call(a,c,a[c])}
function E(a,b,c){var d=m.prototype.toString.call(a).match(/\[object (\w+)\]/)[1];if(a===b)return a!==0||1/a===1/b;else if(a==j||b==j)return k;else if(d=="RegExp")return a.ignoreCase==b.ignoreCase&&a.multiline==b.multiline&&a.source==b.source&&a.global==b.global;else if(d=="Array"||d=="Object"){for(d=c.length;d--;)if(c[d]==a)return h;c.push(a);for(var e in a)if(D(a,e))if(!D(b,e)||!E(a[e],b[e],c))return k;c.pop();return m.keys(a).length===m.keys(b).length&&a.constructor===b.constructor&&a.length===
b.length}else return F(b,d)&&a.valueOf()===b.valueOf()}function G(a,b,c,d){var e=h;if(a===b)return h;else if(m.isRegExp(b))return o(b).test(a);else if(m.isFunction(b))return b.apply(c,[a].concat(d));else if(m.isObject(b)&&m.isObject(a)){w(b,function(f){G(a[f],b[f],c,d)||(e=k)});return!m.isEmpty(b)&&e}else return m.equal(a,b)}function H(a,b,c,d){return I(b)?a:m.isFunction(b)?b.apply(c,d||[]):m.isFunction(a[b])?a[b].call(a):a[b]}function J(a,b){return Array.prototype.slice.call(a,b)}
function y(a,b,c,d){a=J(a);if(c!==k)a=K(a);L(a,b||function(){},d);return a}function N(a,b,c){var d=[],e=a.length,f=b[b.length-1]!==k,g;y(b,function(i){if(m.isBoolean(i))return k;if(f){i%=e;if(i<0)i=e+i}g=c?a.charAt(i)||"":a[i];d.push(g)});return d.length<2?d[0]:d}function F(a,b){return m.prototype.toString.call(a)==="[object "+b+"]"}function I(a){return a===void 0}
function O(a,b,c,d){var e=/^(.+?)(\[.*\])$/,f,g,i;if(d!==k&&(g=b.match(e))){i=g[1];b=g[2].replace(/^\[|\]$/g,"").split("][");L(b,function(l){f=!l||l.match(/^\d+$/);if(!i&&m.isArray(a))i=a.length;a[i]||(a[i]=f?[]:{});a=a[i];i=l});if(!i&&f)i=a.length.toString();O(a,i,c)}else a[b]=c.match(/^[\d.]+$/)?parseFloat(c):c==="true"?h:c==="false"?k:c}function P(a){var b=this;w(a,function(c,d){b[c]=d})}var B=["isObject","isNaN"],C=["keys","values","each","merge","isEmpty","clone","equal","watch","tap","has"];
function A(a,b){var c={};L(a,function(d){c[d+(d==="equal"?"s":"")]=function(){return Object[d].apply(j,[this].concat(J(arguments)))}});u(b,h,k,c)}u(m,k,h,{watch:function(a,b,c){if(t){var d=a[b];m.defineProperty(a,b,{get:function(){return d},set:function(e){d=c.call(a,b,d,e)},enumerable:h,configurable:h})}}});
u(m,k,k,{extended:function(a){return new P(a)},isObject:function(a){return a==j?k:F(a,"Object")&&a.constructor===m},isNaN:function(a){return m.isNumber(a)&&a.valueOf()!==a.valueOf()},each:function(a,b){b&&w(a,function(c,d){b.call(a,c,d,a)});return a},merge:function(a,b,c,d){var e,f;if(typeof b=="object")for(e in b)if(D(b,e)&&a){f=b[e];if(a[e]!==void 0){if(c===k)continue;if(m.isFunction(c))f=c.call(b,e,a[e],b[e])}if(d!==k&&f&&typeof f==="object")if(m.isDate(f))f=new Date(f.getTime());else if(m.isRegExp(f))f=
RegExp(f.source,f.getFlags());else{a[e]||(a[e]=n.isArray(f)?[]:{});Object.merge(a[e],b[e],c,d);continue}a[e]=f}return a},isEmpty:function(a){if(a==j||typeof a!="object")return!(a&&a.length>0);return m.keys(a).length==0},equal:function(a,b){return E(a,b,[])},values:function(a,b){var c=[];w(a,function(d,e){c.push(e);b&&b.call(a,e)});return c},clone:function(a,b){if(a==j||typeof a!=="object")return a;if(n.isArray(a))return a.clone();var c=a.constructor===P?new P:{};return m.merge(c,a,k,b||k)},fromQueryString:function(a,
b){var c=m.extended();a=a&&a.toString?a.toString():"";a.replace(/^.*?\?/,"").unescapeURL().split("&").each(function(d){d=d.split("=");d.length===2&&O(c,d[0],d[1],b)});return c},tap:function(a,b){H(a,b,a,[a]);return a},has:function(a,b){return D(a,b)}});u(m,k,function(){return arguments.length>1},{keys:function(a,b){if(a==j||typeof a!="object"&&!m.isRegExp(a)&&!m.isFunction(a))throw new TypeError("Object required");var c=[];w(a,function(d,e){c.push(d);b&&b.call(a,d,e)});return c}});
function L(a,b,c,d,e){var f,g;Q(b);if(c<0)c=a.length+c;g=isNaN(c)?0:parseInt(c>>0);for(c=d===h?a.length+g:a.length;g<c;){f=g%a.length;if(!(f in a)&&e===h)return ba(a,b,g,d);else if(b.call(a,a[f],f,a)===k)break;g++}}function ca(a,b,c,d,e){var f,g;L(a,function(i,l,p){if(G(i,b,p,[l,p])){f=i;g=l;return k}},c,d);return e?g:f}function z(a,b){return a.any(function(c){return m.equal(b,c)})}
function R(a,b){function c(e){return H(e,b,a,[e])===d}var d;return a.reduce(function(e,f,g){d=H(f,b,a,[f,g,a]);if(e.none(b?c:f))e.push(f);return e},[])}function K(a,b,c){b=b||Infinity;c=c||0;var d=[];L(a,function(e){if(m.isArray(e)&&c<b)d=d.concat(K(e,b,c+1));else d.push(e)});return d}function da(a,b,c){var d=[];a.each(function(e){if((c||!z(d,e))&&c!=z(b,e))d.push(e)});return d}
function ea(a,b,c,d){var e=a.length,f=d==-1,g=f?e-1:0;c=isNaN(c)?g:parseInt(c>>0);if(c<0)c=e+c;if(!f&&c<0||f&&c>=e)c=g;for(;f&&c>=0||!f&&c<e;){if(a[c]===b)return c;c+=d}return-1}function fa(a,b,c,d){var e=a.length,f=0,g=c!==void 0;Q(b);if(e==0&&!g)throw new TypeError("Reduce called on empty array with no initial value");else if(g)c=c;else{c=a[d?e-1:f];f++}for(;f<e;){g=d?e-f-1:f;if(g in a)c=b.call(void 0,c,a[g],g,a);f++}return c}
function Q(a){if(!a||!a.call)throw new TypeError("Callback is not callable");}function S(a){if(a.length===0)throw new TypeError("First argument must be defined");}function ba(a,b,c){var d=[],e;for(e in a)e in a&&e>>>0==e&&e!=4294967295&&e>=c&&d.push(e.toNumber());d.sort().each(function(f){return b.call(a,a[f],f,a)});return a}
function T(a,b,c,d){var e=c==="max",f=c==="min",g=e?-Infinity:Infinity,i=[];w(a,function(l){var p=a[l];l=H(p,b,a,d?[p,l.toNumber(),a]:[]);if(l===g)i.push(p);else if(e&&l>g||f&&l<g){i=[p];g=l}});return i}u(n,k,k,{create:function(){var a=[];y(arguments,function(b){if(b&&b.callee)b=J(b);a=a.concat(b)});return a},isArray:function(a){return F(a,"Array")}});
u(n,h,function(){var a=arguments;return a.length>0&&!m.isFunction(a[0])},{every:function(a,b){var c=this.length,d=0;for(S(arguments);d<c;){if(d in this&&!G(this[d],a,b,[d,this]))return k;d++}return h},some:function(a,b){var c=this.length,d=0;for(S(arguments);d<c;){if(d in this&&G(this[d],a,b,[d,this]))return h;d++}return k},map:function(a,b){var c=this.length,d=0,e,f=Array(c);for(S(arguments);d<c;){if(d in this){e=this[d];f[d]=H(e,a,b,[e,d,this])}d++}return f},filter:function(a,b){var c=this.length,
d=0,e=[];for(S(arguments);d<c;){d in this&&G(this[d],a,b,[d,this])&&e.push(this[d]);d++}return e}});
u(n,h,k,{indexOf:function(a,b){if(m.isString(this))return this.indexOf(a,b);return ea(this,a,b,1)},lastIndexOf:function(a,b){if(m.isString(this))return this.lastIndexOf(a,b);return ea(this,a,b,-1)},forEach:function(a,b){var c=this.length,d=0;for(Q(a);d<c;){d in this&&a.call(b,this[d],d,this);d++}},reduce:function(a,b){return fa(this,a,b)},reduceRight:function(a,b){return fa(this,a,b,h)},each:function(a,b,c){L(this,a,b,c,h);return this},find:function(a,b,c){return ca(this,a,b,c)},findAll:function(a,
b,c){var d=[];L(this,function(e,f,g){G(e,a,g,[f,g])&&d.push(e)},b,c);return d},findIndex:function(a,b,c){a=ca(this,a,b,c,h);return I(a)?-1:a},count:function(a){if(I(a))return this.length;return this.findAll(a).length},none:function(){return!this.any.apply(this,arguments)},remove:function(){var a,b=this;y(arguments,function(c){for(a=0;a<b.length;)if(G(b[a],c,b,[a,b]))b.splice(a,1);else a++},k);return b},removeAt:function(a,b){if(I(a))return this;if(I(b))b=a;for(var c=0;c<=b-a;c++)this.splice(a,1);
return this},add:function(a,b){if(!m.isNumber(s(b))||isNaN(b)||b==-1)b=this.length;else if(b<-1)b+=1;n.prototype.splice.apply(this,[b,0].concat(a));return this},include:function(a,b){return this.clone().add(a,b)},exclude:function(){return n.prototype.remove.apply(this.clone(),arguments)},clone:function(){return m.merge([],this)},unique:function(a){return R(this,a)},union:function(){var a=this;y(arguments,function(b){a=a.concat(b)});return R(a)},intersect:function(){return da(this,y(arguments),k)},
subtract:function(){return da(this,y(arguments),h)},at:function(){return N(this,arguments)},first:function(a){if(I(a))return this[0];if(a<0)a=0;return this.slice(0,a)},last:function(a){if(I(a))return this[this.length-1];return this.slice(this.length-a<0?0:this.length-a)},from:function(a){return this.slice(a)},to:function(a){if(I(a))a=this.length;return this.slice(0,a)},min:function(a){return R(T(this,a,"min",h))},max:function(a){return R(T(this,a,"max",h))},least:function(){var a=K(T(this.groupBy.apply(this,
arguments),"length","min"));return a.length===this.length?[]:R(a)},most:function(){var a=K(T(this.groupBy.apply(this,arguments),"length","max"));return a.length===this.length?[]:R(a)},sum:function(a){a=a?this.map(a):this;return a.length>0?a.reduce(function(b,c){return b+c}):0},average:function(a){a=a?this.map(a):this;return a.length>0?a.sum()/a.length:0},groupBy:function(a,b){var c=this,d=m.extended(),e;L(c,function(f,g){e=H(f,a,c,[f,g,c]);d[e]||(d[e]=[]);d[e].push(f)});return d.each(b)},inGroups:function(a,
b){var c=arguments.length>1,d=this,e=[],f=(this.length/a).ceil();(0).upto(a-1,function(g){g=g*f;var i=d.slice(g,g+f);c&&i.length<f&&(f-i.length).times(function(){i=i.add(b)});e.push(i)});return e},inGroupsOf:function(a,b){if(this.length===0||a===0)return this;if(I(a))a=1;if(I(b))b=j;var c=[],d=j;this.each(function(e,f){if(f%a===0){d&&c.push(d);d=[]}if(I(e))e=b;d.push(e)});if(!this.length.isMultipleOf(a)){(a-this.length%a).times(function(){d.push(b)});this.length+=a-this.length%a}d.length>0&&c.push(d);
return c},compact:function(a){var b=[];L(this,function(c){if(m.isArray(c))b.push(c.compact());else if(a&&c)b.push(c);else!a&&c!=j&&!m.isNaN(c)&&b.push(c)});return b},isEmpty:function(){return this.compact().length==0},flatten:function(a){return K(this,a)},sortBy:function(a,b){var c=this.clone();c.sort(function(d,e){var f,g;f=H(d,a,c,[d]);g=H(e,a,c,[e]);return(f&&f.compare?f.compare(g):f<g)*(b?-1:1)});return c},randomize:function(){for(var a=this.concat(),b,c,d=a.length;d;b=parseInt(Math.random()*
d),c=a[--d],a[d]=a[b],a[b]=c);return a},zip:function(){var a=J(arguments);return this.map(function(b,c){return[b].concat(a.map(function(d){return c in d?d[c]:j}))})},sample:function(a){var b=[],c=this.clone(),d;for(a>0||(a=1);b.length<a;){d=Number.random(0,c.length-1);b.push(c[d]);c.removeAt(d);if(c.length==0)break}return arguments.length>0?b:b[0]}});u(n,h,k,{all:n.prototype.every,any:n.prototype.some,has:n.prototype.some,insert:n.prototype.add});
function U(a,b,c){c=Math[c||"round"];var d=Math.pow(10,(b||0).abs());if(b<0)d=1/d;return c(a*d)/d}function ga(a,b,c,d){var e=[];a=parseInt(a);for(var f=d>0;f&&a<=b||!f&&a>=b;){e.push(a);c&&c.call(this,a);a+=d}return e}
function V(a,b,c,d,e,f){var g=a.toFixed(20),i=g.search(/\./);g=g.search(/[1-9]/);i=i-g;if(i>0)i-=1;e=Math.max(Math.min((i/3).floor(),e===k?c.length:e),-d);d=c.charAt(e+d-1);if(i<-9){e=-3;b=i.abs()-9;d=c.first()}return(a/(f?(2).pow(10*e):(10).pow(e*3))).round(b||0).format()+d.trim()}u(s,k,k,{random:function(a,b){var c;if(arguments.length==1){b=a;a=0}c=Math.min(a||0,I(b)?1:b);return U(Math.random()*(Math.max(a||0,I(b)?1:b)-c)+c)}});
u(s,h,k,{toNumber:function(){return parseFloat(this,10)},abbr:function(a){return V(this,a,"kmbt",0,4)},metric:function(a,b){return V(this,a,"n\u03bcm kMGTPE",4,I(b)?1:b)},bytes:function(a,b){return V(this,a,"kMGTPE",0,I(b)?4:b,h)+"B"},isInteger:function(){return this%1==0},ceil:function(a){return U(this,a,"ceil")},floor:function(a){return U(this,a,"floor")},abs:function(){return Math.abs(this)},pow:function(a){if(I(a))a=1;return Math.pow(this,a)},round:function(a){return U(this,a,"round")},chr:function(){return r.fromCharCode(this)},
isOdd:function(){return!this.isMultipleOf(2)},isEven:function(){return this.isMultipleOf(2)},isMultipleOf:function(a){return this%a===0},upto:function(a,b,c){return ga(this,a,b,c||1)},downto:function(a,b,c){return ga(this,a,b,-(c||1))},times:function(a){if(a)for(var b=0;b<this;b++)a.call(this,b);return this.toNumber()},ordinalize:function(){var a;a=this.abs();var b=a.toString().last(2).toNumber();if(b>=11&&b<=13)a="th";else switch(a%10){case 1:a="st";break;case 2:a="nd";break;case 3:a="rd";break;
default:a="th"}return this.toString()+a},pad:function(a,b,c){c=c||10;c=this.toNumber()===0?"":this.toString(c).replace(/^-/,"");c=W(c,"0",a-c.replace(/\.\d+$/,"").length,0);if(b||this<0)c=(this<0?"-":"+")+c;return c},format:function(a,b,c){var d,e,f=/(\d+)(\d{3})/;if(r(b).match(/\d/))throw new TypeError("Thousands separator cannot contain numbers.");d=m.isNumber(a)?U(this,a).toFixed(Math.max(a,0)):this.toString();b=b||",";c=c||".";e=d.split(".");d=e[0];for(e=e[1]||"";d.match(f);)d=d.replace(f,"$1"+
b+"$2");if(e.length>0)d+=c+W(e,"0",0,a-e.length);return d},hex:function(a){return this.pad(a||1,k,16)},compare:function(a){return this-Number(a)}});function X(){return"\t\n\u000b\u000c\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u2028\u2029\u3000\ufeff"}
function ha(a,b,c,d){var e=J(b).join("");e=e.replace(/all/,"").replace(/(\w)lphabet|umbers?|atakana|paces?|unctuation/g,"$1");return a.replace(c,function(f){return d[f]&&(!e||e.has(d[f].type))?d[f].to:f})}
var ia=[{type:"a",shift:65248,start:65,end:90},{type:"a",shift:65248,start:97,end:122},{type:"n",shift:65248,start:48,end:57},{type:"p",shift:65248,start:33,end:47},{type:"p",shift:65248,start:58,end:64},{type:"p",shift:65248,start:91,end:96},{type:"p",shift:65248,start:123,end:126}],ja={},ka={},la=/[\u0020-\u00A5]|[\uFF61-\uFF9F][\uff9e\uff9f]?/g,ma=/[\u3000-\u301C]|[\u301A-\u30FC]|[\uFF01-\uFF60]|[\uFFE0-\uFFE6]/g,na=/[\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c6\u30c8\u30cf\u30d2\u30d5\u30d8\u30db]/,
oa=/[\u30cf\u30d2\u30d5\u30d8\u30db\u30f2]/;function Y(a,b,c){ja[b]={type:a,to:c};ka[c]={type:a,to:b}}function W(a,b,c,d){var e=String(b);if(e!=b)e="";m.isNumber(c)||(c=1);m.isNumber(d)||(d=1);return e.repeat(c)+a+e.repeat(d)}
u(r,h,k,{escapeRegExp:function(){return o.escape(this)},escapeURL:function(a){return a?encodeURIComponent(this):encodeURI(this)},unescapeURL:function(a){return a?decodeURI(this):decodeURIComponent(this)},escapeHTML:function(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")},unescapeHTML:function(){return this.replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")},encodeBase64:function(){return btoa(this)},decodeBase64:function(){return atob(this)},capitalize:function(a){return this.toLowerCase().replace(a?
/\b[a-z]/g:/^[a-z]/,function(b){return b.toUpperCase()})},pad:function(a,b){return W(this,a,b,b)},padLeft:function(a,b){return W(this,a,b,0)},padRight:function(a,b){return W(this,a,0,b)},repeat:function(a){var b="",c=0;if(m.isNumber(a)&&a>0)for(;c<a;){b+=this;c++}return b},each:function(a,b){if(m.isFunction(a)){b=a;a=/./g}else if(a)if(m.isString(a))a=o(o.escape(a),"gi");else{if(m.isRegExp(a))a=a.addFlag("g")}else a=/./g;var c=this.match(a)||[];if(b)for(var d=0;d<c.length;d++)c[d]=b.call(this,c[d],
d,c)||c[d];return c},shift:function(a){var b="";a=a||0;this.codes(function(c){b+=(c+a).chr()});return b},codes:function(a){for(var b=[],c=0;c<this.length;c++){var d=this.charCodeAt(c);b.push(d);a&&a.call(this,d,c)}return b},chars:function(a){return this.trim().each(a)},words:function(a){return this.trim().each(/\S+/g,a)},lines:function(a){return this.trim().each(/^.*$/gm,a)},paragraphs:function(a){var b=this.trim().split(/[\r\n]{2,}/);return b=b.map(function(c){if(a)var d=a.call(c);return d?d:c})},
startsWith:function(a,b){if(I(b))b=h;var c=m.isRegExp(a)?a.source.replace("^",""):o.escape(a);return o("^"+c,b?"":"i").test(this)},endsWith:function(a,b){if(I(b))b=h;var c=m.isRegExp(a)?a.source.replace("$",""):o.escape(a);return o(c+"$",b?"":"i").test(this)},isBlank:function(){return this.trim().length===0},has:function(a){return this.search(m.isRegExp(a)?a:RegExp.escape(a))!==-1},add:function(a,b){return this.split("").add(a,b).join("")},remove:function(a){return this.replace(a,"")},hankaku:function(){return ha(this,
arguments,ma,ka)},zenkaku:function(){return ha(this,arguments,la,ja)},hiragana:function(a){var b=this;if(a!==k)b=b.zenkaku("k");return b.replace(/[\u30A1-\u30F6]/g,function(c){return c.shift(-96)})},katakana:function(){return this.replace(/[\u3041-\u3096]/g,function(a){return a.shift(96)})},toNumber:function(a){var b=this.replace(/,/g,"");return b.match(/\./)?parseFloat(b):parseInt(b,a||10)},reverse:function(){return this.split("").reverse().join("")},compact:function(){return this.replace(/[\r\n]/g,
"").trim().replace(/([\s\u3000])+/g,"$1")},at:function(){return N(this,arguments,h)},first:function(a){if(I(a))a=1;return this.substr(0,a)},last:function(a){if(I(a))a=1;return this.substr(this.length-a<0?0:this.length-a)},from:function(a){return this.slice(a)},to:function(a){if(I(a))a=this.length;return this.slice(0,a)},toDate:function(a){var b=this.toString();return q.create?q.create(b,a):new q(b)},dasherize:function(){return this.underscore().replace(/_/g,"-")},underscore:function(){return this.replace(/[-\s]+/g,
"_").replace(String.Inflector&&String.Inflector.acronymRegExp,function(a,b){return(b>0?"_":"")+a.toLowerCase()}).replace(/([A-Z\d]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").toLowerCase()},camelize:function(a){return this.underscore().replace(/(^|_)([^_]+)/g,function(b,c,d,e){b=r.Inflector&&r.Inflector.acronyms&&r.Inflector.acronyms[d];e=a!==k||e>0;if(b)return e?b:b.toLowerCase();return e?d.capitalize():d})},spacify:function(){return this.underscore().replace(/_/g," ")},stripTags:function(){var a=
this;y(arguments.length>0?arguments:[""],function(b){a=a.replace(o("</?"+b.escapeRegExp()+"[^<>]*>","gi"),"")});return a},removeTags:function(){var a=this;y(arguments.length>0?arguments:["\\S+"],function(b){b=o("<("+b+")[^<>]*(?:\\/>|>.*?<\\/\\1>)","gi");a=a.replace(b,"")});return a},truncate:function(a,b,c){var d;b=I(b)?"...":String(b);a-=b.length;if(this.length<=a)return this.toString();d=b.match(/^(.)\1+$/)?b.slice(0,1):"";for(d=o("[^"+X()+d+"]["+X()+d+"]");a>0&&!d.test(this.slice(a-1,a+1))&&c!==
h;)a--;return this.slice(0,a)+(a>0?b:"")},assign:function(){var a=m.extended();y(arguments,function(b,c){if(m.isObject(b))a.merge(b);else a[c+1]=b});return this.replace(/\{(.+?)\}/g,function(b,c){return D(a,c)?a[c]:b})},compare:function(a,b){var c=this;a=String(a);if(b===h)b=/\W/g;if(b){a=a.remove(b);c=c.remove(b)}return c==a?0:c<a?-1:1}});
u(r,h,function(a){return m.isRegExp(a)},{split:function(a,b){var c=[],d=0;a=o(a).addFlag("g");var e,f,g,i;o.c||(e=RegExp("^"+a.source+"$(?!\\s)",a.getFlags()));if(I(b)||b<0)b=Infinity;else{b|=0;if(!b)return[]}for(;f=a.exec(this);){g=f.index+f[0].length;if(g>d){c.push(this.slice(d,f.index));!o.c&&f.length>1&&f[0].replace(e,function(){for(var l=1;l<arguments.length-2;l++)if(I(arguments[l]))f[l]=void 0});f.length>1&&f.index<this.length&&n.prototype.push.apply(c,f.slice(1));i=f[0].length;d=g;if(c.length>=
b)break}a.lastIndex===f.index&&a.lastIndex++}if(d===this.length){if(i||!a.test(""))c.push("")}else c.push(this.slice(d));return c.length>b?c.slice(0,b):c}});u(r,h,k,{insert:r.prototype.add});o.c=I(o("()??").exec("")[1]);function Z(a,b){var c="";if(b=="g"||a.global)c+="g";if(b=="i"||a.ignoreCase)c+="i";if(b=="m"||a.multiline)c+="m";if(b=="y"||a.g)c+="y";return c}u(o,k,k,{escape:function(a){m.isString(a)||(a=String(a));return a.replace(/([\\/'*+?|()\[\]{}.^$])/g,"\\$1")}});
u(o,h,k,{getFlags:function(){return Z(this)},setFlags:function(a){return o(this.source,a)},addFlag:function(a){return this.setFlags(Z(this,a))},removeFlag:function(a){return this.setFlags(Z(this).replace(a,""))}});function $(a,b,c,d,e){if(!a.b)a.b=[];a.b.push(setTimeout(function(){a.b.removeAt(f);c.apply(d,e||[])},b));var f=a.b.length}
u(Function,h,k,{lazy:function(a,b){function c(){if(!(g||f.length==0)){for(var p=Math.max(f.length-l,0);f.length>p;)Function.prototype.apply.apply(e,f.shift());$(d,i,function(){g=k;c()});g=h}}function d(){if(!(g&&f.length>b-2)){f.push([this,arguments]);c()}}var e=this,f=[],g=k,i,l;a=a||1;b=b||Infinity;i=a.ceil();l=U(i/a);return d},delay:function(a){m.isNumber(a)||(a=0);var b=J(arguments,1);$(this,a,this,this,b);return this},debounce:function(a,b){var c=this;return b===k?this.lazy(a,1):function(){c.cancel();
$(c,a,c,this,arguments)}},cancel:function(){if(m.isArray(this.b))for(;this.b.length>0;)clearTimeout(this.b.shift());return this},after:function(a){var b=this,c=0,d=[];if(m.isNumber(a)){if(a===0){b.call();return b}}else a=1;return function(){var e;d.push(Array.create(arguments));c++;if(c==a){e=b.call(this,d);c=0;d=[];return e}}},once:function(){var a=this;return function(){return D(a,"memo")?a.memo:a.memo=a.apply(this,arguments)}},fill:function(){var a=this,b=J(arguments);return function(){var c=J(arguments);
L(b,function(d,e){if(d!=j||e>=c.length)c.splice(e,0,d)});return a.apply(this,c)}}});(function(){var a={},b;L(["Array","Boolean","Date","Function","Number","String","RegExp"],function(c){b="is"+c;B.push(b);a[b]=function(d){return F(d,c)}});u(Object,k,k,a)})();A(C,P);
(function(a){if(!this.btoa){var b=/[^A-Za-z0-9\+\/\=]/g;btoa=function(c){var d="",e,f,g,i,l,p,M=0;do{e=c.charCodeAt(M++);f=c.charCodeAt(M++);g=c.charCodeAt(M++);i=e>>2;e=(e&3)<<4|f>>4;l=(f&15)<<2|g>>6;p=g&63;if(isNaN(f))l=p=64;else if(isNaN(g))p=64;d=d+a.charAt(i)+a.charAt(e)+a.charAt(l)+a.charAt(p)}while(M<c.length);return d};atob=function(c){var d="",e,f,g,i,l,p=0;if(c.match(b))throw Error("String contains invalid base64 characters");c=c.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{e=a.indexOf(c.charAt(p++));
f=a.indexOf(c.charAt(p++));i=a.indexOf(c.charAt(p++));l=a.indexOf(c.charAt(p++));e=e<<2|f>>4;f=(f&15)<<4|i>>2;g=(i&3)<<6|l;d+=e.chr();if(i!=64)d+=f.chr();if(l!=64)d+=g.chr()}while(p<c.length);return unescape(d)}}})("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=");
(function(){var a=X().match(/^\s+$/);try{r.prototype.trim.call([1])}catch(b){a=k}var c=o("^["+X()+"]+"),d=o("["+X()+"]+$");u(r,h,!a,{trim:function(){return this.toString().trimLeft().trimRight()},trimLeft:function(){return this.replace(c,"")},trimRight:function(){return this.replace(d,"")}})})();
(function(){var a;L(ia,function(b){b.start.upto(b.end,function(c){Y(b.type,c.chr(),(c+b.shift).chr())})});"\u30a2\u30a4\u30a6\u30a8\u30aa\u30a1\u30a3\u30a5\u30a7\u30a9\u30ab\u30ad\u30af\u30b1\u30b3\u30b5\u30b7\u30b9\u30bb\u30bd\u30bf\u30c1\u30c4\u30c3\u30c6\u30c8\u30ca\u30cb\u30cc\u30cd\u30ce\u30cf\u30d2\u30d5\u30d8\u30db\u30de\u30df\u30e0\u30e1\u30e2\u30e4\u30e3\u30e6\u30e5\u30e8\u30e7\u30e9\u30ea\u30eb\u30ec\u30ed\u30ef\u30f2\u30f3\u30fc\u30fb".each(function(b,c){a="\uff71\uff72\uff73\uff74\uff75\uff67\uff68\uff69\uff6a\uff6b\uff76\uff77\uff78\uff79\uff7a\uff7b\uff7c\uff7d\uff7e\uff7f\uff80\uff81\uff82\uff6f\uff83\uff84\uff85\uff86\uff87\uff88\uff89\uff8a\uff8b\uff8c\uff8d\uff8e\uff8f\uff90\uff91\uff92\uff93\uff94\uff6c\uff95\uff6d\uff96\uff6e\uff97\uff98\uff99\uff9a\uff9b\uff9c\uff66\uff9d\uff70\uff65".charAt(c);
Y("k",a,b);b.match(na)&&Y("k",a+"\uff9e",b.shift(1));b.match(oa)&&Y("k",a+"\uff9f",b.shift(2))});"\u3002\u3001\u300c\u300d\uffe5\uffe0\uffe1".each(function(b,c){Y("p","\uff61\uff64\uff62\uff63\u00a5\u00a2\u00a3".charAt(c),b)});Y("k","\uff73\uff9e","\u30f4");Y("k","\uff66\uff9e","\u30fa");Y("s"," ","\u3000")})();
[{a:["Arabic"],source:"\u0600-\u06ff"},{a:["Cyrillic"],source:"\u0400-\u04ff"},{a:["Devanagari"],source:"\u0900-\u097f"},{a:["Greek"],source:"\u0370-\u03ff"},{a:["Hangul"],source:"\uac00-\ud7af\u1100-\u11ff"},{a:["Han","Kanji"],source:"\u4e00-\u9fff\uf900-\ufaff"},{a:["Hebrew"],source:"\u0590-\u05ff"},{a:["Hiragana"],source:"\u3040-\u309f\u30fb-\u30fc"},{a:["Kana"],source:"\u3040-\u30ff\uff61-\uff9f"},{a:["Katakana"],source:"\u30a0-\u30ff\uff61-\uff9f"},{a:["Latin"],source:"\u0001-\u0080-\u00ff\u0100-\u017f\u0180-\u024f"},
{a:["Thai"],source:"\u0e00-\u0e7f"}].each(function(a){var b=o("^["+a.source+"\\s]+$"),c=o("["+a.source+"]");a.a.each(function(d){x(r.prototype,"is"+d,function(){return b.test(this.trim())});x(r.prototype,"has"+d,function(){return c.test(this)})})});
(function(){var a=k;if(Function.prototype.d){a=function(){};var b=a.d();a=new b instanceof b&&!(new a instanceof b)}u(Function,h,!a,{bind:function(c){var d=this,e=J(arguments,1),f,g;if(!m.isFunction(this))throw new TypeError("Function.prototype.bind called on a non-function");g=function(){return d.apply(d.prototype&&this instanceof d?this:c,e.concat(J(arguments)))};f=function(){};f.prototype=this.prototype;g.prototype=new f;return g}})})();v(q);Object.f=v;})(this);