(function(factory){if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else if(typeof exports==='object'){factory(require('jquery'));}else{factory(jQuery);}}(function($){var ua=navigator.userAgent,iPhone=/iphone/i.test(ua),chrome=/chrome/i.test(ua),android=/android/i.test(ua),caretTimeoutId;$.mask={definitions:{'9':"[0-9]",'a':"[A-Za-z]",'*':"[A-Za-z0-9]"},autoclear:true,dataName:"rawMaskFn",placeholder:'_'};$.fn.extend({caret:function(begin,end){var range;if(this.length===0||this.is(":hidden")||this.get(0)!==document.activeElement){return;}if(typeof begin=='number'){end=(typeof end==='number')?end:begin;return this.each(function(){if(this.setSelectionRange){this.setSelectionRange(begin,end);}else if(this.createTextRange){range=this.createTextRange();range.collapse(true);range.moveEnd('character',end);range.moveStart('character',begin);range.select();}});}else{if(this[0].setSelectionRange){begin=this[0].selectionStart;end=this[0].selectionEnd;}else if(document.selection&&document.selection.createRange){range=document.selection.createRange();begin=0-range.duplicate().moveStart('character',-100000);end=begin+range.text.length;}return{begin:begin,end:end};}},unmask:function(){return this.trigger("unmask");},mask:function(mask,settings){var input,defs,tests,partialPosition,firstNonMaskPos,lastRequiredNonMaskPos,len,oldVal;if(!mask&&this.length>0){input=$(this[0]);var fn=input.data($.mask.dataName) return fn?fn():undefined;}settings=$.extend({autoclear:$.mask.autoclear,placeholder:$.mask.placeholder,completed:null},settings);defs=$.mask.definitions;tests=[];partialPosition=len=mask.length;firstNonMaskPos=null;mask=String(mask);$.each(mask.split(""),function(i,c){if(c=='?'){len--;partialPosition=i;}else if(defs[c]){tests.push(new RegExp(defs[c]));if(firstNonMaskPos===null){firstNonMaskPos=tests.length-1;}if(i=0&&!tests[pos]);return pos;}function shiftL(begin,end){var i,j;if(begin<0){return;}for(i=begin,j=seekNext(end);icurVal.length){checkVal(true);while(pos.begin>0&&!tests[pos.begin-1])pos.begin--;if(pos.begin===0){while(pos.begintest.length){clearBuffer(i+1,len);break;}}else{if(buffer[i]===test.charAt(pos)){pos++;}if(i