diff --git a/dist/lrz.all.bundle.js b/dist/lrz.all.bundle.js index a0b3ffa..d6bf2ed 100644 --- a/dist/lrz.all.bundle.js +++ b/dist/lrz.all.bundle.js @@ -1,2 +1,2 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(6),n(7),e.exports=n(8)},function(e,t,n){(function(t){!function(n){function r(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(e,r(a,this),r(s,this))}function o(e){var t=this;return null===this._state?void this._deferreds.push(e):void f(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(a,this),r(s,this))}this._state=!0,this._value=e,c.call(this)}catch(n){s.call(this,n)}}function s(e){this._state=!1,this._value=e,c.call(this)}function c(){for(var e=0,t=this._deferreds.length;t>e;e++)o.call(this,this._deferreds[e]);this._deferreds=null}function u(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}var f="function"==typeof t&&t||function(e){setTimeout(e,1)},d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=this;return new i(function(r,i){o.call(n,new u(e,t,r,i))})},i.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&d(arguments[0])?arguments[0]:arguments);return new i(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(c){n(c)}}if(0===e.length)return t([]);for(var i=e.length,o=0;or;r++)e[r].then(t,n)})},i._setImmediateFn=function(e){f=e},i.prototype.always=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},"undefined"!=typeof e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(2).setImmediate)},function(e,t,n){(function(e,r){function i(e,t){this._id=e,this._clearFn=t}var o=n(3).nextTick,a=Function.prototype.apply,s=Array.prototype.slice,c={},u=0;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=u++,r=arguments.length<2?!1:s.call(arguments,1);return c[n]=!0,o(function(){c[n]&&(r?e.apply(null,r):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof r?r:function(e){delete c[e]}}).call(t,n(2).setImmediate,n(2).clearImmediate)},function(e,t){function n(){u=!1,a.length?c=a.concat(c):l=-1,c.length&&r()}function r(){if(!u){var e=setTimeout(n);u=!0;for(var t=c.length;t;){for(a=c,c=[];++l1)for(var n=1;na;a++)o[a]=n.charCodeAt(a);return i}function a(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){200!=this.status&&0!==this.status||t(this.response)},n.send()}function s(e,t){function n(n){var r=c(n),i=u(n);e.exifdata=r||{},e.iptcdata=i||{},t&&t.call(e)}if(e.src)if(/^data\:/i.test(e.src)){var r=o(e.src);n(r)}else if(/^blob\:/i.test(e.src)){var i=new FileReader;i.onload=function(e){n(e.target.result)},a(e.src,function(e){i.readAsArrayBuffer(e)})}else{var s=new XMLHttpRequest;s.onload=function(){200==this.status||0===this.status?n(s.response):t(new Error("Could not load image")),s=null},s.open("GET",e.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var i=new FileReader;i.onload=function(e){p&&console.log("Got file of length "+e.target.result.byteLength),n(e.target.result)},i.readAsArrayBuffer(e)}}function c(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n,r=2,i=e.byteLength;i>r;){if(255!=t.getUint8(r))return p&&console.log("Not a valid marker at offset "+r+", found: "+t.getUint8(r)),!1;if(n=t.getUint8(r+1),p&&console.log(n),225==n)return p&&console.log("Found 0xFFE1 marker"),g(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function u(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>n;){if(i(t,n)){var o=t.getUint8(n+7);o%2!==0&&(o+=1),0===o&&(o=4);var a=n+8+o,s=t.getUint16(n+6+o);return l(e,a,s)}n++}}function l(e,t,n){for(var r,i,o,a,s,c=new DataView(e),u={},l=t;t+n>l;)28===c.getUint8(l)&&2===c.getUint8(l+1)&&(a=c.getUint8(l+2),a in S&&(o=c.getInt16(l+3),s=o+5,i=S[a],r=h(c,l+5,o),u.hasOwnProperty(i)?u[i]instanceof Array?u[i].push(r):u[i]=[u[i],r]:u[i]=r)),l++;return u}function f(e,t,n,r,i){var o,a,s,c=e.getUint16(n,!i),u={};for(s=0;c>s;s++)o=n+12*s+2,a=r[e.getUint16(o,!i)],!a&&p&&console.log("Unknown tag: "+e.getUint16(o,!i)),u[a]=d(e,o,t,n,i);return u}function d(e,t,n,r,i){var o,a,s,c,u,l,f=e.getUint16(t+2,!i),d=e.getUint32(t+4,!i),g=e.getUint32(t+8,!i)+n;switch(f){case 1:case 7:if(1==d)return e.getUint8(t+8,!i);for(o=d>4?g:t+8,a=[],c=0;d>c;c++)a[c]=e.getUint8(o+c);return a;case 2:return o=d>4?g:t+8,h(e,o,d-1);case 3:if(1==d)return e.getUint16(t+8,!i);for(o=d>2?g:t+8,a=[],c=0;d>c;c++)a[c]=e.getUint16(o+2*c,!i);return a;case 4:if(1==d)return e.getUint32(t+8,!i);for(a=[],c=0;d>c;c++)a[c]=e.getUint32(g+4*c,!i);return a;case 5:if(1==d)return u=e.getUint32(g,!i),l=e.getUint32(g+4,!i),s=new Number(u/l),s.numerator=u,s.denominator=l,s;for(a=[],c=0;d>c;c++)u=e.getUint32(g+8*c,!i),l=e.getUint32(g+4+8*c,!i),a[c]=new Number(u/l),a[c].numerator=u,a[c].denominator=l;return a;case 9:if(1==d)return e.getInt32(t+8,!i);for(a=[],c=0;d>c;c++)a[c]=e.getInt32(g+4*c,!i);return a;case 10:if(1==d)return e.getInt32(g,!i)/e.getInt32(g+4,!i);for(a=[],c=0;d>c;c++)a[c]=e.getInt32(g+8*c,!i)/e.getInt32(g+4+8*c,!i);return a}}function h(e,t,n){var r,i="";for(r=t;t+n>r;r++)i+=String.fromCharCode(e.getUint8(r));return i}function g(e,t){if("Exif"!=h(e,t,4))return p&&console.log("Not valid EXIF data! "+h(e,t,4)),!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return p&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;n=!0}if(42!=e.getUint16(s+2,!n))return p&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var c=e.getUint32(s+4,!n);if(8>c)return p&&console.log("Not valid TIFF data! (First offset less than 8)",e.getUint32(s+4,!n)),!1;if(r=f(e,s,s+c,v,n),r.ExifIFDPointer){o=f(e,s,s+r.ExifIFDPointer,w,n);for(i in o){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=b[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=b.Components[o[i][0]]+b.Components[o[i][1]]+b.Components[o[i][2]]+b.Components[o[i][3]]}r[i]=o[i]}}if(r.GPSInfoIFDPointer){a=f(e,s,s+r.GPSInfoIFDPointer,y,n);for(i in a){switch(i){case"GPSVersionID":a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}r[i]=a[i]}}return r}var p=!1,m=function(e){return e instanceof m?e:this instanceof m?void(this.EXIFwrapped=e):new m(e)};"undefined"!=typeof e&&e.exports&&(t=e.exports=m),t.EXIF=m;var w=m.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},v=m.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},y=m.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},b=m.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}},S={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};m.getData=function(e,t){return(e instanceof Image||e instanceof HTMLImageElement)&&!e.complete?!1:(n(e)?t&&t.call(e):s(e,t),!0)},m.getTag=function(e,t){return n(e)?e.exifdata[t]:void 0},m.getAllTags=function(e){if(!n(e))return{};var t,r=e.exifdata,i={};for(t in r)r.hasOwnProperty(t)&&(i[t]=r[t]);return i},m.pretty=function(e){if(!n(e))return"";var t,r=e.exifdata,i="";for(t in r)r.hasOwnProperty(t)&&(i+="object"==typeof r[t]?r[t]instanceof Number?t+" : "+r[t]+" ["+r[t].numerator+"/"+r[t].denominator+"]\r\n":t+" : ["+r[t].length+" values]\r\n":t+" : "+r[t]+"\r\n");return i},m.readFromBinaryFile=function(e){return c(e)},r=[],i=function(){return m}.apply(t,r),!(void 0!==i&&(e.exports=i))}).call(this)},function(e,t,n){var r,i;!function(){function n(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var r=document.createElement("canvas");r.width=r.height=1;var i=r.getContext("2d");return i.drawImage(e,-t+1,0),0===i.getImageData(0,0,1,1).data[3]}return!1}function o(e,t,n){var r=document.createElement("canvas");r.width=1,r.height=n;var i=r.getContext("2d");i.drawImage(e,0,0);for(var o=i.getImageData(0,0,1,n).data,a=0,s=n,c=n;c>a;){var u=o[4*(c-1)+3];0===u?s=c:a=c,c=s+a>>1}var l=c/n;return 0===l?1:l}function a(e,t,n){var r=document.createElement("canvas");return s(e,r,t,n),r.toDataURL("image/jpeg",t.quality||.8)}function s(e,t,r,i){var a=e.naturalWidth,s=e.naturalHeight,u=r.width,l=r.height,f=t.getContext("2d");f.save(),c(t,f,u,l,r.orientation);var d=n(e);d&&(a/=2,s/=2);var h=1024,g=document.createElement("canvas");g.width=g.height=h;for(var p=g.getContext("2d"),m=i?o(e,a,s):1,w=Math.ceil(h*u/a),v=Math.ceil(h*l/s/m),y=0,b=0;s>y;){for(var S=0,I=0;a>S;)p.clearRect(0,0,h,h),p.drawImage(e,-S,-y),f.drawImage(g,0,0,h,h,I,b,w,v),S+=h,I+=w;y+=h,b+=v}f.restore(),g=p=null}function c(e,t,n,r,i){switch(i){case 5:case 6:case 7:case 8:e.width=r,e.height=n;break;default:e.width=n,e.height=r}switch(i){case 2:t.translate(n,0),t.scale(-1,1);break;case 3:t.translate(n,r),t.rotate(Math.PI);break;case 4:t.translate(0,r),t.scale(1,-1);break;case 5:t.rotate(.5*Math.PI),t.scale(1,-1);break;case 6:t.rotate(.5*Math.PI),t.translate(0,-r);break;case 7:t.rotate(.5*Math.PI),t.translate(n,-r),t.scale(-1,1);break;case 8:t.rotate(-.5*Math.PI),t.translate(-n,0)}}function u(e){if(window.Blob&&e instanceof Blob){var t=new Image,n=window.URL&&window.URL.createObjectURL?window.URL:window.webkitURL&&window.webkitURL.createObjectURL?window.webkitURL:null;if(!n)throw Error("No createObjectURL function found to create blob url");t.src=n.createObjectURL(e),this.blob=e,e=t}if(!e.naturalWidth&&!e.naturalHeight){var r=this;e.onload=function(){var e=r.imageLoadListeners;if(e){r.imageLoadListeners=null;for(var t=0,n=e.length;n>t;t++)e[t]()}},this.imageLoadListeners=[]}this.srcImage=e}u.prototype.render=function(e,t,n){if(this.imageLoadListeners){var r=this;return void this.imageLoadListeners.push(function(){r.render(e,t,n)})}t=t||{};var i=this.srcImage,o=i.src,c=o.length,u=i.naturalWidth,l=i.naturalHeight,f=t.width,d=t.height,h=t.maxWidth,g=t.maxHeight,p=this.blob&&"image/jpeg"===this.blob.type||0===o.indexOf("data:image/jpeg")||o.indexOf(".jpg")===c-4||o.indexOf(".jpeg")===c-5;f&&!d?d=l*f/u<<0:d&&!f?f=u*d/l<<0:(f=u,d=l),h&&f>h&&(f=h,d=l*f/u<<0),g&&d>g&&(d=g,f=u*d/l<<0);var m={width:f,height:d};for(var w in t)m[w]=t[w];var v=e.tagName.toLowerCase();"img"===v?e.src=a(this.srcImage,m,p):"canvas"===v&&s(this.srcImage,e,m,p),"function"==typeof this.onrender&&this.onrender(e),n&&n()},r=[],i=function(){return u}.apply(t,r),!(void 0!==i&&(e.exports=i))}()},function(e,t){function n(e){function t(e){for(var t=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;64>n;n++){var r=F((t[n]*e+50)/100);1>r?r=1:r>255&&(r=255),x[N[n]]=r}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],o=0;64>o;o++){var a=F((i[o]*e+50)/100);1>a?a=1:a>255&&(a=255),D[N[o]]=a}for(var s=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],c=0,u=0;8>u;u++)for(var l=0;8>l;l++)U[c]=1/(x[N[c]]*s[u]*s[l]*8),C[c]=1/(D[N[c]]*s[u]*s[l]*8),c++}function n(e,t){for(var n=0,r=0,i=new Array,o=1;16>=o;o++){for(var a=1;a<=e[o];a++)i[t[r]]=[],i[t[r]][0]=n,i[t[r]][1]=o,r++,n++;n*=2}return i}function r(){y=n(W,H),b=n(V,X),S=n(z,q),I=n(Q,Y)}function i(){for(var e=1,t=2,n=1;15>=n;n++){for(var r=e;t>r;r++)A[32767+r]=n,T[32767+r]=[],T[32767+r][1]=n,T[32767+r][0]=r;for(var i=-(t-1);-e>=i;i++)A[32767+i]=n,T[32767+i]=[],T[32767+i][1]=n,T[32767+i][0]=t-1+i;e<<=1,t<<=1}}function o(){for(var e=0;256>e;e++)k[e]=19595*e,k[e+256>>0]=38470*e,k[e+512>>0]=7471*e+32768,k[e+768>>0]=-11059*e,k[e+1024>>0]=-21709*e,k[e+1280>>0]=32768*e+8421375,k[e+1536>>0]=-27439*e,k[e+1792>>0]=-5329*e}function a(e){for(var t=e[0],n=e[1]-1;n>=0;)t&1<O&&(255==G?(s(255),s(0)):s(G),O=7,G=0)}function s(e){M.push(j[e])}function c(e){s(e>>8&255),s(255&e)}function u(e,t){var n,r,i,o,a,s,c,u,l,f=0;const d=8,h=64;for(l=0;d>l;++l){n=e[f],r=e[f+1],i=e[f+2],o=e[f+3],a=e[f+4],s=e[f+5],c=e[f+6],u=e[f+7];var g=n+u,p=n-u,m=r+c,w=r-c,v=i+s,y=i-s,b=o+a,S=o-a,I=g+b,P=g-b,F=m+v,x=m-v;e[f]=I+F,e[f+4]=I-F;var D=.707106781*(x+P);e[f+2]=P+D,e[f+6]=P-D,I=S+y,F=y+w,x=w+p;var U=.382683433*(I-x),C=.5411961*I+U,T=1.306562965*x+U,A=.707106781*F,R=p+A,M=p-A;e[f+5]=M+C,e[f+3]=M-C,e[f+1]=R+T,e[f+7]=R-T,f+=8}for(f=0,l=0;d>l;++l){n=e[f],r=e[f+8],i=e[f+16],o=e[f+24],a=e[f+32],s=e[f+40],c=e[f+48],u=e[f+56];var G=n+u,O=n-u,_=r+c,B=r-c,E=i+s,j=i-s,k=o+a,N=o-a,W=G+k,H=G-k,z=_+E,q=_-E;e[f]=W+z,e[f+32]=W-z;var V=.707106781*(q+H);e[f+16]=H+V,e[f+48]=H-V,W=N+j,z=j+B,q=B+O;var X=.382683433*(W-q),Q=.5411961*W+X,Y=1.306562965*q+X,K=.707106781*z,J=O+K,Z=O-K;e[f+40]=Z+Q,e[f+24]=Z-Q,e[f+8]=J+Y,e[f+56]=J-Y,f++}var $;for(l=0;h>l;++l)$=e[l]*t[l],L[l]=$>0?$+.5|0:$-.5|0;return L}function l(){c(65504),c(16),s(74),s(70),s(73),s(70),s(0),s(1),s(1),s(0),c(1),c(1),s(0),s(0)}function f(e,t){c(65472),c(17),s(8),c(t),c(e),s(3),s(1),s(17),s(0),s(2),s(17),s(1),s(3),s(17),s(1)}function d(){c(65499),c(132),s(0);for(var e=0;64>e;e++)s(x[e]);s(1);for(var t=0;64>t;t++)s(D[t])}function h(){c(65476),c(418),s(0);for(var e=0;16>e;e++)s(W[e+1]);for(var t=0;11>=t;t++)s(H[t]);s(16);for(var n=0;16>n;n++)s(z[n+1]);for(var r=0;161>=r;r++)s(q[r]);s(1);for(var i=0;16>i;i++)s(V[i+1]);for(var o=0;11>=o;o++)s(X[o]);s(17);for(var a=0;16>a;a++)s(Q[a+1]);for(var u=0;161>=u;u++)s(Y[u])}function g(){c(65498),c(12),s(3),s(1),s(0),s(2),s(17),s(3),s(17),s(0),s(63),s(0)}function p(e,t,n,r,i){var o,s=i[0],c=i[240];const l=16,f=63,d=64;for(var h=u(e,t),g=0;d>g;++g)R[N[g]]=h[g];var p=R[0]-n;n=R[0],0==p?a(r[0]):(o=32767+p,a(r[A[o]]),a(T[o]));for(var m=63;m>0&&0==R[m];m--);if(0==m)return a(s),n;for(var w,v=1;m>=v;){for(var y=v;0==R[v]&&m>=v;++v);var b=v-y;if(b>=l){w=b>>4;for(var S=1;w>=S;++S)a(c);b=15&b}o=32767+R[v],a(i[(b<<4)+A[o]]),a(T[o]),v++}return m!=f&&a(s),n}function m(){for(var e=String.fromCharCode,t=0;256>t;t++)j[t]=e(t)}function w(e){if(0>=e&&(e=1),e>100&&(e=100),P!=e){var n=0;n=50>e?Math.floor(5e3/e):Math.floor(200-2*e),t(n),P=e}}function v(){var t=(new Date).getTime();e||(e=50),m(),r(),i(),o(),w(e);(new Date).getTime()-t}var y,b,S,I,P,F=(Math.round,Math.floor),x=new Array(64),D=new Array(64),U=new Array(64),C=new Array(64),T=new Array(65535),A=new Array(65535),L=new Array(64),R=new Array(64),M=[],G=0,O=7,_=new Array(64),B=new Array(64),E=new Array(64),j=new Array(256),k=new Array(2048),N=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],W=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],H=[0,1,2,3,4,5,6,7,8,9,10,11],z=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],q=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],V=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],X=[0,1,2,3,4,5,6,7,8,9,10,11],Q=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],Y=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];this.encode=function(e,t,n){var r=(new Date).getTime();t&&w(t),M=new Array,G=0,O=7,c(65496),l(),d(),f(e.width,e.height),h(),g();var i=0,o=0,s=0;G=0,O=7,this.encode.displayName="_encode_";for(var u,m,v,P,F,x,D,T,A,L=e.data,R=e.width,j=e.height,N=4*R,W=0;j>W;){for(u=0;N>u;){for(F=N*W+u,x=F,D=-1,T=0,A=0;64>A;A++)T=A>>3,D=4*(7&A),x=F+T*N+D,W+T>=j&&(x-=N*(W+1+T-j)),u+D>=N&&(x-=u+D-N+4),m=L[x++],v=L[x++],P=L[x++],_[A]=(k[m]+k[v+256>>0]+k[P+512>>0]>>16)-128,B[A]=(k[m+768>>0]+k[v+1024>>0]+k[P+1280>>0]>>16)-128,E[A]=(k[m+1280>>0]+k[v+1536>>0]+k[P+1792>>0]>>16)-128;i=p(_,U,i,y,S),o=p(B,C,o,b,I),s=p(E,C,s,b,I),u+=32}W+=8}if(O>=0){var H=[];H[1]=O+1,H[0]=(1<V;V++)q[V]=M[V].charCodeAt();M=[];(new Date).getTime()-r;return q}var X="data:image/jpeg;base64,"+btoa(M.join(""));M=[];(new Date).getTime()-r;return X},v()}e.exports=n},function(e,t,n){function r(e,t){var n=this;if(!e)throw new Error("没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7");t=t||{},n.defaults={width:null,height:null,fieldName:"file",quality:.7},n.file=e;for(var r in t)t.hasOwnProperty(r)&&(n.defaults[r]=t[r]);return this.init()}function i(e){var t=null;return t=e?[].filter.call(document.scripts,function(t){return-1!==t.src.indexOf(e)})[0]:document.scripts[document.scripts.length-1],t?t.src.substr(0,t.src.lastIndexOf("/")):null}function o(e){var t;t=e.split(",")[0].indexOf("base64")>=0?atob(e.split(",")[1]):unescape(e.split(",")[1]);for(var n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),i=0;ie.file.size?(i=new FormData,t=e.file):(i=new s.FormData,t=o(r)),i.append(e.defaults.fieldName,t,e.fileName.replace(/\..+/g,".jpg")),n({formData:i,fileLen:+t.size,base64:r,base64Len:r.length,origin:e.file,file:t});for(var a in e)e.hasOwnProperty(a)&&(e[a]=null);URL.revokeObjectURL(e.blob)})},!r&&(i.crossOrigin="*"),i.src=u})},r.prototype._getBase64=function(){var e=this,t=e.img,n=e.file,r=e.canvas;return new a(function(i){try{c.getData("object"==typeof n?n:t,function(){e.orientation=c.getTag(this,"Orientation"),e.resize=e._getResize(),e.ctx=r.getContext("2d"),r.width=e.resize.width,r.height=e.resize.height,e.ctx.fillStyle="#fff",e.ctx.fillRect(0,0,r.width,r.height),u.oldIOS?e._createBase64ForOldIOS().then(i):e._createBase64().then(i)})}catch(o){throw new Error(o)}})},r.prototype._createBase64ForOldIOS=function(){var e=this,t=e.img,r=e.canvas,i=e.defaults,o=e.orientation;return new a(function(e){!function(){var a=[n(6)];(function(n){var a=new n(t);"5678".indexOf(o)>-1?a.render(r,{width:r.height,height:r.width,orientation:o}):a.render(r,{width:r.width,height:r.height,orientation:o}),e(r.toDataURL("image/jpeg",i.quality))}).apply(null,a)}()})},r.prototype._createBase64=function(){var e=this,t=e.resize,r=e.img,i=e.canvas,o=e.ctx,s=e.defaults,c=e.orientation;switch(c){case 3:o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;case 2:o.translate(t.width,0),o.scale(-1,1),o.drawImage(r,0,0,t.width,t.height);break;case 4:o.translate(t.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 5:o.translate(t.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 7:o.translate(t.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;default:o.drawImage(r,0,0,t.width,t.height)}return new a(function(e){u.oldAndroid||u.mQQBrowser||!navigator.userAgent?!function(){var t=[n(7)];(function(t){var n=new t,r=o.getImageData(0,0,i.width,i.height);e(n.encode(r,100*s.quality))}).apply(null,t)}():e(i.toDataURL("image/jpeg",s.quality))})},r.prototype._getResize=function(){var e=this,t=e.img,n=e.defaults,r=n.width,i=n.height,o=e.orientation,a={width:t.width,height:t.height};if("5678".indexOf(o)>-1&&(a.width=t.height,a.height=t.width),a.width=r/i?a.width>r&&(a.width=r,a.height=Math.ceil(r/s)):a.height>i&&(a.height=i,a.width=Math.ceil(i*s)):r?r=3264||a.height>=2448;)a.width*=.8,a.height*=.8;return a},window.lrz=function(e,t){return new r(e,t)},window.lrz.version="4.8.35",e.exports=window.lrz}])}); +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(6),n(7),e.exports=n(8)},function(e,t,n){(function(t){!function(n){function r(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(e,r(a,this),r(s,this))}function o(e){var t=this;return null===this._state?void this._deferreds.push(e):void f(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(a,this),r(s,this))}this._state=!0,this._value=e,u.call(this)}catch(n){s.call(this,n)}}function s(e){this._state=!1,this._value=e,u.call(this)}function u(){for(var e=0,t=this._deferreds.length;t>e;e++)o.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}var f="function"==typeof t&&t||function(e){setTimeout(e,1)},d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=this;return new i(function(r,i){o.call(n,new c(e,t,r,i))})},i.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&d(arguments[0])?arguments[0]:arguments);return new i(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var i=e.length,o=0;or;r++)e[r].then(t,n)})},i._setImmediateFn=function(e){f=e},i.prototype.always=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},"undefined"!=typeof e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(2).setImmediate)},function(e,t,n){(function(e,r){function i(e,t){this._id=e,this._clearFn=t}var o=n(3).nextTick,a=Function.prototype.apply,s=Array.prototype.slice,u={},c=0;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=c++,r=arguments.length<2?!1:s.call(arguments,1);return u[n]=!0,o(function(){u[n]&&(r?e.apply(null,r):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof r?r:function(e){delete u[e]}}).call(t,n(2).setImmediate,n(2).clearImmediate)},function(e,t){function n(){c=!1,a.length?u=a.concat(u):l=-1,u.length&&r()}function r(){if(!c){var e=setTimeout(n);c=!0;for(var t=u.length;t;){for(a=u,u=[];++l1)for(var n=1;na;a++)o[a]=n.charCodeAt(a);return i}function a(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){(200==this.status||0===this.status)&&t(this.response)},n.send()}function s(e,t){function n(n){var r=u(n),i=c(n);e.exifdata=r||{},e.iptcdata=i||{},t&&t.call(e)}if(e.src)if(/^data\:/i.test(e.src)){var r=o(e.src);n(r)}else if(/^blob\:/i.test(e.src)){var i=new FileReader;i.onload=function(e){n(e.target.result)},a(e.src,function(e){i.readAsArrayBuffer(e)})}else{var s=new XMLHttpRequest;s.onload=function(){200==this.status||0===this.status?n(s.response):t(new Error("Could not load image")),s=null},s.open("GET",e.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var i=new FileReader;i.onload=function(e){p&&console.log("Got file of length "+e.target.result.byteLength),n(e.target.result)},i.readAsArrayBuffer(e)}}function u(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n,r=2,i=e.byteLength;i>r;){if(255!=t.getUint8(r))return p&&console.log("Not a valid marker at offset "+r+", found: "+t.getUint8(r)),!1;if(n=t.getUint8(r+1),p&&console.log(n),225==n)return p&&console.log("Found 0xFFE1 marker"),g(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function c(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>n;){if(i(t,n)){var o=t.getUint8(n+7);o%2!==0&&(o+=1),0===o&&(o=4);var a=n+8+o,s=t.getUint16(n+6+o);return l(e,a,s)}n++}}function l(e,t,n){for(var r,i,o,a,s,u=new DataView(e),c={},l=t;t+n>l;)28===u.getUint8(l)&&2===u.getUint8(l+1)&&(a=u.getUint8(l+2),a in S&&(o=u.getInt16(l+3),s=o+5,i=S[a],r=h(u,l+5,o),c.hasOwnProperty(i)?c[i]instanceof Array?c[i].push(r):c[i]=[c[i],r]:c[i]=r)),l++;return c}function f(e,t,n,r,i){var o,a,s,u=e.getUint16(n,!i),c={};for(s=0;u>s;s++)o=n+12*s+2,a=r[e.getUint16(o,!i)],!a&&p&&console.log("Unknown tag: "+e.getUint16(o,!i)),c[a]=d(e,o,t,n,i);return c}function d(e,t,n,r,i){var o,a,s,u,c,l,f=e.getUint16(t+2,!i),d=e.getUint32(t+4,!i),g=e.getUint32(t+8,!i)+n;switch(f){case 1:case 7:if(1==d)return e.getUint8(t+8,!i);for(o=d>4?g:t+8,a=[],u=0;d>u;u++)a[u]=e.getUint8(o+u);return a;case 2:return o=d>4?g:t+8,h(e,o,d-1);case 3:if(1==d)return e.getUint16(t+8,!i);for(o=d>2?g:t+8,a=[],u=0;d>u;u++)a[u]=e.getUint16(o+2*u,!i);return a;case 4:if(1==d)return e.getUint32(t+8,!i);for(a=[],u=0;d>u;u++)a[u]=e.getUint32(g+4*u,!i);return a;case 5:if(1==d)return c=e.getUint32(g,!i),l=e.getUint32(g+4,!i),s=new Number(c/l),s.numerator=c,s.denominator=l,s;for(a=[],u=0;d>u;u++)c=e.getUint32(g+8*u,!i),l=e.getUint32(g+4+8*u,!i),a[u]=new Number(c/l),a[u].numerator=c,a[u].denominator=l;return a;case 9:if(1==d)return e.getInt32(t+8,!i);for(a=[],u=0;d>u;u++)a[u]=e.getInt32(g+4*u,!i);return a;case 10:if(1==d)return e.getInt32(g,!i)/e.getInt32(g+4,!i);for(a=[],u=0;d>u;u++)a[u]=e.getInt32(g+8*u,!i)/e.getInt32(g+4+8*u,!i);return a}}function h(e,t,n){var r,i="";for(r=t;t+n>r;r++)i+=String.fromCharCode(e.getUint8(r));return i}function g(e,t){if("Exif"!=h(e,t,4))return p&&console.log("Not valid EXIF data! "+h(e,t,4)),!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return p&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;n=!0}if(42!=e.getUint16(s+2,!n))return p&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var u=e.getUint32(s+4,!n);if(8>u)return p&&console.log("Not valid TIFF data! (First offset less than 8)",e.getUint32(s+4,!n)),!1;if(r=f(e,s,s+u,v,n),r.ExifIFDPointer){o=f(e,s,s+r.ExifIFDPointer,w,n);for(i in o){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=b[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=b.Components[o[i][0]]+b.Components[o[i][1]]+b.Components[o[i][2]]+b.Components[o[i][3]]}r[i]=o[i]}}if(r.GPSInfoIFDPointer){a=f(e,s,s+r.GPSInfoIFDPointer,y,n);for(i in a){switch(i){case"GPSVersionID":a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}r[i]=a[i]}}return r}var p=!1,m=function(e){return e instanceof m?e:this instanceof m?void(this.EXIFwrapped=e):new m(e)};"undefined"!=typeof e&&e.exports&&(t=e.exports=m),t.EXIF=m;var w=m.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},v=m.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},y=m.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},b=m.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}},S={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};m.getData=function(e,t){return(e instanceof Image||e instanceof HTMLImageElement)&&!e.complete?!1:(n(e)?t&&t.call(e):s(e,t),!0)},m.getTag=function(e,t){return n(e)?e.exifdata[t]:void 0},m.getAllTags=function(e){if(!n(e))return{};var t,r=e.exifdata,i={};for(t in r)r.hasOwnProperty(t)&&(i[t]=r[t]);return i},m.pretty=function(e){if(!n(e))return"";var t,r=e.exifdata,i="";for(t in r)r.hasOwnProperty(t)&&(i+="object"==typeof r[t]?r[t]instanceof Number?t+" : "+r[t]+" ["+r[t].numerator+"/"+r[t].denominator+"]\r\n":t+" : ["+r[t].length+" values]\r\n":t+" : "+r[t]+"\r\n");return i},m.readFromBinaryFile=function(e){return u(e)},r=[],i=function(){return m}.apply(t,r),!(void 0!==i&&(e.exports=i))}).call(this)},function(e,t,n){var r,i;!function(){function n(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var r=document.createElement("canvas");r.width=r.height=1;var i=r.getContext("2d");return i.drawImage(e,-t+1,0),0===i.getImageData(0,0,1,1).data[3]}return!1}function o(e,t,n){var r=document.createElement("canvas");r.width=1,r.height=n;var i=r.getContext("2d");i.drawImage(e,0,0);for(var o=i.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}var l=u/n;return 0===l?1:l}function a(e,t,n){var r=document.createElement("canvas");return s(e,r,t,n),r.toDataURL("image/jpeg",t.quality||.8)}function s(e,t,r,i){var a=e.naturalWidth,s=e.naturalHeight,c=r.width,l=r.height,f=t.getContext("2d");f.save(),u(t,f,c,l,r.orientation);var d=n(e);d&&(a/=2,s/=2);var h=1024,g=document.createElement("canvas");g.width=g.height=h;for(var p=g.getContext("2d"),m=i?o(e,a,s):1,w=Math.ceil(h*c/a),v=Math.ceil(h*l/s/m),y=0,b=0;s>y;){for(var S=0,I=0;a>S;)p.clearRect(0,0,h,h),p.drawImage(e,-S,-y),f.drawImage(g,0,0,h,h,I,b,w,v),S+=h,I+=w;y+=h,b+=v}f.restore(),g=p=null}function u(e,t,n,r,i){switch(i){case 5:case 6:case 7:case 8:e.width=r,e.height=n;break;default:e.width=n,e.height=r}switch(i){case 2:t.translate(n,0),t.scale(-1,1);break;case 3:t.translate(n,r),t.rotate(Math.PI);break;case 4:t.translate(0,r),t.scale(1,-1);break;case 5:t.rotate(.5*Math.PI),t.scale(1,-1);break;case 6:t.rotate(.5*Math.PI),t.translate(0,-r);break;case 7:t.rotate(.5*Math.PI),t.translate(n,-r),t.scale(-1,1);break;case 8:t.rotate(-.5*Math.PI),t.translate(-n,0)}}function c(e){if(window.Blob&&e instanceof Blob){var t=new Image,n=window.URL&&window.URL.createObjectURL?window.URL:window.webkitURL&&window.webkitURL.createObjectURL?window.webkitURL:null;if(!n)throw Error("No createObjectURL function found to create blob url");t.src=n.createObjectURL(e),this.blob=e,e=t}if(!e.naturalWidth&&!e.naturalHeight){var r=this;e.onload=function(){var e=r.imageLoadListeners;if(e){r.imageLoadListeners=null;for(var t=0,n=e.length;n>t;t++)e[t]()}},this.imageLoadListeners=[]}this.srcImage=e}c.prototype.render=function(e,t,n){if(this.imageLoadListeners){var r=this;return void this.imageLoadListeners.push(function(){r.render(e,t,n)})}t=t||{};var i=this.srcImage,o=i.src,u=o.length,c=i.naturalWidth,l=i.naturalHeight,f=t.width,d=t.height,h=t.maxWidth,g=t.maxHeight,p=this.blob&&"image/jpeg"===this.blob.type||0===o.indexOf("data:image/jpeg")||o.indexOf(".jpg")===u-4||o.indexOf(".jpeg")===u-5;f&&!d?d=l*f/c<<0:d&&!f?f=c*d/l<<0:(f=c,d=l),h&&f>h&&(f=h,d=l*f/c<<0),g&&d>g&&(d=g,f=c*d/l<<0);var m={width:f,height:d};for(var w in t)m[w]=t[w];var v=e.tagName.toLowerCase();"img"===v?e.src=a(this.srcImage,m,p):"canvas"===v&&s(this.srcImage,e,m,p),"function"==typeof this.onrender&&this.onrender(e),n&&n()},r=[],i=function(){return c}.apply(t,r),!(void 0!==i&&(e.exports=i))}()},function(e,t){function n(e){function t(e){for(var t=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],n=0;64>n;n++){var r=F((t[n]*e+50)/100);1>r?r=1:r>255&&(r=255),x[N[n]]=r}for(var i=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],o=0;64>o;o++){var a=F((i[o]*e+50)/100);1>a?a=1:a>255&&(a=255),D[N[o]]=a}for(var s=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],u=0,c=0;8>c;c++)for(var l=0;8>l;l++)U[u]=1/(x[N[u]]*s[c]*s[l]*8),C[u]=1/(D[N[u]]*s[c]*s[l]*8),u++}function n(e,t){for(var n=0,r=0,i=new Array,o=1;16>=o;o++){for(var a=1;a<=e[o];a++)i[t[r]]=[],i[t[r]][0]=n,i[t[r]][1]=o,r++,n++;n*=2}return i}function r(){y=n(W,H),b=n(V,X),S=n(z,q),I=n(Q,Y)}function i(){for(var e=1,t=2,n=1;15>=n;n++){for(var r=e;t>r;r++)A[32767+r]=n,T[32767+r]=[],T[32767+r][1]=n,T[32767+r][0]=r;for(var i=-(t-1);-e>=i;i++)A[32767+i]=n,T[32767+i]=[],T[32767+i][1]=n,T[32767+i][0]=t-1+i;e<<=1,t<<=1}}function o(){for(var e=0;256>e;e++)k[e]=19595*e,k[e+256>>0]=38470*e,k[e+512>>0]=7471*e+32768,k[e+768>>0]=-11059*e,k[e+1024>>0]=-21709*e,k[e+1280>>0]=32768*e+8421375,k[e+1536>>0]=-27439*e,k[e+1792>>0]=-5329*e}function a(e){for(var t=e[0],n=e[1]-1;n>=0;)t&1<O&&(255==G?(s(255),s(0)):s(G),O=7,G=0)}function s(e){M.push(j[e])}function u(e){s(e>>8&255),s(255&e)}function c(e,t){var n,r,i,o,a,s,u,c,l,f=0;const d=8,h=64;for(l=0;d>l;++l){n=e[f],r=e[f+1],i=e[f+2],o=e[f+3],a=e[f+4],s=e[f+5],u=e[f+6],c=e[f+7];var g=n+c,p=n-c,m=r+u,w=r-u,v=i+s,y=i-s,b=o+a,S=o-a,I=g+b,P=g-b,F=m+v,x=m-v;e[f]=I+F,e[f+4]=I-F;var D=.707106781*(x+P);e[f+2]=P+D,e[f+6]=P-D,I=S+y,F=y+w,x=w+p;var U=.382683433*(I-x),C=.5411961*I+U,T=1.306562965*x+U,A=.707106781*F,R=p+A,M=p-A;e[f+5]=M+C,e[f+3]=M-C,e[f+1]=R+T,e[f+7]=R-T,f+=8}for(f=0,l=0;d>l;++l){n=e[f],r=e[f+8],i=e[f+16],o=e[f+24],a=e[f+32],s=e[f+40],u=e[f+48],c=e[f+56];var G=n+c,O=n-c,_=r+u,B=r-u,E=i+s,j=i-s,k=o+a,N=o-a,W=G+k,H=G-k,z=_+E,q=_-E;e[f]=W+z,e[f+32]=W-z;var V=.707106781*(q+H);e[f+16]=H+V,e[f+48]=H-V,W=N+j,z=j+B,q=B+O;var X=.382683433*(W-q),Q=.5411961*W+X,Y=1.306562965*q+X,K=.707106781*z,J=O+K,Z=O-K;e[f+40]=Z+Q,e[f+24]=Z-Q,e[f+8]=J+Y,e[f+56]=J-Y,f++}var $;for(l=0;h>l;++l)$=e[l]*t[l],L[l]=$>0?$+.5|0:$-.5|0;return L}function l(){u(65504),u(16),s(74),s(70),s(73),s(70),s(0),s(1),s(1),s(0),u(1),u(1),s(0),s(0)}function f(e,t){u(65472),u(17),s(8),u(t),u(e),s(3),s(1),s(17),s(0),s(2),s(17),s(1),s(3),s(17),s(1)}function d(){u(65499),u(132),s(0);for(var e=0;64>e;e++)s(x[e]);s(1);for(var t=0;64>t;t++)s(D[t])}function h(){u(65476),u(418),s(0);for(var e=0;16>e;e++)s(W[e+1]);for(var t=0;11>=t;t++)s(H[t]);s(16);for(var n=0;16>n;n++)s(z[n+1]);for(var r=0;161>=r;r++)s(q[r]);s(1);for(var i=0;16>i;i++)s(V[i+1]);for(var o=0;11>=o;o++)s(X[o]);s(17);for(var a=0;16>a;a++)s(Q[a+1]);for(var c=0;161>=c;c++)s(Y[c])}function g(){u(65498),u(12),s(3),s(1),s(0),s(2),s(17),s(3),s(17),s(0),s(63),s(0)}function p(e,t,n,r,i){var o,s=i[0],u=i[240];const l=16,f=63,d=64;for(var h=c(e,t),g=0;d>g;++g)R[N[g]]=h[g];var p=R[0]-n;n=R[0],0==p?a(r[0]):(o=32767+p,a(r[A[o]]),a(T[o]));for(var m=63;m>0&&0==R[m];m--);if(0==m)return a(s),n;for(var w,v=1;m>=v;){for(var y=v;0==R[v]&&m>=v;++v);var b=v-y;if(b>=l){w=b>>4;for(var S=1;w>=S;++S)a(u);b=15&b}o=32767+R[v],a(i[(b<<4)+A[o]]),a(T[o]),v++}return m!=f&&a(s),n}function m(){for(var e=String.fromCharCode,t=0;256>t;t++)j[t]=e(t)}function w(e){if(0>=e&&(e=1),e>100&&(e=100),P!=e){var n=0;n=50>e?Math.floor(5e3/e):Math.floor(200-2*e),t(n),P=e}}function v(){var t=(new Date).getTime();e||(e=50),m(),r(),i(),o(),w(e);(new Date).getTime()-t}var y,b,S,I,P,F=(Math.round,Math.floor),x=new Array(64),D=new Array(64),U=new Array(64),C=new Array(64),T=new Array(65535),A=new Array(65535),L=new Array(64),R=new Array(64),M=[],G=0,O=7,_=new Array(64),B=new Array(64),E=new Array(64),j=new Array(256),k=new Array(2048),N=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],W=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],H=[0,1,2,3,4,5,6,7,8,9,10,11],z=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],q=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],V=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],X=[0,1,2,3,4,5,6,7,8,9,10,11],Q=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],Y=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];this.encode=function(e,t,n){var r=(new Date).getTime();t&&w(t),M=new Array,G=0,O=7,u(65496),l(),d(),f(e.width,e.height),h(),g();var i=0,o=0,s=0;G=0,O=7,this.encode.displayName="_encode_";for(var c,m,v,P,F,x,D,T,A,L=e.data,R=e.width,j=e.height,N=4*R,W=0;j>W;){for(c=0;N>c;){for(F=N*W+c,x=F,D=-1,T=0,A=0;64>A;A++)T=A>>3,D=4*(7&A),x=F+T*N+D,W+T>=j&&(x-=N*(W+1+T-j)),c+D>=N&&(x-=c+D-N+4),m=L[x++],v=L[x++],P=L[x++],_[A]=(k[m]+k[v+256>>0]+k[P+512>>0]>>16)-128,B[A]=(k[m+768>>0]+k[v+1024>>0]+k[P+1280>>0]>>16)-128,E[A]=(k[m+1280>>0]+k[v+1536>>0]+k[P+1792>>0]>>16)-128;i=p(_,U,i,y,S),o=p(B,C,o,b,I),s=p(E,C,s,b,I),c+=32}W+=8}if(O>=0){var H=[];H[1]=O+1,H[0]=(1<V;V++)q[V]=M[V].charCodeAt();M=[];(new Date).getTime()-r;return q}var X="data:image/jpeg;base64,"+btoa(M.join(""));M=[];(new Date).getTime()-r;return X},v()}e.exports=n},function(e,t,n){function r(e,t){var n=this;if(!e)throw new Error("没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7");t=t||{},n.defaults={width:null,height:null,fieldName:"file",quality:.7},n.file=e;for(var r in t)t.hasOwnProperty(r)&&(n.defaults[r]=t[r]);return this.init()}function i(e){var t=null;return t=e?[].filter.call(document.scripts,function(t){return-1!==t.src.indexOf(e)})[0]:document.scripts[document.scripts.length-1],t?t.src.substr(0,t.src.lastIndexOf("/")):null}function o(e){var t;t=e.split(",")[0].indexOf("base64")>=0?atob(e.split(",")[1]):unescape(e.split(",")[1]);for(var n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),i=0;ie.file.size?(i=new FormData,t=e.file):(i=new s.FormData,t=o(r)),i.append(e.defaults.fieldName,t,e.fileName.replace(/\..+/g,".jpg")),n({formData:i,fileLen:+t.size,base64:r,base64Len:r.length,origin:e.file,file:t});for(var a in e)e.hasOwnProperty(a)&&(e[a]=null);URL.revokeObjectURL(e.blob)})},!r&&(i.crossOrigin="*"),i.src=c})},r.prototype._getBase64=function(){var e=this,t=e.img,n=e.file,r=e.canvas;return new a(function(i){try{u.getData("object"==typeof n?n:t,function(){e.orientation=u.getTag(this,"Orientation"),e.resize=e._getResize(),e.ctx=r.getContext("2d"),r.width=e.resize.width,r.height=e.resize.height,e.ctx.fillStyle="#fff",e.ctx.fillRect(0,0,r.width,r.height),c.oldIOS?e._createBase64ForOldIOS().then(i):e._createBase64().then(i)})}catch(o){throw new Error(o)}})},r.prototype._createBase64ForOldIOS=function(){var e=this,t=e.img,r=e.canvas,i=e.defaults,o=e.orientation;return new a(function(e){!function(){var a=[n(6)];(function(n){var a=new n(t);"5678".indexOf(o)>-1?a.render(r,{width:r.height,height:r.width,orientation:o}):a.render(r,{width:r.width,height:r.height,orientation:o}),e(r.toDataURL("image/jpeg",i.quality))}).apply(null,a)}()})},r.prototype._createBase64=function(){var e=this,t=e.resize,r=e.img,i=e.canvas,o=e.ctx,s=e.defaults,u=e.orientation;switch(u){case 3:o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;case 2:o.translate(t.width,0),o.scale(-1,1),o.drawImage(r,0,0,t.width,t.height);break;case 4:o.translate(t.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 5:o.translate(t.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 7:o.translate(t.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;default:o.drawImage(r,0,0,t.width,t.height)}return new a(function(e){c.oldAndroid||c.mQQBrowser||!navigator.userAgent?!function(){var t=[n(7)];(function(t){var n=new t,r=o.getImageData(0,0,i.width,i.height);e(n.encode(r,100*s.quality))}).apply(null,t)}():e(i.toDataURL("image/jpeg",s.quality))})},r.prototype._getResize=function(){var e=this,t=e.img,n=e.defaults,r=n.width,i=n.height,o=e.orientation,a={width:t.width,height:t.height};if("5678".indexOf(o)>-1&&(a.width=t.height,a.height=t.width),a.width=r/i?a.width>r&&(a.width=r,a.height=Math.ceil(r/s)):a.height>i&&(a.height=i,a.width=Math.ceil(i*s)):r?r=3264||a.height>=2448;)a.width*=.8,a.height*=.8;return a},window.lrz=function(e,t){return new r(e,t)},window.lrz.version="4.9.36",e.exports=window.lrz}])}); //# sourceMappingURL=lrz.all.bundle.js.map \ No newline at end of file diff --git a/dist/lrz.all.bundle.js.map b/dist/lrz.all.bundle.js.map index 32dc536..a3958dd 100644 --- a/dist/lrz.all.bundle.js.map +++ b/dist/lrz.all.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///lrz.all.bundle.js","webpack:///webpack/bootstrap 827e1829811ae3346428?9c58","webpack:///./src/lrz.all.js","webpack:///src/lib/Promise.js?0bd1","webpack:///./~/timers-browserify/main.js?b088","webpack:///./~/process/browser.js?82e4","webpack:///src/lib/Blob.FormData.shim.js?fc98","webpack:///src/lib/exif.js?b270","webpack:///src/lib/megapix-image.js?f828","webpack:///src/lib/jpeg_encoder_basic.js?1bcc","webpack:///src/lrz.js"],"names":["root","factory","exports","module","define","amd","a","i","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","setImmediate","bind","fn","thisArg","apply","arguments","Promise","TypeError","_state","_value","_deferreds","doResolve","resolve","reject","handle","deferred","me","push","asap","cb","onFulfilled","onRejected","ret","e","newValue","then","finale","len","length","Handler","done","value","reason","ex","setTimeout","isArray","Array","Object","prototype","toString","all","args","slice","res","val","remaining","constructor","race","values","_setImmediateFn","always","callback","clearImmediate","Timeout","clearFn","_id","_clearFn","nextTick","Function","immediateIds","nextImmediateId","window","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","run","Item","fun","array","noop","process","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","Error","cwd","chdir","dir","umask","hasFormDataBug","bCheck","navigator","userAgent","indexOf","vendor","match","pop","test","FormDataShim","o","parts","boundary","join","Date","Math","random","oldSend","XMLHttpRequest","send","getParts","append","filename","Blob","type","fr","data","oXHR","BlobConstructor","FileReader","onload","result","onerror","err","readAsArrayBuffer","setRequestHeader","opts","bb","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","forEach","getBlob","undefined","FormData","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","imageHasData","img","base64ToArrayBuffer","base64","contentType","replace","binary","atob","buffer","ArrayBuffer","view","Uint8Array","charCodeAt","objectURLToBlob","url","http","open","responseType","status","response","getImageData","handleBinaryFile","binFile","findEXIFinJPEG","iptcdata","findIPTCinJPEG","exifdata","src","arrayBuffer","fileReader","target","blob","File","debug","console","log","byteLength","file","dataView","DataView","getUint8","marker","offset","readEXIFData","getUint16","isFieldSegmentStart","nameHeaderLength","startOffset","sectionLength","readIPTCData","fieldValue","fieldName","dataSize","segmentType","segmentSize","segmentStartPos","IptcFieldMap","getInt16","getStringFromDB","hasOwnProperty","readTags","tiffStart","dirStart","strings","bigEnd","entryOffset","tag","entries","tags","readTagValue","vals","n","numerator","denominator","numValues","getUint32","valueOffset","Number","getInt32","start","outstr","String","fromCharCode","exifData","gpsData","tiffOffset","firstIFDOffset","TiffTags","ExifIFDPointer","ExifTags","StringValues","Components","GPSInfoIFDPointer","GPSTags","EXIF","obj","EXIFwrapped","Tags",36864,40960,40961,40962,40963,37121,37122,37500,37510,40964,36867,36868,37520,37521,37522,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37396,37386,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,40965,42016,256,257,34665,34853,258,259,262,274,277,284,530,531,282,283,296,273,278,279,513,514,301,318,319,529,532,306,270,271,272,305,315,33432,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,"ExposureProgram","MeteringMode",255,"LightSource","Flash",31,32,65,69,71,73,77,79,89,93,95,"SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource",120,110,55,80,85,122,105,116,"getData","Image","HTMLImageElement","complete","getTag","getAllTags","pretty","strPretty","readFromBinaryFile","detectSubsampling","iw","naturalWidth","ih","naturalHeight","canvas","document","createElement","width","height","ctx","getContext","drawImage","detectVerticalSquash","sy","ey","py","alpha","ratio","renderImageToDataURL","options","doSquash","renderImageToCanvas","toDataURL","quality","save","transformCoordinate","orientation","subsampled","d","tmpCanvas","tmpCtx","vertSquashRatio","dw","ceil","dh","dy","sx","dx","clearRect","restore","translate","scale","rotate","PI","MegaPixImage","srcImage","URL","createObjectURL","webkitURL","_this","listeners","imageLoadListeners","render","srcLength","imgWidth","imgHeight","maxWidth","maxHeight","opt","k","tagName","toLowerCase","onrender","JPEGEncoder","l","M","ag","af","ae","aj","O","ah","ad","ai","K","ac","ab","ak","aa","Z","q","W","u","g","h","v","Y","G","w","E","T","J","B","z","V","C","X","t","F","j","N","aZ","ap","aL","aK","aJ","aI","aH","aD","aC","aB","aR","aN","aq","aY","aO","aX","aP","aU","aQ","aT","aS","an","am","al","ax","at","aw","au","av","ar","az","aG","aW","ao","aV","ay","aF","aM","a1","a0","aA","aE","P","b","r","D","H","I","L","S","y","R","x","floor","Q","getTime","round","A","f","U","encode","displayName","btoa","Lrz","that","defaults","init","getJsDir","script","filter","scripts","substr","lastIndexOf","dataURItoBlob","dataURI","byteString","split","unescape","mimeString","ia","BlobFormDataShim","exif","UA","ISOldIOS","exec","isOldAndroid","oldIOS","oldAndroid","iOS","android","mQQBrowser","fileIsString","fileIsBase64","fileName","_getBase64","formData","size","fileLen","base64Len","origin","revokeObjectURL","crossOrigin","resize","_getResize","fillStyle","fillRect","_createBase64ForOldIOS","_createBase64","__WEBPACK_AMD_REQUIRE_ARRAY__","mpImg","encoder","lrz"],"mappings":"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","file":"lrz.all.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(6);\n\t__webpack_require__(7);\n\t\n\tmodule.exports = __webpack_require__(8);\n\t\n\t\n\t/**\n\t *\n\t *    ┏┓   ┏┓\n\t *   ┏┛┻━━━┛┻┓\n\t *   ┃       ┃\n\t *   ┃   ━   ┃\n\t *   ┃ ┳┛ ┗┳ ┃\n\t *   ┃       ┃\n\t *   ┃   ┻   ┃\n\t *   ┃       ┃\n\t *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n\t *     ┃   ┃ 神兽保佑,代码无bug\n\t *     ┃   ┃\n\t *     ┃   ┗━━━┓\n\t *     ┃      ┣┓\n\t *     ┃     ┏┛\n\t *     ┗┓┓┏━┳┓┏┛\n\t *      ┃┫┫ ┃┫┫\n\t *      ┗┻┛ ┗┻┛\n\t *\n\t */\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\t\n\t // Use polyfill for setImmediate for performance gains\n\t var asap = (typeof setImmediate === 'function' && setImmediate) ||\n\t function (fn) {\n\t setTimeout(fn, 1);\n\t };\n\t\n\t // Polyfill for Function.prototype.bind\n\t function bind (fn, thisArg) {\n\t return function () {\n\t fn.apply(thisArg, arguments);\n\t }\n\t }\n\t\n\t var isArray = Array.isArray || function (value) {\n\t return Object.prototype.toString.call(value) === \"[object Array]\"\n\t };\n\t\n\t function Promise (fn) {\n\t if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t if (typeof fn !== 'function') throw new TypeError('not a function');\n\t this._state = null;\n\t this._value = null;\n\t this._deferreds = []\n\t\n\t doResolve(fn, bind(resolve, this), bind(reject, this))\n\t }\n\t\n\t function handle (deferred) {\n\t var me = this;\n\t if (this._state === null) {\n\t this._deferreds.push(deferred);\n\t return\n\t }\n\t asap(function () {\n\t var cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t if (cb === null) {\n\t (me._state ? deferred.resolve : deferred.reject)(me._value);\n\t return;\n\t }\n\t var ret;\n\t try {\n\t ret = cb(me._value);\n\t }\n\t catch (e) {\n\t deferred.reject(e);\n\t return;\n\t }\n\t deferred.resolve(ret);\n\t })\n\t }\n\t\n\t function resolve (newValue) {\n\t try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t if (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t var then = newValue.then;\n\t if (typeof then === 'function') {\n\t doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t return;\n\t }\n\t }\n\t this._state = true;\n\t this._value = newValue;\n\t finale.call(this);\n\t } catch (e) {\n\t reject.call(this, e);\n\t }\n\t }\n\t\n\t function reject (newValue) {\n\t this._state = false;\n\t this._value = newValue;\n\t finale.call(this);\n\t }\n\t\n\t function finale () {\n\t for (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t handle.call(this, this._deferreds[i]);\n\t }\n\t this._deferreds = null;\n\t }\n\t\n\t function Handler (onFulfilled, onRejected, resolve, reject) {\n\t this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t this.resolve = resolve;\n\t this.reject = reject;\n\t }\n\t\n\t /**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\t function doResolve (fn, onFulfilled, onRejected) {\n\t var done = false;\n\t try {\n\t fn(function (value) {\n\t if (done) return;\n\t done = true;\n\t onFulfilled(value);\n\t }, function (reason) {\n\t if (done) return;\n\t done = true;\n\t onRejected(reason);\n\t })\n\t } catch (ex) {\n\t if (done) return;\n\t done = true;\n\t onRejected(ex);\n\t }\n\t }\n\t\n\t Promise.prototype['catch'] = function (onRejected) {\n\t return this.then(null, onRejected);\n\t };\n\t\n\t Promise.prototype.then = function (onFulfilled, onRejected) {\n\t var me = this;\n\t return new Promise(function (resolve, reject) {\n\t handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t })\n\t };\n\t\n\t Promise.all = function () {\n\t var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\t\n\t return new Promise(function (resolve, reject) {\n\t if (args.length === 0) return resolve([]);\n\t var remaining = args.length;\n\t\n\t function res (i, val) {\n\t try {\n\t if (val && (typeof val === 'object' || typeof val === 'function')) {\n\t var then = val.then;\n\t if (typeof then === 'function') {\n\t then.call(val, function (val) {\n\t res(i, val)\n\t }, reject);\n\t return;\n\t }\n\t }\n\t args[i] = val;\n\t if (--remaining === 0) {\n\t resolve(args);\n\t }\n\t } catch (ex) {\n\t reject(ex);\n\t }\n\t }\n\t\n\t for (var i = 0; i < args.length; i++) {\n\t res(i, args[i]);\n\t }\n\t });\n\t };\n\t\n\t Promise.resolve = function (value) {\n\t if (value && typeof value === 'object' && value.constructor === Promise) {\n\t return value;\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t resolve(value);\n\t });\n\t };\n\t\n\t Promise.reject = function (value) {\n\t return new Promise(function (resolve, reject) {\n\t reject(value);\n\t });\n\t };\n\t\n\t Promise.race = function (values) {\n\t return new Promise(function (resolve, reject) {\n\t for (var i = 0, len = values.length; i < len; i++) {\n\t values[i].then(resolve, reject);\n\t }\n\t });\n\t };\n\t\n\t /**\n\t * Set the immediate function to execute callbacks\n\t * @param fn {function} Function to execute\n\t * @private\n\t */\n\t Promise._setImmediateFn = function _setImmediateFn (fn) {\n\t asap = fn;\n\t };\n\t\n\t\n\t Promise.prototype.always = function (callback) {\n\t var constructor = this.constructor;\n\t\n\t return this.then(function (value) {\n\t return constructor.resolve(callback()).then(function () {\n\t return value;\n\t });\n\t }, function (reason) {\n\t return constructor.resolve(callback()).then(function () {\n\t throw reason;\n\t });\n\t });\n\t };\n\t\n\t if (typeof module !== 'undefined' && module.exports) {\n\t module.exports = Promise;\n\t } else if (!root.Promise) {\n\t root.Promise = Promise;\n\t }\n\t\n\t})(this);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(3).nextTick;\n\tvar apply = Function.prototype.apply;\n\tvar slice = Array.prototype.slice;\n\tvar immediateIds = {};\n\tvar nextImmediateId = 0;\n\t\n\t// DOM APIs, for completeness\n\t\n\texports.setTimeout = function() {\n\t return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n\t};\n\texports.setInterval = function() {\n\t return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n\t};\n\texports.clearTimeout =\n\texports.clearInterval = function(timeout) { timeout.close(); };\n\t\n\tfunction Timeout(id, clearFn) {\n\t this._id = id;\n\t this._clearFn = clearFn;\n\t}\n\tTimeout.prototype.unref = Timeout.prototype.ref = function() {};\n\tTimeout.prototype.close = function() {\n\t this._clearFn.call(window, this._id);\n\t};\n\t\n\t// Does not start the time, just sets up the members needed.\n\texports.enroll = function(item, msecs) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = msecs;\n\t};\n\t\n\texports.unenroll = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = -1;\n\t};\n\t\n\texports._unrefActive = exports.active = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t\n\t var msecs = item._idleTimeout;\n\t if (msecs >= 0) {\n\t item._idleTimeoutId = setTimeout(function onTimeout() {\n\t if (item._onTimeout)\n\t item._onTimeout();\n\t }, msecs);\n\t }\n\t};\n\t\n\t// That's not how node.js implements it but the exposed api is the same.\n\texports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n\t var id = nextImmediateId++;\n\t var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\t\n\t immediateIds[id] = true;\n\t\n\t nextTick(function onNextTick() {\n\t if (immediateIds[id]) {\n\t // fn.call() is faster so we optimize for the common use-case\n\t // @see http://jsperf.com/call-apply-segu\n\t if (args) {\n\t fn.apply(null, args);\n\t } else {\n\t fn.call(null);\n\t }\n\t // Prevent ids from leaking\n\t exports.clearImmediate(id);\n\t }\n\t });\n\t\n\t return id;\n\t};\n\t\n\texports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n\t delete immediateIds[id];\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate, __webpack_require__(2).clearImmediate))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\t\n\tvar process = module.exports = {};\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = setTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t clearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t setTimeout(drainQueue, 0);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t//@source https://xts.so/demo/compress/index.html\n\t\n\t// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\n\tvar BlobConstructor = ((function () {\n\t try {\n\t new Blob();\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t})()) ? window.Blob : function (parts, opts) {\n\t var bb = new (\n\t window.BlobBuilder\n\t || window.WebKitBlobBuilder\n\t || window.MSBlobBuilder\n\t || window.MozBlobBuilder\n\t );\n\t parts.forEach(function (p) {\n\t bb.append(p);\n\t });\n\t\n\t return bb.getBlob(opts ? opts.type : undefined);\n\t};\n\t\n\t// Android上的AppleWebKit 534以前的内核存在一个Bug,\n\t// 导致FormData加入一个Blob对象后,上传的文件是0字节\n\tfunction hasFormDataBug () {\n\t var bCheck = ~navigator.userAgent.indexOf('Android')\n\t && ~navigator.vendor.indexOf('Google')\n\t && !~navigator.userAgent.indexOf('Chrome');\n\t\n\t // QQ X5浏览器也有这个BUG\n\t return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n\t}\n\tfunction FormDataShim () {\n\t var\n\t // Store a reference to this\n\t o = this,\n\t\n\t // Data to be sent\n\t parts = [],\n\t\n\t // Boundary parameter for separating the multipart values\n\t boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n\t\n\t // Store the current XHR send method so we can safely override it\n\t oldSend = XMLHttpRequest.prototype.send;\n\t this.getParts = function () {\n\t return parts.toString();\n\t };\n\t this.append = function (name, value, filename) {\n\t parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n\t\n\t if (value instanceof Blob) {\n\t parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n\t parts.push(value);\n\t }\n\t else {\n\t parts.push('\\r\\n\\r\\n' + value);\n\t }\n\t parts.push('\\r\\n');\n\t };\n\t\n\t XMLHttpRequest.prototype.send = function (val) {\n\t var fr,\n\t data,\n\t oXHR = this;\n\t\n\t if (val === o) {\n\t // Append the final boundary string\n\t parts.push('--' + boundary + '--\\r\\n');\n\t // Create the blob\n\t data = new BlobConstructor(parts);\n\t\n\t // Set up and read the blob into an array to be sent\n\t fr = new FileReader();\n\t fr.onload = function () {\n\t oldSend.call(oXHR, fr.result);\n\t };\n\t fr.onerror = function (err) {\n\t throw err;\n\t };\n\t fr.readAsArrayBuffer(data);\n\t\n\t // Set the multipart content type and boudary\n\t this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n\t XMLHttpRequest.prototype.send = oldSend;\n\t }\n\t else {\n\t oldSend.call(this, val);\n\t }\n\t };\n\t}\n\t\n\t\n\tmodule.exports = {\n\t Blob : BlobConstructor,\n\t FormData: hasFormDataBug() ? FormDataShim : FormData\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* exif */\n\t(function () {\n\t\n\t var debug = false;\n\t\n\t var root = this;\n\t\n\t var EXIF = function (obj) {\n\t if (obj instanceof EXIF) return obj;\n\t if (!(this instanceof EXIF)) return new EXIF(obj);\n\t this.EXIFwrapped = obj;\n\t };\n\t\n\t if (true) {\n\t if (typeof module !== 'undefined' && module.exports) {\n\t exports = module.exports = EXIF;\n\t }\n\t exports.EXIF = EXIF;\n\t } else {\n\t root.EXIF = EXIF;\n\t }\n\t\n\t var ExifTags = EXIF.Tags = {\n\t\n\t // version tags\n\t 0x9000: \"ExifVersion\", // EXIF version\n\t 0xA000: \"FlashpixVersion\", // Flashpix format version\n\t\n\t // colorspace tags\n\t 0xA001: \"ColorSpace\", // Color space information tag\n\t\n\t // image configuration\n\t 0xA002: \"PixelXDimension\", // Valid width of meaningful image\n\t 0xA003: \"PixelYDimension\", // Valid height of meaningful image\n\t 0x9101: \"ComponentsConfiguration\", // Information about channels\n\t 0x9102: \"CompressedBitsPerPixel\", // Compressed bits per pixel\n\t\n\t // user information\n\t 0x927C: \"MakerNote\", // Any desired information written by the manufacturer\n\t 0x9286: \"UserComment\", // Comments by user\n\t\n\t // related file\n\t 0xA004: \"RelatedSoundFile\", // Name of related sound file\n\t\n\t // date and time\n\t 0x9003: \"DateTimeOriginal\", // Date and time when the original image was generated\n\t 0x9004: \"DateTimeDigitized\", // Date and time when the image was stored digitally\n\t 0x9290: \"SubsecTime\", // Fractions of seconds for DateTime\n\t 0x9291: \"SubsecTimeOriginal\", // Fractions of seconds for DateTimeOriginal\n\t 0x9292: \"SubsecTimeDigitized\", // Fractions of seconds for DateTimeDigitized\n\t\n\t // picture-taking conditions\n\t 0x829A: \"ExposureTime\", // Exposure time (in seconds)\n\t 0x829D: \"FNumber\", // F number\n\t 0x8822: \"ExposureProgram\", // Exposure program\n\t 0x8824: \"SpectralSensitivity\", // Spectral sensitivity\n\t 0x8827: \"ISOSpeedRatings\", // ISO speed rating\n\t 0x8828: \"OECF\", // Optoelectric conversion factor\n\t 0x9201: \"ShutterSpeedValue\", // Shutter speed\n\t 0x9202: \"ApertureValue\", // Lens aperture\n\t 0x9203: \"BrightnessValue\", // Value of brightness\n\t 0x9204: \"ExposureBias\", // Exposure bias\n\t 0x9205: \"MaxApertureValue\", // Smallest F number of lens\n\t 0x9206: \"SubjectDistance\", // Distance to subject in meters\n\t 0x9207: \"MeteringMode\", // Metering mode\n\t 0x9208: \"LightSource\", // Kind of light source\n\t 0x9209: \"Flash\", // Flash status\n\t 0x9214: \"SubjectArea\", // Location and area of main subject\n\t 0x920A: \"FocalLength\", // Focal length of the lens in mm\n\t 0xA20B: \"FlashEnergy\", // Strobe energy in BCPS\n\t 0xA20C: \"SpatialFrequencyResponse\", //\n\t 0xA20E: \"FocalPlaneXResolution\", // Number of pixels in width direction per FocalPlaneResolutionUnit\n\t 0xA20F: \"FocalPlaneYResolution\", // Number of pixels in height direction per FocalPlaneResolutionUnit\n\t 0xA210: \"FocalPlaneResolutionUnit\", // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution\n\t 0xA214: \"SubjectLocation\", // Location of subject in image\n\t 0xA215: \"ExposureIndex\", // Exposure index selected on camera\n\t 0xA217: \"SensingMethod\", // Image sensor type\n\t 0xA300: \"FileSource\", // Image source (3 == DSC)\n\t 0xA301: \"SceneType\", // Scene type (1 == directly photographed)\n\t 0xA302: \"CFAPattern\", // Color filter array geometric pattern\n\t 0xA401: \"CustomRendered\", // Special processing\n\t 0xA402: \"ExposureMode\", // Exposure mode\n\t 0xA403: \"WhiteBalance\", // 1 = auto white balance, 2 = manual\n\t 0xA404: \"DigitalZoomRation\", // Digital zoom ratio\n\t 0xA405: \"FocalLengthIn35mmFilm\", // Equivalent foacl length assuming 35mm film camera (in mm)\n\t 0xA406: \"SceneCaptureType\", // Type of scene\n\t 0xA407: \"GainControl\", // Degree of overall image gain adjustment\n\t 0xA408: \"Contrast\", // Direction of contrast processing applied by camera\n\t 0xA409: \"Saturation\", // Direction of saturation processing applied by camera\n\t 0xA40A: \"Sharpness\", // Direction of sharpness processing applied by camera\n\t 0xA40B: \"DeviceSettingDescription\", //\n\t 0xA40C: \"SubjectDistanceRange\", // Distance to subject\n\t\n\t // other tags\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0xA420: \"ImageUniqueID\" // Identifier assigned uniquely to each image\n\t };\n\t\n\t var TiffTags = EXIF.TiffTags = {\n\t 0x0100: \"ImageWidth\",\n\t 0x0101: \"ImageHeight\",\n\t 0x8769: \"ExifIFDPointer\",\n\t 0x8825: \"GPSInfoIFDPointer\",\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0x0102: \"BitsPerSample\",\n\t 0x0103: \"Compression\",\n\t 0x0106: \"PhotometricInterpretation\",\n\t 0x0112: \"Orientation\",\n\t 0x0115: \"SamplesPerPixel\",\n\t 0x011C: \"PlanarConfiguration\",\n\t 0x0212: \"YCbCrSubSampling\",\n\t 0x0213: \"YCbCrPositioning\",\n\t 0x011A: \"XResolution\",\n\t 0x011B: \"YResolution\",\n\t 0x0128: \"ResolutionUnit\",\n\t 0x0111: \"StripOffsets\",\n\t 0x0116: \"RowsPerStrip\",\n\t 0x0117: \"StripByteCounts\",\n\t 0x0201: \"JPEGInterchangeFormat\",\n\t 0x0202: \"JPEGInterchangeFormatLength\",\n\t 0x012D: \"TransferFunction\",\n\t 0x013E: \"WhitePoint\",\n\t 0x013F: \"PrimaryChromaticities\",\n\t 0x0211: \"YCbCrCoefficients\",\n\t 0x0214: \"ReferenceBlackWhite\",\n\t 0x0132: \"DateTime\",\n\t 0x010E: \"ImageDescription\",\n\t 0x010F: \"Make\",\n\t 0x0110: \"Model\",\n\t 0x0131: \"Software\",\n\t 0x013B: \"Artist\",\n\t 0x8298: \"Copyright\"\n\t };\n\t\n\t var GPSTags = EXIF.GPSTags = {\n\t 0x0000: \"GPSVersionID\",\n\t 0x0001: \"GPSLatitudeRef\",\n\t 0x0002: \"GPSLatitude\",\n\t 0x0003: \"GPSLongitudeRef\",\n\t 0x0004: \"GPSLongitude\",\n\t 0x0005: \"GPSAltitudeRef\",\n\t 0x0006: \"GPSAltitude\",\n\t 0x0007: \"GPSTimeStamp\",\n\t 0x0008: \"GPSSatellites\",\n\t 0x0009: \"GPSStatus\",\n\t 0x000A: \"GPSMeasureMode\",\n\t 0x000B: \"GPSDOP\",\n\t 0x000C: \"GPSSpeedRef\",\n\t 0x000D: \"GPSSpeed\",\n\t 0x000E: \"GPSTrackRef\",\n\t 0x000F: \"GPSTrack\",\n\t 0x0010: \"GPSImgDirectionRef\",\n\t 0x0011: \"GPSImgDirection\",\n\t 0x0012: \"GPSMapDatum\",\n\t 0x0013: \"GPSDestLatitudeRef\",\n\t 0x0014: \"GPSDestLatitude\",\n\t 0x0015: \"GPSDestLongitudeRef\",\n\t 0x0016: \"GPSDestLongitude\",\n\t 0x0017: \"GPSDestBearingRef\",\n\t 0x0018: \"GPSDestBearing\",\n\t 0x0019: \"GPSDestDistanceRef\",\n\t 0x001A: \"GPSDestDistance\",\n\t 0x001B: \"GPSProcessingMethod\",\n\t 0x001C: \"GPSAreaInformation\",\n\t 0x001D: \"GPSDateStamp\",\n\t 0x001E: \"GPSDifferential\"\n\t };\n\t\n\t var StringValues = EXIF.StringValues = {\n\t ExposureProgram : {\n\t 0: \"Not defined\",\n\t 1: \"Manual\",\n\t 2: \"Normal program\",\n\t 3: \"Aperture priority\",\n\t 4: \"Shutter priority\",\n\t 5: \"Creative program\",\n\t 6: \"Action program\",\n\t 7: \"Portrait mode\",\n\t 8: \"Landscape mode\"\n\t },\n\t MeteringMode : {\n\t 0 : \"Unknown\",\n\t 1 : \"Average\",\n\t 2 : \"CenterWeightedAverage\",\n\t 3 : \"Spot\",\n\t 4 : \"MultiSpot\",\n\t 5 : \"Pattern\",\n\t 6 : \"Partial\",\n\t 255: \"Other\"\n\t },\n\t LightSource : {\n\t 0 : \"Unknown\",\n\t 1 : \"Daylight\",\n\t 2 : \"Fluorescent\",\n\t 3 : \"Tungsten (incandescent light)\",\n\t 4 : \"Flash\",\n\t 9 : \"Fine weather\",\n\t 10 : \"Cloudy weather\",\n\t 11 : \"Shade\",\n\t 12 : \"Daylight fluorescent (D 5700 - 7100K)\",\n\t 13 : \"Day white fluorescent (N 4600 - 5400K)\",\n\t 14 : \"Cool white fluorescent (W 3900 - 4500K)\",\n\t 15 : \"White fluorescent (WW 3200 - 3700K)\",\n\t 17 : \"Standard light A\",\n\t 18 : \"Standard light B\",\n\t 19 : \"Standard light C\",\n\t 20 : \"D55\",\n\t 21 : \"D65\",\n\t 22 : \"D75\",\n\t 23 : \"D50\",\n\t 24 : \"ISO studio tungsten\",\n\t 255: \"Other\"\n\t },\n\t Flash : {\n\t 0x0000: \"Flash did not fire\",\n\t 0x0001: \"Flash fired\",\n\t 0x0005: \"Strobe return light not detected\",\n\t 0x0007: \"Strobe return light detected\",\n\t 0x0009: \"Flash fired, compulsory flash mode\",\n\t 0x000D: \"Flash fired, compulsory flash mode, return light not detected\",\n\t 0x000F: \"Flash fired, compulsory flash mode, return light detected\",\n\t 0x0010: \"Flash did not fire, compulsory flash mode\",\n\t 0x0018: \"Flash did not fire, auto mode\",\n\t 0x0019: \"Flash fired, auto mode\",\n\t 0x001D: \"Flash fired, auto mode, return light not detected\",\n\t 0x001F: \"Flash fired, auto mode, return light detected\",\n\t 0x0020: \"No flash function\",\n\t 0x0041: \"Flash fired, red-eye reduction mode\",\n\t 0x0045: \"Flash fired, red-eye reduction mode, return light not detected\",\n\t 0x0047: \"Flash fired, red-eye reduction mode, return light detected\",\n\t 0x0049: \"Flash fired, compulsory flash mode, red-eye reduction mode\",\n\t 0x004D: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",\n\t 0x004F: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",\n\t 0x0059: \"Flash fired, auto mode, red-eye reduction mode\",\n\t 0x005D: \"Flash fired, auto mode, return light not detected, red-eye reduction mode\",\n\t 0x005F: \"Flash fired, auto mode, return light detected, red-eye reduction mode\"\n\t },\n\t SensingMethod : {\n\t 1: \"Not defined\",\n\t 2: \"One-chip color area sensor\",\n\t 3: \"Two-chip color area sensor\",\n\t 4: \"Three-chip color area sensor\",\n\t 5: \"Color sequential area sensor\",\n\t 7: \"Trilinear sensor\",\n\t 8: \"Color sequential linear sensor\"\n\t },\n\t SceneCaptureType : {\n\t 0: \"Standard\",\n\t 1: \"Landscape\",\n\t 2: \"Portrait\",\n\t 3: \"Night scene\"\n\t },\n\t SceneType : {\n\t 1: \"Directly photographed\"\n\t },\n\t CustomRendered : {\n\t 0: \"Normal process\",\n\t 1: \"Custom process\"\n\t },\n\t WhiteBalance : {\n\t 0: \"Auto white balance\",\n\t 1: \"Manual white balance\"\n\t },\n\t GainControl : {\n\t 0: \"None\",\n\t 1: \"Low gain up\",\n\t 2: \"High gain up\",\n\t 3: \"Low gain down\",\n\t 4: \"High gain down\"\n\t },\n\t Contrast : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t Saturation : {\n\t 0: \"Normal\",\n\t 1: \"Low saturation\",\n\t 2: \"High saturation\"\n\t },\n\t Sharpness : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t SubjectDistanceRange: {\n\t 0: \"Unknown\",\n\t 1: \"Macro\",\n\t 2: \"Close view\",\n\t 3: \"Distant view\"\n\t },\n\t FileSource : {\n\t 3: \"DSC\"\n\t },\n\t\n\t Components: {\n\t 0: \"\",\n\t 1: \"Y\",\n\t 2: \"Cb\",\n\t 3: \"Cr\",\n\t 4: \"R\",\n\t 5: \"G\",\n\t 6: \"B\"\n\t }\n\t };\n\t\n\t function addEvent (element, event, handler) {\n\t if (element.addEventListener) {\n\t element.addEventListener(event, handler, false);\n\t } else if (element.attachEvent) {\n\t element.attachEvent(\"on\" + event, handler);\n\t }\n\t }\n\t\n\t function imageHasData (img) {\n\t return !!(img.exifdata);\n\t }\n\t\n\t\n\t function base64ToArrayBuffer (base64, contentType) {\n\t contentType = contentType || base64.match(/^data\\:([^\\;]+)\\;base64,/mi)[1] || ''; // e.g. 'data:image/jpeg;base64,...' => 'image/jpeg'\n\t base64 = base64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n\t var binary = atob(base64);\n\t var len = binary.length;\n\t var buffer = new ArrayBuffer(len);\n\t var view = new Uint8Array(buffer);\n\t for (var i = 0; i < len; i++) {\n\t view[i] = binary.charCodeAt(i);\n\t }\n\t return buffer;\n\t }\n\t\n\t function objectURLToBlob (url, callback) {\n\t var http = new XMLHttpRequest();\n\t http.open(\"GET\", url, true);\n\t http.responseType = \"blob\";\n\t http.onload = function (e) {\n\t if (this.status == 200 || this.status === 0) {\n\t callback(this.response);\n\t }\n\t };\n\t http.send();\n\t }\n\t\n\t function getImageData (img, callback) {\n\t function handleBinaryFile (binFile) {\n\t var data = findEXIFinJPEG(binFile);\n\t var iptcdata = findIPTCinJPEG(binFile);\n\t img.exifdata = data || {};\n\t img.iptcdata = iptcdata || {};\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t\n\t if (img.src) {\n\t if (/^data\\:/i.test(img.src)) { // Data URI\n\t var arrayBuffer = base64ToArrayBuffer(img.src);\n\t handleBinaryFile(arrayBuffer);\n\t\n\t } else if (/^blob\\:/i.test(img.src)) { // Object URL\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t handleBinaryFile(e.target.result);\n\t };\n\t objectURLToBlob(img.src, function (blob) {\n\t fileReader.readAsArrayBuffer(blob);\n\t });\n\t } else {\n\t var http = new XMLHttpRequest();\n\t http.onload = function () {\n\t if (this.status == 200 || this.status === 0) {\n\t handleBinaryFile(http.response);\n\t } else {\n\t callback(new Error(\"Could not load image\"));\n\t }\n\t http = null;\n\t };\n\t http.open(\"GET\", img.src, true);\n\t http.responseType = \"arraybuffer\";\n\t http.send(null);\n\t }\n\t } else if (window.FileReader && (img instanceof window.Blob || img instanceof window.File)) {\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t if (debug) console.log(\"Got file of length \" + e.target.result.byteLength);\n\t handleBinaryFile(e.target.result);\n\t };\n\t\n\t fileReader.readAsArrayBuffer(img);\n\t }\n\t }\n\t\n\t function findEXIFinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength,\n\t marker;\n\t\n\t while (offset < length) {\n\t if (dataView.getUint8(offset) != 0xFF) {\n\t if (debug) console.log(\"Not a valid marker at offset \" + offset + \", found: \" + dataView.getUint8(offset));\n\t return false; // not a valid marker, something is wrong\n\t }\n\t\n\t marker = dataView.getUint8(offset + 1);\n\t if (debug) console.log(marker);\n\t\n\t // we could implement handling for other markers here,\n\t // but we're only looking for 0xFFE1 for EXIF data\n\t\n\t if (marker == 225) {\n\t if (debug) console.log(\"Found 0xFFE1 marker\");\n\t\n\t return readEXIFData(dataView, offset + 4, dataView.getUint16(offset + 2) - 2);\n\t\n\t // offset += 2 + file.getShortAt(offset+2, true);\n\t\n\t } else {\n\t offset += 2 + dataView.getUint16(offset + 2);\n\t }\n\t\n\t }\n\t\n\t }\n\t\n\t function findIPTCinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength;\n\t\n\t\n\t var isFieldSegmentStart = function (dataView, offset) {\n\t return (\n\t dataView.getUint8(offset) === 0x38 &&\n\t dataView.getUint8(offset + 1) === 0x42 &&\n\t dataView.getUint8(offset + 2) === 0x49 &&\n\t dataView.getUint8(offset + 3) === 0x4D &&\n\t dataView.getUint8(offset + 4) === 0x04 &&\n\t dataView.getUint8(offset + 5) === 0x04\n\t );\n\t };\n\t\n\t while (offset < length) {\n\t\n\t if (isFieldSegmentStart(dataView, offset)) {\n\t\n\t // Get the length of the name header (which is padded to an even number of bytes)\n\t var nameHeaderLength = dataView.getUint8(offset + 7);\n\t if (nameHeaderLength % 2 !== 0) nameHeaderLength += 1;\n\t // Check for pre photoshop 6 format\n\t if (nameHeaderLength === 0) {\n\t // Always 4\n\t nameHeaderLength = 4;\n\t }\n\t\n\t var startOffset = offset + 8 + nameHeaderLength;\n\t var sectionLength = dataView.getUint16(offset + 6 + nameHeaderLength);\n\t\n\t return readIPTCData(file, startOffset, sectionLength);\n\t\n\t break;\n\t\n\t }\n\t\n\t\n\t // Not the marker, continue searching\n\t offset++;\n\t\n\t }\n\t\n\t }\n\t\n\t var IptcFieldMap = {\n\t 0x78: 'caption',\n\t 0x6E: 'credit',\n\t 0x19: 'keywords',\n\t 0x37: 'dateCreated',\n\t 0x50: 'byline',\n\t 0x55: 'bylineTitle',\n\t 0x7A: 'captionWriter',\n\t 0x69: 'headline',\n\t 0x74: 'copyright',\n\t 0x0F: 'category'\n\t };\n\t\n\t function readIPTCData (file, startOffset, sectionLength) {\n\t var dataView = new DataView(file);\n\t var data = {};\n\t var fieldValue, fieldName, dataSize, segmentType, segmentSize;\n\t var segmentStartPos = startOffset;\n\t while (segmentStartPos < startOffset + sectionLength) {\n\t if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) {\n\t segmentType = dataView.getUint8(segmentStartPos + 2);\n\t if (segmentType in IptcFieldMap) {\n\t dataSize = dataView.getInt16(segmentStartPos + 3);\n\t segmentSize = dataSize + 5;\n\t fieldName = IptcFieldMap[segmentType];\n\t fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize);\n\t // Check if we already stored a value with this name\n\t if (data.hasOwnProperty(fieldName)) {\n\t // Value already stored with this name, create multivalue field\n\t if (data[fieldName] instanceof Array) {\n\t data[fieldName].push(fieldValue);\n\t }\n\t else {\n\t data[fieldName] = [data[fieldName], fieldValue];\n\t }\n\t }\n\t else {\n\t data[fieldName] = fieldValue;\n\t }\n\t }\n\t\n\t }\n\t segmentStartPos++;\n\t }\n\t return data;\n\t }\n\t\n\t\n\t function readTags (file, tiffStart, dirStart, strings, bigEnd) {\n\t var entries = file.getUint16(dirStart, !bigEnd),\n\t tags = {},\n\t entryOffset, tag,\n\t i;\n\t\n\t for (i = 0; i < entries; i++) {\n\t entryOffset = dirStart + i * 12 + 2;\n\t tag = strings[file.getUint16(entryOffset, !bigEnd)];\n\t if (!tag && debug) console.log(\"Unknown tag: \" + file.getUint16(entryOffset, !bigEnd));\n\t tags[tag] = readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd);\n\t }\n\t return tags;\n\t }\n\t\n\t\n\t function readTagValue (file, entryOffset, tiffStart, dirStart, bigEnd) {\n\t var type = file.getUint16(entryOffset + 2, !bigEnd),\n\t numValues = file.getUint32(entryOffset + 4, !bigEnd),\n\t valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart,\n\t offset,\n\t vals, val, n,\n\t numerator, denominator;\n\t\n\t switch (type) {\n\t case 1: // byte, 8-bit unsigned int\n\t case 7: // undefined, 8-bit byte, value depending on field\n\t if (numValues == 1) {\n\t return file.getUint8(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint8(offset + n);\n\t }\n\t return vals;\n\t }\n\t\n\t case 2: // ascii, 8-bit byte\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t return getStringFromDB(file, offset, numValues - 1);\n\t\n\t case 3: // short, 16 bit int\n\t if (numValues == 1) {\n\t return file.getUint16(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 2 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint16(offset + 2 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 4: // long, 32 bit int\n\t if (numValues == 1) {\n\t return file.getUint32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 5: // rational = two long values, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t numerator = file.getUint32(valueOffset, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4, !bigEnd);\n\t val = new Number(numerator / denominator);\n\t val.numerator = numerator;\n\t val.denominator = denominator;\n\t return val;\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t numerator = file.getUint32(valueOffset + 8 * n, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4 + 8 * n, !bigEnd);\n\t vals[n] = new Number(numerator / denominator);\n\t vals[n].numerator = numerator;\n\t vals[n].denominator = denominator;\n\t }\n\t return vals;\n\t }\n\t\n\t case 9: // slong, 32 bit signed int\n\t if (numValues == 1) {\n\t return file.getInt32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 10: // signed rational, two slongs, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t return file.getInt32(valueOffset, !bigEnd) / file.getInt32(valueOffset + 4, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 8 * n, !bigEnd) / file.getInt32(valueOffset + 4 + 8 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t }\n\t }\n\t\n\t function getStringFromDB (buffer, start, length) {\n\t var outstr = \"\", n;\n\t for (n = start; n < start + length; n++) {\n\t outstr += String.fromCharCode(buffer.getUint8(n));\n\t }\n\t return outstr;\n\t }\n\t\n\t function readEXIFData (file, start) {\n\t if (getStringFromDB(file, start, 4) != \"Exif\") {\n\t if (debug) console.log(\"Not valid EXIF data! \" + getStringFromDB(file, start, 4));\n\t return false;\n\t }\n\t\n\t var bigEnd,\n\t tags, tag,\n\t exifData, gpsData,\n\t tiffOffset = start + 6;\n\t\n\t // test for TIFF validity and endianness\n\t if (file.getUint16(tiffOffset) == 0x4949) {\n\t bigEnd = false;\n\t } else if (file.getUint16(tiffOffset) == 0x4D4D) {\n\t bigEnd = true;\n\t } else {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\");\n\t return false;\n\t }\n\t\n\t if (file.getUint16(tiffOffset + 2, !bigEnd) != 0x002A) {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x002A)\");\n\t return false;\n\t }\n\t\n\t var firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);\n\t\n\t if (firstIFDOffset < 0x00000008) {\n\t if (debug) console.log(\"Not valid TIFF data! (First offset less than 8)\", file.getUint32(tiffOffset + 4, !bigEnd));\n\t return false;\n\t }\n\t\n\t tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);\n\t\n\t if (tags.ExifIFDPointer) {\n\t exifData = readTags(file, tiffOffset, tiffOffset + tags.ExifIFDPointer, ExifTags, bigEnd);\n\t for (tag in exifData) {\n\t switch (tag) {\n\t case \"LightSource\" :\n\t case \"Flash\" :\n\t case \"MeteringMode\" :\n\t case \"ExposureProgram\" :\n\t case \"SensingMethod\" :\n\t case \"SceneCaptureType\" :\n\t case \"SceneType\" :\n\t case \"CustomRendered\" :\n\t case \"WhiteBalance\" :\n\t case \"GainControl\" :\n\t case \"Contrast\" :\n\t case \"Saturation\" :\n\t case \"Sharpness\" :\n\t case \"SubjectDistanceRange\" :\n\t case \"FileSource\" :\n\t exifData[tag] = StringValues[tag][exifData[tag]];\n\t break;\n\t\n\t case \"ExifVersion\" :\n\t case \"FlashpixVersion\" :\n\t exifData[tag] = String.fromCharCode(exifData[tag][0], exifData[tag][1], exifData[tag][2], exifData[tag][3]);\n\t break;\n\t\n\t case \"ComponentsConfiguration\" :\n\t exifData[tag] =\n\t StringValues.Components[exifData[tag][0]] +\n\t StringValues.Components[exifData[tag][1]] +\n\t StringValues.Components[exifData[tag][2]] +\n\t StringValues.Components[exifData[tag][3]];\n\t break;\n\t }\n\t tags[tag] = exifData[tag];\n\t }\n\t }\n\t\n\t if (tags.GPSInfoIFDPointer) {\n\t gpsData = readTags(file, tiffOffset, tiffOffset + tags.GPSInfoIFDPointer, GPSTags, bigEnd);\n\t for (tag in gpsData) {\n\t switch (tag) {\n\t case \"GPSVersionID\" :\n\t gpsData[tag] = gpsData[tag][0] +\n\t \".\" + gpsData[tag][1] +\n\t \".\" + gpsData[tag][2] +\n\t \".\" + gpsData[tag][3];\n\t break;\n\t }\n\t tags[tag] = gpsData[tag];\n\t }\n\t }\n\t\n\t return tags;\n\t }\n\t\n\t EXIF.getData = function (img, callback) {\n\t if ((img instanceof Image || img instanceof HTMLImageElement) && !img.complete) return false;\n\t\n\t if (!imageHasData(img)) {\n\t getImageData(img, callback);\n\t } else {\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t return true;\n\t }\n\t\n\t EXIF.getTag = function (img, tag) {\n\t if (!imageHasData(img)) return;\n\t return img.exifdata[tag];\n\t }\n\t\n\t EXIF.getAllTags = function (img) {\n\t if (!imageHasData(img)) return {};\n\t var a,\n\t data = img.exifdata,\n\t tags = {};\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t tags[a] = data[a];\n\t }\n\t }\n\t return tags;\n\t }\n\t\n\t EXIF.pretty = function (img) {\n\t if (!imageHasData(img)) return \"\";\n\t var a,\n\t data = img.exifdata,\n\t strPretty = \"\";\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t if (typeof data[a] == \"object\") {\n\t if (data[a] instanceof Number) {\n\t strPretty += a + \" : \" + data[a] + \" [\" + data[a].numerator + \"/\" + data[a].denominator + \"]\\r\\n\";\n\t } else {\n\t strPretty += a + \" : [\" + data[a].length + \" values]\\r\\n\";\n\t }\n\t } else {\n\t strPretty += a + \" : \" + data[a] + \"\\r\\n\";\n\t }\n\t }\n\t }\n\t return strPretty;\n\t }\n\t\n\t EXIF.readFromBinaryFile = function (file) {\n\t return findEXIFinJPEG(file);\n\t }\n\t\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return EXIF;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t }\n\t}.call(this));\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n\t * Mega pixel image rendering library for iOS6 Safari\n\t *\n\t * Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel),\n\t * which causes unexpected subsampling when drawing it in canvas.\n\t * By using this library, you can safely render the image with proper stretching.\n\t *\n\t * Copyright (c) 2012 Shinichi Tomita \n\t * Released under the MIT license\n\t */\n\t(function () {\n\t\n\t /**\n\t * Detect subsampling in loaded image.\n\t * In iOS, larger images than 2M pixels may be subsampled in rendering.\n\t */\n\t function detectSubsampling (img) {\n\t var iw = img.naturalWidth, ih = img.naturalHeight;\n\t if (iw * ih > 1024 * 1024) { // subsampling may happen over megapixel image\n\t var canvas = document.createElement('canvas');\n\t canvas.width = canvas.height = 1;\n\t var ctx = canvas.getContext('2d');\n\t ctx.drawImage(img, -iw + 1, 0);\n\t // subsampled image becomes half smaller in rendering size.\n\t // check alpha channel value to confirm image is covering edge pixel or not.\n\t // if alpha value is 0 image is not covering, hence subsampled.\n\t return ctx.getImageData(0, 0, 1, 1).data[3] === 0;\n\t } else {\n\t return false;\n\t }\n\t }\n\t\n\t /**\n\t * Detecting vertical squash in loaded image.\n\t * Fixes a bug which squash image vertically while drawing into canvas for some images.\n\t */\n\t function detectVerticalSquash (img, iw, ih) {\n\t var canvas = document.createElement('canvas');\n\t canvas.width = 1;\n\t canvas.height = ih;\n\t var ctx = canvas.getContext('2d');\n\t ctx.drawImage(img, 0, 0);\n\t var data = ctx.getImageData(0, 0, 1, ih).data;\n\t // search image edge pixel position in case it is squashed vertically.\n\t var sy = 0;\n\t var ey = ih;\n\t var py = ih;\n\t while (py > sy) {\n\t var alpha = data[(py - 1) * 4 + 3];\n\t if (alpha === 0) {\n\t ey = py;\n\t } else {\n\t sy = py;\n\t }\n\t py = (ey + sy) >> 1;\n\t }\n\t var ratio = (py / ih);\n\t return (ratio === 0) ? 1 : ratio;\n\t }\n\t\n\t /**\n\t * Rendering image element (with resizing) and get its data URL\n\t */\n\t function renderImageToDataURL (img, options, doSquash) {\n\t var canvas = document.createElement('canvas');\n\t renderImageToCanvas(img, canvas, options, doSquash);\n\t return canvas.toDataURL(\"image/jpeg\", options.quality || 0.8);\n\t }\n\t\n\t /**\n\t * Rendering image element (with resizing) into the canvas element\n\t */\n\t function renderImageToCanvas (img, canvas, options, doSquash) {\n\t var iw = img.naturalWidth, ih = img.naturalHeight;\n\t var width = options.width, height = options.height;\n\t var ctx = canvas.getContext('2d');\n\t ctx.save();\n\t transformCoordinate(canvas, ctx, width, height, options.orientation);\n\t var subsampled = detectSubsampling(img);\n\t if (subsampled) {\n\t iw /= 2;\n\t ih /= 2;\n\t }\n\t var d = 1024; // size of tiling canvas\n\t var tmpCanvas = document.createElement('canvas');\n\t tmpCanvas.width = tmpCanvas.height = d;\n\t var tmpCtx = tmpCanvas.getContext('2d');\n\t var vertSquashRatio = doSquash ? detectVerticalSquash(img, iw, ih) : 1;\n\t var dw = Math.ceil(d * width / iw);\n\t var dh = Math.ceil(d * height / ih / vertSquashRatio);\n\t var sy = 0;\n\t var dy = 0;\n\t while (sy < ih) {\n\t var sx = 0;\n\t var dx = 0;\n\t while (sx < iw) {\n\t tmpCtx.clearRect(0, 0, d, d);\n\t tmpCtx.drawImage(img, -sx, -sy);\n\t ctx.drawImage(tmpCanvas, 0, 0, d, d, dx, dy, dw, dh);\n\t sx += d;\n\t dx += dw;\n\t }\n\t sy += d;\n\t dy += dh;\n\t }\n\t ctx.restore();\n\t tmpCanvas = tmpCtx = null;\n\t }\n\t\n\t /**\n\t * Transform canvas coordination according to specified frame size and orientation\n\t * Orientation value is from EXIF tag\n\t */\n\t function transformCoordinate (canvas, ctx, width, height, orientation) {\n\t switch (orientation) {\n\t case 5:\n\t case 6:\n\t case 7:\n\t case 8:\n\t canvas.width = height;\n\t canvas.height = width;\n\t break;\n\t default:\n\t canvas.width = width;\n\t canvas.height = height;\n\t }\n\t switch (orientation) {\n\t case 2:\n\t // horizontal flip\n\t ctx.translate(width, 0);\n\t ctx.scale(-1, 1);\n\t break;\n\t case 3:\n\t // 180 rotate left\n\t ctx.translate(width, height);\n\t ctx.rotate(Math.PI);\n\t break;\n\t case 4:\n\t // vertical flip\n\t ctx.translate(0, height);\n\t ctx.scale(1, -1);\n\t break;\n\t case 5:\n\t // vertical flip + 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.scale(1, -1);\n\t break;\n\t case 6:\n\t // 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.translate(0, -height);\n\t break;\n\t case 7:\n\t // horizontal flip + 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.translate(width, -height);\n\t ctx.scale(-1, 1);\n\t break;\n\t case 8:\n\t // 90 rotate left\n\t ctx.rotate(-0.5 * Math.PI);\n\t ctx.translate(-width, 0);\n\t break;\n\t default:\n\t break;\n\t }\n\t }\n\t\n\t\n\t /**\n\t * MegaPixImage class\n\t */\n\t function MegaPixImage (srcImage) {\n\t if (window.Blob && srcImage instanceof Blob) {\n\t var img = new Image();\n\t var URL = window.URL && window.URL.createObjectURL ? window.URL :\n\t window.webkitURL && window.webkitURL.createObjectURL ? window.webkitURL :\n\t null;\n\t if (!URL) {\n\t throw Error(\"No createObjectURL function found to create blob url\");\n\t }\n\t img.src = URL.createObjectURL(srcImage);\n\t this.blob = srcImage;\n\t srcImage = img;\n\t }\n\t if (!srcImage.naturalWidth && !srcImage.naturalHeight) {\n\t var _this = this;\n\t srcImage.onload = function () {\n\t var listeners = _this.imageLoadListeners;\n\t if (listeners) {\n\t _this.imageLoadListeners = null;\n\t for (var i = 0, len = listeners.length; i < len; i++) {\n\t listeners[i]();\n\t }\n\t }\n\t };\n\t this.imageLoadListeners = [];\n\t }\n\t this.srcImage = srcImage;\n\t }\n\t\n\t /**\n\t * Rendering megapix image into specified target element\n\t */\n\t MegaPixImage.prototype.render = function (target, options, callback) {\n\t if (this.imageLoadListeners) {\n\t var _this = this;\n\t this.imageLoadListeners.push(function () {\n\t _this.render(target, options, callback);\n\t });\n\t return;\n\t }\n\t options = options || {};\n\t var srcImage = this.srcImage,\n\t src = srcImage.src,\n\t srcLength = src.length,\n\t imgWidth = srcImage.naturalWidth, imgHeight = srcImage.naturalHeight,\n\t width = options.width, height = options.height,\n\t maxWidth = options.maxWidth, maxHeight = options.maxHeight,\n\t doSquash = this.blob && this.blob.type === 'image/jpeg' ||\n\t src.indexOf('data:image/jpeg') === 0 ||\n\t src.indexOf('.jpg') === srcLength - 4 ||\n\t src.indexOf('.jpeg') === srcLength - 5;\n\t if (width && !height) {\n\t height = (imgHeight * width / imgWidth) << 0;\n\t } else if (height && !width) {\n\t width = (imgWidth * height / imgHeight) << 0;\n\t } else {\n\t width = imgWidth;\n\t height = imgHeight;\n\t }\n\t if (maxWidth && width > maxWidth) {\n\t width = maxWidth;\n\t height = (imgHeight * width / imgWidth) << 0;\n\t }\n\t if (maxHeight && height > maxHeight) {\n\t height = maxHeight;\n\t width = (imgWidth * height / imgHeight) << 0;\n\t }\n\t var opt = {width: width, height: height};\n\t for (var k in options) opt[k] = options[k];\n\t\n\t var tagName = target.tagName.toLowerCase();\n\t if (tagName === 'img') {\n\t target.src = renderImageToDataURL(this.srcImage, opt, doSquash);\n\t } else if (tagName === 'canvas') {\n\t renderImageToCanvas(this.srcImage, target, opt, doSquash);\n\t }\n\t if (typeof this.onrender === 'function') {\n\t this.onrender(target);\n\t }\n\t if (callback) {\n\t callback();\n\t }\n\t };\n\t\n\t /**\n\t * Export class to global\n\t */\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return MegaPixImage;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // for AMD loader\n\t } else {\n\t this.MegaPixImage = MegaPixImage;\n\t }\n\t\n\t})();\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\tfunction JPEGEncoder (l) {\n\t var o = this;\n\t var s = Math.round;\n\t var k = Math.floor;\n\t var O = new Array(64);\n\t var K = new Array(64);\n\t var d = new Array(64);\n\t var Z = new Array(64);\n\t var u;\n\t var h;\n\t var G;\n\t var T;\n\t var n = new Array(65535);\n\t var m = new Array(65535);\n\t var P = new Array(64);\n\t var S = new Array(64);\n\t var j = [];\n\t var t = 0;\n\t var a = 7;\n\t var A = new Array(64);\n\t var f = new Array(64);\n\t var U = new Array(64);\n\t var e = new Array(256);\n\t var C = new Array(2048);\n\t var x;\n\t var i = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\n\t var g = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];\n\t var c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t var w = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125];\n\t var E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\t var v = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0];\n\t var Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t var J = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119];\n\t var B = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\t\n\t function M (ag) {\n\t var af = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99];\n\t for (var ae = 0; ae < 64; ae++) {\n\t var aj = k((af[ae] * ag + 50) / 100);\n\t if (aj < 1) {\n\t aj = 1\n\t } else {\n\t if (aj > 255) {\n\t aj = 255\n\t }\n\t }\n\t O[i[ae]] = aj\n\t }\n\t var ah = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99];\n\t for (var ad = 0; ad < 64; ad++) {\n\t var ai = k((ah[ad] * ag + 50) / 100);\n\t if (ai < 1) {\n\t ai = 1\n\t } else {\n\t if (ai > 255) {\n\t ai = 255\n\t }\n\t }\n\t K[i[ad]] = ai\n\t }\n\t var ac = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n\t var ab = 0;\n\t for (var ak = 0; ak < 8; ak++) {\n\t for (var aa = 0; aa < 8; aa++) {\n\t d[ab] = (1 / (O[i[ab]] * ac[ak] * ac[aa] * 8));\n\t Z[ab] = (1 / (K[i[ab]] * ac[ak] * ac[aa] * 8));\n\t ab++\n\t }\n\t }\n\t }\n\t\n\t function q (ae, aa) {\n\t var ad = 0;\n\t var ag = 0;\n\t var af = new Array();\n\t for (var ab = 1; ab <= 16; ab++) {\n\t for (var ac = 1; ac <= ae[ab]; ac++) {\n\t af[aa[ag]] = [];\n\t af[aa[ag]][0] = ad;\n\t af[aa[ag]][1] = ab;\n\t ag++;\n\t ad++\n\t }\n\t ad *= 2\n\t }\n\t return af\n\t }\n\t\n\t function W () {\n\t u = q(g, c);\n\t h = q(v, Y);\n\t G = q(w, E);\n\t T = q(J, B)\n\t }\n\t\n\t function z () {\n\t var ac = 1;\n\t var ab = 2;\n\t for (var aa = 1; aa <= 15; aa++) {\n\t for (var ad = ac; ad < ab; ad++) {\n\t m[32767 + ad] = aa;\n\t n[32767 + ad] = [];\n\t n[32767 + ad][1] = aa;\n\t n[32767 + ad][0] = ad\n\t }\n\t for (var ae = -(ab - 1); ae <= -ac; ae++) {\n\t m[32767 + ae] = aa;\n\t n[32767 + ae] = [];\n\t n[32767 + ae][1] = aa;\n\t n[32767 + ae][0] = ab - 1 + ae\n\t }\n\t ac <<= 1;\n\t ab <<= 1\n\t }\n\t }\n\t\n\t function V () {\n\t for (var aa = 0; aa < 256; aa++) {\n\t C[aa] = 19595 * aa;\n\t C[(aa + 256) >> 0] = 38470 * aa;\n\t C[(aa + 512) >> 0] = 7471 * aa + 32768;\n\t C[(aa + 768) >> 0] = -11059 * aa;\n\t C[(aa + 1024) >> 0] = -21709 * aa;\n\t C[(aa + 1280) >> 0] = 32768 * aa + 8421375;\n\t C[(aa + 1536) >> 0] = -27439 * aa;\n\t C[(aa + 1792) >> 0] = -5329 * aa\n\t }\n\t }\n\t\n\t function X (aa) {\n\t var ac = aa[0];\n\t var ab = aa[1] - 1;\n\t while (ab >= 0) {\n\t if (ac & (1 << ab)) {\n\t t |= (1 << a)\n\t }\n\t ab--;\n\t a--;\n\t if (a < 0) {\n\t if (t == 255) {\n\t F(255);\n\t F(0)\n\t } else {\n\t F(t)\n\t }\n\t a = 7;\n\t t = 0\n\t }\n\t }\n\t }\n\t\n\t function F (aa) {\n\t j.push(e[aa])\n\t }\n\t\n\t function p (aa) {\n\t F((aa >> 8) & 255);\n\t F((aa) & 255)\n\t }\n\t\n\t function N (aZ, ap) {\n\t var aL, aK, aJ, aI, aH, aD, aC, aB;\n\t var aN = 0;\n\t var aR;\n\t const aq = 8;\n\t const ai = 64;\n\t for (aR = 0; aR < aq; ++aR) {\n\t aL = aZ[aN];\n\t aK = aZ[aN + 1];\n\t aJ = aZ[aN + 2];\n\t aI = aZ[aN + 3];\n\t aH = aZ[aN + 4];\n\t aD = aZ[aN + 5];\n\t aC = aZ[aN + 6];\n\t aB = aZ[aN + 7];\n\t var aY = aL + aB;\n\t var aO = aL - aB;\n\t var aX = aK + aC;\n\t var aP = aK - aC;\n\t var aU = aJ + aD;\n\t var aQ = aJ - aD;\n\t var aT = aI + aH;\n\t var aS = aI - aH;\n\t var an = aY + aT;\n\t var ak = aY - aT;\n\t var am = aX + aU;\n\t var al = aX - aU;\n\t aZ[aN] = an + am;\n\t aZ[aN + 4] = an - am;\n\t var ax = (al + ak) * 0.707106781;\n\t aZ[aN + 2] = ak + ax;\n\t aZ[aN + 6] = ak - ax;\n\t an = aS + aQ;\n\t am = aQ + aP;\n\t al = aP + aO;\n\t var at = (an - al) * 0.382683433;\n\t var aw = 0.5411961 * an + at;\n\t var au = 1.306562965 * al + at;\n\t var av = am * 0.707106781;\n\t var ah = aO + av;\n\t var ag = aO - av;\n\t aZ[aN + 5] = ag + aw;\n\t aZ[aN + 3] = ag - aw;\n\t aZ[aN + 1] = ah + au;\n\t aZ[aN + 7] = ah - au;\n\t aN += 8\n\t }\n\t aN = 0;\n\t for (aR = 0; aR < aq; ++aR) {\n\t aL = aZ[aN];\n\t aK = aZ[aN + 8];\n\t aJ = aZ[aN + 16];\n\t aI = aZ[aN + 24];\n\t aH = aZ[aN + 32];\n\t aD = aZ[aN + 40];\n\t aC = aZ[aN + 48];\n\t aB = aZ[aN + 56];\n\t var ar = aL + aB;\n\t var aj = aL - aB;\n\t var az = aK + aC;\n\t var ae = aK - aC;\n\t var aG = aJ + aD;\n\t var ac = aJ - aD;\n\t var aW = aI + aH;\n\t var aa = aI - aH;\n\t var ao = ar + aW;\n\t var aV = ar - aW;\n\t var ay = az + aG;\n\t var aF = az - aG;\n\t aZ[aN] = ao + ay;\n\t aZ[aN + 32] = ao - ay;\n\t var af = (aF + aV) * 0.707106781;\n\t aZ[aN + 16] = aV + af;\n\t aZ[aN + 48] = aV - af;\n\t ao = aa + ac;\n\t ay = ac + ae;\n\t aF = ae + aj;\n\t var aM = (ao - aF) * 0.382683433;\n\t var ad = 0.5411961 * ao + aM;\n\t var a1 = 1.306562965 * aF + aM;\n\t var ab = ay * 0.707106781;\n\t var a0 = aj + ab;\n\t var aA = aj - ab;\n\t aZ[aN + 40] = aA + ad;\n\t aZ[aN + 24] = aA - ad;\n\t aZ[aN + 8] = a0 + a1;\n\t aZ[aN + 56] = a0 - a1;\n\t aN++\n\t }\n\t var aE;\n\t for (aR = 0; aR < ai; ++aR) {\n\t aE = aZ[aR] * ap[aR];\n\t P[aR] = (aE > 0) ? ((aE + 0.5) | 0) : ((aE - 0.5) | 0)\n\t }\n\t return P\n\t }\n\t\n\t function b () {\n\t p(65504);\n\t p(16);\n\t F(74);\n\t F(70);\n\t F(73);\n\t F(70);\n\t F(0);\n\t F(1);\n\t F(1);\n\t F(0);\n\t p(1);\n\t p(1);\n\t F(0);\n\t F(0)\n\t }\n\t\n\t function r (aa, ab) {\n\t p(65472);\n\t p(17);\n\t F(8);\n\t p(ab);\n\t p(aa);\n\t F(3);\n\t F(1);\n\t F(17);\n\t F(0);\n\t F(2);\n\t F(17);\n\t F(1);\n\t F(3);\n\t F(17);\n\t F(1)\n\t }\n\t\n\t function D () {\n\t p(65499);\n\t p(132);\n\t F(0);\n\t for (var ab = 0; ab < 64; ab++) {\n\t F(O[ab])\n\t }\n\t F(1);\n\t for (var aa = 0; aa < 64; aa++) {\n\t F(K[aa])\n\t }\n\t }\n\t\n\t function H () {\n\t p(65476);\n\t p(418);\n\t F(0);\n\t for (var ae = 0; ae < 16; ae++) {\n\t F(g[ae + 1])\n\t }\n\t for (var ad = 0; ad <= 11; ad++) {\n\t F(c[ad])\n\t }\n\t F(16);\n\t for (var ac = 0; ac < 16; ac++) {\n\t F(w[ac + 1])\n\t }\n\t for (var ab = 0; ab <= 161; ab++) {\n\t F(E[ab])\n\t }\n\t F(1);\n\t for (var aa = 0; aa < 16; aa++) {\n\t F(v[aa + 1])\n\t }\n\t for (var ah = 0; ah <= 11; ah++) {\n\t F(Y[ah])\n\t }\n\t F(17);\n\t for (var ag = 0; ag < 16; ag++) {\n\t F(J[ag + 1])\n\t }\n\t for (var af = 0; af <= 161; af++) {\n\t F(B[af])\n\t }\n\t }\n\t\n\t function I () {\n\t p(65498);\n\t p(12);\n\t F(3);\n\t F(1);\n\t F(0);\n\t F(2);\n\t F(17);\n\t F(3);\n\t F(17);\n\t F(0);\n\t F(63);\n\t F(0)\n\t }\n\t\n\t function L (ad, aa, al, at, ap) {\n\t var ag = ap[0];\n\t var ab = ap[240];\n\t var ac;\n\t const ar = 16;\n\t const ai = 63;\n\t const ah = 64;\n\t var aq = N(ad, aa);\n\t for (var am = 0; am < ah; ++am) {\n\t S[i[am]] = aq[am]\n\t }\n\t var an = S[0] - al;\n\t al = S[0];\n\t if (an == 0) {\n\t X(at[0])\n\t } else {\n\t ac = 32767 + an;\n\t X(at[m[ac]]);\n\t X(n[ac])\n\t }\n\t var ae = 63;\n\t for (; (ae > 0) && (S[ae] == 0); ae--) {\n\t }\n\t if (ae == 0) {\n\t X(ag);\n\t return al\n\t }\n\t var ao = 1;\n\t var au;\n\t while (ao <= ae) {\n\t var ak = ao;\n\t for (; (S[ao] == 0) && (ao <= ae); ++ao) {\n\t }\n\t var aj = ao - ak;\n\t if (aj >= ar) {\n\t au = aj >> 4;\n\t for (var af = 1; af <= au; ++af) {\n\t X(ab)\n\t }\n\t aj = aj & 15\n\t }\n\t ac = 32767 + S[ao];\n\t X(ap[(aj << 4) + m[ac]]);\n\t X(n[ac]);\n\t ao++\n\t }\n\t if (ae != ai) {\n\t X(ag)\n\t }\n\t return al\n\t }\n\t\n\t function y () {\n\t var ab = String.fromCharCode;\n\t for (var aa = 0; aa < 256; aa++) {\n\t e[aa] = ab(aa)\n\t }\n\t }\n\t\n\t this.encode = function (an, aj, aB) {\n\t var aa = new Date().getTime();\n\t if (aj) {\n\t R(aj)\n\t }\n\t j = new Array();\n\t t = 0;\n\t a = 7;\n\t p(65496);\n\t b();\n\t D();\n\t r(an.width, an.height);\n\t H();\n\t I();\n\t var al = 0;\n\t var aq = 0;\n\t var ao = 0;\n\t t = 0;\n\t a = 7;\n\t this.encode.displayName = \"_encode_\";\n\t var at = an.data;\n\t var ar = an.width;\n\t var aA = an.height;\n\t var ay = ar * 4;\n\t var ai = ar * 3;\n\t var ah, ag = 0;\n\t var am, ax, az;\n\t var ab, ap, ac, af, ae;\n\t while (ag < aA) {\n\t ah = 0;\n\t while (ah < ay) {\n\t ab = ay * ag + ah;\n\t ap = ab;\n\t ac = -1;\n\t af = 0;\n\t for (ae = 0; ae < 64; ae++) {\n\t af = ae >> 3;\n\t ac = (ae & 7) * 4;\n\t ap = ab + (af * ay) + ac;\n\t if (ag + af >= aA) {\n\t ap -= (ay * (ag + 1 + af - aA))\n\t }\n\t if (ah + ac >= ay) {\n\t ap -= ((ah + ac) - ay + 4)\n\t }\n\t am = at[ap++];\n\t ax = at[ap++];\n\t az = at[ap++];\n\t A[ae] = ((C[am] + C[(ax + 256) >> 0] + C[(az + 512) >> 0]) >> 16) - 128;\n\t f[ae] = ((C[(am + 768) >> 0] + C[(ax + 1024) >> 0] + C[(az + 1280) >> 0]) >> 16) - 128;\n\t U[ae] = ((C[(am + 1280) >> 0] + C[(ax + 1536) >> 0] + C[(az + 1792) >> 0]) >> 16) - 128\n\t }\n\t al = L(A, d, al, u, G);\n\t aq = L(f, Z, aq, h, T);\n\t ao = L(U, Z, ao, h, T);\n\t ah += 32\n\t }\n\t ag += 8\n\t }\n\t if (a >= 0) {\n\t var aw = [];\n\t aw[1] = a + 1;\n\t aw[0] = (1 << (a + 1)) - 1;\n\t X(aw)\n\t }\n\t p(65497);\n\t if (aB) {\n\t var av = j.length;\n\t var aC = new Uint8Array(av);\n\t for (var au = 0; au < av; au++) {\n\t aC[au] = j[au].charCodeAt()\n\t }\n\t j = [];\n\t var ak = new Date().getTime() - aa;\n\t return aC\n\t }\n\t var ad = \"data:image/jpeg;base64,\" + btoa(j.join(\"\"));\n\t j = [];\n\t var ak = new Date().getTime() - aa;\n\t return ad\n\t };\n\t function R (ab) {\n\t if (ab <= 0) {\n\t ab = 1\n\t }\n\t if (ab > 100) {\n\t ab = 100\n\t }\n\t if (x == ab) {\n\t return\n\t }\n\t var aa = 0;\n\t if (ab < 50) {\n\t aa = Math.floor(5000 / ab)\n\t } else {\n\t aa = Math.floor(200 - ab * 2)\n\t }\n\t M(aa);\n\t x = ab;\n\t }\n\t\n\t function Q () {\n\t var aa = new Date().getTime();\n\t if (!l) {\n\t l = 50\n\t }\n\t y();\n\t W();\n\t z();\n\t V();\n\t R(l);\n\t var ab = new Date().getTime() - aa;\n\t }\n\t\n\t Q()\n\t}\n\t\n\tmodule.exports = JPEGEncoder;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 保证按需加载的文件路径正确\n\t__webpack_require__.p = getJsDir('lrz') + '/';\n\twindow.URL = window.URL || window.webkitURL;\n\t\n\tvar Promise = __webpack_require__(1),\n\t BlobFormDataShim = __webpack_require__(4),\n\t exif = __webpack_require__(5);\n\t\n\t\n\tvar UA = (function (userAgent) {\n\t var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n\t isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\t\n\t // 判断设备是否是IOS7以下\n\t // 判断设备是否是android4.5以下\n\t // 判断是否iOS\n\t // 判断是否android\n\t // 判断是否QQ浏览器\n\t return {\n\t oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n\t oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n\t iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n\t android : /Android/g.test(userAgent),\n\t mQQBrowser: /MQQBrowser/g.test(userAgent)\n\t }\n\t})(navigator.userAgent);\n\t\n\t\n\tfunction Lrz (file, opts) {\n\t var that = this;\n\t\n\t if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\t\n\t opts = opts || {};\n\t\n\t that.defaults = {\n\t width : null,\n\t height : null,\n\t fieldName: 'file',\n\t quality : 0.7\n\t };\n\t\n\t that.file = file;\n\t\n\t for (var p in opts) {\n\t if (!opts.hasOwnProperty(p)) continue;\n\t that.defaults[p] = opts[p];\n\t }\n\t\n\t return this.init();\n\t}\n\t\n\tLrz.prototype.init = function () {\n\t var that = this,\n\t file = that.file,\n\t fileIsString = typeof file === 'string',\n\t fileIsBase64 = /^data:/.test(file),\n\t img = new Image(),\n\t canvas = document.createElement('canvas'),\n\t blob = fileIsString ? file : URL.createObjectURL(file);\n\t\n\t that.img = img;\n\t that.blob = blob;\n\t that.canvas = canvas;\n\t\n\t if (fileIsString) {\n\t that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n\t } else {\n\t that.fileName = file.name;\n\t }\n\t\n\t if (!document.createElement('canvas').getContext) {\n\t throw new Error('浏览器不支持canvas');\n\t }\n\t\n\t return new Promise(function (resolve, reject) {\n\t img.onerror = function () {\n\t throw new Error('加载图片文件失败');\n\t };\n\t\n\t img.onload = function () {\n\t that._getBase64()\n\t .then(function (base64) {\n\t if (base64.length < 10) reject('生成base64失败');\n\t\n\t return base64;\n\t })\n\t .then(function (base64) {\n\t var formData = null;\n\t\n\t // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n\t if (typeof that.file === 'object' && base64.length > that.file.size) {\n\t formData = new FormData();\n\t file = that.file;\n\t } else {\n\t formData = new BlobFormDataShim.FormData();\n\t file = dataURItoBlob(base64);\n\t }\n\t\n\t formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\t\n\t resolve({\n\t formData : formData,\n\t fileLen : +file.size,\n\t base64 : base64,\n\t base64Len: base64.length,\n\t origin : that.file,\n\t file : file\n\t });\n\t\n\t // 释放内存\n\t for (var p in that) {\n\t if (!that.hasOwnProperty(p)) continue;\n\t\n\t that[p] = null;\n\t }\n\t URL.revokeObjectURL(that.blob);\n\t });\n\t };\n\t\n\t // 如果传入的是base64在移动端会报错\n\t !fileIsBase64 && (img.crossOrigin = \"*\");\n\t\n\t img.src = blob;\n\t });\n\t};\n\t\n\tLrz.prototype._getBase64 = function () {\n\t var that = this,\n\t img = that.img,\n\t file = that.file,\n\t canvas = that.canvas;\n\t\n\t return new Promise(function (resolve) {\n\t try {\n\t // 传入blob在android4.3以下有bug\n\t exif.getData(typeof file === 'object' ? file : img, function () {\n\t that.orientation = exif.getTag(this, \"Orientation\");\n\t\n\t that.resize = that._getResize();\n\t that.ctx = canvas.getContext('2d');\n\t\n\t canvas.width = that.resize.width;\n\t canvas.height = that.resize.height;\n\t\n\t // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n\t that.ctx.fillStyle = '#fff';\n\t that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\n\t // 根据设备对应处理方式\n\t if (UA.oldIOS) {\n\t that._createBase64ForOldIOS().then(resolve);\n\t }\n\t else {\n\t that._createBase64().then(resolve);\n\t }\n\t });\n\t } catch (err) {\n\t // 这样能解决低内存设备闪退的问题吗?\n\t throw new Error(err);\n\t }\n\t });\n\t};\n\t\n\t\n\tLrz.prototype._createBase64ForOldIOS = function () {\n\t var that = this,\n\t img = that.img,\n\t canvas = that.canvas,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t return new Promise(function (resolve) {\n\t !/* require */(/* empty */function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(6)]; (function (MegaPixImage) {\n\t var mpImg = new MegaPixImage(img);\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t mpImg.render(canvas, {\n\t width : canvas.height,\n\t height : canvas.width,\n\t orientation: orientation\n\t });\n\t } else {\n\t mpImg.render(canvas, {\n\t width : canvas.width,\n\t height : canvas.height,\n\t orientation: orientation\n\t });\n\t }\n\t\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}());\n\t });\n\t};\n\t\n\tLrz.prototype._createBase64 = function () {\n\t var that = this,\n\t resize = that.resize,\n\t img = that.img,\n\t canvas = that.canvas,\n\t ctx = that.ctx,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t // 调整为正确方向\n\t switch (orientation) {\n\t case 3:\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 6:\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 8:\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t case 2:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t break;\n\t case 4:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 5:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 7:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t default:\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n\t !/* require */(/* empty */function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(7)]; (function (JPEGEncoder) {\n\t var encoder = new JPEGEncoder(),\n\t img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\t\n\t resolve(encoder.encode(img, defaults.quality * 100));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}())\n\t }\n\t else {\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }\n\t });\n\t};\n\t\n\tLrz.prototype._getResize = function () {\n\t var that = this,\n\t img = that.img,\n\t defaults = that.defaults,\n\t width = defaults.width,\n\t height = defaults.height,\n\t orientation = that.orientation;\n\t\n\t var ret = {\n\t width : img.width,\n\t height: img.height\n\t };\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t ret.width = img.height;\n\t ret.height = img.width;\n\t }\n\t\n\t // 如果原图小于设定,采用原图\n\t if (ret.width < width || ret.height < height) {\n\t return ret;\n\t }\n\t\n\t var scale = ret.width / ret.height;\n\t\n\t if (width && height) {\n\t if (scale >= width / height) {\n\t if (ret.width > width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t } else {\n\t if (ret.height > height) {\n\t ret.height = height;\n\t ret.width = Math.ceil(height * scale);\n\t }\n\t }\n\t }\n\t else if (width) {\n\t if (width < ret.width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t }\n\t else if (height) {\n\t if (height < ret.height) {\n\t ret.width = Math.ceil(height * scale);\n\t ret.height = height;\n\t }\n\t }\n\t\n\t // 超过这个值base64无法生成,在IOS上\n\t while (ret.width >= 3264 || ret.height >= 2448) {\n\t ret.width *= 0.8;\n\t ret.height *= 0.8;\n\t }\n\t\n\t return ret;\n\t};\n\t\n\t/**\n\t * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n\t * @returns {string}\n\t */\n\tfunction getJsDir (src) {\n\t var script = null;\n\t\n\t if (src) {\n\t script = [].filter.call(document.scripts, function (v) {\n\t return v.src.indexOf(src) !== -1;\n\t })[0];\n\t } else {\n\t script = document.scripts[document.scripts.length - 1];\n\t }\n\t\n\t if (!script) return null;\n\t\n\t return script.src.substr(0, script.src.lastIndexOf('/'));\n\t}\n\t\n\t\n\t/**\n\t * 转换成formdata\n\t * @param dataURI\n\t * @returns {*}\n\t *\n\t * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n\t */\n\tfunction dataURItoBlob (dataURI) {\n\t // convert base64/URLEncoded data component to raw binary data held in a string\n\t var byteString;\n\t if (dataURI.split(',')[0].indexOf('base64') >= 0)\n\t byteString = atob(dataURI.split(',')[1]);\n\t else\n\t byteString = unescape(dataURI.split(',')[1]);\n\t\n\t // separate out the mime component\n\t var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\t\n\t // write the bytes of the string to a typed array\n\t var ia = new Uint8Array(byteString.length);\n\t for (var i = 0; i < byteString.length; i++) {\n\t ia[i] = byteString.charCodeAt(i);\n\t }\n\t\n\t return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n\t}\n\t\n\twindow.lrz = function (file, opts) {\n\t return new Lrz(file, opts);\n\t};\n\t\n\t// 版本号来自package.json,构建时自动填充\n\twindow.lrz.version = '4.8.35';\n\t\n\tmodule.exports = window.lrz;\n\t\n\t/**\n\t *\n\t *    ┏┓   ┏┓\n\t *   ┏┛┻━━━┛┻┓\n\t *   ┃       ┃\n\t *   ┃   ━   ┃\n\t *   ┃ ┳┛ ┗┳ ┃\n\t *   ┃       ┃\n\t *   ┃   ┻   ┃\n\t *   ┃       ┃\n\t *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n\t *     ┃   ┃ 神兽保佑,代码无bug\n\t *     ┃   ┃\n\t *     ┃   ┗━━━┓\n\t *     ┃      ┣┓\n\t *     ┃     ┏┛\n\t *     ┗┓┓┏━┳┓┏┛\n\t *      ┃┫┫ ┃┫┫\n\t *      ┗┻┛ ┗┻┛\n\t *\n\t */\n\t\n\t\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** lrz.all.bundle.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 827e1829811ae3346428\n **/","require('megapix-image');\nrequire('jpeg_encoder_basic');\n\nmodule.exports = require('lrz');\n\n\n/**\n *\n *    ┏┓   ┏┓\n *   ┏┛┻━━━┛┻┓\n *   ┃       ┃\n *   ┃   ━   ┃\n *   ┃ ┳┛ ┗┳ ┃\n *   ┃       ┃\n *   ┃   ┻   ┃\n *   ┃       ┃\n *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n *     ┃   ┃ 神兽保佑,代码无bug\n *     ┃   ┃\n *     ┃   ┗━━━┓\n *     ┃      ┣┓\n *     ┃     ┏┛\n *     ┗┓┓┏━┳┓┏┛\n *      ┃┫┫ ┃┫┫\n *      ┗┻┛ ┗┻┛\n *\n */\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/lrz.all.js\n ** module id = 0\n ** module chunks = 3\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Promise.js\n **/","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/timers-browserify/main.js\n ** module id = 2\n ** module chunks = 0 3\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 3\n ** module chunks = 0 3\n **/","//@source https://xts.so/demo/compress/index.html\n\n// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\nvar BlobConstructor = ((function () {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n})()) ? window.Blob : function (parts, opts) {\n var bb = new (\n window.BlobBuilder\n || window.WebKitBlobBuilder\n || window.MSBlobBuilder\n || window.MozBlobBuilder\n );\n parts.forEach(function (p) {\n bb.append(p);\n });\n\n return bb.getBlob(opts ? opts.type : undefined);\n};\n\n// Android上的AppleWebKit 534以前的内核存在一个Bug,\n// 导致FormData加入一个Blob对象后,上传的文件是0字节\nfunction hasFormDataBug () {\n var bCheck = ~navigator.userAgent.indexOf('Android')\n && ~navigator.vendor.indexOf('Google')\n && !~navigator.userAgent.indexOf('Chrome');\n\n // QQ X5浏览器也有这个BUG\n return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n}\nfunction FormDataShim () {\n var\n // Store a reference to this\n o = this,\n\n // Data to be sent\n parts = [],\n\n // Boundary parameter for separating the multipart values\n boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n\n // Store the current XHR send method so we can safely override it\n oldSend = XMLHttpRequest.prototype.send;\n this.getParts = function () {\n return parts.toString();\n };\n this.append = function (name, value, filename) {\n parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n\n if (value instanceof Blob) {\n parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n parts.push(value);\n }\n else {\n parts.push('\\r\\n\\r\\n' + value);\n }\n parts.push('\\r\\n');\n };\n\n XMLHttpRequest.prototype.send = function (val) {\n var fr,\n data,\n oXHR = this;\n\n if (val === o) {\n // Append the final boundary string\n parts.push('--' + boundary + '--\\r\\n');\n // Create the blob\n data = new BlobConstructor(parts);\n\n // Set up and read the blob into an array to be sent\n fr = new FileReader();\n fr.onload = function () {\n oldSend.call(oXHR, fr.result);\n };\n fr.onerror = function (err) {\n throw err;\n };\n fr.readAsArrayBuffer(data);\n\n // Set the multipart content type and boudary\n this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n XMLHttpRequest.prototype.send = oldSend;\n }\n else {\n oldSend.call(this, val);\n }\n };\n}\n\n\nmodule.exports = {\n Blob : BlobConstructor,\n FormData: hasFormDataBug() ? FormDataShim : FormData\n};\n\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Blob.FormData.shim.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/exif.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/megapix-image.js\n **/","function JPEGEncoder (l) {\n var o = this;\n var s = Math.round;\n var k = Math.floor;\n var O = new Array(64);\n var K = new Array(64);\n var d = new Array(64);\n var Z = new Array(64);\n var u;\n var h;\n var G;\n var T;\n var n = new Array(65535);\n var m = new Array(65535);\n var P = new Array(64);\n var S = new Array(64);\n var j = [];\n var t = 0;\n var a = 7;\n var A = new Array(64);\n var f = new Array(64);\n var U = new Array(64);\n var e = new Array(256);\n var C = new Array(2048);\n var x;\n var i = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\n var g = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];\n var c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var w = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125];\n var E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n var v = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0];\n var Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var J = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119];\n var B = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\n function M (ag) {\n var af = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99];\n for (var ae = 0; ae < 64; ae++) {\n var aj = k((af[ae] * ag + 50) / 100);\n if (aj < 1) {\n aj = 1\n } else {\n if (aj > 255) {\n aj = 255\n }\n }\n O[i[ae]] = aj\n }\n var ah = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99];\n for (var ad = 0; ad < 64; ad++) {\n var ai = k((ah[ad] * ag + 50) / 100);\n if (ai < 1) {\n ai = 1\n } else {\n if (ai > 255) {\n ai = 255\n }\n }\n K[i[ad]] = ai\n }\n var ac = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n var ab = 0;\n for (var ak = 0; ak < 8; ak++) {\n for (var aa = 0; aa < 8; aa++) {\n d[ab] = (1 / (O[i[ab]] * ac[ak] * ac[aa] * 8));\n Z[ab] = (1 / (K[i[ab]] * ac[ak] * ac[aa] * 8));\n ab++\n }\n }\n }\n\n function q (ae, aa) {\n var ad = 0;\n var ag = 0;\n var af = new Array();\n for (var ab = 1; ab <= 16; ab++) {\n for (var ac = 1; ac <= ae[ab]; ac++) {\n af[aa[ag]] = [];\n af[aa[ag]][0] = ad;\n af[aa[ag]][1] = ab;\n ag++;\n ad++\n }\n ad *= 2\n }\n return af\n }\n\n function W () {\n u = q(g, c);\n h = q(v, Y);\n G = q(w, E);\n T = q(J, B)\n }\n\n function z () {\n var ac = 1;\n var ab = 2;\n for (var aa = 1; aa <= 15; aa++) {\n for (var ad = ac; ad < ab; ad++) {\n m[32767 + ad] = aa;\n n[32767 + ad] = [];\n n[32767 + ad][1] = aa;\n n[32767 + ad][0] = ad\n }\n for (var ae = -(ab - 1); ae <= -ac; ae++) {\n m[32767 + ae] = aa;\n n[32767 + ae] = [];\n n[32767 + ae][1] = aa;\n n[32767 + ae][0] = ab - 1 + ae\n }\n ac <<= 1;\n ab <<= 1\n }\n }\n\n function V () {\n for (var aa = 0; aa < 256; aa++) {\n C[aa] = 19595 * aa;\n C[(aa + 256) >> 0] = 38470 * aa;\n C[(aa + 512) >> 0] = 7471 * aa + 32768;\n C[(aa + 768) >> 0] = -11059 * aa;\n C[(aa + 1024) >> 0] = -21709 * aa;\n C[(aa + 1280) >> 0] = 32768 * aa + 8421375;\n C[(aa + 1536) >> 0] = -27439 * aa;\n C[(aa + 1792) >> 0] = -5329 * aa\n }\n }\n\n function X (aa) {\n var ac = aa[0];\n var ab = aa[1] - 1;\n while (ab >= 0) {\n if (ac & (1 << ab)) {\n t |= (1 << a)\n }\n ab--;\n a--;\n if (a < 0) {\n if (t == 255) {\n F(255);\n F(0)\n } else {\n F(t)\n }\n a = 7;\n t = 0\n }\n }\n }\n\n function F (aa) {\n j.push(e[aa])\n }\n\n function p (aa) {\n F((aa >> 8) & 255);\n F((aa) & 255)\n }\n\n function N (aZ, ap) {\n var aL, aK, aJ, aI, aH, aD, aC, aB;\n var aN = 0;\n var aR;\n const aq = 8;\n const ai = 64;\n for (aR = 0; aR < aq; ++aR) {\n aL = aZ[aN];\n aK = aZ[aN + 1];\n aJ = aZ[aN + 2];\n aI = aZ[aN + 3];\n aH = aZ[aN + 4];\n aD = aZ[aN + 5];\n aC = aZ[aN + 6];\n aB = aZ[aN + 7];\n var aY = aL + aB;\n var aO = aL - aB;\n var aX = aK + aC;\n var aP = aK - aC;\n var aU = aJ + aD;\n var aQ = aJ - aD;\n var aT = aI + aH;\n var aS = aI - aH;\n var an = aY + aT;\n var ak = aY - aT;\n var am = aX + aU;\n var al = aX - aU;\n aZ[aN] = an + am;\n aZ[aN + 4] = an - am;\n var ax = (al + ak) * 0.707106781;\n aZ[aN + 2] = ak + ax;\n aZ[aN + 6] = ak - ax;\n an = aS + aQ;\n am = aQ + aP;\n al = aP + aO;\n var at = (an - al) * 0.382683433;\n var aw = 0.5411961 * an + at;\n var au = 1.306562965 * al + at;\n var av = am * 0.707106781;\n var ah = aO + av;\n var ag = aO - av;\n aZ[aN + 5] = ag + aw;\n aZ[aN + 3] = ag - aw;\n aZ[aN + 1] = ah + au;\n aZ[aN + 7] = ah - au;\n aN += 8\n }\n aN = 0;\n for (aR = 0; aR < aq; ++aR) {\n aL = aZ[aN];\n aK = aZ[aN + 8];\n aJ = aZ[aN + 16];\n aI = aZ[aN + 24];\n aH = aZ[aN + 32];\n aD = aZ[aN + 40];\n aC = aZ[aN + 48];\n aB = aZ[aN + 56];\n var ar = aL + aB;\n var aj = aL - aB;\n var az = aK + aC;\n var ae = aK - aC;\n var aG = aJ + aD;\n var ac = aJ - aD;\n var aW = aI + aH;\n var aa = aI - aH;\n var ao = ar + aW;\n var aV = ar - aW;\n var ay = az + aG;\n var aF = az - aG;\n aZ[aN] = ao + ay;\n aZ[aN + 32] = ao - ay;\n var af = (aF + aV) * 0.707106781;\n aZ[aN + 16] = aV + af;\n aZ[aN + 48] = aV - af;\n ao = aa + ac;\n ay = ac + ae;\n aF = ae + aj;\n var aM = (ao - aF) * 0.382683433;\n var ad = 0.5411961 * ao + aM;\n var a1 = 1.306562965 * aF + aM;\n var ab = ay * 0.707106781;\n var a0 = aj + ab;\n var aA = aj - ab;\n aZ[aN + 40] = aA + ad;\n aZ[aN + 24] = aA - ad;\n aZ[aN + 8] = a0 + a1;\n aZ[aN + 56] = a0 - a1;\n aN++\n }\n var aE;\n for (aR = 0; aR < ai; ++aR) {\n aE = aZ[aR] * ap[aR];\n P[aR] = (aE > 0) ? ((aE + 0.5) | 0) : ((aE - 0.5) | 0)\n }\n return P\n }\n\n function b () {\n p(65504);\n p(16);\n F(74);\n F(70);\n F(73);\n F(70);\n F(0);\n F(1);\n F(1);\n F(0);\n p(1);\n p(1);\n F(0);\n F(0)\n }\n\n function r (aa, ab) {\n p(65472);\n p(17);\n F(8);\n p(ab);\n p(aa);\n F(3);\n F(1);\n F(17);\n F(0);\n F(2);\n F(17);\n F(1);\n F(3);\n F(17);\n F(1)\n }\n\n function D () {\n p(65499);\n p(132);\n F(0);\n for (var ab = 0; ab < 64; ab++) {\n F(O[ab])\n }\n F(1);\n for (var aa = 0; aa < 64; aa++) {\n F(K[aa])\n }\n }\n\n function H () {\n p(65476);\n p(418);\n F(0);\n for (var ae = 0; ae < 16; ae++) {\n F(g[ae + 1])\n }\n for (var ad = 0; ad <= 11; ad++) {\n F(c[ad])\n }\n F(16);\n for (var ac = 0; ac < 16; ac++) {\n F(w[ac + 1])\n }\n for (var ab = 0; ab <= 161; ab++) {\n F(E[ab])\n }\n F(1);\n for (var aa = 0; aa < 16; aa++) {\n F(v[aa + 1])\n }\n for (var ah = 0; ah <= 11; ah++) {\n F(Y[ah])\n }\n F(17);\n for (var ag = 0; ag < 16; ag++) {\n F(J[ag + 1])\n }\n for (var af = 0; af <= 161; af++) {\n F(B[af])\n }\n }\n\n function I () {\n p(65498);\n p(12);\n F(3);\n F(1);\n F(0);\n F(2);\n F(17);\n F(3);\n F(17);\n F(0);\n F(63);\n F(0)\n }\n\n function L (ad, aa, al, at, ap) {\n var ag = ap[0];\n var ab = ap[240];\n var ac;\n const ar = 16;\n const ai = 63;\n const ah = 64;\n var aq = N(ad, aa);\n for (var am = 0; am < ah; ++am) {\n S[i[am]] = aq[am]\n }\n var an = S[0] - al;\n al = S[0];\n if (an == 0) {\n X(at[0])\n } else {\n ac = 32767 + an;\n X(at[m[ac]]);\n X(n[ac])\n }\n var ae = 63;\n for (; (ae > 0) && (S[ae] == 0); ae--) {\n }\n if (ae == 0) {\n X(ag);\n return al\n }\n var ao = 1;\n var au;\n while (ao <= ae) {\n var ak = ao;\n for (; (S[ao] == 0) && (ao <= ae); ++ao) {\n }\n var aj = ao - ak;\n if (aj >= ar) {\n au = aj >> 4;\n for (var af = 1; af <= au; ++af) {\n X(ab)\n }\n aj = aj & 15\n }\n ac = 32767 + S[ao];\n X(ap[(aj << 4) + m[ac]]);\n X(n[ac]);\n ao++\n }\n if (ae != ai) {\n X(ag)\n }\n return al\n }\n\n function y () {\n var ab = String.fromCharCode;\n for (var aa = 0; aa < 256; aa++) {\n e[aa] = ab(aa)\n }\n }\n\n this.encode = function (an, aj, aB) {\n var aa = new Date().getTime();\n if (aj) {\n R(aj)\n }\n j = new Array();\n t = 0;\n a = 7;\n p(65496);\n b();\n D();\n r(an.width, an.height);\n H();\n I();\n var al = 0;\n var aq = 0;\n var ao = 0;\n t = 0;\n a = 7;\n this.encode.displayName = \"_encode_\";\n var at = an.data;\n var ar = an.width;\n var aA = an.height;\n var ay = ar * 4;\n var ai = ar * 3;\n var ah, ag = 0;\n var am, ax, az;\n var ab, ap, ac, af, ae;\n while (ag < aA) {\n ah = 0;\n while (ah < ay) {\n ab = ay * ag + ah;\n ap = ab;\n ac = -1;\n af = 0;\n for (ae = 0; ae < 64; ae++) {\n af = ae >> 3;\n ac = (ae & 7) * 4;\n ap = ab + (af * ay) + ac;\n if (ag + af >= aA) {\n ap -= (ay * (ag + 1 + af - aA))\n }\n if (ah + ac >= ay) {\n ap -= ((ah + ac) - ay + 4)\n }\n am = at[ap++];\n ax = at[ap++];\n az = at[ap++];\n A[ae] = ((C[am] + C[(ax + 256) >> 0] + C[(az + 512) >> 0]) >> 16) - 128;\n f[ae] = ((C[(am + 768) >> 0] + C[(ax + 1024) >> 0] + C[(az + 1280) >> 0]) >> 16) - 128;\n U[ae] = ((C[(am + 1280) >> 0] + C[(ax + 1536) >> 0] + C[(az + 1792) >> 0]) >> 16) - 128\n }\n al = L(A, d, al, u, G);\n aq = L(f, Z, aq, h, T);\n ao = L(U, Z, ao, h, T);\n ah += 32\n }\n ag += 8\n }\n if (a >= 0) {\n var aw = [];\n aw[1] = a + 1;\n aw[0] = (1 << (a + 1)) - 1;\n X(aw)\n }\n p(65497);\n if (aB) {\n var av = j.length;\n var aC = new Uint8Array(av);\n for (var au = 0; au < av; au++) {\n aC[au] = j[au].charCodeAt()\n }\n j = [];\n var ak = new Date().getTime() - aa;\n return aC\n }\n var ad = \"data:image/jpeg;base64,\" + btoa(j.join(\"\"));\n j = [];\n var ak = new Date().getTime() - aa;\n return ad\n };\n function R (ab) {\n if (ab <= 0) {\n ab = 1\n }\n if (ab > 100) {\n ab = 100\n }\n if (x == ab) {\n return\n }\n var aa = 0;\n if (ab < 50) {\n aa = Math.floor(5000 / ab)\n } else {\n aa = Math.floor(200 - ab * 2)\n }\n M(aa);\n x = ab;\n }\n\n function Q () {\n var aa = new Date().getTime();\n if (!l) {\n l = 50\n }\n y();\n W();\n z();\n V();\n R(l);\n var ab = new Date().getTime() - aa;\n }\n\n Q()\n}\n\nmodule.exports = JPEGEncoder;\n\n\n/** WEBPACK FOOTER **\n ** src/lib/jpeg_encoder_basic.js\n **/","// 保证按需加载的文件路径正确\n__webpack_public_path__ = getJsDir('lrz') + '/';\nwindow.URL = window.URL || window.webkitURL;\n\nvar Promise = require('Promise'),\n BlobFormDataShim = require('Blob.FormData.shim'),\n exif = require('exif');\n\n\nvar UA = (function (userAgent) {\n var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\n // 判断设备是否是IOS7以下\n // 判断设备是否是android4.5以下\n // 判断是否iOS\n // 判断是否android\n // 判断是否QQ浏览器\n return {\n oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n android : /Android/g.test(userAgent),\n mQQBrowser: /MQQBrowser/g.test(userAgent)\n }\n})(navigator.userAgent);\n\n\nfunction Lrz (file, opts) {\n var that = this;\n\n if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\n opts = opts || {};\n\n that.defaults = {\n width : null,\n height : null,\n fieldName: 'file',\n quality : 0.7\n };\n\n that.file = file;\n\n for (var p in opts) {\n if (!opts.hasOwnProperty(p)) continue;\n that.defaults[p] = opts[p];\n }\n\n return this.init();\n}\n\nLrz.prototype.init = function () {\n var that = this,\n file = that.file,\n fileIsString = typeof file === 'string',\n fileIsBase64 = /^data:/.test(file),\n img = new Image(),\n canvas = document.createElement('canvas'),\n blob = fileIsString ? file : URL.createObjectURL(file);\n\n that.img = img;\n that.blob = blob;\n that.canvas = canvas;\n\n if (fileIsString) {\n that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n } else {\n that.fileName = file.name;\n }\n\n if (!document.createElement('canvas').getContext) {\n throw new Error('浏览器不支持canvas');\n }\n\n return new Promise(function (resolve, reject) {\n img.onerror = function () {\n throw new Error('加载图片文件失败');\n };\n\n img.onload = function () {\n that._getBase64()\n .then(function (base64) {\n if (base64.length < 10) reject('生成base64失败');\n\n return base64;\n })\n .then(function (base64) {\n var formData = null;\n\n // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n if (typeof that.file === 'object' && base64.length > that.file.size) {\n formData = new FormData();\n file = that.file;\n } else {\n formData = new BlobFormDataShim.FormData();\n file = dataURItoBlob(base64);\n }\n\n formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\n resolve({\n formData : formData,\n fileLen : +file.size,\n base64 : base64,\n base64Len: base64.length,\n origin : that.file,\n file : file\n });\n\n // 释放内存\n for (var p in that) {\n if (!that.hasOwnProperty(p)) continue;\n\n that[p] = null;\n }\n URL.revokeObjectURL(that.blob);\n });\n };\n\n // 如果传入的是base64在移动端会报错\n !fileIsBase64 && (img.crossOrigin = \"*\");\n\n img.src = blob;\n });\n};\n\nLrz.prototype._getBase64 = function () {\n var that = this,\n img = that.img,\n file = that.file,\n canvas = that.canvas;\n\n return new Promise(function (resolve) {\n try {\n // 传入blob在android4.3以下有bug\n exif.getData(typeof file === 'object' ? file : img, function () {\n that.orientation = exif.getTag(this, \"Orientation\");\n\n that.resize = that._getResize();\n that.ctx = canvas.getContext('2d');\n\n canvas.width = that.resize.width;\n canvas.height = that.resize.height;\n\n // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n that.ctx.fillStyle = '#fff';\n that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // 根据设备对应处理方式\n if (UA.oldIOS) {\n that._createBase64ForOldIOS().then(resolve);\n }\n else {\n that._createBase64().then(resolve);\n }\n });\n } catch (err) {\n // 这样能解决低内存设备闪退的问题吗?\n throw new Error(err);\n }\n });\n};\n\n\nLrz.prototype._createBase64ForOldIOS = function () {\n var that = this,\n img = that.img,\n canvas = that.canvas,\n defaults = that.defaults,\n orientation = that.orientation;\n\n return new Promise(function (resolve) {\n require(['megapix-image'], function (MegaPixImage) {\n var mpImg = new MegaPixImage(img);\n\n if (\"5678\".indexOf(orientation) > -1) {\n mpImg.render(canvas, {\n width : canvas.height,\n height : canvas.width,\n orientation: orientation\n });\n } else {\n mpImg.render(canvas, {\n width : canvas.width,\n height : canvas.height,\n orientation: orientation\n });\n }\n\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n });\n });\n};\n\nLrz.prototype._createBase64 = function () {\n var that = this,\n resize = that.resize,\n img = that.img,\n canvas = that.canvas,\n ctx = that.ctx,\n defaults = that.defaults,\n orientation = that.orientation;\n\n // 调整为正确方向\n switch (orientation) {\n case 3:\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 6:\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 8:\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n case 2:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n break;\n case 4:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 5:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 7:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n default:\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n }\n\n return new Promise(function (resolve) {\n if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n require(['jpeg_encoder_basic'], function (JPEGEncoder) {\n var encoder = new JPEGEncoder(),\n img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\n resolve(encoder.encode(img, defaults.quality * 100));\n })\n }\n else {\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n }\n });\n};\n\nLrz.prototype._getResize = function () {\n var that = this,\n img = that.img,\n defaults = that.defaults,\n width = defaults.width,\n height = defaults.height,\n orientation = that.orientation;\n\n var ret = {\n width : img.width,\n height: img.height\n };\n\n if (\"5678\".indexOf(orientation) > -1) {\n ret.width = img.height;\n ret.height = img.width;\n }\n\n // 如果原图小于设定,采用原图\n if (ret.width < width || ret.height < height) {\n return ret;\n }\n\n var scale = ret.width / ret.height;\n\n if (width && height) {\n if (scale >= width / height) {\n if (ret.width > width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n } else {\n if (ret.height > height) {\n ret.height = height;\n ret.width = Math.ceil(height * scale);\n }\n }\n }\n else if (width) {\n if (width < ret.width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n }\n else if (height) {\n if (height < ret.height) {\n ret.width = Math.ceil(height * scale);\n ret.height = height;\n }\n }\n\n // 超过这个值base64无法生成,在IOS上\n while (ret.width >= 3264 || ret.height >= 2448) {\n ret.width *= 0.8;\n ret.height *= 0.8;\n }\n\n return ret;\n};\n\n/**\n * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n * @returns {string}\n */\nfunction getJsDir (src) {\n var script = null;\n\n if (src) {\n script = [].filter.call(document.scripts, function (v) {\n return v.src.indexOf(src) !== -1;\n })[0];\n } else {\n script = document.scripts[document.scripts.length - 1];\n }\n\n if (!script) return null;\n\n return script.src.substr(0, script.src.lastIndexOf('/'));\n}\n\n\n/**\n * 转换成formdata\n * @param dataURI\n * @returns {*}\n *\n * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n */\nfunction dataURItoBlob (dataURI) {\n // convert base64/URLEncoded data component to raw binary data held in a string\n var byteString;\n if (dataURI.split(',')[0].indexOf('base64') >= 0)\n byteString = atob(dataURI.split(',')[1]);\n else\n byteString = unescape(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to a typed array\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n}\n\nwindow.lrz = function (file, opts) {\n return new Lrz(file, opts);\n};\n\n// 版本号来自package.json,构建时自动填充\nwindow.lrz.version = '4.8.35';\n\nmodule.exports = window.lrz;\n\n/**\n *\n *    ┏┓   ┏┓\n *   ┏┛┻━━━┛┻┓\n *   ┃       ┃\n *   ┃   ━   ┃\n *   ┃ ┳┛ ┗┳ ┃\n *   ┃       ┃\n *   ┃   ┻   ┃\n *   ┃       ┃\n *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n *     ┃   ┃ 神兽保佑,代码无bug\n *     ┃   ┃\n *     ┃   ┗━━━┓\n *     ┃      ┣┓\n *     ┃     ┏┛\n *     ┗┓┓┏━┳┓┏┛\n *      ┃┫┫ ┃┫┫\n *      ┗┻┛ ┗┻┛\n *\n */\n\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/lrz.js\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6","webpack:///lrz.all.bundle.js","webpack:///webpack/bootstrap b1ee1fba6b8bad6e08f4?b460","webpack:///./src/lrz.all.js","webpack:///src/lib/Promise.js?0bd1","webpack:///./~/timers-browserify/main.js?b088","webpack:///./~/process/browser.js?82e4","webpack:///src/lib/Blob.FormData.shim.js?fc98","webpack:///src/lib/exif.js?b270","webpack:///src/lib/megapix-image.js?f828","webpack:///src/lib/jpeg_encoder_basic.js?1bcc","webpack:///src/lrz.js"],"names":["root","factory","exports","module","define","amd","a","i","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","setImmediate","bind","fn","thisArg","apply","arguments","Promise","TypeError","_state","_value","_deferreds","doResolve","resolve","reject","handle","deferred","me","push","asap","cb","onFulfilled","onRejected","ret","e","newValue","then","finale","len","length","Handler","done","value","reason","ex","setTimeout","isArray","Array","Object","prototype","toString","all","args","slice","res","val","remaining","constructor","race","values","_setImmediateFn","always","callback","clearImmediate","Timeout","clearFn","_id","_clearFn","nextTick","Function","immediateIds","nextImmediateId","window","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","run","Item","fun","array","noop","process","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","Error","cwd","chdir","dir","umask","hasFormDataBug","bCheck","navigator","userAgent","indexOf","vendor","match","pop","test","BlobConstructor","Blob","parts","opts","bb","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","forEach","append","getBlob","type","undefined","FormDataShim","formDataShimNums","o","boundary","join","Date","Math","random","oldSend","XMLHttpRequest","send","getParts","filename","fr","data","oXHR","FileReader","onload","result","onerror","err","readAsArrayBuffer","setRequestHeader","FormData","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","imageHasData","img","base64ToArrayBuffer","base64","contentType","replace","binary","atob","buffer","ArrayBuffer","view","Uint8Array","charCodeAt","objectURLToBlob","url","http","open","responseType","status","response","getImageData","handleBinaryFile","binFile","findEXIFinJPEG","iptcdata","findIPTCinJPEG","exifdata","src","arrayBuffer","fileReader","target","blob","File","debug","console","log","byteLength","file","dataView","DataView","getUint8","marker","offset","readEXIFData","getUint16","isFieldSegmentStart","nameHeaderLength","startOffset","sectionLength","readIPTCData","fieldValue","fieldName","dataSize","segmentType","segmentSize","segmentStartPos","IptcFieldMap","getInt16","getStringFromDB","hasOwnProperty","readTags","tiffStart","dirStart","strings","bigEnd","entryOffset","tag","entries","tags","readTagValue","vals","n","numerator","denominator","numValues","getUint32","valueOffset","Number","getInt32","start","outstr","String","fromCharCode","exifData","gpsData","tiffOffset","firstIFDOffset","TiffTags","ExifIFDPointer","ExifTags","StringValues","Components","GPSInfoIFDPointer","GPSTags","EXIF","obj","EXIFwrapped","Tags",36864,40960,40961,40962,40963,37121,37122,37500,37510,40964,36867,36868,37520,37521,37522,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37396,37386,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,40965,42016,256,257,34665,34853,258,259,262,274,277,284,530,531,282,283,296,273,278,279,513,514,301,318,319,529,532,306,270,271,272,305,315,33432,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,"ExposureProgram","MeteringMode",255,"LightSource","Flash",31,32,65,69,71,73,77,79,89,93,95,"SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource",120,110,55,80,85,122,105,116,"getData","Image","HTMLImageElement","complete","getTag","getAllTags","pretty","strPretty","readFromBinaryFile","detectSubsampling","iw","naturalWidth","ih","naturalHeight","canvas","document","createElement","width","height","ctx","getContext","drawImage","detectVerticalSquash","sy","ey","py","alpha","ratio","renderImageToDataURL","options","doSquash","renderImageToCanvas","toDataURL","quality","save","transformCoordinate","orientation","subsampled","d","tmpCanvas","tmpCtx","vertSquashRatio","dw","ceil","dh","dy","sx","dx","clearRect","restore","translate","scale","rotate","PI","MegaPixImage","srcImage","URL","createObjectURL","webkitURL","_this","listeners","imageLoadListeners","render","srcLength","imgWidth","imgHeight","maxWidth","maxHeight","opt","k","tagName","toLowerCase","onrender","JPEGEncoder","l","M","ag","af","ae","aj","O","ah","ad","ai","K","ac","ab","ak","aa","Z","q","W","u","g","h","v","Y","G","w","E","T","J","B","z","V","C","X","t","F","j","N","aZ","ap","aL","aK","aJ","aI","aH","aD","aC","aB","aR","aN","aq","aY","aO","aX","aP","aU","aQ","aT","aS","an","am","al","ax","at","aw","au","av","ar","az","aG","aW","ao","aV","ay","aF","aM","a1","a0","aA","aE","P","b","r","D","H","I","L","S","y","R","x","floor","Q","getTime","round","A","f","U","encode","displayName","btoa","Lrz","that","defaults","init","getJsDir","script","filter","scripts","substr","lastIndexOf","dataURItoBlob","dataURI","byteString","split","unescape","mimeString","ia","BlobFormDataShim","exif","UA","ISOldIOS","exec","isOldAndroid","oldIOS","oldAndroid","iOS","android","mQQBrowser","fileIsString","fileIsBase64","fileName","_getBase64","formData","size","fileLen","base64Len","origin","revokeObjectURL","crossOrigin","resize","_getResize","fillStyle","fillRect","_createBase64ForOldIOS","_createBase64","__WEBPACK_AMD_REQUIRE_ARRAY__","mpImg","encoder","lrz"],"mappings":"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","file":"lrz.all.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(6);\n\t__webpack_require__(7);\n\t\n\tmodule.exports = __webpack_require__(8);\n\t\n\t\n\t/**\n\t *\n\t *    ┏┓   ┏┓\n\t *   ┏┛┻━━━┛┻┓\n\t *   ┃       ┃\n\t *   ┃   ━   ┃\n\t *   ┃ ┳┛ ┗┳ ┃\n\t *   ┃       ┃\n\t *   ┃   ┻   ┃\n\t *   ┃       ┃\n\t *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n\t *     ┃   ┃ 神兽保佑,代码无bug\n\t *     ┃   ┃\n\t *     ┃   ┗━━━┓\n\t *     ┃      ┣┓\n\t *     ┃     ┏┛\n\t *     ┗┓┓┏━┳┓┏┛\n\t *      ┃┫┫ ┃┫┫\n\t *      ┗┻┛ ┗┻┛\n\t *\n\t */\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\t\n\t // Use polyfill for setImmediate for performance gains\n\t var asap = (typeof setImmediate === 'function' && setImmediate) ||\n\t function (fn) {\n\t setTimeout(fn, 1);\n\t };\n\t\n\t // Polyfill for Function.prototype.bind\n\t function bind (fn, thisArg) {\n\t return function () {\n\t fn.apply(thisArg, arguments);\n\t }\n\t }\n\t\n\t var isArray = Array.isArray || function (value) {\n\t return Object.prototype.toString.call(value) === \"[object Array]\"\n\t };\n\t\n\t function Promise (fn) {\n\t if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t if (typeof fn !== 'function') throw new TypeError('not a function');\n\t this._state = null;\n\t this._value = null;\n\t this._deferreds = []\n\t\n\t doResolve(fn, bind(resolve, this), bind(reject, this))\n\t }\n\t\n\t function handle (deferred) {\n\t var me = this;\n\t if (this._state === null) {\n\t this._deferreds.push(deferred);\n\t return\n\t }\n\t asap(function () {\n\t var cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t if (cb === null) {\n\t (me._state ? deferred.resolve : deferred.reject)(me._value);\n\t return;\n\t }\n\t var ret;\n\t try {\n\t ret = cb(me._value);\n\t }\n\t catch (e) {\n\t deferred.reject(e);\n\t return;\n\t }\n\t deferred.resolve(ret);\n\t })\n\t }\n\t\n\t function resolve (newValue) {\n\t try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t if (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t var then = newValue.then;\n\t if (typeof then === 'function') {\n\t doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t return;\n\t }\n\t }\n\t this._state = true;\n\t this._value = newValue;\n\t finale.call(this);\n\t } catch (e) {\n\t reject.call(this, e);\n\t }\n\t }\n\t\n\t function reject (newValue) {\n\t this._state = false;\n\t this._value = newValue;\n\t finale.call(this);\n\t }\n\t\n\t function finale () {\n\t for (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t handle.call(this, this._deferreds[i]);\n\t }\n\t this._deferreds = null;\n\t }\n\t\n\t function Handler (onFulfilled, onRejected, resolve, reject) {\n\t this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t this.resolve = resolve;\n\t this.reject = reject;\n\t }\n\t\n\t /**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\t function doResolve (fn, onFulfilled, onRejected) {\n\t var done = false;\n\t try {\n\t fn(function (value) {\n\t if (done) return;\n\t done = true;\n\t onFulfilled(value);\n\t }, function (reason) {\n\t if (done) return;\n\t done = true;\n\t onRejected(reason);\n\t })\n\t } catch (ex) {\n\t if (done) return;\n\t done = true;\n\t onRejected(ex);\n\t }\n\t }\n\t\n\t Promise.prototype['catch'] = function (onRejected) {\n\t return this.then(null, onRejected);\n\t };\n\t\n\t Promise.prototype.then = function (onFulfilled, onRejected) {\n\t var me = this;\n\t return new Promise(function (resolve, reject) {\n\t handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t })\n\t };\n\t\n\t Promise.all = function () {\n\t var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\t\n\t return new Promise(function (resolve, reject) {\n\t if (args.length === 0) return resolve([]);\n\t var remaining = args.length;\n\t\n\t function res (i, val) {\n\t try {\n\t if (val && (typeof val === 'object' || typeof val === 'function')) {\n\t var then = val.then;\n\t if (typeof then === 'function') {\n\t then.call(val, function (val) {\n\t res(i, val)\n\t }, reject);\n\t return;\n\t }\n\t }\n\t args[i] = val;\n\t if (--remaining === 0) {\n\t resolve(args);\n\t }\n\t } catch (ex) {\n\t reject(ex);\n\t }\n\t }\n\t\n\t for (var i = 0; i < args.length; i++) {\n\t res(i, args[i]);\n\t }\n\t });\n\t };\n\t\n\t Promise.resolve = function (value) {\n\t if (value && typeof value === 'object' && value.constructor === Promise) {\n\t return value;\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t resolve(value);\n\t });\n\t };\n\t\n\t Promise.reject = function (value) {\n\t return new Promise(function (resolve, reject) {\n\t reject(value);\n\t });\n\t };\n\t\n\t Promise.race = function (values) {\n\t return new Promise(function (resolve, reject) {\n\t for (var i = 0, len = values.length; i < len; i++) {\n\t values[i].then(resolve, reject);\n\t }\n\t });\n\t };\n\t\n\t /**\n\t * Set the immediate function to execute callbacks\n\t * @param fn {function} Function to execute\n\t * @private\n\t */\n\t Promise._setImmediateFn = function _setImmediateFn (fn) {\n\t asap = fn;\n\t };\n\t\n\t\n\t Promise.prototype.always = function (callback) {\n\t var constructor = this.constructor;\n\t\n\t return this.then(function (value) {\n\t return constructor.resolve(callback()).then(function () {\n\t return value;\n\t });\n\t }, function (reason) {\n\t return constructor.resolve(callback()).then(function () {\n\t throw reason;\n\t });\n\t });\n\t };\n\t\n\t if (typeof module !== 'undefined' && module.exports) {\n\t module.exports = Promise;\n\t } else if (!root.Promise) {\n\t root.Promise = Promise;\n\t }\n\t\n\t})(this);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(3).nextTick;\n\tvar apply = Function.prototype.apply;\n\tvar slice = Array.prototype.slice;\n\tvar immediateIds = {};\n\tvar nextImmediateId = 0;\n\t\n\t// DOM APIs, for completeness\n\t\n\texports.setTimeout = function() {\n\t return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n\t};\n\texports.setInterval = function() {\n\t return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n\t};\n\texports.clearTimeout =\n\texports.clearInterval = function(timeout) { timeout.close(); };\n\t\n\tfunction Timeout(id, clearFn) {\n\t this._id = id;\n\t this._clearFn = clearFn;\n\t}\n\tTimeout.prototype.unref = Timeout.prototype.ref = function() {};\n\tTimeout.prototype.close = function() {\n\t this._clearFn.call(window, this._id);\n\t};\n\t\n\t// Does not start the time, just sets up the members needed.\n\texports.enroll = function(item, msecs) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = msecs;\n\t};\n\t\n\texports.unenroll = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = -1;\n\t};\n\t\n\texports._unrefActive = exports.active = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t\n\t var msecs = item._idleTimeout;\n\t if (msecs >= 0) {\n\t item._idleTimeoutId = setTimeout(function onTimeout() {\n\t if (item._onTimeout)\n\t item._onTimeout();\n\t }, msecs);\n\t }\n\t};\n\t\n\t// That's not how node.js implements it but the exposed api is the same.\n\texports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n\t var id = nextImmediateId++;\n\t var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\t\n\t immediateIds[id] = true;\n\t\n\t nextTick(function onNextTick() {\n\t if (immediateIds[id]) {\n\t // fn.call() is faster so we optimize for the common use-case\n\t // @see http://jsperf.com/call-apply-segu\n\t if (args) {\n\t fn.apply(null, args);\n\t } else {\n\t fn.call(null);\n\t }\n\t // Prevent ids from leaking\n\t exports.clearImmediate(id);\n\t }\n\t });\n\t\n\t return id;\n\t};\n\t\n\texports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n\t delete immediateIds[id];\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate, __webpack_require__(2).clearImmediate))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\t\n\tvar process = module.exports = {};\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = setTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t clearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t setTimeout(drainQueue, 0);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t//@source https://xts.so/demo/compress/index.html\n\t\n\t// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\n\tvar BlobConstructor = ((function () {\n\t try {\n\t new Blob();\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t})()) ? window.Blob : function (parts, opts) {\n\t var bb = new (\n\t window.BlobBuilder\n\t || window.WebKitBlobBuilder\n\t || window.MSBlobBuilder\n\t || window.MozBlobBuilder\n\t );\n\t parts.forEach(function (p) {\n\t bb.append(p);\n\t });\n\t\n\t return bb.getBlob(opts ? opts.type : undefined);\n\t};\n\t\n\t// Android上的AppleWebKit 534以前的内核存在一个Bug,\n\t// 导致FormData加入一个Blob对象后,上传的文件是0字节\n\tfunction hasFormDataBug () {\n\t var bCheck = ~navigator.userAgent.indexOf('Android')\n\t && ~navigator.vendor.indexOf('Google')\n\t && !~navigator.userAgent.indexOf('Chrome');\n\t\n\t // QQ X5浏览器也有这个BUG\n\t return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n\t}\n\tvar FormDataShim=(function(){\n\t var formDataShimNums = 0;\n\t return function FormDataShim () {\n\t var\n\t // Store a reference to this\n\t o = this,\n\t \n\t // Data to be sent\n\t parts = [],\n\t \n\t // Boundary parameter for separating the multipart values\n\t boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n\t \n\t // Store the current XHR send method so we can safely override it\n\t oldSend = XMLHttpRequest.prototype.send;\n\t this.getParts = function () {\n\t return parts.toString();\n\t };\n\t this.append = function (name, value, filename) {\n\t parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n\t \n\t if (value instanceof Blob) {\n\t parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n\t parts.push(value);\n\t }\n\t else {\n\t parts.push('\\r\\n\\r\\n' + value);\n\t }\n\t parts.push('\\r\\n');\n\t };\n\t \n\t formDataShimNums++;\n\t XMLHttpRequest.prototype.send = function (val) {\n\t var fr,\n\t data,\n\t oXHR = this;\n\t \n\t if (val === o) {\n\t // Append the final boundary string\n\t parts.push('--' + boundary + '--\\r\\n');\n\t // Create the blob\n\t data = new BlobConstructor(parts);\n\t \n\t // Set up and read the blob into an array to be sent\n\t fr = new FileReader();\n\t fr.onload = function () {\n\t oldSend.call(oXHR, fr.result);\n\t };\n\t fr.onerror = function (err) {\n\t throw err;\n\t };\n\t fr.readAsArrayBuffer(data);\n\t \n\t // Set the multipart content type and boudary\n\t this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n\t formDataShimNums--;\n\t if(formDataShimNums == 0){\n\t XMLHttpRequest.prototype.send = oldSend;\n\t }\n\t }\n\t else {\n\t oldSend.call(this, val);\n\t }\n\t };\n\t };\n\t})();\n\t\n\t\n\tmodule.exports = {\n\t Blob : BlobConstructor,\n\t FormData: hasFormDataBug() ? FormDataShim : FormData\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* exif */\n\t(function () {\n\t\n\t var debug = false;\n\t\n\t var root = this;\n\t\n\t var EXIF = function (obj) {\n\t if (obj instanceof EXIF) return obj;\n\t if (!(this instanceof EXIF)) return new EXIF(obj);\n\t this.EXIFwrapped = obj;\n\t };\n\t\n\t if (true) {\n\t if (typeof module !== 'undefined' && module.exports) {\n\t exports = module.exports = EXIF;\n\t }\n\t exports.EXIF = EXIF;\n\t } else {\n\t root.EXIF = EXIF;\n\t }\n\t\n\t var ExifTags = EXIF.Tags = {\n\t\n\t // version tags\n\t 0x9000: \"ExifVersion\", // EXIF version\n\t 0xA000: \"FlashpixVersion\", // Flashpix format version\n\t\n\t // colorspace tags\n\t 0xA001: \"ColorSpace\", // Color space information tag\n\t\n\t // image configuration\n\t 0xA002: \"PixelXDimension\", // Valid width of meaningful image\n\t 0xA003: \"PixelYDimension\", // Valid height of meaningful image\n\t 0x9101: \"ComponentsConfiguration\", // Information about channels\n\t 0x9102: \"CompressedBitsPerPixel\", // Compressed bits per pixel\n\t\n\t // user information\n\t 0x927C: \"MakerNote\", // Any desired information written by the manufacturer\n\t 0x9286: \"UserComment\", // Comments by user\n\t\n\t // related file\n\t 0xA004: \"RelatedSoundFile\", // Name of related sound file\n\t\n\t // date and time\n\t 0x9003: \"DateTimeOriginal\", // Date and time when the original image was generated\n\t 0x9004: \"DateTimeDigitized\", // Date and time when the image was stored digitally\n\t 0x9290: \"SubsecTime\", // Fractions of seconds for DateTime\n\t 0x9291: \"SubsecTimeOriginal\", // Fractions of seconds for DateTimeOriginal\n\t 0x9292: \"SubsecTimeDigitized\", // Fractions of seconds for DateTimeDigitized\n\t\n\t // picture-taking conditions\n\t 0x829A: \"ExposureTime\", // Exposure time (in seconds)\n\t 0x829D: \"FNumber\", // F number\n\t 0x8822: \"ExposureProgram\", // Exposure program\n\t 0x8824: \"SpectralSensitivity\", // Spectral sensitivity\n\t 0x8827: \"ISOSpeedRatings\", // ISO speed rating\n\t 0x8828: \"OECF\", // Optoelectric conversion factor\n\t 0x9201: \"ShutterSpeedValue\", // Shutter speed\n\t 0x9202: \"ApertureValue\", // Lens aperture\n\t 0x9203: \"BrightnessValue\", // Value of brightness\n\t 0x9204: \"ExposureBias\", // Exposure bias\n\t 0x9205: \"MaxApertureValue\", // Smallest F number of lens\n\t 0x9206: \"SubjectDistance\", // Distance to subject in meters\n\t 0x9207: \"MeteringMode\", // Metering mode\n\t 0x9208: \"LightSource\", // Kind of light source\n\t 0x9209: \"Flash\", // Flash status\n\t 0x9214: \"SubjectArea\", // Location and area of main subject\n\t 0x920A: \"FocalLength\", // Focal length of the lens in mm\n\t 0xA20B: \"FlashEnergy\", // Strobe energy in BCPS\n\t 0xA20C: \"SpatialFrequencyResponse\", //\n\t 0xA20E: \"FocalPlaneXResolution\", // Number of pixels in width direction per FocalPlaneResolutionUnit\n\t 0xA20F: \"FocalPlaneYResolution\", // Number of pixels in height direction per FocalPlaneResolutionUnit\n\t 0xA210: \"FocalPlaneResolutionUnit\", // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution\n\t 0xA214: \"SubjectLocation\", // Location of subject in image\n\t 0xA215: \"ExposureIndex\", // Exposure index selected on camera\n\t 0xA217: \"SensingMethod\", // Image sensor type\n\t 0xA300: \"FileSource\", // Image source (3 == DSC)\n\t 0xA301: \"SceneType\", // Scene type (1 == directly photographed)\n\t 0xA302: \"CFAPattern\", // Color filter array geometric pattern\n\t 0xA401: \"CustomRendered\", // Special processing\n\t 0xA402: \"ExposureMode\", // Exposure mode\n\t 0xA403: \"WhiteBalance\", // 1 = auto white balance, 2 = manual\n\t 0xA404: \"DigitalZoomRation\", // Digital zoom ratio\n\t 0xA405: \"FocalLengthIn35mmFilm\", // Equivalent foacl length assuming 35mm film camera (in mm)\n\t 0xA406: \"SceneCaptureType\", // Type of scene\n\t 0xA407: \"GainControl\", // Degree of overall image gain adjustment\n\t 0xA408: \"Contrast\", // Direction of contrast processing applied by camera\n\t 0xA409: \"Saturation\", // Direction of saturation processing applied by camera\n\t 0xA40A: \"Sharpness\", // Direction of sharpness processing applied by camera\n\t 0xA40B: \"DeviceSettingDescription\", //\n\t 0xA40C: \"SubjectDistanceRange\", // Distance to subject\n\t\n\t // other tags\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0xA420: \"ImageUniqueID\" // Identifier assigned uniquely to each image\n\t };\n\t\n\t var TiffTags = EXIF.TiffTags = {\n\t 0x0100: \"ImageWidth\",\n\t 0x0101: \"ImageHeight\",\n\t 0x8769: \"ExifIFDPointer\",\n\t 0x8825: \"GPSInfoIFDPointer\",\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0x0102: \"BitsPerSample\",\n\t 0x0103: \"Compression\",\n\t 0x0106: \"PhotometricInterpretation\",\n\t 0x0112: \"Orientation\",\n\t 0x0115: \"SamplesPerPixel\",\n\t 0x011C: \"PlanarConfiguration\",\n\t 0x0212: \"YCbCrSubSampling\",\n\t 0x0213: \"YCbCrPositioning\",\n\t 0x011A: \"XResolution\",\n\t 0x011B: \"YResolution\",\n\t 0x0128: \"ResolutionUnit\",\n\t 0x0111: \"StripOffsets\",\n\t 0x0116: \"RowsPerStrip\",\n\t 0x0117: \"StripByteCounts\",\n\t 0x0201: \"JPEGInterchangeFormat\",\n\t 0x0202: \"JPEGInterchangeFormatLength\",\n\t 0x012D: \"TransferFunction\",\n\t 0x013E: \"WhitePoint\",\n\t 0x013F: \"PrimaryChromaticities\",\n\t 0x0211: \"YCbCrCoefficients\",\n\t 0x0214: \"ReferenceBlackWhite\",\n\t 0x0132: \"DateTime\",\n\t 0x010E: \"ImageDescription\",\n\t 0x010F: \"Make\",\n\t 0x0110: \"Model\",\n\t 0x0131: \"Software\",\n\t 0x013B: \"Artist\",\n\t 0x8298: \"Copyright\"\n\t };\n\t\n\t var GPSTags = EXIF.GPSTags = {\n\t 0x0000: \"GPSVersionID\",\n\t 0x0001: \"GPSLatitudeRef\",\n\t 0x0002: \"GPSLatitude\",\n\t 0x0003: \"GPSLongitudeRef\",\n\t 0x0004: \"GPSLongitude\",\n\t 0x0005: \"GPSAltitudeRef\",\n\t 0x0006: \"GPSAltitude\",\n\t 0x0007: \"GPSTimeStamp\",\n\t 0x0008: \"GPSSatellites\",\n\t 0x0009: \"GPSStatus\",\n\t 0x000A: \"GPSMeasureMode\",\n\t 0x000B: \"GPSDOP\",\n\t 0x000C: \"GPSSpeedRef\",\n\t 0x000D: \"GPSSpeed\",\n\t 0x000E: \"GPSTrackRef\",\n\t 0x000F: \"GPSTrack\",\n\t 0x0010: \"GPSImgDirectionRef\",\n\t 0x0011: \"GPSImgDirection\",\n\t 0x0012: \"GPSMapDatum\",\n\t 0x0013: \"GPSDestLatitudeRef\",\n\t 0x0014: \"GPSDestLatitude\",\n\t 0x0015: \"GPSDestLongitudeRef\",\n\t 0x0016: \"GPSDestLongitude\",\n\t 0x0017: \"GPSDestBearingRef\",\n\t 0x0018: \"GPSDestBearing\",\n\t 0x0019: \"GPSDestDistanceRef\",\n\t 0x001A: \"GPSDestDistance\",\n\t 0x001B: \"GPSProcessingMethod\",\n\t 0x001C: \"GPSAreaInformation\",\n\t 0x001D: \"GPSDateStamp\",\n\t 0x001E: \"GPSDifferential\"\n\t };\n\t\n\t var StringValues = EXIF.StringValues = {\n\t ExposureProgram : {\n\t 0: \"Not defined\",\n\t 1: \"Manual\",\n\t 2: \"Normal program\",\n\t 3: \"Aperture priority\",\n\t 4: \"Shutter priority\",\n\t 5: \"Creative program\",\n\t 6: \"Action program\",\n\t 7: \"Portrait mode\",\n\t 8: \"Landscape mode\"\n\t },\n\t MeteringMode : {\n\t 0 : \"Unknown\",\n\t 1 : \"Average\",\n\t 2 : \"CenterWeightedAverage\",\n\t 3 : \"Spot\",\n\t 4 : \"MultiSpot\",\n\t 5 : \"Pattern\",\n\t 6 : \"Partial\",\n\t 255: \"Other\"\n\t },\n\t LightSource : {\n\t 0 : \"Unknown\",\n\t 1 : \"Daylight\",\n\t 2 : \"Fluorescent\",\n\t 3 : \"Tungsten (incandescent light)\",\n\t 4 : \"Flash\",\n\t 9 : \"Fine weather\",\n\t 10 : \"Cloudy weather\",\n\t 11 : \"Shade\",\n\t 12 : \"Daylight fluorescent (D 5700 - 7100K)\",\n\t 13 : \"Day white fluorescent (N 4600 - 5400K)\",\n\t 14 : \"Cool white fluorescent (W 3900 - 4500K)\",\n\t 15 : \"White fluorescent (WW 3200 - 3700K)\",\n\t 17 : \"Standard light A\",\n\t 18 : \"Standard light B\",\n\t 19 : \"Standard light C\",\n\t 20 : \"D55\",\n\t 21 : \"D65\",\n\t 22 : \"D75\",\n\t 23 : \"D50\",\n\t 24 : \"ISO studio tungsten\",\n\t 255: \"Other\"\n\t },\n\t Flash : {\n\t 0x0000: \"Flash did not fire\",\n\t 0x0001: \"Flash fired\",\n\t 0x0005: \"Strobe return light not detected\",\n\t 0x0007: \"Strobe return light detected\",\n\t 0x0009: \"Flash fired, compulsory flash mode\",\n\t 0x000D: \"Flash fired, compulsory flash mode, return light not detected\",\n\t 0x000F: \"Flash fired, compulsory flash mode, return light detected\",\n\t 0x0010: \"Flash did not fire, compulsory flash mode\",\n\t 0x0018: \"Flash did not fire, auto mode\",\n\t 0x0019: \"Flash fired, auto mode\",\n\t 0x001D: \"Flash fired, auto mode, return light not detected\",\n\t 0x001F: \"Flash fired, auto mode, return light detected\",\n\t 0x0020: \"No flash function\",\n\t 0x0041: \"Flash fired, red-eye reduction mode\",\n\t 0x0045: \"Flash fired, red-eye reduction mode, return light not detected\",\n\t 0x0047: \"Flash fired, red-eye reduction mode, return light detected\",\n\t 0x0049: \"Flash fired, compulsory flash mode, red-eye reduction mode\",\n\t 0x004D: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",\n\t 0x004F: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",\n\t 0x0059: \"Flash fired, auto mode, red-eye reduction mode\",\n\t 0x005D: \"Flash fired, auto mode, return light not detected, red-eye reduction mode\",\n\t 0x005F: \"Flash fired, auto mode, return light detected, red-eye reduction mode\"\n\t },\n\t SensingMethod : {\n\t 1: \"Not defined\",\n\t 2: \"One-chip color area sensor\",\n\t 3: \"Two-chip color area sensor\",\n\t 4: \"Three-chip color area sensor\",\n\t 5: \"Color sequential area sensor\",\n\t 7: \"Trilinear sensor\",\n\t 8: \"Color sequential linear sensor\"\n\t },\n\t SceneCaptureType : {\n\t 0: \"Standard\",\n\t 1: \"Landscape\",\n\t 2: \"Portrait\",\n\t 3: \"Night scene\"\n\t },\n\t SceneType : {\n\t 1: \"Directly photographed\"\n\t },\n\t CustomRendered : {\n\t 0: \"Normal process\",\n\t 1: \"Custom process\"\n\t },\n\t WhiteBalance : {\n\t 0: \"Auto white balance\",\n\t 1: \"Manual white balance\"\n\t },\n\t GainControl : {\n\t 0: \"None\",\n\t 1: \"Low gain up\",\n\t 2: \"High gain up\",\n\t 3: \"Low gain down\",\n\t 4: \"High gain down\"\n\t },\n\t Contrast : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t Saturation : {\n\t 0: \"Normal\",\n\t 1: \"Low saturation\",\n\t 2: \"High saturation\"\n\t },\n\t Sharpness : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t SubjectDistanceRange: {\n\t 0: \"Unknown\",\n\t 1: \"Macro\",\n\t 2: \"Close view\",\n\t 3: \"Distant view\"\n\t },\n\t FileSource : {\n\t 3: \"DSC\"\n\t },\n\t\n\t Components: {\n\t 0: \"\",\n\t 1: \"Y\",\n\t 2: \"Cb\",\n\t 3: \"Cr\",\n\t 4: \"R\",\n\t 5: \"G\",\n\t 6: \"B\"\n\t }\n\t };\n\t\n\t function addEvent (element, event, handler) {\n\t if (element.addEventListener) {\n\t element.addEventListener(event, handler, false);\n\t } else if (element.attachEvent) {\n\t element.attachEvent(\"on\" + event, handler);\n\t }\n\t }\n\t\n\t function imageHasData (img) {\n\t return !!(img.exifdata);\n\t }\n\t\n\t\n\t function base64ToArrayBuffer (base64, contentType) {\n\t contentType = contentType || base64.match(/^data\\:([^\\;]+)\\;base64,/mi)[1] || ''; // e.g. 'data:image/jpeg;base64,...' => 'image/jpeg'\n\t base64 = base64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n\t var binary = atob(base64);\n\t var len = binary.length;\n\t var buffer = new ArrayBuffer(len);\n\t var view = new Uint8Array(buffer);\n\t for (var i = 0; i < len; i++) {\n\t view[i] = binary.charCodeAt(i);\n\t }\n\t return buffer;\n\t }\n\t\n\t function objectURLToBlob (url, callback) {\n\t var http = new XMLHttpRequest();\n\t http.open(\"GET\", url, true);\n\t http.responseType = \"blob\";\n\t http.onload = function (e) {\n\t if (this.status == 200 || this.status === 0) {\n\t callback(this.response);\n\t }\n\t };\n\t http.send();\n\t }\n\t\n\t function getImageData (img, callback) {\n\t function handleBinaryFile (binFile) {\n\t var data = findEXIFinJPEG(binFile);\n\t var iptcdata = findIPTCinJPEG(binFile);\n\t img.exifdata = data || {};\n\t img.iptcdata = iptcdata || {};\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t\n\t if (img.src) {\n\t if (/^data\\:/i.test(img.src)) { // Data URI\n\t var arrayBuffer = base64ToArrayBuffer(img.src);\n\t handleBinaryFile(arrayBuffer);\n\t\n\t } else if (/^blob\\:/i.test(img.src)) { // Object URL\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t handleBinaryFile(e.target.result);\n\t };\n\t objectURLToBlob(img.src, function (blob) {\n\t fileReader.readAsArrayBuffer(blob);\n\t });\n\t } else {\n\t var http = new XMLHttpRequest();\n\t http.onload = function () {\n\t if (this.status == 200 || this.status === 0) {\n\t handleBinaryFile(http.response);\n\t } else {\n\t callback(new Error(\"Could not load image\"));\n\t }\n\t http = null;\n\t };\n\t http.open(\"GET\", img.src, true);\n\t http.responseType = \"arraybuffer\";\n\t http.send(null);\n\t }\n\t } else if (window.FileReader && (img instanceof window.Blob || img instanceof window.File)) {\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t if (debug) console.log(\"Got file of length \" + e.target.result.byteLength);\n\t handleBinaryFile(e.target.result);\n\t };\n\t\n\t fileReader.readAsArrayBuffer(img);\n\t }\n\t }\n\t\n\t function findEXIFinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength,\n\t marker;\n\t\n\t while (offset < length) {\n\t if (dataView.getUint8(offset) != 0xFF) {\n\t if (debug) console.log(\"Not a valid marker at offset \" + offset + \", found: \" + dataView.getUint8(offset));\n\t return false; // not a valid marker, something is wrong\n\t }\n\t\n\t marker = dataView.getUint8(offset + 1);\n\t if (debug) console.log(marker);\n\t\n\t // we could implement handling for other markers here,\n\t // but we're only looking for 0xFFE1 for EXIF data\n\t\n\t if (marker == 225) {\n\t if (debug) console.log(\"Found 0xFFE1 marker\");\n\t\n\t return readEXIFData(dataView, offset + 4, dataView.getUint16(offset + 2) - 2);\n\t\n\t // offset += 2 + file.getShortAt(offset+2, true);\n\t\n\t } else {\n\t offset += 2 + dataView.getUint16(offset + 2);\n\t }\n\t\n\t }\n\t\n\t }\n\t\n\t function findIPTCinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength;\n\t\n\t\n\t var isFieldSegmentStart = function (dataView, offset) {\n\t return (\n\t dataView.getUint8(offset) === 0x38 &&\n\t dataView.getUint8(offset + 1) === 0x42 &&\n\t dataView.getUint8(offset + 2) === 0x49 &&\n\t dataView.getUint8(offset + 3) === 0x4D &&\n\t dataView.getUint8(offset + 4) === 0x04 &&\n\t dataView.getUint8(offset + 5) === 0x04\n\t );\n\t };\n\t\n\t while (offset < length) {\n\t\n\t if (isFieldSegmentStart(dataView, offset)) {\n\t\n\t // Get the length of the name header (which is padded to an even number of bytes)\n\t var nameHeaderLength = dataView.getUint8(offset + 7);\n\t if (nameHeaderLength % 2 !== 0) nameHeaderLength += 1;\n\t // Check for pre photoshop 6 format\n\t if (nameHeaderLength === 0) {\n\t // Always 4\n\t nameHeaderLength = 4;\n\t }\n\t\n\t var startOffset = offset + 8 + nameHeaderLength;\n\t var sectionLength = dataView.getUint16(offset + 6 + nameHeaderLength);\n\t\n\t return readIPTCData(file, startOffset, sectionLength);\n\t\n\t break;\n\t\n\t }\n\t\n\t\n\t // Not the marker, continue searching\n\t offset++;\n\t\n\t }\n\t\n\t }\n\t\n\t var IptcFieldMap = {\n\t 0x78: 'caption',\n\t 0x6E: 'credit',\n\t 0x19: 'keywords',\n\t 0x37: 'dateCreated',\n\t 0x50: 'byline',\n\t 0x55: 'bylineTitle',\n\t 0x7A: 'captionWriter',\n\t 0x69: 'headline',\n\t 0x74: 'copyright',\n\t 0x0F: 'category'\n\t };\n\t\n\t function readIPTCData (file, startOffset, sectionLength) {\n\t var dataView = new DataView(file);\n\t var data = {};\n\t var fieldValue, fieldName, dataSize, segmentType, segmentSize;\n\t var segmentStartPos = startOffset;\n\t while (segmentStartPos < startOffset + sectionLength) {\n\t if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) {\n\t segmentType = dataView.getUint8(segmentStartPos + 2);\n\t if (segmentType in IptcFieldMap) {\n\t dataSize = dataView.getInt16(segmentStartPos + 3);\n\t segmentSize = dataSize + 5;\n\t fieldName = IptcFieldMap[segmentType];\n\t fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize);\n\t // Check if we already stored a value with this name\n\t if (data.hasOwnProperty(fieldName)) {\n\t // Value already stored with this name, create multivalue field\n\t if (data[fieldName] instanceof Array) {\n\t data[fieldName].push(fieldValue);\n\t }\n\t else {\n\t data[fieldName] = [data[fieldName], fieldValue];\n\t }\n\t }\n\t else {\n\t data[fieldName] = fieldValue;\n\t }\n\t }\n\t\n\t }\n\t segmentStartPos++;\n\t }\n\t return data;\n\t }\n\t\n\t\n\t function readTags (file, tiffStart, dirStart, strings, bigEnd) {\n\t var entries = file.getUint16(dirStart, !bigEnd),\n\t tags = {},\n\t entryOffset, tag,\n\t i;\n\t\n\t for (i = 0; i < entries; i++) {\n\t entryOffset = dirStart + i * 12 + 2;\n\t tag = strings[file.getUint16(entryOffset, !bigEnd)];\n\t if (!tag && debug) console.log(\"Unknown tag: \" + file.getUint16(entryOffset, !bigEnd));\n\t tags[tag] = readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd);\n\t }\n\t return tags;\n\t }\n\t\n\t\n\t function readTagValue (file, entryOffset, tiffStart, dirStart, bigEnd) {\n\t var type = file.getUint16(entryOffset + 2, !bigEnd),\n\t numValues = file.getUint32(entryOffset + 4, !bigEnd),\n\t valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart,\n\t offset,\n\t vals, val, n,\n\t numerator, denominator;\n\t\n\t switch (type) {\n\t case 1: // byte, 8-bit unsigned int\n\t case 7: // undefined, 8-bit byte, value depending on field\n\t if (numValues == 1) {\n\t return file.getUint8(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint8(offset + n);\n\t }\n\t return vals;\n\t }\n\t\n\t case 2: // ascii, 8-bit byte\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t return getStringFromDB(file, offset, numValues - 1);\n\t\n\t case 3: // short, 16 bit int\n\t if (numValues == 1) {\n\t return file.getUint16(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 2 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint16(offset + 2 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 4: // long, 32 bit int\n\t if (numValues == 1) {\n\t return file.getUint32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 5: // rational = two long values, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t numerator = file.getUint32(valueOffset, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4, !bigEnd);\n\t val = new Number(numerator / denominator);\n\t val.numerator = numerator;\n\t val.denominator = denominator;\n\t return val;\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t numerator = file.getUint32(valueOffset + 8 * n, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4 + 8 * n, !bigEnd);\n\t vals[n] = new Number(numerator / denominator);\n\t vals[n].numerator = numerator;\n\t vals[n].denominator = denominator;\n\t }\n\t return vals;\n\t }\n\t\n\t case 9: // slong, 32 bit signed int\n\t if (numValues == 1) {\n\t return file.getInt32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 10: // signed rational, two slongs, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t return file.getInt32(valueOffset, !bigEnd) / file.getInt32(valueOffset + 4, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 8 * n, !bigEnd) / file.getInt32(valueOffset + 4 + 8 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t }\n\t }\n\t\n\t function getStringFromDB (buffer, start, length) {\n\t var outstr = \"\", n;\n\t for (n = start; n < start + length; n++) {\n\t outstr += String.fromCharCode(buffer.getUint8(n));\n\t }\n\t return outstr;\n\t }\n\t\n\t function readEXIFData (file, start) {\n\t if (getStringFromDB(file, start, 4) != \"Exif\") {\n\t if (debug) console.log(\"Not valid EXIF data! \" + getStringFromDB(file, start, 4));\n\t return false;\n\t }\n\t\n\t var bigEnd,\n\t tags, tag,\n\t exifData, gpsData,\n\t tiffOffset = start + 6;\n\t\n\t // test for TIFF validity and endianness\n\t if (file.getUint16(tiffOffset) == 0x4949) {\n\t bigEnd = false;\n\t } else if (file.getUint16(tiffOffset) == 0x4D4D) {\n\t bigEnd = true;\n\t } else {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\");\n\t return false;\n\t }\n\t\n\t if (file.getUint16(tiffOffset + 2, !bigEnd) != 0x002A) {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x002A)\");\n\t return false;\n\t }\n\t\n\t var firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);\n\t\n\t if (firstIFDOffset < 0x00000008) {\n\t if (debug) console.log(\"Not valid TIFF data! (First offset less than 8)\", file.getUint32(tiffOffset + 4, !bigEnd));\n\t return false;\n\t }\n\t\n\t tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);\n\t\n\t if (tags.ExifIFDPointer) {\n\t exifData = readTags(file, tiffOffset, tiffOffset + tags.ExifIFDPointer, ExifTags, bigEnd);\n\t for (tag in exifData) {\n\t switch (tag) {\n\t case \"LightSource\" :\n\t case \"Flash\" :\n\t case \"MeteringMode\" :\n\t case \"ExposureProgram\" :\n\t case \"SensingMethod\" :\n\t case \"SceneCaptureType\" :\n\t case \"SceneType\" :\n\t case \"CustomRendered\" :\n\t case \"WhiteBalance\" :\n\t case \"GainControl\" :\n\t case \"Contrast\" :\n\t case \"Saturation\" :\n\t case \"Sharpness\" :\n\t case \"SubjectDistanceRange\" :\n\t case \"FileSource\" :\n\t exifData[tag] = StringValues[tag][exifData[tag]];\n\t break;\n\t\n\t case \"ExifVersion\" :\n\t case \"FlashpixVersion\" :\n\t exifData[tag] = String.fromCharCode(exifData[tag][0], exifData[tag][1], exifData[tag][2], exifData[tag][3]);\n\t break;\n\t\n\t case \"ComponentsConfiguration\" :\n\t exifData[tag] =\n\t StringValues.Components[exifData[tag][0]] +\n\t StringValues.Components[exifData[tag][1]] +\n\t StringValues.Components[exifData[tag][2]] +\n\t StringValues.Components[exifData[tag][3]];\n\t break;\n\t }\n\t tags[tag] = exifData[tag];\n\t }\n\t }\n\t\n\t if (tags.GPSInfoIFDPointer) {\n\t gpsData = readTags(file, tiffOffset, tiffOffset + tags.GPSInfoIFDPointer, GPSTags, bigEnd);\n\t for (tag in gpsData) {\n\t switch (tag) {\n\t case \"GPSVersionID\" :\n\t gpsData[tag] = gpsData[tag][0] +\n\t \".\" + gpsData[tag][1] +\n\t \".\" + gpsData[tag][2] +\n\t \".\" + gpsData[tag][3];\n\t break;\n\t }\n\t tags[tag] = gpsData[tag];\n\t }\n\t }\n\t\n\t return tags;\n\t }\n\t\n\t EXIF.getData = function (img, callback) {\n\t if ((img instanceof Image || img instanceof HTMLImageElement) && !img.complete) return false;\n\t\n\t if (!imageHasData(img)) {\n\t getImageData(img, callback);\n\t } else {\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t return true;\n\t }\n\t\n\t EXIF.getTag = function (img, tag) {\n\t if (!imageHasData(img)) return;\n\t return img.exifdata[tag];\n\t }\n\t\n\t EXIF.getAllTags = function (img) {\n\t if (!imageHasData(img)) return {};\n\t var a,\n\t data = img.exifdata,\n\t tags = {};\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t tags[a] = data[a];\n\t }\n\t }\n\t return tags;\n\t }\n\t\n\t EXIF.pretty = function (img) {\n\t if (!imageHasData(img)) return \"\";\n\t var a,\n\t data = img.exifdata,\n\t strPretty = \"\";\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t if (typeof data[a] == \"object\") {\n\t if (data[a] instanceof Number) {\n\t strPretty += a + \" : \" + data[a] + \" [\" + data[a].numerator + \"/\" + data[a].denominator + \"]\\r\\n\";\n\t } else {\n\t strPretty += a + \" : [\" + data[a].length + \" values]\\r\\n\";\n\t }\n\t } else {\n\t strPretty += a + \" : \" + data[a] + \"\\r\\n\";\n\t }\n\t }\n\t }\n\t return strPretty;\n\t }\n\t\n\t EXIF.readFromBinaryFile = function (file) {\n\t return findEXIFinJPEG(file);\n\t }\n\t\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return EXIF;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t }\n\t}.call(this));\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n\t * Mega pixel image rendering library for iOS6 Safari\n\t *\n\t * Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel),\n\t * which causes unexpected subsampling when drawing it in canvas.\n\t * By using this library, you can safely render the image with proper stretching.\n\t *\n\t * Copyright (c) 2012 Shinichi Tomita \n\t * Released under the MIT license\n\t */\n\t(function () {\n\t\n\t /**\n\t * Detect subsampling in loaded image.\n\t * In iOS, larger images than 2M pixels may be subsampled in rendering.\n\t */\n\t function detectSubsampling (img) {\n\t var iw = img.naturalWidth, ih = img.naturalHeight;\n\t if (iw * ih > 1024 * 1024) { // subsampling may happen over megapixel image\n\t var canvas = document.createElement('canvas');\n\t canvas.width = canvas.height = 1;\n\t var ctx = canvas.getContext('2d');\n\t ctx.drawImage(img, -iw + 1, 0);\n\t // subsampled image becomes half smaller in rendering size.\n\t // check alpha channel value to confirm image is covering edge pixel or not.\n\t // if alpha value is 0 image is not covering, hence subsampled.\n\t return ctx.getImageData(0, 0, 1, 1).data[3] === 0;\n\t } else {\n\t return false;\n\t }\n\t }\n\t\n\t /**\n\t * Detecting vertical squash in loaded image.\n\t * Fixes a bug which squash image vertically while drawing into canvas for some images.\n\t */\n\t function detectVerticalSquash (img, iw, ih) {\n\t var canvas = document.createElement('canvas');\n\t canvas.width = 1;\n\t canvas.height = ih;\n\t var ctx = canvas.getContext('2d');\n\t ctx.drawImage(img, 0, 0);\n\t var data = ctx.getImageData(0, 0, 1, ih).data;\n\t // search image edge pixel position in case it is squashed vertically.\n\t var sy = 0;\n\t var ey = ih;\n\t var py = ih;\n\t while (py > sy) {\n\t var alpha = data[(py - 1) * 4 + 3];\n\t if (alpha === 0) {\n\t ey = py;\n\t } else {\n\t sy = py;\n\t }\n\t py = (ey + sy) >> 1;\n\t }\n\t var ratio = (py / ih);\n\t return (ratio === 0) ? 1 : ratio;\n\t }\n\t\n\t /**\n\t * Rendering image element (with resizing) and get its data URL\n\t */\n\t function renderImageToDataURL (img, options, doSquash) {\n\t var canvas = document.createElement('canvas');\n\t renderImageToCanvas(img, canvas, options, doSquash);\n\t return canvas.toDataURL(\"image/jpeg\", options.quality || 0.8);\n\t }\n\t\n\t /**\n\t * Rendering image element (with resizing) into the canvas element\n\t */\n\t function renderImageToCanvas (img, canvas, options, doSquash) {\n\t var iw = img.naturalWidth, ih = img.naturalHeight;\n\t var width = options.width, height = options.height;\n\t var ctx = canvas.getContext('2d');\n\t ctx.save();\n\t transformCoordinate(canvas, ctx, width, height, options.orientation);\n\t var subsampled = detectSubsampling(img);\n\t if (subsampled) {\n\t iw /= 2;\n\t ih /= 2;\n\t }\n\t var d = 1024; // size of tiling canvas\n\t var tmpCanvas = document.createElement('canvas');\n\t tmpCanvas.width = tmpCanvas.height = d;\n\t var tmpCtx = tmpCanvas.getContext('2d');\n\t var vertSquashRatio = doSquash ? detectVerticalSquash(img, iw, ih) : 1;\n\t var dw = Math.ceil(d * width / iw);\n\t var dh = Math.ceil(d * height / ih / vertSquashRatio);\n\t var sy = 0;\n\t var dy = 0;\n\t while (sy < ih) {\n\t var sx = 0;\n\t var dx = 0;\n\t while (sx < iw) {\n\t tmpCtx.clearRect(0, 0, d, d);\n\t tmpCtx.drawImage(img, -sx, -sy);\n\t ctx.drawImage(tmpCanvas, 0, 0, d, d, dx, dy, dw, dh);\n\t sx += d;\n\t dx += dw;\n\t }\n\t sy += d;\n\t dy += dh;\n\t }\n\t ctx.restore();\n\t tmpCanvas = tmpCtx = null;\n\t }\n\t\n\t /**\n\t * Transform canvas coordination according to specified frame size and orientation\n\t * Orientation value is from EXIF tag\n\t */\n\t function transformCoordinate (canvas, ctx, width, height, orientation) {\n\t switch (orientation) {\n\t case 5:\n\t case 6:\n\t case 7:\n\t case 8:\n\t canvas.width = height;\n\t canvas.height = width;\n\t break;\n\t default:\n\t canvas.width = width;\n\t canvas.height = height;\n\t }\n\t switch (orientation) {\n\t case 2:\n\t // horizontal flip\n\t ctx.translate(width, 0);\n\t ctx.scale(-1, 1);\n\t break;\n\t case 3:\n\t // 180 rotate left\n\t ctx.translate(width, height);\n\t ctx.rotate(Math.PI);\n\t break;\n\t case 4:\n\t // vertical flip\n\t ctx.translate(0, height);\n\t ctx.scale(1, -1);\n\t break;\n\t case 5:\n\t // vertical flip + 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.scale(1, -1);\n\t break;\n\t case 6:\n\t // 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.translate(0, -height);\n\t break;\n\t case 7:\n\t // horizontal flip + 90 rotate right\n\t ctx.rotate(0.5 * Math.PI);\n\t ctx.translate(width, -height);\n\t ctx.scale(-1, 1);\n\t break;\n\t case 8:\n\t // 90 rotate left\n\t ctx.rotate(-0.5 * Math.PI);\n\t ctx.translate(-width, 0);\n\t break;\n\t default:\n\t break;\n\t }\n\t }\n\t\n\t\n\t /**\n\t * MegaPixImage class\n\t */\n\t function MegaPixImage (srcImage) {\n\t if (window.Blob && srcImage instanceof Blob) {\n\t var img = new Image();\n\t var URL = window.URL && window.URL.createObjectURL ? window.URL :\n\t window.webkitURL && window.webkitURL.createObjectURL ? window.webkitURL :\n\t null;\n\t if (!URL) {\n\t throw Error(\"No createObjectURL function found to create blob url\");\n\t }\n\t img.src = URL.createObjectURL(srcImage);\n\t this.blob = srcImage;\n\t srcImage = img;\n\t }\n\t if (!srcImage.naturalWidth && !srcImage.naturalHeight) {\n\t var _this = this;\n\t srcImage.onload = function () {\n\t var listeners = _this.imageLoadListeners;\n\t if (listeners) {\n\t _this.imageLoadListeners = null;\n\t for (var i = 0, len = listeners.length; i < len; i++) {\n\t listeners[i]();\n\t }\n\t }\n\t };\n\t this.imageLoadListeners = [];\n\t }\n\t this.srcImage = srcImage;\n\t }\n\t\n\t /**\n\t * Rendering megapix image into specified target element\n\t */\n\t MegaPixImage.prototype.render = function (target, options, callback) {\n\t if (this.imageLoadListeners) {\n\t var _this = this;\n\t this.imageLoadListeners.push(function () {\n\t _this.render(target, options, callback);\n\t });\n\t return;\n\t }\n\t options = options || {};\n\t var srcImage = this.srcImage,\n\t src = srcImage.src,\n\t srcLength = src.length,\n\t imgWidth = srcImage.naturalWidth, imgHeight = srcImage.naturalHeight,\n\t width = options.width, height = options.height,\n\t maxWidth = options.maxWidth, maxHeight = options.maxHeight,\n\t doSquash = this.blob && this.blob.type === 'image/jpeg' ||\n\t src.indexOf('data:image/jpeg') === 0 ||\n\t src.indexOf('.jpg') === srcLength - 4 ||\n\t src.indexOf('.jpeg') === srcLength - 5;\n\t if (width && !height) {\n\t height = (imgHeight * width / imgWidth) << 0;\n\t } else if (height && !width) {\n\t width = (imgWidth * height / imgHeight) << 0;\n\t } else {\n\t width = imgWidth;\n\t height = imgHeight;\n\t }\n\t if (maxWidth && width > maxWidth) {\n\t width = maxWidth;\n\t height = (imgHeight * width / imgWidth) << 0;\n\t }\n\t if (maxHeight && height > maxHeight) {\n\t height = maxHeight;\n\t width = (imgWidth * height / imgHeight) << 0;\n\t }\n\t var opt = {width: width, height: height};\n\t for (var k in options) opt[k] = options[k];\n\t\n\t var tagName = target.tagName.toLowerCase();\n\t if (tagName === 'img') {\n\t target.src = renderImageToDataURL(this.srcImage, opt, doSquash);\n\t } else if (tagName === 'canvas') {\n\t renderImageToCanvas(this.srcImage, target, opt, doSquash);\n\t }\n\t if (typeof this.onrender === 'function') {\n\t this.onrender(target);\n\t }\n\t if (callback) {\n\t callback();\n\t }\n\t };\n\t\n\t /**\n\t * Export class to global\n\t */\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return MegaPixImage;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // for AMD loader\n\t } else {\n\t this.MegaPixImage = MegaPixImage;\n\t }\n\t\n\t})();\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\tfunction JPEGEncoder (l) {\n\t var o = this;\n\t var s = Math.round;\n\t var k = Math.floor;\n\t var O = new Array(64);\n\t var K = new Array(64);\n\t var d = new Array(64);\n\t var Z = new Array(64);\n\t var u;\n\t var h;\n\t var G;\n\t var T;\n\t var n = new Array(65535);\n\t var m = new Array(65535);\n\t var P = new Array(64);\n\t var S = new Array(64);\n\t var j = [];\n\t var t = 0;\n\t var a = 7;\n\t var A = new Array(64);\n\t var f = new Array(64);\n\t var U = new Array(64);\n\t var e = new Array(256);\n\t var C = new Array(2048);\n\t var x;\n\t var i = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\n\t var g = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];\n\t var c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t var w = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125];\n\t var E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\t var v = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0];\n\t var Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t var J = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119];\n\t var B = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\t\n\t function M (ag) {\n\t var af = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99];\n\t for (var ae = 0; ae < 64; ae++) {\n\t var aj = k((af[ae] * ag + 50) / 100);\n\t if (aj < 1) {\n\t aj = 1\n\t } else {\n\t if (aj > 255) {\n\t aj = 255\n\t }\n\t }\n\t O[i[ae]] = aj\n\t }\n\t var ah = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99];\n\t for (var ad = 0; ad < 64; ad++) {\n\t var ai = k((ah[ad] * ag + 50) / 100);\n\t if (ai < 1) {\n\t ai = 1\n\t } else {\n\t if (ai > 255) {\n\t ai = 255\n\t }\n\t }\n\t K[i[ad]] = ai\n\t }\n\t var ac = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n\t var ab = 0;\n\t for (var ak = 0; ak < 8; ak++) {\n\t for (var aa = 0; aa < 8; aa++) {\n\t d[ab] = (1 / (O[i[ab]] * ac[ak] * ac[aa] * 8));\n\t Z[ab] = (1 / (K[i[ab]] * ac[ak] * ac[aa] * 8));\n\t ab++\n\t }\n\t }\n\t }\n\t\n\t function q (ae, aa) {\n\t var ad = 0;\n\t var ag = 0;\n\t var af = new Array();\n\t for (var ab = 1; ab <= 16; ab++) {\n\t for (var ac = 1; ac <= ae[ab]; ac++) {\n\t af[aa[ag]] = [];\n\t af[aa[ag]][0] = ad;\n\t af[aa[ag]][1] = ab;\n\t ag++;\n\t ad++\n\t }\n\t ad *= 2\n\t }\n\t return af\n\t }\n\t\n\t function W () {\n\t u = q(g, c);\n\t h = q(v, Y);\n\t G = q(w, E);\n\t T = q(J, B)\n\t }\n\t\n\t function z () {\n\t var ac = 1;\n\t var ab = 2;\n\t for (var aa = 1; aa <= 15; aa++) {\n\t for (var ad = ac; ad < ab; ad++) {\n\t m[32767 + ad] = aa;\n\t n[32767 + ad] = [];\n\t n[32767 + ad][1] = aa;\n\t n[32767 + ad][0] = ad\n\t }\n\t for (var ae = -(ab - 1); ae <= -ac; ae++) {\n\t m[32767 + ae] = aa;\n\t n[32767 + ae] = [];\n\t n[32767 + ae][1] = aa;\n\t n[32767 + ae][0] = ab - 1 + ae\n\t }\n\t ac <<= 1;\n\t ab <<= 1\n\t }\n\t }\n\t\n\t function V () {\n\t for (var aa = 0; aa < 256; aa++) {\n\t C[aa] = 19595 * aa;\n\t C[(aa + 256) >> 0] = 38470 * aa;\n\t C[(aa + 512) >> 0] = 7471 * aa + 32768;\n\t C[(aa + 768) >> 0] = -11059 * aa;\n\t C[(aa + 1024) >> 0] = -21709 * aa;\n\t C[(aa + 1280) >> 0] = 32768 * aa + 8421375;\n\t C[(aa + 1536) >> 0] = -27439 * aa;\n\t C[(aa + 1792) >> 0] = -5329 * aa\n\t }\n\t }\n\t\n\t function X (aa) {\n\t var ac = aa[0];\n\t var ab = aa[1] - 1;\n\t while (ab >= 0) {\n\t if (ac & (1 << ab)) {\n\t t |= (1 << a)\n\t }\n\t ab--;\n\t a--;\n\t if (a < 0) {\n\t if (t == 255) {\n\t F(255);\n\t F(0)\n\t } else {\n\t F(t)\n\t }\n\t a = 7;\n\t t = 0\n\t }\n\t }\n\t }\n\t\n\t function F (aa) {\n\t j.push(e[aa])\n\t }\n\t\n\t function p (aa) {\n\t F((aa >> 8) & 255);\n\t F((aa) & 255)\n\t }\n\t\n\t function N (aZ, ap) {\n\t var aL, aK, aJ, aI, aH, aD, aC, aB;\n\t var aN = 0;\n\t var aR;\n\t const aq = 8;\n\t const ai = 64;\n\t for (aR = 0; aR < aq; ++aR) {\n\t aL = aZ[aN];\n\t aK = aZ[aN + 1];\n\t aJ = aZ[aN + 2];\n\t aI = aZ[aN + 3];\n\t aH = aZ[aN + 4];\n\t aD = aZ[aN + 5];\n\t aC = aZ[aN + 6];\n\t aB = aZ[aN + 7];\n\t var aY = aL + aB;\n\t var aO = aL - aB;\n\t var aX = aK + aC;\n\t var aP = aK - aC;\n\t var aU = aJ + aD;\n\t var aQ = aJ - aD;\n\t var aT = aI + aH;\n\t var aS = aI - aH;\n\t var an = aY + aT;\n\t var ak = aY - aT;\n\t var am = aX + aU;\n\t var al = aX - aU;\n\t aZ[aN] = an + am;\n\t aZ[aN + 4] = an - am;\n\t var ax = (al + ak) * 0.707106781;\n\t aZ[aN + 2] = ak + ax;\n\t aZ[aN + 6] = ak - ax;\n\t an = aS + aQ;\n\t am = aQ + aP;\n\t al = aP + aO;\n\t var at = (an - al) * 0.382683433;\n\t var aw = 0.5411961 * an + at;\n\t var au = 1.306562965 * al + at;\n\t var av = am * 0.707106781;\n\t var ah = aO + av;\n\t var ag = aO - av;\n\t aZ[aN + 5] = ag + aw;\n\t aZ[aN + 3] = ag - aw;\n\t aZ[aN + 1] = ah + au;\n\t aZ[aN + 7] = ah - au;\n\t aN += 8\n\t }\n\t aN = 0;\n\t for (aR = 0; aR < aq; ++aR) {\n\t aL = aZ[aN];\n\t aK = aZ[aN + 8];\n\t aJ = aZ[aN + 16];\n\t aI = aZ[aN + 24];\n\t aH = aZ[aN + 32];\n\t aD = aZ[aN + 40];\n\t aC = aZ[aN + 48];\n\t aB = aZ[aN + 56];\n\t var ar = aL + aB;\n\t var aj = aL - aB;\n\t var az = aK + aC;\n\t var ae = aK - aC;\n\t var aG = aJ + aD;\n\t var ac = aJ - aD;\n\t var aW = aI + aH;\n\t var aa = aI - aH;\n\t var ao = ar + aW;\n\t var aV = ar - aW;\n\t var ay = az + aG;\n\t var aF = az - aG;\n\t aZ[aN] = ao + ay;\n\t aZ[aN + 32] = ao - ay;\n\t var af = (aF + aV) * 0.707106781;\n\t aZ[aN + 16] = aV + af;\n\t aZ[aN + 48] = aV - af;\n\t ao = aa + ac;\n\t ay = ac + ae;\n\t aF = ae + aj;\n\t var aM = (ao - aF) * 0.382683433;\n\t var ad = 0.5411961 * ao + aM;\n\t var a1 = 1.306562965 * aF + aM;\n\t var ab = ay * 0.707106781;\n\t var a0 = aj + ab;\n\t var aA = aj - ab;\n\t aZ[aN + 40] = aA + ad;\n\t aZ[aN + 24] = aA - ad;\n\t aZ[aN + 8] = a0 + a1;\n\t aZ[aN + 56] = a0 - a1;\n\t aN++\n\t }\n\t var aE;\n\t for (aR = 0; aR < ai; ++aR) {\n\t aE = aZ[aR] * ap[aR];\n\t P[aR] = (aE > 0) ? ((aE + 0.5) | 0) : ((aE - 0.5) | 0)\n\t }\n\t return P\n\t }\n\t\n\t function b () {\n\t p(65504);\n\t p(16);\n\t F(74);\n\t F(70);\n\t F(73);\n\t F(70);\n\t F(0);\n\t F(1);\n\t F(1);\n\t F(0);\n\t p(1);\n\t p(1);\n\t F(0);\n\t F(0)\n\t }\n\t\n\t function r (aa, ab) {\n\t p(65472);\n\t p(17);\n\t F(8);\n\t p(ab);\n\t p(aa);\n\t F(3);\n\t F(1);\n\t F(17);\n\t F(0);\n\t F(2);\n\t F(17);\n\t F(1);\n\t F(3);\n\t F(17);\n\t F(1)\n\t }\n\t\n\t function D () {\n\t p(65499);\n\t p(132);\n\t F(0);\n\t for (var ab = 0; ab < 64; ab++) {\n\t F(O[ab])\n\t }\n\t F(1);\n\t for (var aa = 0; aa < 64; aa++) {\n\t F(K[aa])\n\t }\n\t }\n\t\n\t function H () {\n\t p(65476);\n\t p(418);\n\t F(0);\n\t for (var ae = 0; ae < 16; ae++) {\n\t F(g[ae + 1])\n\t }\n\t for (var ad = 0; ad <= 11; ad++) {\n\t F(c[ad])\n\t }\n\t F(16);\n\t for (var ac = 0; ac < 16; ac++) {\n\t F(w[ac + 1])\n\t }\n\t for (var ab = 0; ab <= 161; ab++) {\n\t F(E[ab])\n\t }\n\t F(1);\n\t for (var aa = 0; aa < 16; aa++) {\n\t F(v[aa + 1])\n\t }\n\t for (var ah = 0; ah <= 11; ah++) {\n\t F(Y[ah])\n\t }\n\t F(17);\n\t for (var ag = 0; ag < 16; ag++) {\n\t F(J[ag + 1])\n\t }\n\t for (var af = 0; af <= 161; af++) {\n\t F(B[af])\n\t }\n\t }\n\t\n\t function I () {\n\t p(65498);\n\t p(12);\n\t F(3);\n\t F(1);\n\t F(0);\n\t F(2);\n\t F(17);\n\t F(3);\n\t F(17);\n\t F(0);\n\t F(63);\n\t F(0)\n\t }\n\t\n\t function L (ad, aa, al, at, ap) {\n\t var ag = ap[0];\n\t var ab = ap[240];\n\t var ac;\n\t const ar = 16;\n\t const ai = 63;\n\t const ah = 64;\n\t var aq = N(ad, aa);\n\t for (var am = 0; am < ah; ++am) {\n\t S[i[am]] = aq[am]\n\t }\n\t var an = S[0] - al;\n\t al = S[0];\n\t if (an == 0) {\n\t X(at[0])\n\t } else {\n\t ac = 32767 + an;\n\t X(at[m[ac]]);\n\t X(n[ac])\n\t }\n\t var ae = 63;\n\t for (; (ae > 0) && (S[ae] == 0); ae--) {\n\t }\n\t if (ae == 0) {\n\t X(ag);\n\t return al\n\t }\n\t var ao = 1;\n\t var au;\n\t while (ao <= ae) {\n\t var ak = ao;\n\t for (; (S[ao] == 0) && (ao <= ae); ++ao) {\n\t }\n\t var aj = ao - ak;\n\t if (aj >= ar) {\n\t au = aj >> 4;\n\t for (var af = 1; af <= au; ++af) {\n\t X(ab)\n\t }\n\t aj = aj & 15\n\t }\n\t ac = 32767 + S[ao];\n\t X(ap[(aj << 4) + m[ac]]);\n\t X(n[ac]);\n\t ao++\n\t }\n\t if (ae != ai) {\n\t X(ag)\n\t }\n\t return al\n\t }\n\t\n\t function y () {\n\t var ab = String.fromCharCode;\n\t for (var aa = 0; aa < 256; aa++) {\n\t e[aa] = ab(aa)\n\t }\n\t }\n\t\n\t this.encode = function (an, aj, aB) {\n\t var aa = new Date().getTime();\n\t if (aj) {\n\t R(aj)\n\t }\n\t j = new Array();\n\t t = 0;\n\t a = 7;\n\t p(65496);\n\t b();\n\t D();\n\t r(an.width, an.height);\n\t H();\n\t I();\n\t var al = 0;\n\t var aq = 0;\n\t var ao = 0;\n\t t = 0;\n\t a = 7;\n\t this.encode.displayName = \"_encode_\";\n\t var at = an.data;\n\t var ar = an.width;\n\t var aA = an.height;\n\t var ay = ar * 4;\n\t var ai = ar * 3;\n\t var ah, ag = 0;\n\t var am, ax, az;\n\t var ab, ap, ac, af, ae;\n\t while (ag < aA) {\n\t ah = 0;\n\t while (ah < ay) {\n\t ab = ay * ag + ah;\n\t ap = ab;\n\t ac = -1;\n\t af = 0;\n\t for (ae = 0; ae < 64; ae++) {\n\t af = ae >> 3;\n\t ac = (ae & 7) * 4;\n\t ap = ab + (af * ay) + ac;\n\t if (ag + af >= aA) {\n\t ap -= (ay * (ag + 1 + af - aA))\n\t }\n\t if (ah + ac >= ay) {\n\t ap -= ((ah + ac) - ay + 4)\n\t }\n\t am = at[ap++];\n\t ax = at[ap++];\n\t az = at[ap++];\n\t A[ae] = ((C[am] + C[(ax + 256) >> 0] + C[(az + 512) >> 0]) >> 16) - 128;\n\t f[ae] = ((C[(am + 768) >> 0] + C[(ax + 1024) >> 0] + C[(az + 1280) >> 0]) >> 16) - 128;\n\t U[ae] = ((C[(am + 1280) >> 0] + C[(ax + 1536) >> 0] + C[(az + 1792) >> 0]) >> 16) - 128\n\t }\n\t al = L(A, d, al, u, G);\n\t aq = L(f, Z, aq, h, T);\n\t ao = L(U, Z, ao, h, T);\n\t ah += 32\n\t }\n\t ag += 8\n\t }\n\t if (a >= 0) {\n\t var aw = [];\n\t aw[1] = a + 1;\n\t aw[0] = (1 << (a + 1)) - 1;\n\t X(aw)\n\t }\n\t p(65497);\n\t if (aB) {\n\t var av = j.length;\n\t var aC = new Uint8Array(av);\n\t for (var au = 0; au < av; au++) {\n\t aC[au] = j[au].charCodeAt()\n\t }\n\t j = [];\n\t var ak = new Date().getTime() - aa;\n\t return aC\n\t }\n\t var ad = \"data:image/jpeg;base64,\" + btoa(j.join(\"\"));\n\t j = [];\n\t var ak = new Date().getTime() - aa;\n\t return ad\n\t };\n\t function R (ab) {\n\t if (ab <= 0) {\n\t ab = 1\n\t }\n\t if (ab > 100) {\n\t ab = 100\n\t }\n\t if (x == ab) {\n\t return\n\t }\n\t var aa = 0;\n\t if (ab < 50) {\n\t aa = Math.floor(5000 / ab)\n\t } else {\n\t aa = Math.floor(200 - ab * 2)\n\t }\n\t M(aa);\n\t x = ab;\n\t }\n\t\n\t function Q () {\n\t var aa = new Date().getTime();\n\t if (!l) {\n\t l = 50\n\t }\n\t y();\n\t W();\n\t z();\n\t V();\n\t R(l);\n\t var ab = new Date().getTime() - aa;\n\t }\n\t\n\t Q()\n\t}\n\t\n\tmodule.exports = JPEGEncoder;\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 保证按需加载的文件路径正确\n\t__webpack_require__.p = getJsDir('lrz') + '/';\n\twindow.URL = window.URL || window.webkitURL;\n\t\n\tvar Promise = __webpack_require__(1),\n\t BlobFormDataShim = __webpack_require__(4),\n\t exif = __webpack_require__(5);\n\t\n\t\n\tvar UA = (function (userAgent) {\n\t var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n\t isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\t\n\t // 判断设备是否是IOS7以下\n\t // 判断设备是否是android4.5以下\n\t // 判断是否iOS\n\t // 判断是否android\n\t // 判断是否QQ浏览器\n\t return {\n\t oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n\t oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n\t iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n\t android : /Android/g.test(userAgent),\n\t mQQBrowser: /MQQBrowser/g.test(userAgent)\n\t }\n\t})(navigator.userAgent);\n\t\n\t\n\tfunction Lrz (file, opts) {\n\t var that = this;\n\t\n\t if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\t\n\t opts = opts || {};\n\t\n\t that.defaults = {\n\t width : null,\n\t height : null,\n\t fieldName: 'file',\n\t quality : 0.7\n\t };\n\t\n\t that.file = file;\n\t\n\t for (var p in opts) {\n\t if (!opts.hasOwnProperty(p)) continue;\n\t that.defaults[p] = opts[p];\n\t }\n\t\n\t return this.init();\n\t}\n\t\n\tLrz.prototype.init = function () {\n\t var that = this,\n\t file = that.file,\n\t fileIsString = typeof file === 'string',\n\t fileIsBase64 = /^data:/.test(file),\n\t img = new Image(),\n\t canvas = document.createElement('canvas'),\n\t blob = fileIsString ? file : URL.createObjectURL(file);\n\t\n\t that.img = img;\n\t that.blob = blob;\n\t that.canvas = canvas;\n\t\n\t if (fileIsString) {\n\t that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n\t } else {\n\t that.fileName = file.name;\n\t }\n\t\n\t if (!document.createElement('canvas').getContext) {\n\t throw new Error('浏览器不支持canvas');\n\t }\n\t\n\t return new Promise(function (resolve, reject) {\n\t img.onerror = function () {\n\t throw new Error('加载图片文件失败');\n\t };\n\t\n\t img.onload = function () {\n\t that._getBase64()\n\t .then(function (base64) {\n\t if (base64.length < 10) reject('生成base64失败');\n\t\n\t return base64;\n\t })\n\t .then(function (base64) {\n\t var formData = null;\n\t\n\t // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n\t if (typeof that.file === 'object' && base64.length > that.file.size) {\n\t formData = new FormData();\n\t file = that.file;\n\t } else {\n\t formData = new BlobFormDataShim.FormData();\n\t file = dataURItoBlob(base64);\n\t }\n\t\n\t formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\t\n\t resolve({\n\t formData : formData,\n\t fileLen : +file.size,\n\t base64 : base64,\n\t base64Len: base64.length,\n\t origin : that.file,\n\t file : file\n\t });\n\t\n\t // 释放内存\n\t for (var p in that) {\n\t if (!that.hasOwnProperty(p)) continue;\n\t\n\t that[p] = null;\n\t }\n\t URL.revokeObjectURL(that.blob);\n\t });\n\t };\n\t\n\t // 如果传入的是base64在移动端会报错\n\t !fileIsBase64 && (img.crossOrigin = \"*\");\n\t\n\t img.src = blob;\n\t });\n\t};\n\t\n\tLrz.prototype._getBase64 = function () {\n\t var that = this,\n\t img = that.img,\n\t file = that.file,\n\t canvas = that.canvas;\n\t\n\t return new Promise(function (resolve) {\n\t try {\n\t // 传入blob在android4.3以下有bug\n\t exif.getData(typeof file === 'object' ? file : img, function () {\n\t that.orientation = exif.getTag(this, \"Orientation\");\n\t\n\t that.resize = that._getResize();\n\t that.ctx = canvas.getContext('2d');\n\t\n\t canvas.width = that.resize.width;\n\t canvas.height = that.resize.height;\n\t\n\t // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n\t that.ctx.fillStyle = '#fff';\n\t that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\n\t // 根据设备对应处理方式\n\t if (UA.oldIOS) {\n\t that._createBase64ForOldIOS().then(resolve);\n\t }\n\t else {\n\t that._createBase64().then(resolve);\n\t }\n\t });\n\t } catch (err) {\n\t // 这样能解决低内存设备闪退的问题吗?\n\t throw new Error(err);\n\t }\n\t });\n\t};\n\t\n\t\n\tLrz.prototype._createBase64ForOldIOS = function () {\n\t var that = this,\n\t img = that.img,\n\t canvas = that.canvas,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t return new Promise(function (resolve) {\n\t !/* require */(/* empty */function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(6)]; (function (MegaPixImage) {\n\t var mpImg = new MegaPixImage(img);\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t mpImg.render(canvas, {\n\t width : canvas.height,\n\t height : canvas.width,\n\t orientation: orientation\n\t });\n\t } else {\n\t mpImg.render(canvas, {\n\t width : canvas.width,\n\t height : canvas.height,\n\t orientation: orientation\n\t });\n\t }\n\t\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}());\n\t });\n\t};\n\t\n\tLrz.prototype._createBase64 = function () {\n\t var that = this,\n\t resize = that.resize,\n\t img = that.img,\n\t canvas = that.canvas,\n\t ctx = that.ctx,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t // 调整为正确方向\n\t switch (orientation) {\n\t case 3:\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 6:\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 8:\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t case 2:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t break;\n\t case 4:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 5:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 7:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t default:\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n\t !/* require */(/* empty */function() { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(7)]; (function (JPEGEncoder) {\n\t var encoder = new JPEGEncoder(),\n\t img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\t\n\t resolve(encoder.encode(img, defaults.quality * 100));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}())\n\t }\n\t else {\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }\n\t });\n\t};\n\t\n\tLrz.prototype._getResize = function () {\n\t var that = this,\n\t img = that.img,\n\t defaults = that.defaults,\n\t width = defaults.width,\n\t height = defaults.height,\n\t orientation = that.orientation;\n\t\n\t var ret = {\n\t width : img.width,\n\t height: img.height\n\t };\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t ret.width = img.height;\n\t ret.height = img.width;\n\t }\n\t\n\t // 如果原图小于设定,采用原图\n\t if (ret.width < width || ret.height < height) {\n\t return ret;\n\t }\n\t\n\t var scale = ret.width / ret.height;\n\t\n\t if (width && height) {\n\t if (scale >= width / height) {\n\t if (ret.width > width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t } else {\n\t if (ret.height > height) {\n\t ret.height = height;\n\t ret.width = Math.ceil(height * scale);\n\t }\n\t }\n\t }\n\t else if (width) {\n\t if (width < ret.width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t }\n\t else if (height) {\n\t if (height < ret.height) {\n\t ret.width = Math.ceil(height * scale);\n\t ret.height = height;\n\t }\n\t }\n\t\n\t // 超过这个值base64无法生成,在IOS上\n\t while (ret.width >= 3264 || ret.height >= 2448) {\n\t ret.width *= 0.8;\n\t ret.height *= 0.8;\n\t }\n\t\n\t return ret;\n\t};\n\t\n\t/**\n\t * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n\t * @returns {string}\n\t */\n\tfunction getJsDir (src) {\n\t var script = null;\n\t\n\t if (src) {\n\t script = [].filter.call(document.scripts, function (v) {\n\t return v.src.indexOf(src) !== -1;\n\t })[0];\n\t } else {\n\t script = document.scripts[document.scripts.length - 1];\n\t }\n\t\n\t if (!script) return null;\n\t\n\t return script.src.substr(0, script.src.lastIndexOf('/'));\n\t}\n\t\n\t\n\t/**\n\t * 转换成formdata\n\t * @param dataURI\n\t * @returns {*}\n\t *\n\t * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n\t */\n\tfunction dataURItoBlob (dataURI) {\n\t // convert base64/URLEncoded data component to raw binary data held in a string\n\t var byteString;\n\t if (dataURI.split(',')[0].indexOf('base64') >= 0)\n\t byteString = atob(dataURI.split(',')[1]);\n\t else\n\t byteString = unescape(dataURI.split(',')[1]);\n\t\n\t // separate out the mime component\n\t var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\t\n\t // write the bytes of the string to a typed array\n\t var ia = new Uint8Array(byteString.length);\n\t for (var i = 0; i < byteString.length; i++) {\n\t ia[i] = byteString.charCodeAt(i);\n\t }\n\t\n\t return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n\t}\n\t\n\twindow.lrz = function (file, opts) {\n\t return new Lrz(file, opts);\n\t};\n\t\n\t// 版本号来自package.json,构建时自动填充\n\twindow.lrz.version = '4.9.36';\n\t\n\tmodule.exports = window.lrz;\n\t\n\t/**\n\t *\n\t *    ┏┓   ┏┓\n\t *   ┏┛┻━━━┛┻┓\n\t *   ┃       ┃\n\t *   ┃   ━   ┃\n\t *   ┃ ┳┛ ┗┳ ┃\n\t *   ┃       ┃\n\t *   ┃   ┻   ┃\n\t *   ┃       ┃\n\t *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n\t *     ┃   ┃ 神兽保佑,代码无bug\n\t *     ┃   ┃\n\t *     ┃   ┗━━━┓\n\t *     ┃      ┣┓\n\t *     ┃     ┏┛\n\t *     ┗┓┓┏━┳┓┏┛\n\t *      ┃┫┫ ┃┫┫\n\t *      ┗┻┛ ┗┻┛\n\t *\n\t */\n\t\n\t\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** lrz.all.bundle.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap b1ee1fba6b8bad6e08f4\n **/","require('megapix-image');\nrequire('jpeg_encoder_basic');\n\nmodule.exports = require('lrz');\n\n\n/**\n *\n *    ┏┓   ┏┓\n *   ┏┛┻━━━┛┻┓\n *   ┃       ┃\n *   ┃   ━   ┃\n *   ┃ ┳┛ ┗┳ ┃\n *   ┃       ┃\n *   ┃   ┻   ┃\n *   ┃       ┃\n *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n *     ┃   ┃ 神兽保佑,代码无bug\n *     ┃   ┃\n *     ┃   ┗━━━┓\n *     ┃      ┣┓\n *     ┃     ┏┛\n *     ┗┓┓┏━┳┓┏┛\n *      ┃┫┫ ┃┫┫\n *      ┗┻┛ ┗┻┛\n *\n */\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/lrz.all.js\n ** module id = 0\n ** module chunks = 3\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Promise.js\n **/","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/timers-browserify/main.js\n ** module id = 2\n ** module chunks = 0 3\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 3\n ** module chunks = 0 3\n **/","//@source https://xts.so/demo/compress/index.html\n\n// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\nvar BlobConstructor = ((function () {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n})()) ? window.Blob : function (parts, opts) {\n var bb = new (\n window.BlobBuilder\n || window.WebKitBlobBuilder\n || window.MSBlobBuilder\n || window.MozBlobBuilder\n );\n parts.forEach(function (p) {\n bb.append(p);\n });\n\n return bb.getBlob(opts ? opts.type : undefined);\n};\n\n// Android上的AppleWebKit 534以前的内核存在一个Bug,\n// 导致FormData加入一个Blob对象后,上传的文件是0字节\nfunction hasFormDataBug () {\n var bCheck = ~navigator.userAgent.indexOf('Android')\n && ~navigator.vendor.indexOf('Google')\n && !~navigator.userAgent.indexOf('Chrome');\n\n // QQ X5浏览器也有这个BUG\n return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n}\nvar FormDataShim=(function(){\n var formDataShimNums = 0;\n return function FormDataShim () {\n var\n // Store a reference to this\n o = this,\n \n // Data to be sent\n parts = [],\n \n // Boundary parameter for separating the multipart values\n boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n \n // Store the current XHR send method so we can safely override it\n oldSend = XMLHttpRequest.prototype.send;\n this.getParts = function () {\n return parts.toString();\n };\n this.append = function (name, value, filename) {\n parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n \n if (value instanceof Blob) {\n parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n parts.push(value);\n }\n else {\n parts.push('\\r\\n\\r\\n' + value);\n }\n parts.push('\\r\\n');\n };\n \n formDataShimNums++;\n XMLHttpRequest.prototype.send = function (val) {\n var fr,\n data,\n oXHR = this;\n \n if (val === o) {\n // Append the final boundary string\n parts.push('--' + boundary + '--\\r\\n');\n // Create the blob\n data = new BlobConstructor(parts);\n \n // Set up and read the blob into an array to be sent\n fr = new FileReader();\n fr.onload = function () {\n oldSend.call(oXHR, fr.result);\n };\n fr.onerror = function (err) {\n throw err;\n };\n fr.readAsArrayBuffer(data);\n \n // Set the multipart content type and boudary\n this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n formDataShimNums--;\n if(formDataShimNums == 0){\n XMLHttpRequest.prototype.send = oldSend;\n }\n }\n else {\n oldSend.call(this, val);\n }\n };\n };\n})();\n\n\nmodule.exports = {\n Blob : BlobConstructor,\n FormData: hasFormDataBug() ? FormDataShim : FormData\n};\n\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Blob.FormData.shim.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/exif.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/megapix-image.js\n **/","function JPEGEncoder (l) {\n var o = this;\n var s = Math.round;\n var k = Math.floor;\n var O = new Array(64);\n var K = new Array(64);\n var d = new Array(64);\n var Z = new Array(64);\n var u;\n var h;\n var G;\n var T;\n var n = new Array(65535);\n var m = new Array(65535);\n var P = new Array(64);\n var S = new Array(64);\n var j = [];\n var t = 0;\n var a = 7;\n var A = new Array(64);\n var f = new Array(64);\n var U = new Array(64);\n var e = new Array(256);\n var C = new Array(2048);\n var x;\n var i = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63];\n var g = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];\n var c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var w = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125];\n var E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n var v = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0];\n var Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var J = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119];\n var B = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n\n function M (ag) {\n var af = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99];\n for (var ae = 0; ae < 64; ae++) {\n var aj = k((af[ae] * ag + 50) / 100);\n if (aj < 1) {\n aj = 1\n } else {\n if (aj > 255) {\n aj = 255\n }\n }\n O[i[ae]] = aj\n }\n var ah = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99];\n for (var ad = 0; ad < 64; ad++) {\n var ai = k((ah[ad] * ag + 50) / 100);\n if (ai < 1) {\n ai = 1\n } else {\n if (ai > 255) {\n ai = 255\n }\n }\n K[i[ad]] = ai\n }\n var ac = [1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958, 0.5411961, 0.275899379];\n var ab = 0;\n for (var ak = 0; ak < 8; ak++) {\n for (var aa = 0; aa < 8; aa++) {\n d[ab] = (1 / (O[i[ab]] * ac[ak] * ac[aa] * 8));\n Z[ab] = (1 / (K[i[ab]] * ac[ak] * ac[aa] * 8));\n ab++\n }\n }\n }\n\n function q (ae, aa) {\n var ad = 0;\n var ag = 0;\n var af = new Array();\n for (var ab = 1; ab <= 16; ab++) {\n for (var ac = 1; ac <= ae[ab]; ac++) {\n af[aa[ag]] = [];\n af[aa[ag]][0] = ad;\n af[aa[ag]][1] = ab;\n ag++;\n ad++\n }\n ad *= 2\n }\n return af\n }\n\n function W () {\n u = q(g, c);\n h = q(v, Y);\n G = q(w, E);\n T = q(J, B)\n }\n\n function z () {\n var ac = 1;\n var ab = 2;\n for (var aa = 1; aa <= 15; aa++) {\n for (var ad = ac; ad < ab; ad++) {\n m[32767 + ad] = aa;\n n[32767 + ad] = [];\n n[32767 + ad][1] = aa;\n n[32767 + ad][0] = ad\n }\n for (var ae = -(ab - 1); ae <= -ac; ae++) {\n m[32767 + ae] = aa;\n n[32767 + ae] = [];\n n[32767 + ae][1] = aa;\n n[32767 + ae][0] = ab - 1 + ae\n }\n ac <<= 1;\n ab <<= 1\n }\n }\n\n function V () {\n for (var aa = 0; aa < 256; aa++) {\n C[aa] = 19595 * aa;\n C[(aa + 256) >> 0] = 38470 * aa;\n C[(aa + 512) >> 0] = 7471 * aa + 32768;\n C[(aa + 768) >> 0] = -11059 * aa;\n C[(aa + 1024) >> 0] = -21709 * aa;\n C[(aa + 1280) >> 0] = 32768 * aa + 8421375;\n C[(aa + 1536) >> 0] = -27439 * aa;\n C[(aa + 1792) >> 0] = -5329 * aa\n }\n }\n\n function X (aa) {\n var ac = aa[0];\n var ab = aa[1] - 1;\n while (ab >= 0) {\n if (ac & (1 << ab)) {\n t |= (1 << a)\n }\n ab--;\n a--;\n if (a < 0) {\n if (t == 255) {\n F(255);\n F(0)\n } else {\n F(t)\n }\n a = 7;\n t = 0\n }\n }\n }\n\n function F (aa) {\n j.push(e[aa])\n }\n\n function p (aa) {\n F((aa >> 8) & 255);\n F((aa) & 255)\n }\n\n function N (aZ, ap) {\n var aL, aK, aJ, aI, aH, aD, aC, aB;\n var aN = 0;\n var aR;\n const aq = 8;\n const ai = 64;\n for (aR = 0; aR < aq; ++aR) {\n aL = aZ[aN];\n aK = aZ[aN + 1];\n aJ = aZ[aN + 2];\n aI = aZ[aN + 3];\n aH = aZ[aN + 4];\n aD = aZ[aN + 5];\n aC = aZ[aN + 6];\n aB = aZ[aN + 7];\n var aY = aL + aB;\n var aO = aL - aB;\n var aX = aK + aC;\n var aP = aK - aC;\n var aU = aJ + aD;\n var aQ = aJ - aD;\n var aT = aI + aH;\n var aS = aI - aH;\n var an = aY + aT;\n var ak = aY - aT;\n var am = aX + aU;\n var al = aX - aU;\n aZ[aN] = an + am;\n aZ[aN + 4] = an - am;\n var ax = (al + ak) * 0.707106781;\n aZ[aN + 2] = ak + ax;\n aZ[aN + 6] = ak - ax;\n an = aS + aQ;\n am = aQ + aP;\n al = aP + aO;\n var at = (an - al) * 0.382683433;\n var aw = 0.5411961 * an + at;\n var au = 1.306562965 * al + at;\n var av = am * 0.707106781;\n var ah = aO + av;\n var ag = aO - av;\n aZ[aN + 5] = ag + aw;\n aZ[aN + 3] = ag - aw;\n aZ[aN + 1] = ah + au;\n aZ[aN + 7] = ah - au;\n aN += 8\n }\n aN = 0;\n for (aR = 0; aR < aq; ++aR) {\n aL = aZ[aN];\n aK = aZ[aN + 8];\n aJ = aZ[aN + 16];\n aI = aZ[aN + 24];\n aH = aZ[aN + 32];\n aD = aZ[aN + 40];\n aC = aZ[aN + 48];\n aB = aZ[aN + 56];\n var ar = aL + aB;\n var aj = aL - aB;\n var az = aK + aC;\n var ae = aK - aC;\n var aG = aJ + aD;\n var ac = aJ - aD;\n var aW = aI + aH;\n var aa = aI - aH;\n var ao = ar + aW;\n var aV = ar - aW;\n var ay = az + aG;\n var aF = az - aG;\n aZ[aN] = ao + ay;\n aZ[aN + 32] = ao - ay;\n var af = (aF + aV) * 0.707106781;\n aZ[aN + 16] = aV + af;\n aZ[aN + 48] = aV - af;\n ao = aa + ac;\n ay = ac + ae;\n aF = ae + aj;\n var aM = (ao - aF) * 0.382683433;\n var ad = 0.5411961 * ao + aM;\n var a1 = 1.306562965 * aF + aM;\n var ab = ay * 0.707106781;\n var a0 = aj + ab;\n var aA = aj - ab;\n aZ[aN + 40] = aA + ad;\n aZ[aN + 24] = aA - ad;\n aZ[aN + 8] = a0 + a1;\n aZ[aN + 56] = a0 - a1;\n aN++\n }\n var aE;\n for (aR = 0; aR < ai; ++aR) {\n aE = aZ[aR] * ap[aR];\n P[aR] = (aE > 0) ? ((aE + 0.5) | 0) : ((aE - 0.5) | 0)\n }\n return P\n }\n\n function b () {\n p(65504);\n p(16);\n F(74);\n F(70);\n F(73);\n F(70);\n F(0);\n F(1);\n F(1);\n F(0);\n p(1);\n p(1);\n F(0);\n F(0)\n }\n\n function r (aa, ab) {\n p(65472);\n p(17);\n F(8);\n p(ab);\n p(aa);\n F(3);\n F(1);\n F(17);\n F(0);\n F(2);\n F(17);\n F(1);\n F(3);\n F(17);\n F(1)\n }\n\n function D () {\n p(65499);\n p(132);\n F(0);\n for (var ab = 0; ab < 64; ab++) {\n F(O[ab])\n }\n F(1);\n for (var aa = 0; aa < 64; aa++) {\n F(K[aa])\n }\n }\n\n function H () {\n p(65476);\n p(418);\n F(0);\n for (var ae = 0; ae < 16; ae++) {\n F(g[ae + 1])\n }\n for (var ad = 0; ad <= 11; ad++) {\n F(c[ad])\n }\n F(16);\n for (var ac = 0; ac < 16; ac++) {\n F(w[ac + 1])\n }\n for (var ab = 0; ab <= 161; ab++) {\n F(E[ab])\n }\n F(1);\n for (var aa = 0; aa < 16; aa++) {\n F(v[aa + 1])\n }\n for (var ah = 0; ah <= 11; ah++) {\n F(Y[ah])\n }\n F(17);\n for (var ag = 0; ag < 16; ag++) {\n F(J[ag + 1])\n }\n for (var af = 0; af <= 161; af++) {\n F(B[af])\n }\n }\n\n function I () {\n p(65498);\n p(12);\n F(3);\n F(1);\n F(0);\n F(2);\n F(17);\n F(3);\n F(17);\n F(0);\n F(63);\n F(0)\n }\n\n function L (ad, aa, al, at, ap) {\n var ag = ap[0];\n var ab = ap[240];\n var ac;\n const ar = 16;\n const ai = 63;\n const ah = 64;\n var aq = N(ad, aa);\n for (var am = 0; am < ah; ++am) {\n S[i[am]] = aq[am]\n }\n var an = S[0] - al;\n al = S[0];\n if (an == 0) {\n X(at[0])\n } else {\n ac = 32767 + an;\n X(at[m[ac]]);\n X(n[ac])\n }\n var ae = 63;\n for (; (ae > 0) && (S[ae] == 0); ae--) {\n }\n if (ae == 0) {\n X(ag);\n return al\n }\n var ao = 1;\n var au;\n while (ao <= ae) {\n var ak = ao;\n for (; (S[ao] == 0) && (ao <= ae); ++ao) {\n }\n var aj = ao - ak;\n if (aj >= ar) {\n au = aj >> 4;\n for (var af = 1; af <= au; ++af) {\n X(ab)\n }\n aj = aj & 15\n }\n ac = 32767 + S[ao];\n X(ap[(aj << 4) + m[ac]]);\n X(n[ac]);\n ao++\n }\n if (ae != ai) {\n X(ag)\n }\n return al\n }\n\n function y () {\n var ab = String.fromCharCode;\n for (var aa = 0; aa < 256; aa++) {\n e[aa] = ab(aa)\n }\n }\n\n this.encode = function (an, aj, aB) {\n var aa = new Date().getTime();\n if (aj) {\n R(aj)\n }\n j = new Array();\n t = 0;\n a = 7;\n p(65496);\n b();\n D();\n r(an.width, an.height);\n H();\n I();\n var al = 0;\n var aq = 0;\n var ao = 0;\n t = 0;\n a = 7;\n this.encode.displayName = \"_encode_\";\n var at = an.data;\n var ar = an.width;\n var aA = an.height;\n var ay = ar * 4;\n var ai = ar * 3;\n var ah, ag = 0;\n var am, ax, az;\n var ab, ap, ac, af, ae;\n while (ag < aA) {\n ah = 0;\n while (ah < ay) {\n ab = ay * ag + ah;\n ap = ab;\n ac = -1;\n af = 0;\n for (ae = 0; ae < 64; ae++) {\n af = ae >> 3;\n ac = (ae & 7) * 4;\n ap = ab + (af * ay) + ac;\n if (ag + af >= aA) {\n ap -= (ay * (ag + 1 + af - aA))\n }\n if (ah + ac >= ay) {\n ap -= ((ah + ac) - ay + 4)\n }\n am = at[ap++];\n ax = at[ap++];\n az = at[ap++];\n A[ae] = ((C[am] + C[(ax + 256) >> 0] + C[(az + 512) >> 0]) >> 16) - 128;\n f[ae] = ((C[(am + 768) >> 0] + C[(ax + 1024) >> 0] + C[(az + 1280) >> 0]) >> 16) - 128;\n U[ae] = ((C[(am + 1280) >> 0] + C[(ax + 1536) >> 0] + C[(az + 1792) >> 0]) >> 16) - 128\n }\n al = L(A, d, al, u, G);\n aq = L(f, Z, aq, h, T);\n ao = L(U, Z, ao, h, T);\n ah += 32\n }\n ag += 8\n }\n if (a >= 0) {\n var aw = [];\n aw[1] = a + 1;\n aw[0] = (1 << (a + 1)) - 1;\n X(aw)\n }\n p(65497);\n if (aB) {\n var av = j.length;\n var aC = new Uint8Array(av);\n for (var au = 0; au < av; au++) {\n aC[au] = j[au].charCodeAt()\n }\n j = [];\n var ak = new Date().getTime() - aa;\n return aC\n }\n var ad = \"data:image/jpeg;base64,\" + btoa(j.join(\"\"));\n j = [];\n var ak = new Date().getTime() - aa;\n return ad\n };\n function R (ab) {\n if (ab <= 0) {\n ab = 1\n }\n if (ab > 100) {\n ab = 100\n }\n if (x == ab) {\n return\n }\n var aa = 0;\n if (ab < 50) {\n aa = Math.floor(5000 / ab)\n } else {\n aa = Math.floor(200 - ab * 2)\n }\n M(aa);\n x = ab;\n }\n\n function Q () {\n var aa = new Date().getTime();\n if (!l) {\n l = 50\n }\n y();\n W();\n z();\n V();\n R(l);\n var ab = new Date().getTime() - aa;\n }\n\n Q()\n}\n\nmodule.exports = JPEGEncoder;\n\n\n/** WEBPACK FOOTER **\n ** src/lib/jpeg_encoder_basic.js\n **/","// 保证按需加载的文件路径正确\n__webpack_public_path__ = getJsDir('lrz') + '/';\nwindow.URL = window.URL || window.webkitURL;\n\nvar Promise = require('Promise'),\n BlobFormDataShim = require('Blob.FormData.shim'),\n exif = require('exif');\n\n\nvar UA = (function (userAgent) {\n var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\n // 判断设备是否是IOS7以下\n // 判断设备是否是android4.5以下\n // 判断是否iOS\n // 判断是否android\n // 判断是否QQ浏览器\n return {\n oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n android : /Android/g.test(userAgent),\n mQQBrowser: /MQQBrowser/g.test(userAgent)\n }\n})(navigator.userAgent);\n\n\nfunction Lrz (file, opts) {\n var that = this;\n\n if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\n opts = opts || {};\n\n that.defaults = {\n width : null,\n height : null,\n fieldName: 'file',\n quality : 0.7\n };\n\n that.file = file;\n\n for (var p in opts) {\n if (!opts.hasOwnProperty(p)) continue;\n that.defaults[p] = opts[p];\n }\n\n return this.init();\n}\n\nLrz.prototype.init = function () {\n var that = this,\n file = that.file,\n fileIsString = typeof file === 'string',\n fileIsBase64 = /^data:/.test(file),\n img = new Image(),\n canvas = document.createElement('canvas'),\n blob = fileIsString ? file : URL.createObjectURL(file);\n\n that.img = img;\n that.blob = blob;\n that.canvas = canvas;\n\n if (fileIsString) {\n that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n } else {\n that.fileName = file.name;\n }\n\n if (!document.createElement('canvas').getContext) {\n throw new Error('浏览器不支持canvas');\n }\n\n return new Promise(function (resolve, reject) {\n img.onerror = function () {\n throw new Error('加载图片文件失败');\n };\n\n img.onload = function () {\n that._getBase64()\n .then(function (base64) {\n if (base64.length < 10) reject('生成base64失败');\n\n return base64;\n })\n .then(function (base64) {\n var formData = null;\n\n // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n if (typeof that.file === 'object' && base64.length > that.file.size) {\n formData = new FormData();\n file = that.file;\n } else {\n formData = new BlobFormDataShim.FormData();\n file = dataURItoBlob(base64);\n }\n\n formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\n resolve({\n formData : formData,\n fileLen : +file.size,\n base64 : base64,\n base64Len: base64.length,\n origin : that.file,\n file : file\n });\n\n // 释放内存\n for (var p in that) {\n if (!that.hasOwnProperty(p)) continue;\n\n that[p] = null;\n }\n URL.revokeObjectURL(that.blob);\n });\n };\n\n // 如果传入的是base64在移动端会报错\n !fileIsBase64 && (img.crossOrigin = \"*\");\n\n img.src = blob;\n });\n};\n\nLrz.prototype._getBase64 = function () {\n var that = this,\n img = that.img,\n file = that.file,\n canvas = that.canvas;\n\n return new Promise(function (resolve) {\n try {\n // 传入blob在android4.3以下有bug\n exif.getData(typeof file === 'object' ? file : img, function () {\n that.orientation = exif.getTag(this, \"Orientation\");\n\n that.resize = that._getResize();\n that.ctx = canvas.getContext('2d');\n\n canvas.width = that.resize.width;\n canvas.height = that.resize.height;\n\n // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n that.ctx.fillStyle = '#fff';\n that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // 根据设备对应处理方式\n if (UA.oldIOS) {\n that._createBase64ForOldIOS().then(resolve);\n }\n else {\n that._createBase64().then(resolve);\n }\n });\n } catch (err) {\n // 这样能解决低内存设备闪退的问题吗?\n throw new Error(err);\n }\n });\n};\n\n\nLrz.prototype._createBase64ForOldIOS = function () {\n var that = this,\n img = that.img,\n canvas = that.canvas,\n defaults = that.defaults,\n orientation = that.orientation;\n\n return new Promise(function (resolve) {\n require(['megapix-image'], function (MegaPixImage) {\n var mpImg = new MegaPixImage(img);\n\n if (\"5678\".indexOf(orientation) > -1) {\n mpImg.render(canvas, {\n width : canvas.height,\n height : canvas.width,\n orientation: orientation\n });\n } else {\n mpImg.render(canvas, {\n width : canvas.width,\n height : canvas.height,\n orientation: orientation\n });\n }\n\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n });\n });\n};\n\nLrz.prototype._createBase64 = function () {\n var that = this,\n resize = that.resize,\n img = that.img,\n canvas = that.canvas,\n ctx = that.ctx,\n defaults = that.defaults,\n orientation = that.orientation;\n\n // 调整为正确方向\n switch (orientation) {\n case 3:\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 6:\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 8:\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n case 2:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n break;\n case 4:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 5:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 7:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n default:\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n }\n\n return new Promise(function (resolve) {\n if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n require(['jpeg_encoder_basic'], function (JPEGEncoder) {\n var encoder = new JPEGEncoder(),\n img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\n resolve(encoder.encode(img, defaults.quality * 100));\n })\n }\n else {\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n }\n });\n};\n\nLrz.prototype._getResize = function () {\n var that = this,\n img = that.img,\n defaults = that.defaults,\n width = defaults.width,\n height = defaults.height,\n orientation = that.orientation;\n\n var ret = {\n width : img.width,\n height: img.height\n };\n\n if (\"5678\".indexOf(orientation) > -1) {\n ret.width = img.height;\n ret.height = img.width;\n }\n\n // 如果原图小于设定,采用原图\n if (ret.width < width || ret.height < height) {\n return ret;\n }\n\n var scale = ret.width / ret.height;\n\n if (width && height) {\n if (scale >= width / height) {\n if (ret.width > width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n } else {\n if (ret.height > height) {\n ret.height = height;\n ret.width = Math.ceil(height * scale);\n }\n }\n }\n else if (width) {\n if (width < ret.width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n }\n else if (height) {\n if (height < ret.height) {\n ret.width = Math.ceil(height * scale);\n ret.height = height;\n }\n }\n\n // 超过这个值base64无法生成,在IOS上\n while (ret.width >= 3264 || ret.height >= 2448) {\n ret.width *= 0.8;\n ret.height *= 0.8;\n }\n\n return ret;\n};\n\n/**\n * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n * @returns {string}\n */\nfunction getJsDir (src) {\n var script = null;\n\n if (src) {\n script = [].filter.call(document.scripts, function (v) {\n return v.src.indexOf(src) !== -1;\n })[0];\n } else {\n script = document.scripts[document.scripts.length - 1];\n }\n\n if (!script) return null;\n\n return script.src.substr(0, script.src.lastIndexOf('/'));\n}\n\n\n/**\n * 转换成formdata\n * @param dataURI\n * @returns {*}\n *\n * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n */\nfunction dataURItoBlob (dataURI) {\n // convert base64/URLEncoded data component to raw binary data held in a string\n var byteString;\n if (dataURI.split(',')[0].indexOf('base64') >= 0)\n byteString = atob(dataURI.split(',')[1]);\n else\n byteString = unescape(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to a typed array\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n}\n\nwindow.lrz = function (file, opts) {\n return new Lrz(file, opts);\n};\n\n// 版本号来自package.json,构建时自动填充\nwindow.lrz.version = '4.9.36';\n\nmodule.exports = window.lrz;\n\n/**\n *\n *    ┏┓   ┏┓\n *   ┏┛┻━━━┛┻┓\n *   ┃       ┃\n *   ┃   ━   ┃\n *   ┃ ┳┛ ┗┳ ┃\n *   ┃       ┃\n *   ┃   ┻   ┃\n *   ┃       ┃\n *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n *     ┃   ┃ 神兽保佑,代码无bug\n *     ┃   ┃\n *     ┃   ┗━━━┓\n *     ┃      ┣┓\n *     ┃     ┏┛\n *     ┗┓┓┏━┳┓┏┛\n *      ┃┫┫ ┃┫┫\n *      ┗┻┛ ┗┻┛\n *\n */\n\n\n\n\n\n/** WEBPACK FOOTER **\n ** src/lrz.js\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/lrz.bundle.js b/dist/lrz.bundle.js index dcb1864..d5be3bd 100644 --- a/dist/lrz.bundle.js +++ b/dist/lrz.bundle.js @@ -1,2 +1,2 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n=window.webpackJsonp;window.webpackJsonp=function(r,o){for(var a,s,l=0,u=[];l=0?atob(e.split(",")[1]):unescape(e.split(",")[1]);for(var n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),i=0;ie.file.size?(i=new FormData,t=e.file):(i=new s.FormData,t=o(r)),i.append(e.defaults.fieldName,t,e.fileName.replace(/\..+/g,".jpg")),n({formData:i,fileLen:+t.size,base64:r,base64Len:r.length,origin:e.file,file:t});for(var a in e)e.hasOwnProperty(a)&&(e[a]=null);URL.revokeObjectURL(e.blob)})},!r&&(i.crossOrigin="*"),i.src=u})},r.prototype._getBase64=function(){var e=this,t=e.img,n=e.file,r=e.canvas;return new a(function(i){try{l.getData("object"==typeof n?n:t,function(){e.orientation=l.getTag(this,"Orientation"),e.resize=e._getResize(),e.ctx=r.getContext("2d"),r.width=e.resize.width,r.height=e.resize.height,e.ctx.fillStyle="#fff",e.ctx.fillRect(0,0,r.width,r.height),u.oldIOS?e._createBase64ForOldIOS().then(i):e._createBase64().then(i)})}catch(o){throw new Error(o)}})},r.prototype._createBase64ForOldIOS=function(){var e=this,t=e.img,r=e.canvas,i=e.defaults,o=e.orientation;return new a(function(e){n.e(1,function(n){var a=[n(6)];(function(n){var a=new n(t);"5678".indexOf(o)>-1?a.render(r,{width:r.height,height:r.width,orientation:o}):a.render(r,{width:r.width,height:r.height,orientation:o}),e(r.toDataURL("image/jpeg",i.quality))}).apply(null,a)})})},r.prototype._createBase64=function(){var e=this,t=e.resize,r=e.img,i=e.canvas,o=e.ctx,s=e.defaults,l=e.orientation;switch(l){case 3:o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;case 2:o.translate(t.width,0),o.scale(-1,1),o.drawImage(r,0,0,t.width,t.height);break;case 4:o.translate(t.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 5:o.translate(t.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 7:o.translate(t.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;default:o.drawImage(r,0,0,t.width,t.height)}return new a(function(e){u.oldAndroid||u.mQQBrowser||!navigator.userAgent?n.e(2,function(t){var n=[t(7)];(function(t){var n=new t,r=o.getImageData(0,0,i.width,i.height);e(n.encode(r,100*s.quality))}).apply(null,n)}):e(i.toDataURL("image/jpeg",s.quality))})},r.prototype._getResize=function(){var e=this,t=e.img,n=e.defaults,r=n.width,i=n.height,o=e.orientation,a={width:t.width,height:t.height};if("5678".indexOf(o)>-1&&(a.width=t.height,a.height=t.width),a.width=r/i?a.width>r&&(a.width=r,a.height=Math.ceil(r/s)):a.height>i&&(a.height=i,a.width=Math.ceil(i*s)):r?r=3264||a.height>=2448;)a.width*=.8,a.height*=.8;return a},window.lrz=function(e,t){return new r(e,t)},window.lrz.version="4.8.35",e.exports=window.lrz},function(e,t,n){(function(t){!function(n){function r(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],c(e,r(a,this),r(s,this))}function o(e){var t=this;return null===this._state?void this._deferreds.push(e):void d(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void c(r(t,e),r(a,this),r(s,this))}this._state=!0,this._value=e,l.call(this)}catch(n){s.call(this,n)}}function s(e){this._state=!1,this._value=e,l.call(this)}function l(){for(var e=0,t=this._deferreds.length;t>e;e++)o.call(this,this._deferreds[e]);this._deferreds=null}function u(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function c(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}var d="function"==typeof t&&t||function(e){setTimeout(e,1)},f=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=this;return new i(function(r,i){o.call(n,new u(e,t,r,i))})},i.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&f(arguments[0])?arguments[0]:arguments);return new i(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;or;r++)e[r].then(t,n)})},i._setImmediateFn=function(e){d=e},i.prototype.always=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},"undefined"!=typeof e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(2).setImmediate)},function(e,t,n){(function(e,r){function i(e,t){this._id=e,this._clearFn=t}var o=n(3).nextTick,a=Function.prototype.apply,s=Array.prototype.slice,l={},u=0;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=u++,r=arguments.length<2?!1:s.call(arguments,1);return l[n]=!0,o(function(){l[n]&&(r?e.apply(null,r):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof r?r:function(e){delete l[e]}}).call(t,n(2).setImmediate,n(2).clearImmediate)},function(e,t){function n(){u=!1,a.length?l=a.concat(l):c=-1,l.length&&r()}function r(){if(!u){var e=setTimeout(n);u=!0;for(var t=l.length;t;){for(a=l,l=[];++c1)for(var n=1;na;a++)o[a]=n.charCodeAt(a);return i}function a(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){200!=this.status&&0!==this.status||t(this.response)},n.send()}function s(e,t){function n(n){var r=l(n),i=u(n);e.exifdata=r||{},e.iptcdata=i||{},t&&t.call(e)}if(e.src)if(/^data\:/i.test(e.src)){var r=o(e.src);n(r)}else if(/^blob\:/i.test(e.src)){var i=new FileReader;i.onload=function(e){n(e.target.result)},a(e.src,function(e){i.readAsArrayBuffer(e)})}else{var s=new XMLHttpRequest;s.onload=function(){200==this.status||0===this.status?n(s.response):t(new Error("Could not load image")),s=null},s.open("GET",e.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var i=new FileReader;i.onload=function(e){p&&console.log("Got file of length "+e.target.result.byteLength),n(e.target.result)},i.readAsArrayBuffer(e)}}function l(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n,r=2,i=e.byteLength;i>r;){if(255!=t.getUint8(r))return p&&console.log("Not a valid marker at offset "+r+", found: "+t.getUint8(r)),!1;if(n=t.getUint8(r+1),p&&console.log(n),225==n)return p&&console.log("Found 0xFFE1 marker"),g(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function u(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>n;){if(i(t,n)){var o=t.getUint8(n+7);o%2!==0&&(o+=1),0===o&&(o=4);var a=n+8+o,s=t.getUint16(n+6+o);return c(e,a,s)}n++}}function c(e,t,n){for(var r,i,o,a,s,l=new DataView(e),u={},c=t;t+n>c;)28===l.getUint8(c)&&2===l.getUint8(c+1)&&(a=l.getUint8(c+2),a in b&&(o=l.getInt16(c+3),s=o+5,i=b[a],r=h(l,c+5,o),u.hasOwnProperty(i)?u[i]instanceof Array?u[i].push(r):u[i]=[u[i],r]:u[i]=r)),c++;return u}function d(e,t,n,r,i){var o,a,s,l=e.getUint16(n,!i),u={};for(s=0;l>s;s++)o=n+12*s+2,a=r[e.getUint16(o,!i)],!a&&p&&console.log("Unknown tag: "+e.getUint16(o,!i)),u[a]=f(e,o,t,n,i);return u}function f(e,t,n,r,i){var o,a,s,l,u,c,d=e.getUint16(t+2,!i),f=e.getUint32(t+4,!i),g=e.getUint32(t+8,!i)+n;switch(d){case 1:case 7:if(1==f)return e.getUint8(t+8,!i);for(o=f>4?g:t+8,a=[],l=0;f>l;l++)a[l]=e.getUint8(o+l);return a;case 2:return o=f>4?g:t+8,h(e,o,f-1);case 3:if(1==f)return e.getUint16(t+8,!i);for(o=f>2?g:t+8,a=[],l=0;f>l;l++)a[l]=e.getUint16(o+2*l,!i);return a;case 4:if(1==f)return e.getUint32(t+8,!i);for(a=[],l=0;f>l;l++)a[l]=e.getUint32(g+4*l,!i);return a;case 5:if(1==f)return u=e.getUint32(g,!i),c=e.getUint32(g+4,!i),s=new Number(u/c),s.numerator=u,s.denominator=c,s;for(a=[],l=0;f>l;l++)u=e.getUint32(g+8*l,!i),c=e.getUint32(g+4+8*l,!i),a[l]=new Number(u/c),a[l].numerator=u,a[l].denominator=c;return a;case 9:if(1==f)return e.getInt32(t+8,!i);for(a=[],l=0;f>l;l++)a[l]=e.getInt32(g+4*l,!i);return a;case 10:if(1==f)return e.getInt32(g,!i)/e.getInt32(g+4,!i);for(a=[],l=0;f>l;l++)a[l]=e.getInt32(g+8*l,!i)/e.getInt32(g+4+8*l,!i);return a}}function h(e,t,n){var r,i="";for(r=t;t+n>r;r++)i+=String.fromCharCode(e.getUint8(r));return i}function g(e,t){if("Exif"!=h(e,t,4))return p&&console.log("Not valid EXIF data! "+h(e,t,4)),!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return p&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;n=!0}if(42!=e.getUint16(s+2,!n))return p&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var l=e.getUint32(s+4,!n);if(8>l)return p&&console.log("Not valid TIFF data! (First offset less than 8)",e.getUint32(s+4,!n)),!1;if(r=d(e,s,s+l,y,n),r.ExifIFDPointer){o=d(e,s,s+r.ExifIFDPointer,w,n);for(i in o){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=S[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=S.Components[o[i][0]]+S.Components[o[i][1]]+S.Components[o[i][2]]+S.Components[o[i][3]]}r[i]=o[i]}}if(r.GPSInfoIFDPointer){a=d(e,s,s+r.GPSInfoIFDPointer,v,n);for(i in a){switch(i){case"GPSVersionID":a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}r[i]=a[i]}}return r}var p=!1,m=function(e){return e instanceof m?e:this instanceof m?void(this.EXIFwrapped=e):new m(e)};"undefined"!=typeof e&&e.exports&&(t=e.exports=m),t.EXIF=m;var w=m.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},y=m.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},v=m.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},S=m.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}},b={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};m.getData=function(e,t){return(e instanceof Image||e instanceof HTMLImageElement)&&!e.complete?!1:(n(e)?t&&t.call(e):s(e,t),!0)},m.getTag=function(e,t){return n(e)?e.exifdata[t]:void 0},m.getAllTags=function(e){if(!n(e))return{};var t,r=e.exifdata,i={};for(t in r)r.hasOwnProperty(t)&&(i[t]=r[t]);return i},m.pretty=function(e){if(!n(e))return"";var t,r=e.exifdata,i="";for(t in r)r.hasOwnProperty(t)&&(i+="object"==typeof r[t]?r[t]instanceof Number?t+" : "+r[t]+" ["+r[t].numerator+"/"+r[t].denominator+"]\r\n":t+" : ["+r[t].length+" values]\r\n":t+" : "+r[t]+"\r\n");return i},m.readFromBinaryFile=function(e){return l(e)},r=[],i=function(){return m}.apply(t,r),!(void 0!==i&&(e.exports=i))}).call(this)}])}); +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n=window.webpackJsonp;window.webpackJsonp=function(r,o){for(var a,s,u=0,l=[];u=0?atob(e.split(",")[1]):unescape(e.split(",")[1]);for(var n=e.split(",")[0].split(":")[1].split(";")[0],r=new Uint8Array(t.length),i=0;ie.file.size?(i=new FormData,t=e.file):(i=new s.FormData,t=o(r)),i.append(e.defaults.fieldName,t,e.fileName.replace(/\..+/g,".jpg")),n({formData:i,fileLen:+t.size,base64:r,base64Len:r.length,origin:e.file,file:t});for(var a in e)e.hasOwnProperty(a)&&(e[a]=null);URL.revokeObjectURL(e.blob)})},!r&&(i.crossOrigin="*"),i.src=l})},r.prototype._getBase64=function(){var e=this,t=e.img,n=e.file,r=e.canvas;return new a(function(i){try{u.getData("object"==typeof n?n:t,function(){e.orientation=u.getTag(this,"Orientation"),e.resize=e._getResize(),e.ctx=r.getContext("2d"),r.width=e.resize.width,r.height=e.resize.height,e.ctx.fillStyle="#fff",e.ctx.fillRect(0,0,r.width,r.height),l.oldIOS?e._createBase64ForOldIOS().then(i):e._createBase64().then(i)})}catch(o){throw new Error(o)}})},r.prototype._createBase64ForOldIOS=function(){var e=this,t=e.img,r=e.canvas,i=e.defaults,o=e.orientation;return new a(function(e){n.e(1,function(n){var a=[n(6)];(function(n){var a=new n(t);"5678".indexOf(o)>-1?a.render(r,{width:r.height,height:r.width,orientation:o}):a.render(r,{width:r.width,height:r.height,orientation:o}),e(r.toDataURL("image/jpeg",i.quality))}).apply(null,a)})})},r.prototype._createBase64=function(){var e=this,t=e.resize,r=e.img,i=e.canvas,o=e.ctx,s=e.defaults,u=e.orientation;switch(u){case 3:o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;case 2:o.translate(t.width,0),o.scale(-1,1),o.drawImage(r,0,0,t.width,t.height);break;case 4:o.translate(t.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(r,-t.width,-t.height,t.width,t.height);break;case 5:o.translate(t.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(r,0,-t.width,t.height,t.width);break;case 7:o.translate(t.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(r,-t.height,0,t.height,t.width);break;default:o.drawImage(r,0,0,t.width,t.height)}return new a(function(e){l.oldAndroid||l.mQQBrowser||!navigator.userAgent?n.e(2,function(t){var n=[t(7)];(function(t){var n=new t,r=o.getImageData(0,0,i.width,i.height);e(n.encode(r,100*s.quality))}).apply(null,n)}):e(i.toDataURL("image/jpeg",s.quality))})},r.prototype._getResize=function(){var e=this,t=e.img,n=e.defaults,r=n.width,i=n.height,o=e.orientation,a={width:t.width,height:t.height};if("5678".indexOf(o)>-1&&(a.width=t.height,a.height=t.width),a.width=r/i?a.width>r&&(a.width=r,a.height=Math.ceil(r/s)):a.height>i&&(a.height=i,a.width=Math.ceil(i*s)):r?r=3264||a.height>=2448;)a.width*=.8,a.height*=.8;return a},window.lrz=function(e,t){return new r(e,t)},window.lrz.version="4.9.36",e.exports=window.lrz},function(e,t,n){(function(t){!function(n){function r(e,t){return function(){e.apply(t,arguments)}}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],c(e,r(a,this),r(s,this))}function o(e){var t=this;return null===this._state?void this._deferreds.push(e):void d(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void c(r(t,e),r(a,this),r(s,this))}this._state=!0,this._value=e,u.call(this)}catch(n){s.call(this,n)}}function s(e){this._state=!1,this._value=e,u.call(this)}function u(){for(var e=0,t=this._deferreds.length;t>e;e++)o.call(this,this._deferreds[e]);this._deferreds=null}function l(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function c(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}var d="function"==typeof t&&t||function(e){setTimeout(e,1)},f=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=this;return new i(function(r,i){o.call(n,new l(e,t,r,i))})},i.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&f(arguments[0])?arguments[0]:arguments);return new i(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(u){n(u)}}if(0===e.length)return t([]);for(var i=e.length,o=0;or;r++)e[r].then(t,n)})},i._setImmediateFn=function(e){d=e},i.prototype.always=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},"undefined"!=typeof e&&e.exports?e.exports=i:n.Promise||(n.Promise=i)}(this)}).call(t,n(2).setImmediate)},function(e,t,n){(function(e,r){function i(e,t){this._id=e,this._clearFn=t}var o=n(3).nextTick,a=Function.prototype.apply,s=Array.prototype.slice,u={},l=0;t.setTimeout=function(){return new i(a.call(setTimeout,window,arguments),clearTimeout)},t.setInterval=function(){return new i(a.call(setInterval,window,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},t.setImmediate="function"==typeof e?e:function(e){var n=l++,r=arguments.length<2?!1:s.call(arguments,1);return u[n]=!0,o(function(){u[n]&&(r?e.apply(null,r):e.call(null),t.clearImmediate(n))}),n},t.clearImmediate="function"==typeof r?r:function(e){delete u[e]}}).call(t,n(2).setImmediate,n(2).clearImmediate)},function(e,t){function n(){l=!1,a.length?u=a.concat(u):c=-1,u.length&&r()}function r(){if(!l){var e=setTimeout(n);l=!0;for(var t=u.length;t;){for(a=u,u=[];++c1)for(var n=1;na;a++)o[a]=n.charCodeAt(a);return i}function a(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="blob",n.onload=function(e){(200==this.status||0===this.status)&&t(this.response)},n.send()}function s(e,t){function n(n){var r=u(n),i=l(n);e.exifdata=r||{},e.iptcdata=i||{},t&&t.call(e)}if(e.src)if(/^data\:/i.test(e.src)){var r=o(e.src);n(r)}else if(/^blob\:/i.test(e.src)){var i=new FileReader;i.onload=function(e){n(e.target.result)},a(e.src,function(e){i.readAsArrayBuffer(e)})}else{var s=new XMLHttpRequest;s.onload=function(){200==this.status||0===this.status?n(s.response):t(new Error("Could not load image")),s=null},s.open("GET",e.src,!0),s.responseType="arraybuffer",s.send(null)}else if(window.FileReader&&(e instanceof window.Blob||e instanceof window.File)){var i=new FileReader;i.onload=function(e){p&&console.log("Got file of length "+e.target.result.byteLength),n(e.target.result)},i.readAsArrayBuffer(e)}}function u(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n,r=2,i=e.byteLength;i>r;){if(255!=t.getUint8(r))return p&&console.log("Not a valid marker at offset "+r+", found: "+t.getUint8(r)),!1;if(n=t.getUint8(r+1),p&&console.log(n),225==n)return p&&console.log("Found 0xFFE1 marker"),g(t,r+4,t.getUint16(r+2)-2);r+=2+t.getUint16(r+2)}}function l(e){var t=new DataView(e);if(p&&console.log("Got file of length "+e.byteLength),255!=t.getUint8(0)||216!=t.getUint8(1))return p&&console.log("Not a valid JPEG"),!1;for(var n=2,r=e.byteLength,i=function(e,t){return 56===e.getUint8(t)&&66===e.getUint8(t+1)&&73===e.getUint8(t+2)&&77===e.getUint8(t+3)&&4===e.getUint8(t+4)&&4===e.getUint8(t+5)};r>n;){if(i(t,n)){var o=t.getUint8(n+7);o%2!==0&&(o+=1),0===o&&(o=4);var a=n+8+o,s=t.getUint16(n+6+o);return c(e,a,s)}n++}}function c(e,t,n){for(var r,i,o,a,s,u=new DataView(e),l={},c=t;t+n>c;)28===u.getUint8(c)&&2===u.getUint8(c+1)&&(a=u.getUint8(c+2),a in b&&(o=u.getInt16(c+3),s=o+5,i=b[a],r=h(u,c+5,o),l.hasOwnProperty(i)?l[i]instanceof Array?l[i].push(r):l[i]=[l[i],r]:l[i]=r)),c++;return l}function d(e,t,n,r,i){var o,a,s,u=e.getUint16(n,!i),l={};for(s=0;u>s;s++)o=n+12*s+2,a=r[e.getUint16(o,!i)],!a&&p&&console.log("Unknown tag: "+e.getUint16(o,!i)),l[a]=f(e,o,t,n,i);return l}function f(e,t,n,r,i){var o,a,s,u,l,c,d=e.getUint16(t+2,!i),f=e.getUint32(t+4,!i),g=e.getUint32(t+8,!i)+n;switch(d){case 1:case 7:if(1==f)return e.getUint8(t+8,!i);for(o=f>4?g:t+8,a=[],u=0;f>u;u++)a[u]=e.getUint8(o+u);return a;case 2:return o=f>4?g:t+8,h(e,o,f-1);case 3:if(1==f)return e.getUint16(t+8,!i);for(o=f>2?g:t+8,a=[],u=0;f>u;u++)a[u]=e.getUint16(o+2*u,!i);return a;case 4:if(1==f)return e.getUint32(t+8,!i);for(a=[],u=0;f>u;u++)a[u]=e.getUint32(g+4*u,!i);return a;case 5:if(1==f)return l=e.getUint32(g,!i),c=e.getUint32(g+4,!i),s=new Number(l/c),s.numerator=l,s.denominator=c,s;for(a=[],u=0;f>u;u++)l=e.getUint32(g+8*u,!i),c=e.getUint32(g+4+8*u,!i),a[u]=new Number(l/c),a[u].numerator=l,a[u].denominator=c;return a;case 9:if(1==f)return e.getInt32(t+8,!i);for(a=[],u=0;f>u;u++)a[u]=e.getInt32(g+4*u,!i);return a;case 10:if(1==f)return e.getInt32(g,!i)/e.getInt32(g+4,!i);for(a=[],u=0;f>u;u++)a[u]=e.getInt32(g+8*u,!i)/e.getInt32(g+4+8*u,!i);return a}}function h(e,t,n){var r,i="";for(r=t;t+n>r;r++)i+=String.fromCharCode(e.getUint8(r));return i}function g(e,t){if("Exif"!=h(e,t,4))return p&&console.log("Not valid EXIF data! "+h(e,t,4)),!1;var n,r,i,o,a,s=t+6;if(18761==e.getUint16(s))n=!1;else{if(19789!=e.getUint16(s))return p&&console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)"),!1;n=!0}if(42!=e.getUint16(s+2,!n))return p&&console.log("Not valid TIFF data! (no 0x002A)"),!1;var u=e.getUint32(s+4,!n);if(8>u)return p&&console.log("Not valid TIFF data! (First offset less than 8)",e.getUint32(s+4,!n)),!1;if(r=d(e,s,s+u,y,n),r.ExifIFDPointer){o=d(e,s,s+r.ExifIFDPointer,w,n);for(i in o){switch(i){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":o[i]=S[i][o[i]];break;case"ExifVersion":case"FlashpixVersion":o[i]=String.fromCharCode(o[i][0],o[i][1],o[i][2],o[i][3]);break;case"ComponentsConfiguration":o[i]=S.Components[o[i][0]]+S.Components[o[i][1]]+S.Components[o[i][2]]+S.Components[o[i][3]]}r[i]=o[i]}}if(r.GPSInfoIFDPointer){a=d(e,s,s+r.GPSInfoIFDPointer,v,n);for(i in a){switch(i){case"GPSVersionID":a[i]=a[i][0]+"."+a[i][1]+"."+a[i][2]+"."+a[i][3]}r[i]=a[i]}}return r}var p=!1,m=function(e){return e instanceof m?e:this instanceof m?void(this.EXIFwrapped=e):new m(e)};"undefined"!=typeof e&&e.exports&&(t=e.exports=m),t.EXIF=m;var w=m.Tags={36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubsecTime",37521:"SubsecTimeOriginal",37522:"SubsecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:"OECF",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRation",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",40965:"InteroperabilityIFDPointer",42016:"ImageUniqueID"},y=m.TiffTags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright"},v=m.GPSTags={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential"},S=m.StringValues={ExposureProgram:{0:"Not defined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Not defined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},Components:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"}},b={120:"caption",110:"credit",25:"keywords",55:"dateCreated",80:"byline",85:"bylineTitle",122:"captionWriter",105:"headline",116:"copyright",15:"category"};m.getData=function(e,t){return(e instanceof Image||e instanceof HTMLImageElement)&&!e.complete?!1:(n(e)?t&&t.call(e):s(e,t),!0)},m.getTag=function(e,t){return n(e)?e.exifdata[t]:void 0},m.getAllTags=function(e){if(!n(e))return{};var t,r=e.exifdata,i={};for(t in r)r.hasOwnProperty(t)&&(i[t]=r[t]);return i},m.pretty=function(e){if(!n(e))return"";var t,r=e.exifdata,i="";for(t in r)r.hasOwnProperty(t)&&(i+="object"==typeof r[t]?r[t]instanceof Number?t+" : "+r[t]+" ["+r[t].numerator+"/"+r[t].denominator+"]\r\n":t+" : ["+r[t].length+" values]\r\n":t+" : "+r[t]+"\r\n");return i},m.readFromBinaryFile=function(e){return u(e)},r=[],i=function(){return m}.apply(t,r),!(void 0!==i&&(e.exports=i))}).call(this)}])}); //# sourceMappingURL=lrz.bundle.js.map \ No newline at end of file diff --git a/dist/lrz.bundle.js.map b/dist/lrz.bundle.js.map index 0253bd2..bce695c 100644 --- a/dist/lrz.bundle.js.map +++ b/dist/lrz.bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lrz.bundle.js","webpack:///webpack/bootstrap 827e1829811ae3346428","webpack:///./src/lrz.js","webpack:///src/lib/Promise.js","webpack:///./~/timers-browserify/main.js","webpack:///./~/process/browser.js","webpack:///src/lib/Blob.FormData.shim.js","webpack:///src/lib/exif.js"],"names":["root","factory","exports","module","define","amd","a","i","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","callbacks","length","installedChunks","push","apply","shift",0,"e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","appendChild","m","c","Lrz","file","opts","that","Error","defaults","width","height","fieldName","quality","hasOwnProperty","init","getJsDir","filter","scripts","v","indexOf","substr","lastIndexOf","dataURItoBlob","dataURI","byteString","split","atob","unescape","mimeString","ia","Uint8Array","charCodeAt","BlobFormDataShim","Blob","buffer","URL","webkitURL","Promise","exif","UA","userAgent","ISOldIOS","exec","isOldAndroid","oldIOS","pop","oldAndroid","iOS","test","android","mQQBrowser","navigator","prototype","fileIsString","fileIsBase64","img","Image","canvas","blob","createObjectURL","fileName","name","getContext","resolve","reject","onerror","onload","_getBase64","then","base64","formData","size","FormData","append","replace","fileLen","base64Len","origin","revokeObjectURL","crossOrigin","getData","orientation","getTag","resize","_getResize","ctx","fillStyle","fillRect","_createBase64ForOldIOS","_createBase64","err","__WEBPACK_AMD_REQUIRE_ARRAY__","MegaPixImage","mpImg","render","toDataURL","rotate","Math","PI","drawImage","translate","scale","JPEGEncoder","encoder","getImageData","encode","ret","ceil","lrz","version","setImmediate","bind","fn","thisArg","arguments","TypeError","_state","_value","_deferreds","doResolve","handle","deferred","me","asap","cb","onFulfilled","onRejected","newValue","finale","len","Handler","done","value","reason","ex","setTimeout","isArray","Array","Object","toString","all","args","slice","res","val","remaining","constructor","race","values","_setImmediateFn","always","clearImmediate","Timeout","clearFn","_id","_clearFn","nextTick","Function","immediateIds","nextImmediateId","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","run","Item","fun","array","noop","process","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","hasFormDataBug","bCheck","vendor","match","FormDataShim","o","parts","boundary","join","Date","random","oldSend","XMLHttpRequest","send","getParts","filename","fr","data","oXHR","BlobConstructor","FileReader","result","readAsArrayBuffer","setRequestHeader","bb","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","forEach","getBlob","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","imageHasData","base64ToArrayBuffer","contentType","binary","ArrayBuffer","view","objectURLToBlob","url","http","open","responseType","status","response","handleBinaryFile","binFile","findEXIFinJPEG","iptcdata","findIPTCinJPEG","exifdata","arrayBuffer","fileReader","target","File","debug","console","log","byteLength","dataView","DataView","getUint8","marker","offset","readEXIFData","getUint16","isFieldSegmentStart","nameHeaderLength","startOffset","sectionLength","readIPTCData","fieldValue","dataSize","segmentType","segmentSize","segmentStartPos","IptcFieldMap","getInt16","getStringFromDB","readTags","tiffStart","dirStart","strings","bigEnd","entryOffset","tag","entries","tags","readTagValue","vals","n","numerator","denominator","numValues","getUint32","valueOffset","Number","getInt32","start","outstr","String","fromCharCode","exifData","gpsData","tiffOffset","firstIFDOffset","TiffTags","ExifIFDPointer","ExifTags","StringValues","Components","GPSInfoIFDPointer","GPSTags","EXIF","obj","EXIFwrapped","Tags",36864,40960,40961,40962,40963,37121,37122,37500,37510,40964,36867,36868,37520,37521,37522,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37396,37386,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,40965,42016,256,257,34665,34853,258,259,262,274,277,284,530,531,282,283,296,273,278,279,513,514,301,318,319,529,532,306,270,271,272,305,315,33432,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,"ExposureProgram","MeteringMode",255,"LightSource","Flash",31,32,65,69,71,73,77,79,89,93,95,"SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource",120,110,55,80,85,122,105,116,"HTMLImageElement","complete","getAllTags","pretty","strPretty","readFromBinaryFile"],"mappings":"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","file":"lrz.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t0:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".chunk.js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 保证按需加载的文件路径正确\n\t__webpack_require__.p = getJsDir('lrz') + '/';\n\twindow.URL = window.URL || window.webkitURL;\n\t\n\tvar Promise = __webpack_require__(1),\n\t BlobFormDataShim = __webpack_require__(4),\n\t exif = __webpack_require__(5);\n\t\n\t\n\tvar UA = (function (userAgent) {\n\t var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n\t isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\t\n\t // 判断设备是否是IOS7以下\n\t // 判断设备是否是android4.5以下\n\t // 判断是否iOS\n\t // 判断是否android\n\t // 判断是否QQ浏览器\n\t return {\n\t oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n\t oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n\t iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n\t android : /Android/g.test(userAgent),\n\t mQQBrowser: /MQQBrowser/g.test(userAgent)\n\t }\n\t})(navigator.userAgent);\n\t\n\t\n\tfunction Lrz (file, opts) {\n\t var that = this;\n\t\n\t if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\t\n\t opts = opts || {};\n\t\n\t that.defaults = {\n\t width : null,\n\t height : null,\n\t fieldName: 'file',\n\t quality : 0.7\n\t };\n\t\n\t that.file = file;\n\t\n\t for (var p in opts) {\n\t if (!opts.hasOwnProperty(p)) continue;\n\t that.defaults[p] = opts[p];\n\t }\n\t\n\t return this.init();\n\t}\n\t\n\tLrz.prototype.init = function () {\n\t var that = this,\n\t file = that.file,\n\t fileIsString = typeof file === 'string',\n\t fileIsBase64 = /^data:/.test(file),\n\t img = new Image(),\n\t canvas = document.createElement('canvas'),\n\t blob = fileIsString ? file : URL.createObjectURL(file);\n\t\n\t that.img = img;\n\t that.blob = blob;\n\t that.canvas = canvas;\n\t\n\t if (fileIsString) {\n\t that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n\t } else {\n\t that.fileName = file.name;\n\t }\n\t\n\t if (!document.createElement('canvas').getContext) {\n\t throw new Error('浏览器不支持canvas');\n\t }\n\t\n\t return new Promise(function (resolve, reject) {\n\t img.onerror = function () {\n\t throw new Error('加载图片文件失败');\n\t };\n\t\n\t img.onload = function () {\n\t that._getBase64()\n\t .then(function (base64) {\n\t if (base64.length < 10) reject('生成base64失败');\n\t\n\t return base64;\n\t })\n\t .then(function (base64) {\n\t var formData = null;\n\t\n\t // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n\t if (typeof that.file === 'object' && base64.length > that.file.size) {\n\t formData = new FormData();\n\t file = that.file;\n\t } else {\n\t formData = new BlobFormDataShim.FormData();\n\t file = dataURItoBlob(base64);\n\t }\n\t\n\t formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\t\n\t resolve({\n\t formData : formData,\n\t fileLen : +file.size,\n\t base64 : base64,\n\t base64Len: base64.length,\n\t origin : that.file,\n\t file : file\n\t });\n\t\n\t // 释放内存\n\t for (var p in that) {\n\t if (!that.hasOwnProperty(p)) continue;\n\t\n\t that[p] = null;\n\t }\n\t URL.revokeObjectURL(that.blob);\n\t });\n\t };\n\t\n\t // 如果传入的是base64在移动端会报错\n\t !fileIsBase64 && (img.crossOrigin = \"*\");\n\t\n\t img.src = blob;\n\t });\n\t};\n\t\n\tLrz.prototype._getBase64 = function () {\n\t var that = this,\n\t img = that.img,\n\t file = that.file,\n\t canvas = that.canvas;\n\t\n\t return new Promise(function (resolve) {\n\t try {\n\t // 传入blob在android4.3以下有bug\n\t exif.getData(typeof file === 'object' ? file : img, function () {\n\t that.orientation = exif.getTag(this, \"Orientation\");\n\t\n\t that.resize = that._getResize();\n\t that.ctx = canvas.getContext('2d');\n\t\n\t canvas.width = that.resize.width;\n\t canvas.height = that.resize.height;\n\t\n\t // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n\t that.ctx.fillStyle = '#fff';\n\t that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\n\t // 根据设备对应处理方式\n\t if (UA.oldIOS) {\n\t that._createBase64ForOldIOS().then(resolve);\n\t }\n\t else {\n\t that._createBase64().then(resolve);\n\t }\n\t });\n\t } catch (err) {\n\t // 这样能解决低内存设备闪退的问题吗?\n\t throw new Error(err);\n\t }\n\t });\n\t};\n\t\n\t\n\tLrz.prototype._createBase64ForOldIOS = function () {\n\t var that = this,\n\t img = that.img,\n\t canvas = that.canvas,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t return new Promise(function (resolve) {\n\t __webpack_require__.e/* require */(1, function(__webpack_require__) { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(6)]; (function (MegaPixImage) {\n\t var mpImg = new MegaPixImage(img);\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t mpImg.render(canvas, {\n\t width : canvas.height,\n\t height : canvas.width,\n\t orientation: orientation\n\t });\n\t } else {\n\t mpImg.render(canvas, {\n\t width : canvas.width,\n\t height : canvas.height,\n\t orientation: orientation\n\t });\n\t }\n\t\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));});\n\t });\n\t};\n\t\n\tLrz.prototype._createBase64 = function () {\n\t var that = this,\n\t resize = that.resize,\n\t img = that.img,\n\t canvas = that.canvas,\n\t ctx = that.ctx,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t // 调整为正确方向\n\t switch (orientation) {\n\t case 3:\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 6:\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 8:\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t case 2:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t break;\n\t case 4:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 5:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 7:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t default:\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n\t __webpack_require__.e/* require */(2, function(__webpack_require__) { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(7)]; (function (JPEGEncoder) {\n\t var encoder = new JPEGEncoder(),\n\t img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\t\n\t resolve(encoder.encode(img, defaults.quality * 100));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));})\n\t }\n\t else {\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }\n\t });\n\t};\n\t\n\tLrz.prototype._getResize = function () {\n\t var that = this,\n\t img = that.img,\n\t defaults = that.defaults,\n\t width = defaults.width,\n\t height = defaults.height,\n\t orientation = that.orientation;\n\t\n\t var ret = {\n\t width : img.width,\n\t height: img.height\n\t };\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t ret.width = img.height;\n\t ret.height = img.width;\n\t }\n\t\n\t // 如果原图小于设定,采用原图\n\t if (ret.width < width || ret.height < height) {\n\t return ret;\n\t }\n\t\n\t var scale = ret.width / ret.height;\n\t\n\t if (width && height) {\n\t if (scale >= width / height) {\n\t if (ret.width > width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t } else {\n\t if (ret.height > height) {\n\t ret.height = height;\n\t ret.width = Math.ceil(height * scale);\n\t }\n\t }\n\t }\n\t else if (width) {\n\t if (width < ret.width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t }\n\t else if (height) {\n\t if (height < ret.height) {\n\t ret.width = Math.ceil(height * scale);\n\t ret.height = height;\n\t }\n\t }\n\t\n\t // 超过这个值base64无法生成,在IOS上\n\t while (ret.width >= 3264 || ret.height >= 2448) {\n\t ret.width *= 0.8;\n\t ret.height *= 0.8;\n\t }\n\t\n\t return ret;\n\t};\n\t\n\t/**\n\t * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n\t * @returns {string}\n\t */\n\tfunction getJsDir (src) {\n\t var script = null;\n\t\n\t if (src) {\n\t script = [].filter.call(document.scripts, function (v) {\n\t return v.src.indexOf(src) !== -1;\n\t })[0];\n\t } else {\n\t script = document.scripts[document.scripts.length - 1];\n\t }\n\t\n\t if (!script) return null;\n\t\n\t return script.src.substr(0, script.src.lastIndexOf('/'));\n\t}\n\t\n\t\n\t/**\n\t * 转换成formdata\n\t * @param dataURI\n\t * @returns {*}\n\t *\n\t * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n\t */\n\tfunction dataURItoBlob (dataURI) {\n\t // convert base64/URLEncoded data component to raw binary data held in a string\n\t var byteString;\n\t if (dataURI.split(',')[0].indexOf('base64') >= 0)\n\t byteString = atob(dataURI.split(',')[1]);\n\t else\n\t byteString = unescape(dataURI.split(',')[1]);\n\t\n\t // separate out the mime component\n\t var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\t\n\t // write the bytes of the string to a typed array\n\t var ia = new Uint8Array(byteString.length);\n\t for (var i = 0; i < byteString.length; i++) {\n\t ia[i] = byteString.charCodeAt(i);\n\t }\n\t\n\t return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n\t}\n\t\n\twindow.lrz = function (file, opts) {\n\t return new Lrz(file, opts);\n\t};\n\t\n\t// 版本号来自package.json,构建时自动填充\n\twindow.lrz.version = '4.8.35';\n\t\n\tmodule.exports = window.lrz;\n\t\n\t/**\n\t *\n\t *    ┏┓   ┏┓\n\t *   ┏┛┻━━━┛┻┓\n\t *   ┃       ┃\n\t *   ┃   ━   ┃\n\t *   ┃ ┳┛ ┗┳ ┃\n\t *   ┃       ┃\n\t *   ┃   ┻   ┃\n\t *   ┃       ┃\n\t *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n\t *     ┃   ┃ 神兽保佑,代码无bug\n\t *     ┃   ┃\n\t *     ┃   ┗━━━┓\n\t *     ┃      ┣┓\n\t *     ┃     ┏┛\n\t *     ┗┓┓┏━┳┓┏┛\n\t *      ┃┫┫ ┃┫┫\n\t *      ┗┻┛ ┗┻┛\n\t *\n\t */\n\t\n\t\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\t\n\t // Use polyfill for setImmediate for performance gains\n\t var asap = (typeof setImmediate === 'function' && setImmediate) ||\n\t function (fn) {\n\t setTimeout(fn, 1);\n\t };\n\t\n\t // Polyfill for Function.prototype.bind\n\t function bind (fn, thisArg) {\n\t return function () {\n\t fn.apply(thisArg, arguments);\n\t }\n\t }\n\t\n\t var isArray = Array.isArray || function (value) {\n\t return Object.prototype.toString.call(value) === \"[object Array]\"\n\t };\n\t\n\t function Promise (fn) {\n\t if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t if (typeof fn !== 'function') throw new TypeError('not a function');\n\t this._state = null;\n\t this._value = null;\n\t this._deferreds = []\n\t\n\t doResolve(fn, bind(resolve, this), bind(reject, this))\n\t }\n\t\n\t function handle (deferred) {\n\t var me = this;\n\t if (this._state === null) {\n\t this._deferreds.push(deferred);\n\t return\n\t }\n\t asap(function () {\n\t var cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t if (cb === null) {\n\t (me._state ? deferred.resolve : deferred.reject)(me._value);\n\t return;\n\t }\n\t var ret;\n\t try {\n\t ret = cb(me._value);\n\t }\n\t catch (e) {\n\t deferred.reject(e);\n\t return;\n\t }\n\t deferred.resolve(ret);\n\t })\n\t }\n\t\n\t function resolve (newValue) {\n\t try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t if (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t var then = newValue.then;\n\t if (typeof then === 'function') {\n\t doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t return;\n\t }\n\t }\n\t this._state = true;\n\t this._value = newValue;\n\t finale.call(this);\n\t } catch (e) {\n\t reject.call(this, e);\n\t }\n\t }\n\t\n\t function reject (newValue) {\n\t this._state = false;\n\t this._value = newValue;\n\t finale.call(this);\n\t }\n\t\n\t function finale () {\n\t for (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t handle.call(this, this._deferreds[i]);\n\t }\n\t this._deferreds = null;\n\t }\n\t\n\t function Handler (onFulfilled, onRejected, resolve, reject) {\n\t this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t this.resolve = resolve;\n\t this.reject = reject;\n\t }\n\t\n\t /**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\t function doResolve (fn, onFulfilled, onRejected) {\n\t var done = false;\n\t try {\n\t fn(function (value) {\n\t if (done) return;\n\t done = true;\n\t onFulfilled(value);\n\t }, function (reason) {\n\t if (done) return;\n\t done = true;\n\t onRejected(reason);\n\t })\n\t } catch (ex) {\n\t if (done) return;\n\t done = true;\n\t onRejected(ex);\n\t }\n\t }\n\t\n\t Promise.prototype['catch'] = function (onRejected) {\n\t return this.then(null, onRejected);\n\t };\n\t\n\t Promise.prototype.then = function (onFulfilled, onRejected) {\n\t var me = this;\n\t return new Promise(function (resolve, reject) {\n\t handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t })\n\t };\n\t\n\t Promise.all = function () {\n\t var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\t\n\t return new Promise(function (resolve, reject) {\n\t if (args.length === 0) return resolve([]);\n\t var remaining = args.length;\n\t\n\t function res (i, val) {\n\t try {\n\t if (val && (typeof val === 'object' || typeof val === 'function')) {\n\t var then = val.then;\n\t if (typeof then === 'function') {\n\t then.call(val, function (val) {\n\t res(i, val)\n\t }, reject);\n\t return;\n\t }\n\t }\n\t args[i] = val;\n\t if (--remaining === 0) {\n\t resolve(args);\n\t }\n\t } catch (ex) {\n\t reject(ex);\n\t }\n\t }\n\t\n\t for (var i = 0; i < args.length; i++) {\n\t res(i, args[i]);\n\t }\n\t });\n\t };\n\t\n\t Promise.resolve = function (value) {\n\t if (value && typeof value === 'object' && value.constructor === Promise) {\n\t return value;\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t resolve(value);\n\t });\n\t };\n\t\n\t Promise.reject = function (value) {\n\t return new Promise(function (resolve, reject) {\n\t reject(value);\n\t });\n\t };\n\t\n\t Promise.race = function (values) {\n\t return new Promise(function (resolve, reject) {\n\t for (var i = 0, len = values.length; i < len; i++) {\n\t values[i].then(resolve, reject);\n\t }\n\t });\n\t };\n\t\n\t /**\n\t * Set the immediate function to execute callbacks\n\t * @param fn {function} Function to execute\n\t * @private\n\t */\n\t Promise._setImmediateFn = function _setImmediateFn (fn) {\n\t asap = fn;\n\t };\n\t\n\t\n\t Promise.prototype.always = function (callback) {\n\t var constructor = this.constructor;\n\t\n\t return this.then(function (value) {\n\t return constructor.resolve(callback()).then(function () {\n\t return value;\n\t });\n\t }, function (reason) {\n\t return constructor.resolve(callback()).then(function () {\n\t throw reason;\n\t });\n\t });\n\t };\n\t\n\t if (typeof module !== 'undefined' && module.exports) {\n\t module.exports = Promise;\n\t } else if (!root.Promise) {\n\t root.Promise = Promise;\n\t }\n\t\n\t})(this);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(3).nextTick;\n\tvar apply = Function.prototype.apply;\n\tvar slice = Array.prototype.slice;\n\tvar immediateIds = {};\n\tvar nextImmediateId = 0;\n\t\n\t// DOM APIs, for completeness\n\t\n\texports.setTimeout = function() {\n\t return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n\t};\n\texports.setInterval = function() {\n\t return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n\t};\n\texports.clearTimeout =\n\texports.clearInterval = function(timeout) { timeout.close(); };\n\t\n\tfunction Timeout(id, clearFn) {\n\t this._id = id;\n\t this._clearFn = clearFn;\n\t}\n\tTimeout.prototype.unref = Timeout.prototype.ref = function() {};\n\tTimeout.prototype.close = function() {\n\t this._clearFn.call(window, this._id);\n\t};\n\t\n\t// Does not start the time, just sets up the members needed.\n\texports.enroll = function(item, msecs) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = msecs;\n\t};\n\t\n\texports.unenroll = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = -1;\n\t};\n\t\n\texports._unrefActive = exports.active = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t\n\t var msecs = item._idleTimeout;\n\t if (msecs >= 0) {\n\t item._idleTimeoutId = setTimeout(function onTimeout() {\n\t if (item._onTimeout)\n\t item._onTimeout();\n\t }, msecs);\n\t }\n\t};\n\t\n\t// That's not how node.js implements it but the exposed api is the same.\n\texports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n\t var id = nextImmediateId++;\n\t var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\t\n\t immediateIds[id] = true;\n\t\n\t nextTick(function onNextTick() {\n\t if (immediateIds[id]) {\n\t // fn.call() is faster so we optimize for the common use-case\n\t // @see http://jsperf.com/call-apply-segu\n\t if (args) {\n\t fn.apply(null, args);\n\t } else {\n\t fn.call(null);\n\t }\n\t // Prevent ids from leaking\n\t exports.clearImmediate(id);\n\t }\n\t });\n\t\n\t return id;\n\t};\n\t\n\texports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n\t delete immediateIds[id];\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate, __webpack_require__(2).clearImmediate))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\t\n\tvar process = module.exports = {};\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = setTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t clearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t setTimeout(drainQueue, 0);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t//@source https://xts.so/demo/compress/index.html\n\t\n\t// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\n\tvar BlobConstructor = ((function () {\n\t try {\n\t new Blob();\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t})()) ? window.Blob : function (parts, opts) {\n\t var bb = new (\n\t window.BlobBuilder\n\t || window.WebKitBlobBuilder\n\t || window.MSBlobBuilder\n\t || window.MozBlobBuilder\n\t );\n\t parts.forEach(function (p) {\n\t bb.append(p);\n\t });\n\t\n\t return bb.getBlob(opts ? opts.type : undefined);\n\t};\n\t\n\t// Android上的AppleWebKit 534以前的内核存在一个Bug,\n\t// 导致FormData加入一个Blob对象后,上传的文件是0字节\n\tfunction hasFormDataBug () {\n\t var bCheck = ~navigator.userAgent.indexOf('Android')\n\t && ~navigator.vendor.indexOf('Google')\n\t && !~navigator.userAgent.indexOf('Chrome');\n\t\n\t // QQ X5浏览器也有这个BUG\n\t return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n\t}\n\tfunction FormDataShim () {\n\t var\n\t // Store a reference to this\n\t o = this,\n\t\n\t // Data to be sent\n\t parts = [],\n\t\n\t // Boundary parameter for separating the multipart values\n\t boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n\t\n\t // Store the current XHR send method so we can safely override it\n\t oldSend = XMLHttpRequest.prototype.send;\n\t this.getParts = function () {\n\t return parts.toString();\n\t };\n\t this.append = function (name, value, filename) {\n\t parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n\t\n\t if (value instanceof Blob) {\n\t parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n\t parts.push(value);\n\t }\n\t else {\n\t parts.push('\\r\\n\\r\\n' + value);\n\t }\n\t parts.push('\\r\\n');\n\t };\n\t\n\t XMLHttpRequest.prototype.send = function (val) {\n\t var fr,\n\t data,\n\t oXHR = this;\n\t\n\t if (val === o) {\n\t // Append the final boundary string\n\t parts.push('--' + boundary + '--\\r\\n');\n\t // Create the blob\n\t data = new BlobConstructor(parts);\n\t\n\t // Set up and read the blob into an array to be sent\n\t fr = new FileReader();\n\t fr.onload = function () {\n\t oldSend.call(oXHR, fr.result);\n\t };\n\t fr.onerror = function (err) {\n\t throw err;\n\t };\n\t fr.readAsArrayBuffer(data);\n\t\n\t // Set the multipart content type and boudary\n\t this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n\t XMLHttpRequest.prototype.send = oldSend;\n\t }\n\t else {\n\t oldSend.call(this, val);\n\t }\n\t };\n\t}\n\t\n\t\n\tmodule.exports = {\n\t Blob : BlobConstructor,\n\t FormData: hasFormDataBug() ? FormDataShim : FormData\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* exif */\n\t(function () {\n\t\n\t var debug = false;\n\t\n\t var root = this;\n\t\n\t var EXIF = function (obj) {\n\t if (obj instanceof EXIF) return obj;\n\t if (!(this instanceof EXIF)) return new EXIF(obj);\n\t this.EXIFwrapped = obj;\n\t };\n\t\n\t if (true) {\n\t if (typeof module !== 'undefined' && module.exports) {\n\t exports = module.exports = EXIF;\n\t }\n\t exports.EXIF = EXIF;\n\t } else {\n\t root.EXIF = EXIF;\n\t }\n\t\n\t var ExifTags = EXIF.Tags = {\n\t\n\t // version tags\n\t 0x9000: \"ExifVersion\", // EXIF version\n\t 0xA000: \"FlashpixVersion\", // Flashpix format version\n\t\n\t // colorspace tags\n\t 0xA001: \"ColorSpace\", // Color space information tag\n\t\n\t // image configuration\n\t 0xA002: \"PixelXDimension\", // Valid width of meaningful image\n\t 0xA003: \"PixelYDimension\", // Valid height of meaningful image\n\t 0x9101: \"ComponentsConfiguration\", // Information about channels\n\t 0x9102: \"CompressedBitsPerPixel\", // Compressed bits per pixel\n\t\n\t // user information\n\t 0x927C: \"MakerNote\", // Any desired information written by the manufacturer\n\t 0x9286: \"UserComment\", // Comments by user\n\t\n\t // related file\n\t 0xA004: \"RelatedSoundFile\", // Name of related sound file\n\t\n\t // date and time\n\t 0x9003: \"DateTimeOriginal\", // Date and time when the original image was generated\n\t 0x9004: \"DateTimeDigitized\", // Date and time when the image was stored digitally\n\t 0x9290: \"SubsecTime\", // Fractions of seconds for DateTime\n\t 0x9291: \"SubsecTimeOriginal\", // Fractions of seconds for DateTimeOriginal\n\t 0x9292: \"SubsecTimeDigitized\", // Fractions of seconds for DateTimeDigitized\n\t\n\t // picture-taking conditions\n\t 0x829A: \"ExposureTime\", // Exposure time (in seconds)\n\t 0x829D: \"FNumber\", // F number\n\t 0x8822: \"ExposureProgram\", // Exposure program\n\t 0x8824: \"SpectralSensitivity\", // Spectral sensitivity\n\t 0x8827: \"ISOSpeedRatings\", // ISO speed rating\n\t 0x8828: \"OECF\", // Optoelectric conversion factor\n\t 0x9201: \"ShutterSpeedValue\", // Shutter speed\n\t 0x9202: \"ApertureValue\", // Lens aperture\n\t 0x9203: \"BrightnessValue\", // Value of brightness\n\t 0x9204: \"ExposureBias\", // Exposure bias\n\t 0x9205: \"MaxApertureValue\", // Smallest F number of lens\n\t 0x9206: \"SubjectDistance\", // Distance to subject in meters\n\t 0x9207: \"MeteringMode\", // Metering mode\n\t 0x9208: \"LightSource\", // Kind of light source\n\t 0x9209: \"Flash\", // Flash status\n\t 0x9214: \"SubjectArea\", // Location and area of main subject\n\t 0x920A: \"FocalLength\", // Focal length of the lens in mm\n\t 0xA20B: \"FlashEnergy\", // Strobe energy in BCPS\n\t 0xA20C: \"SpatialFrequencyResponse\", //\n\t 0xA20E: \"FocalPlaneXResolution\", // Number of pixels in width direction per FocalPlaneResolutionUnit\n\t 0xA20F: \"FocalPlaneYResolution\", // Number of pixels in height direction per FocalPlaneResolutionUnit\n\t 0xA210: \"FocalPlaneResolutionUnit\", // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution\n\t 0xA214: \"SubjectLocation\", // Location of subject in image\n\t 0xA215: \"ExposureIndex\", // Exposure index selected on camera\n\t 0xA217: \"SensingMethod\", // Image sensor type\n\t 0xA300: \"FileSource\", // Image source (3 == DSC)\n\t 0xA301: \"SceneType\", // Scene type (1 == directly photographed)\n\t 0xA302: \"CFAPattern\", // Color filter array geometric pattern\n\t 0xA401: \"CustomRendered\", // Special processing\n\t 0xA402: \"ExposureMode\", // Exposure mode\n\t 0xA403: \"WhiteBalance\", // 1 = auto white balance, 2 = manual\n\t 0xA404: \"DigitalZoomRation\", // Digital zoom ratio\n\t 0xA405: \"FocalLengthIn35mmFilm\", // Equivalent foacl length assuming 35mm film camera (in mm)\n\t 0xA406: \"SceneCaptureType\", // Type of scene\n\t 0xA407: \"GainControl\", // Degree of overall image gain adjustment\n\t 0xA408: \"Contrast\", // Direction of contrast processing applied by camera\n\t 0xA409: \"Saturation\", // Direction of saturation processing applied by camera\n\t 0xA40A: \"Sharpness\", // Direction of sharpness processing applied by camera\n\t 0xA40B: \"DeviceSettingDescription\", //\n\t 0xA40C: \"SubjectDistanceRange\", // Distance to subject\n\t\n\t // other tags\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0xA420: \"ImageUniqueID\" // Identifier assigned uniquely to each image\n\t };\n\t\n\t var TiffTags = EXIF.TiffTags = {\n\t 0x0100: \"ImageWidth\",\n\t 0x0101: \"ImageHeight\",\n\t 0x8769: \"ExifIFDPointer\",\n\t 0x8825: \"GPSInfoIFDPointer\",\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0x0102: \"BitsPerSample\",\n\t 0x0103: \"Compression\",\n\t 0x0106: \"PhotometricInterpretation\",\n\t 0x0112: \"Orientation\",\n\t 0x0115: \"SamplesPerPixel\",\n\t 0x011C: \"PlanarConfiguration\",\n\t 0x0212: \"YCbCrSubSampling\",\n\t 0x0213: \"YCbCrPositioning\",\n\t 0x011A: \"XResolution\",\n\t 0x011B: \"YResolution\",\n\t 0x0128: \"ResolutionUnit\",\n\t 0x0111: \"StripOffsets\",\n\t 0x0116: \"RowsPerStrip\",\n\t 0x0117: \"StripByteCounts\",\n\t 0x0201: \"JPEGInterchangeFormat\",\n\t 0x0202: \"JPEGInterchangeFormatLength\",\n\t 0x012D: \"TransferFunction\",\n\t 0x013E: \"WhitePoint\",\n\t 0x013F: \"PrimaryChromaticities\",\n\t 0x0211: \"YCbCrCoefficients\",\n\t 0x0214: \"ReferenceBlackWhite\",\n\t 0x0132: \"DateTime\",\n\t 0x010E: \"ImageDescription\",\n\t 0x010F: \"Make\",\n\t 0x0110: \"Model\",\n\t 0x0131: \"Software\",\n\t 0x013B: \"Artist\",\n\t 0x8298: \"Copyright\"\n\t };\n\t\n\t var GPSTags = EXIF.GPSTags = {\n\t 0x0000: \"GPSVersionID\",\n\t 0x0001: \"GPSLatitudeRef\",\n\t 0x0002: \"GPSLatitude\",\n\t 0x0003: \"GPSLongitudeRef\",\n\t 0x0004: \"GPSLongitude\",\n\t 0x0005: \"GPSAltitudeRef\",\n\t 0x0006: \"GPSAltitude\",\n\t 0x0007: \"GPSTimeStamp\",\n\t 0x0008: \"GPSSatellites\",\n\t 0x0009: \"GPSStatus\",\n\t 0x000A: \"GPSMeasureMode\",\n\t 0x000B: \"GPSDOP\",\n\t 0x000C: \"GPSSpeedRef\",\n\t 0x000D: \"GPSSpeed\",\n\t 0x000E: \"GPSTrackRef\",\n\t 0x000F: \"GPSTrack\",\n\t 0x0010: \"GPSImgDirectionRef\",\n\t 0x0011: \"GPSImgDirection\",\n\t 0x0012: \"GPSMapDatum\",\n\t 0x0013: \"GPSDestLatitudeRef\",\n\t 0x0014: \"GPSDestLatitude\",\n\t 0x0015: \"GPSDestLongitudeRef\",\n\t 0x0016: \"GPSDestLongitude\",\n\t 0x0017: \"GPSDestBearingRef\",\n\t 0x0018: \"GPSDestBearing\",\n\t 0x0019: \"GPSDestDistanceRef\",\n\t 0x001A: \"GPSDestDistance\",\n\t 0x001B: \"GPSProcessingMethod\",\n\t 0x001C: \"GPSAreaInformation\",\n\t 0x001D: \"GPSDateStamp\",\n\t 0x001E: \"GPSDifferential\"\n\t };\n\t\n\t var StringValues = EXIF.StringValues = {\n\t ExposureProgram : {\n\t 0: \"Not defined\",\n\t 1: \"Manual\",\n\t 2: \"Normal program\",\n\t 3: \"Aperture priority\",\n\t 4: \"Shutter priority\",\n\t 5: \"Creative program\",\n\t 6: \"Action program\",\n\t 7: \"Portrait mode\",\n\t 8: \"Landscape mode\"\n\t },\n\t MeteringMode : {\n\t 0 : \"Unknown\",\n\t 1 : \"Average\",\n\t 2 : \"CenterWeightedAverage\",\n\t 3 : \"Spot\",\n\t 4 : \"MultiSpot\",\n\t 5 : \"Pattern\",\n\t 6 : \"Partial\",\n\t 255: \"Other\"\n\t },\n\t LightSource : {\n\t 0 : \"Unknown\",\n\t 1 : \"Daylight\",\n\t 2 : \"Fluorescent\",\n\t 3 : \"Tungsten (incandescent light)\",\n\t 4 : \"Flash\",\n\t 9 : \"Fine weather\",\n\t 10 : \"Cloudy weather\",\n\t 11 : \"Shade\",\n\t 12 : \"Daylight fluorescent (D 5700 - 7100K)\",\n\t 13 : \"Day white fluorescent (N 4600 - 5400K)\",\n\t 14 : \"Cool white fluorescent (W 3900 - 4500K)\",\n\t 15 : \"White fluorescent (WW 3200 - 3700K)\",\n\t 17 : \"Standard light A\",\n\t 18 : \"Standard light B\",\n\t 19 : \"Standard light C\",\n\t 20 : \"D55\",\n\t 21 : \"D65\",\n\t 22 : \"D75\",\n\t 23 : \"D50\",\n\t 24 : \"ISO studio tungsten\",\n\t 255: \"Other\"\n\t },\n\t Flash : {\n\t 0x0000: \"Flash did not fire\",\n\t 0x0001: \"Flash fired\",\n\t 0x0005: \"Strobe return light not detected\",\n\t 0x0007: \"Strobe return light detected\",\n\t 0x0009: \"Flash fired, compulsory flash mode\",\n\t 0x000D: \"Flash fired, compulsory flash mode, return light not detected\",\n\t 0x000F: \"Flash fired, compulsory flash mode, return light detected\",\n\t 0x0010: \"Flash did not fire, compulsory flash mode\",\n\t 0x0018: \"Flash did not fire, auto mode\",\n\t 0x0019: \"Flash fired, auto mode\",\n\t 0x001D: \"Flash fired, auto mode, return light not detected\",\n\t 0x001F: \"Flash fired, auto mode, return light detected\",\n\t 0x0020: \"No flash function\",\n\t 0x0041: \"Flash fired, red-eye reduction mode\",\n\t 0x0045: \"Flash fired, red-eye reduction mode, return light not detected\",\n\t 0x0047: \"Flash fired, red-eye reduction mode, return light detected\",\n\t 0x0049: \"Flash fired, compulsory flash mode, red-eye reduction mode\",\n\t 0x004D: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",\n\t 0x004F: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",\n\t 0x0059: \"Flash fired, auto mode, red-eye reduction mode\",\n\t 0x005D: \"Flash fired, auto mode, return light not detected, red-eye reduction mode\",\n\t 0x005F: \"Flash fired, auto mode, return light detected, red-eye reduction mode\"\n\t },\n\t SensingMethod : {\n\t 1: \"Not defined\",\n\t 2: \"One-chip color area sensor\",\n\t 3: \"Two-chip color area sensor\",\n\t 4: \"Three-chip color area sensor\",\n\t 5: \"Color sequential area sensor\",\n\t 7: \"Trilinear sensor\",\n\t 8: \"Color sequential linear sensor\"\n\t },\n\t SceneCaptureType : {\n\t 0: \"Standard\",\n\t 1: \"Landscape\",\n\t 2: \"Portrait\",\n\t 3: \"Night scene\"\n\t },\n\t SceneType : {\n\t 1: \"Directly photographed\"\n\t },\n\t CustomRendered : {\n\t 0: \"Normal process\",\n\t 1: \"Custom process\"\n\t },\n\t WhiteBalance : {\n\t 0: \"Auto white balance\",\n\t 1: \"Manual white balance\"\n\t },\n\t GainControl : {\n\t 0: \"None\",\n\t 1: \"Low gain up\",\n\t 2: \"High gain up\",\n\t 3: \"Low gain down\",\n\t 4: \"High gain down\"\n\t },\n\t Contrast : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t Saturation : {\n\t 0: \"Normal\",\n\t 1: \"Low saturation\",\n\t 2: \"High saturation\"\n\t },\n\t Sharpness : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t SubjectDistanceRange: {\n\t 0: \"Unknown\",\n\t 1: \"Macro\",\n\t 2: \"Close view\",\n\t 3: \"Distant view\"\n\t },\n\t FileSource : {\n\t 3: \"DSC\"\n\t },\n\t\n\t Components: {\n\t 0: \"\",\n\t 1: \"Y\",\n\t 2: \"Cb\",\n\t 3: \"Cr\",\n\t 4: \"R\",\n\t 5: \"G\",\n\t 6: \"B\"\n\t }\n\t };\n\t\n\t function addEvent (element, event, handler) {\n\t if (element.addEventListener) {\n\t element.addEventListener(event, handler, false);\n\t } else if (element.attachEvent) {\n\t element.attachEvent(\"on\" + event, handler);\n\t }\n\t }\n\t\n\t function imageHasData (img) {\n\t return !!(img.exifdata);\n\t }\n\t\n\t\n\t function base64ToArrayBuffer (base64, contentType) {\n\t contentType = contentType || base64.match(/^data\\:([^\\;]+)\\;base64,/mi)[1] || ''; // e.g. 'data:image/jpeg;base64,...' => 'image/jpeg'\n\t base64 = base64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n\t var binary = atob(base64);\n\t var len = binary.length;\n\t var buffer = new ArrayBuffer(len);\n\t var view = new Uint8Array(buffer);\n\t for (var i = 0; i < len; i++) {\n\t view[i] = binary.charCodeAt(i);\n\t }\n\t return buffer;\n\t }\n\t\n\t function objectURLToBlob (url, callback) {\n\t var http = new XMLHttpRequest();\n\t http.open(\"GET\", url, true);\n\t http.responseType = \"blob\";\n\t http.onload = function (e) {\n\t if (this.status == 200 || this.status === 0) {\n\t callback(this.response);\n\t }\n\t };\n\t http.send();\n\t }\n\t\n\t function getImageData (img, callback) {\n\t function handleBinaryFile (binFile) {\n\t var data = findEXIFinJPEG(binFile);\n\t var iptcdata = findIPTCinJPEG(binFile);\n\t img.exifdata = data || {};\n\t img.iptcdata = iptcdata || {};\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t\n\t if (img.src) {\n\t if (/^data\\:/i.test(img.src)) { // Data URI\n\t var arrayBuffer = base64ToArrayBuffer(img.src);\n\t handleBinaryFile(arrayBuffer);\n\t\n\t } else if (/^blob\\:/i.test(img.src)) { // Object URL\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t handleBinaryFile(e.target.result);\n\t };\n\t objectURLToBlob(img.src, function (blob) {\n\t fileReader.readAsArrayBuffer(blob);\n\t });\n\t } else {\n\t var http = new XMLHttpRequest();\n\t http.onload = function () {\n\t if (this.status == 200 || this.status === 0) {\n\t handleBinaryFile(http.response);\n\t } else {\n\t callback(new Error(\"Could not load image\"));\n\t }\n\t http = null;\n\t };\n\t http.open(\"GET\", img.src, true);\n\t http.responseType = \"arraybuffer\";\n\t http.send(null);\n\t }\n\t } else if (window.FileReader && (img instanceof window.Blob || img instanceof window.File)) {\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t if (debug) console.log(\"Got file of length \" + e.target.result.byteLength);\n\t handleBinaryFile(e.target.result);\n\t };\n\t\n\t fileReader.readAsArrayBuffer(img);\n\t }\n\t }\n\t\n\t function findEXIFinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength,\n\t marker;\n\t\n\t while (offset < length) {\n\t if (dataView.getUint8(offset) != 0xFF) {\n\t if (debug) console.log(\"Not a valid marker at offset \" + offset + \", found: \" + dataView.getUint8(offset));\n\t return false; // not a valid marker, something is wrong\n\t }\n\t\n\t marker = dataView.getUint8(offset + 1);\n\t if (debug) console.log(marker);\n\t\n\t // we could implement handling for other markers here,\n\t // but we're only looking for 0xFFE1 for EXIF data\n\t\n\t if (marker == 225) {\n\t if (debug) console.log(\"Found 0xFFE1 marker\");\n\t\n\t return readEXIFData(dataView, offset + 4, dataView.getUint16(offset + 2) - 2);\n\t\n\t // offset += 2 + file.getShortAt(offset+2, true);\n\t\n\t } else {\n\t offset += 2 + dataView.getUint16(offset + 2);\n\t }\n\t\n\t }\n\t\n\t }\n\t\n\t function findIPTCinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength;\n\t\n\t\n\t var isFieldSegmentStart = function (dataView, offset) {\n\t return (\n\t dataView.getUint8(offset) === 0x38 &&\n\t dataView.getUint8(offset + 1) === 0x42 &&\n\t dataView.getUint8(offset + 2) === 0x49 &&\n\t dataView.getUint8(offset + 3) === 0x4D &&\n\t dataView.getUint8(offset + 4) === 0x04 &&\n\t dataView.getUint8(offset + 5) === 0x04\n\t );\n\t };\n\t\n\t while (offset < length) {\n\t\n\t if (isFieldSegmentStart(dataView, offset)) {\n\t\n\t // Get the length of the name header (which is padded to an even number of bytes)\n\t var nameHeaderLength = dataView.getUint8(offset + 7);\n\t if (nameHeaderLength % 2 !== 0) nameHeaderLength += 1;\n\t // Check for pre photoshop 6 format\n\t if (nameHeaderLength === 0) {\n\t // Always 4\n\t nameHeaderLength = 4;\n\t }\n\t\n\t var startOffset = offset + 8 + nameHeaderLength;\n\t var sectionLength = dataView.getUint16(offset + 6 + nameHeaderLength);\n\t\n\t return readIPTCData(file, startOffset, sectionLength);\n\t\n\t break;\n\t\n\t }\n\t\n\t\n\t // Not the marker, continue searching\n\t offset++;\n\t\n\t }\n\t\n\t }\n\t\n\t var IptcFieldMap = {\n\t 0x78: 'caption',\n\t 0x6E: 'credit',\n\t 0x19: 'keywords',\n\t 0x37: 'dateCreated',\n\t 0x50: 'byline',\n\t 0x55: 'bylineTitle',\n\t 0x7A: 'captionWriter',\n\t 0x69: 'headline',\n\t 0x74: 'copyright',\n\t 0x0F: 'category'\n\t };\n\t\n\t function readIPTCData (file, startOffset, sectionLength) {\n\t var dataView = new DataView(file);\n\t var data = {};\n\t var fieldValue, fieldName, dataSize, segmentType, segmentSize;\n\t var segmentStartPos = startOffset;\n\t while (segmentStartPos < startOffset + sectionLength) {\n\t if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) {\n\t segmentType = dataView.getUint8(segmentStartPos + 2);\n\t if (segmentType in IptcFieldMap) {\n\t dataSize = dataView.getInt16(segmentStartPos + 3);\n\t segmentSize = dataSize + 5;\n\t fieldName = IptcFieldMap[segmentType];\n\t fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize);\n\t // Check if we already stored a value with this name\n\t if (data.hasOwnProperty(fieldName)) {\n\t // Value already stored with this name, create multivalue field\n\t if (data[fieldName] instanceof Array) {\n\t data[fieldName].push(fieldValue);\n\t }\n\t else {\n\t data[fieldName] = [data[fieldName], fieldValue];\n\t }\n\t }\n\t else {\n\t data[fieldName] = fieldValue;\n\t }\n\t }\n\t\n\t }\n\t segmentStartPos++;\n\t }\n\t return data;\n\t }\n\t\n\t\n\t function readTags (file, tiffStart, dirStart, strings, bigEnd) {\n\t var entries = file.getUint16(dirStart, !bigEnd),\n\t tags = {},\n\t entryOffset, tag,\n\t i;\n\t\n\t for (i = 0; i < entries; i++) {\n\t entryOffset = dirStart + i * 12 + 2;\n\t tag = strings[file.getUint16(entryOffset, !bigEnd)];\n\t if (!tag && debug) console.log(\"Unknown tag: \" + file.getUint16(entryOffset, !bigEnd));\n\t tags[tag] = readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd);\n\t }\n\t return tags;\n\t }\n\t\n\t\n\t function readTagValue (file, entryOffset, tiffStart, dirStart, bigEnd) {\n\t var type = file.getUint16(entryOffset + 2, !bigEnd),\n\t numValues = file.getUint32(entryOffset + 4, !bigEnd),\n\t valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart,\n\t offset,\n\t vals, val, n,\n\t numerator, denominator;\n\t\n\t switch (type) {\n\t case 1: // byte, 8-bit unsigned int\n\t case 7: // undefined, 8-bit byte, value depending on field\n\t if (numValues == 1) {\n\t return file.getUint8(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint8(offset + n);\n\t }\n\t return vals;\n\t }\n\t\n\t case 2: // ascii, 8-bit byte\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t return getStringFromDB(file, offset, numValues - 1);\n\t\n\t case 3: // short, 16 bit int\n\t if (numValues == 1) {\n\t return file.getUint16(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 2 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint16(offset + 2 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 4: // long, 32 bit int\n\t if (numValues == 1) {\n\t return file.getUint32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 5: // rational = two long values, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t numerator = file.getUint32(valueOffset, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4, !bigEnd);\n\t val = new Number(numerator / denominator);\n\t val.numerator = numerator;\n\t val.denominator = denominator;\n\t return val;\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t numerator = file.getUint32(valueOffset + 8 * n, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4 + 8 * n, !bigEnd);\n\t vals[n] = new Number(numerator / denominator);\n\t vals[n].numerator = numerator;\n\t vals[n].denominator = denominator;\n\t }\n\t return vals;\n\t }\n\t\n\t case 9: // slong, 32 bit signed int\n\t if (numValues == 1) {\n\t return file.getInt32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 10: // signed rational, two slongs, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t return file.getInt32(valueOffset, !bigEnd) / file.getInt32(valueOffset + 4, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 8 * n, !bigEnd) / file.getInt32(valueOffset + 4 + 8 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t }\n\t }\n\t\n\t function getStringFromDB (buffer, start, length) {\n\t var outstr = \"\", n;\n\t for (n = start; n < start + length; n++) {\n\t outstr += String.fromCharCode(buffer.getUint8(n));\n\t }\n\t return outstr;\n\t }\n\t\n\t function readEXIFData (file, start) {\n\t if (getStringFromDB(file, start, 4) != \"Exif\") {\n\t if (debug) console.log(\"Not valid EXIF data! \" + getStringFromDB(file, start, 4));\n\t return false;\n\t }\n\t\n\t var bigEnd,\n\t tags, tag,\n\t exifData, gpsData,\n\t tiffOffset = start + 6;\n\t\n\t // test for TIFF validity and endianness\n\t if (file.getUint16(tiffOffset) == 0x4949) {\n\t bigEnd = false;\n\t } else if (file.getUint16(tiffOffset) == 0x4D4D) {\n\t bigEnd = true;\n\t } else {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\");\n\t return false;\n\t }\n\t\n\t if (file.getUint16(tiffOffset + 2, !bigEnd) != 0x002A) {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x002A)\");\n\t return false;\n\t }\n\t\n\t var firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);\n\t\n\t if (firstIFDOffset < 0x00000008) {\n\t if (debug) console.log(\"Not valid TIFF data! (First offset less than 8)\", file.getUint32(tiffOffset + 4, !bigEnd));\n\t return false;\n\t }\n\t\n\t tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);\n\t\n\t if (tags.ExifIFDPointer) {\n\t exifData = readTags(file, tiffOffset, tiffOffset + tags.ExifIFDPointer, ExifTags, bigEnd);\n\t for (tag in exifData) {\n\t switch (tag) {\n\t case \"LightSource\" :\n\t case \"Flash\" :\n\t case \"MeteringMode\" :\n\t case \"ExposureProgram\" :\n\t case \"SensingMethod\" :\n\t case \"SceneCaptureType\" :\n\t case \"SceneType\" :\n\t case \"CustomRendered\" :\n\t case \"WhiteBalance\" :\n\t case \"GainControl\" :\n\t case \"Contrast\" :\n\t case \"Saturation\" :\n\t case \"Sharpness\" :\n\t case \"SubjectDistanceRange\" :\n\t case \"FileSource\" :\n\t exifData[tag] = StringValues[tag][exifData[tag]];\n\t break;\n\t\n\t case \"ExifVersion\" :\n\t case \"FlashpixVersion\" :\n\t exifData[tag] = String.fromCharCode(exifData[tag][0], exifData[tag][1], exifData[tag][2], exifData[tag][3]);\n\t break;\n\t\n\t case \"ComponentsConfiguration\" :\n\t exifData[tag] =\n\t StringValues.Components[exifData[tag][0]] +\n\t StringValues.Components[exifData[tag][1]] +\n\t StringValues.Components[exifData[tag][2]] +\n\t StringValues.Components[exifData[tag][3]];\n\t break;\n\t }\n\t tags[tag] = exifData[tag];\n\t }\n\t }\n\t\n\t if (tags.GPSInfoIFDPointer) {\n\t gpsData = readTags(file, tiffOffset, tiffOffset + tags.GPSInfoIFDPointer, GPSTags, bigEnd);\n\t for (tag in gpsData) {\n\t switch (tag) {\n\t case \"GPSVersionID\" :\n\t gpsData[tag] = gpsData[tag][0] +\n\t \".\" + gpsData[tag][1] +\n\t \".\" + gpsData[tag][2] +\n\t \".\" + gpsData[tag][3];\n\t break;\n\t }\n\t tags[tag] = gpsData[tag];\n\t }\n\t }\n\t\n\t return tags;\n\t }\n\t\n\t EXIF.getData = function (img, callback) {\n\t if ((img instanceof Image || img instanceof HTMLImageElement) && !img.complete) return false;\n\t\n\t if (!imageHasData(img)) {\n\t getImageData(img, callback);\n\t } else {\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t return true;\n\t }\n\t\n\t EXIF.getTag = function (img, tag) {\n\t if (!imageHasData(img)) return;\n\t return img.exifdata[tag];\n\t }\n\t\n\t EXIF.getAllTags = function (img) {\n\t if (!imageHasData(img)) return {};\n\t var a,\n\t data = img.exifdata,\n\t tags = {};\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t tags[a] = data[a];\n\t }\n\t }\n\t return tags;\n\t }\n\t\n\t EXIF.pretty = function (img) {\n\t if (!imageHasData(img)) return \"\";\n\t var a,\n\t data = img.exifdata,\n\t strPretty = \"\";\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t if (typeof data[a] == \"object\") {\n\t if (data[a] instanceof Number) {\n\t strPretty += a + \" : \" + data[a] + \" [\" + data[a].numerator + \"/\" + data[a].denominator + \"]\\r\\n\";\n\t } else {\n\t strPretty += a + \" : [\" + data[a].length + \" values]\\r\\n\";\n\t }\n\t } else {\n\t strPretty += a + \" : \" + data[a] + \"\\r\\n\";\n\t }\n\t }\n\t }\n\t return strPretty;\n\t }\n\t\n\t EXIF.readFromBinaryFile = function (file) {\n\t return findEXIFinJPEG(file);\n\t }\n\t\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return EXIF;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t }\n\t}.call(this));\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** lrz.bundle.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t0:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".chunk.js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 827e1829811ae3346428\n **/","// 保证按需加载的文件路径正确\n__webpack_public_path__ = getJsDir('lrz') + '/';\nwindow.URL = window.URL || window.webkitURL;\n\nvar Promise = require('Promise'),\n BlobFormDataShim = require('Blob.FormData.shim'),\n exif = require('exif');\n\n\nvar UA = (function (userAgent) {\n var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\n // 判断设备是否是IOS7以下\n // 判断设备是否是android4.5以下\n // 判断是否iOS\n // 判断是否android\n // 判断是否QQ浏览器\n return {\n oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n android : /Android/g.test(userAgent),\n mQQBrowser: /MQQBrowser/g.test(userAgent)\n }\n})(navigator.userAgent);\n\n\nfunction Lrz (file, opts) {\n var that = this;\n\n if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\n opts = opts || {};\n\n that.defaults = {\n width : null,\n height : null,\n fieldName: 'file',\n quality : 0.7\n };\n\n that.file = file;\n\n for (var p in opts) {\n if (!opts.hasOwnProperty(p)) continue;\n that.defaults[p] = opts[p];\n }\n\n return this.init();\n}\n\nLrz.prototype.init = function () {\n var that = this,\n file = that.file,\n fileIsString = typeof file === 'string',\n fileIsBase64 = /^data:/.test(file),\n img = new Image(),\n canvas = document.createElement('canvas'),\n blob = fileIsString ? file : URL.createObjectURL(file);\n\n that.img = img;\n that.blob = blob;\n that.canvas = canvas;\n\n if (fileIsString) {\n that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n } else {\n that.fileName = file.name;\n }\n\n if (!document.createElement('canvas').getContext) {\n throw new Error('浏览器不支持canvas');\n }\n\n return new Promise(function (resolve, reject) {\n img.onerror = function () {\n throw new Error('加载图片文件失败');\n };\n\n img.onload = function () {\n that._getBase64()\n .then(function (base64) {\n if (base64.length < 10) reject('生成base64失败');\n\n return base64;\n })\n .then(function (base64) {\n var formData = null;\n\n // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n if (typeof that.file === 'object' && base64.length > that.file.size) {\n formData = new FormData();\n file = that.file;\n } else {\n formData = new BlobFormDataShim.FormData();\n file = dataURItoBlob(base64);\n }\n\n formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\n resolve({\n formData : formData,\n fileLen : +file.size,\n base64 : base64,\n base64Len: base64.length,\n origin : that.file,\n file : file\n });\n\n // 释放内存\n for (var p in that) {\n if (!that.hasOwnProperty(p)) continue;\n\n that[p] = null;\n }\n URL.revokeObjectURL(that.blob);\n });\n };\n\n // 如果传入的是base64在移动端会报错\n !fileIsBase64 && (img.crossOrigin = \"*\");\n\n img.src = blob;\n });\n};\n\nLrz.prototype._getBase64 = function () {\n var that = this,\n img = that.img,\n file = that.file,\n canvas = that.canvas;\n\n return new Promise(function (resolve) {\n try {\n // 传入blob在android4.3以下有bug\n exif.getData(typeof file === 'object' ? file : img, function () {\n that.orientation = exif.getTag(this, \"Orientation\");\n\n that.resize = that._getResize();\n that.ctx = canvas.getContext('2d');\n\n canvas.width = that.resize.width;\n canvas.height = that.resize.height;\n\n // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n that.ctx.fillStyle = '#fff';\n that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // 根据设备对应处理方式\n if (UA.oldIOS) {\n that._createBase64ForOldIOS().then(resolve);\n }\n else {\n that._createBase64().then(resolve);\n }\n });\n } catch (err) {\n // 这样能解决低内存设备闪退的问题吗?\n throw new Error(err);\n }\n });\n};\n\n\nLrz.prototype._createBase64ForOldIOS = function () {\n var that = this,\n img = that.img,\n canvas = that.canvas,\n defaults = that.defaults,\n orientation = that.orientation;\n\n return new Promise(function (resolve) {\n require(['megapix-image'], function (MegaPixImage) {\n var mpImg = new MegaPixImage(img);\n\n if (\"5678\".indexOf(orientation) > -1) {\n mpImg.render(canvas, {\n width : canvas.height,\n height : canvas.width,\n orientation: orientation\n });\n } else {\n mpImg.render(canvas, {\n width : canvas.width,\n height : canvas.height,\n orientation: orientation\n });\n }\n\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n });\n });\n};\n\nLrz.prototype._createBase64 = function () {\n var that = this,\n resize = that.resize,\n img = that.img,\n canvas = that.canvas,\n ctx = that.ctx,\n defaults = that.defaults,\n orientation = that.orientation;\n\n // 调整为正确方向\n switch (orientation) {\n case 3:\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 6:\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 8:\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n case 2:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n break;\n case 4:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 5:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 7:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n default:\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n }\n\n return new Promise(function (resolve) {\n if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n require(['jpeg_encoder_basic'], function (JPEGEncoder) {\n var encoder = new JPEGEncoder(),\n img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\n resolve(encoder.encode(img, defaults.quality * 100));\n })\n }\n else {\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n }\n });\n};\n\nLrz.prototype._getResize = function () {\n var that = this,\n img = that.img,\n defaults = that.defaults,\n width = defaults.width,\n height = defaults.height,\n orientation = that.orientation;\n\n var ret = {\n width : img.width,\n height: img.height\n };\n\n if (\"5678\".indexOf(orientation) > -1) {\n ret.width = img.height;\n ret.height = img.width;\n }\n\n // 如果原图小于设定,采用原图\n if (ret.width < width || ret.height < height) {\n return ret;\n }\n\n var scale = ret.width / ret.height;\n\n if (width && height) {\n if (scale >= width / height) {\n if (ret.width > width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n } else {\n if (ret.height > height) {\n ret.height = height;\n ret.width = Math.ceil(height * scale);\n }\n }\n }\n else if (width) {\n if (width < ret.width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n }\n else if (height) {\n if (height < ret.height) {\n ret.width = Math.ceil(height * scale);\n ret.height = height;\n }\n }\n\n // 超过这个值base64无法生成,在IOS上\n while (ret.width >= 3264 || ret.height >= 2448) {\n ret.width *= 0.8;\n ret.height *= 0.8;\n }\n\n return ret;\n};\n\n/**\n * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n * @returns {string}\n */\nfunction getJsDir (src) {\n var script = null;\n\n if (src) {\n script = [].filter.call(document.scripts, function (v) {\n return v.src.indexOf(src) !== -1;\n })[0];\n } else {\n script = document.scripts[document.scripts.length - 1];\n }\n\n if (!script) return null;\n\n return script.src.substr(0, script.src.lastIndexOf('/'));\n}\n\n\n/**\n * 转换成formdata\n * @param dataURI\n * @returns {*}\n *\n * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n */\nfunction dataURItoBlob (dataURI) {\n // convert base64/URLEncoded data component to raw binary data held in a string\n var byteString;\n if (dataURI.split(',')[0].indexOf('base64') >= 0)\n byteString = atob(dataURI.split(',')[1]);\n else\n byteString = unescape(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to a typed array\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n}\n\nwindow.lrz = function (file, opts) {\n return new Lrz(file, opts);\n};\n\n// 版本号来自package.json,构建时自动填充\nwindow.lrz.version = '4.8.35';\n\nmodule.exports = window.lrz;\n\n/**\n *\n *    ┏┓   ┏┓\n *   ┏┛┻━━━┛┻┓\n *   ┃       ┃\n *   ┃   ━   ┃\n *   ┃ ┳┛ ┗┳ ┃\n *   ┃       ┃\n *   ┃   ┻   ┃\n *   ┃       ┃\n *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n *     ┃   ┃ 神兽保佑,代码无bug\n *     ┃   ┃\n *     ┃   ┗━━━┓\n *     ┃      ┣┓\n *     ┃     ┏┛\n *     ┗┓┓┏━┳┓┏┛\n *      ┃┫┫ ┃┫┫\n *      ┗┻┛ ┗┻┛\n *\n */\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/lrz.js\n ** module id = 0\n ** module chunks = 0\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Promise.js\n **/","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/timers-browserify/main.js\n ** module id = 2\n ** module chunks = 0 3\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 3\n ** module chunks = 0 3\n **/","//@source https://xts.so/demo/compress/index.html\n\n// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\nvar BlobConstructor = ((function () {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n})()) ? window.Blob : function (parts, opts) {\n var bb = new (\n window.BlobBuilder\n || window.WebKitBlobBuilder\n || window.MSBlobBuilder\n || window.MozBlobBuilder\n );\n parts.forEach(function (p) {\n bb.append(p);\n });\n\n return bb.getBlob(opts ? opts.type : undefined);\n};\n\n// Android上的AppleWebKit 534以前的内核存在一个Bug,\n// 导致FormData加入一个Blob对象后,上传的文件是0字节\nfunction hasFormDataBug () {\n var bCheck = ~navigator.userAgent.indexOf('Android')\n && ~navigator.vendor.indexOf('Google')\n && !~navigator.userAgent.indexOf('Chrome');\n\n // QQ X5浏览器也有这个BUG\n return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n}\nfunction FormDataShim () {\n var\n // Store a reference to this\n o = this,\n\n // Data to be sent\n parts = [],\n\n // Boundary parameter for separating the multipart values\n boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n\n // Store the current XHR send method so we can safely override it\n oldSend = XMLHttpRequest.prototype.send;\n this.getParts = function () {\n return parts.toString();\n };\n this.append = function (name, value, filename) {\n parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n\n if (value instanceof Blob) {\n parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n parts.push(value);\n }\n else {\n parts.push('\\r\\n\\r\\n' + value);\n }\n parts.push('\\r\\n');\n };\n\n XMLHttpRequest.prototype.send = function (val) {\n var fr,\n data,\n oXHR = this;\n\n if (val === o) {\n // Append the final boundary string\n parts.push('--' + boundary + '--\\r\\n');\n // Create the blob\n data = new BlobConstructor(parts);\n\n // Set up and read the blob into an array to be sent\n fr = new FileReader();\n fr.onload = function () {\n oldSend.call(oXHR, fr.result);\n };\n fr.onerror = function (err) {\n throw err;\n };\n fr.readAsArrayBuffer(data);\n\n // Set the multipart content type and boudary\n this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n XMLHttpRequest.prototype.send = oldSend;\n }\n else {\n oldSend.call(this, val);\n }\n };\n}\n\n\nmodule.exports = {\n Blob : BlobConstructor,\n FormData: hasFormDataBug() ? FormDataShim : FormData\n};\n\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Blob.FormData.shim.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/exif.js\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///lrz.bundle.js","webpack:///webpack/bootstrap b1ee1fba6b8bad6e08f4","webpack:///./src/lrz.js","webpack:///src/lib/Promise.js","webpack:///./~/timers-browserify/main.js","webpack:///./~/process/browser.js","webpack:///src/lib/Blob.FormData.shim.js","webpack:///src/lib/exif.js"],"names":["root","factory","exports","module","define","amd","a","i","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","callbacks","length","installedChunks","push","apply","shift",0,"e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","appendChild","m","c","Lrz","file","opts","that","Error","defaults","width","height","fieldName","quality","hasOwnProperty","init","getJsDir","filter","scripts","v","indexOf","substr","lastIndexOf","dataURItoBlob","dataURI","byteString","split","atob","unescape","mimeString","ia","Uint8Array","charCodeAt","BlobFormDataShim","Blob","buffer","URL","webkitURL","Promise","exif","UA","userAgent","ISOldIOS","exec","isOldAndroid","oldIOS","pop","oldAndroid","iOS","test","android","mQQBrowser","navigator","prototype","fileIsString","fileIsBase64","img","Image","canvas","blob","createObjectURL","fileName","name","getContext","resolve","reject","onerror","onload","_getBase64","then","base64","formData","size","FormData","append","replace","fileLen","base64Len","origin","revokeObjectURL","crossOrigin","getData","orientation","getTag","resize","_getResize","ctx","fillStyle","fillRect","_createBase64ForOldIOS","_createBase64","err","__WEBPACK_AMD_REQUIRE_ARRAY__","MegaPixImage","mpImg","render","toDataURL","rotate","Math","PI","drawImage","translate","scale","JPEGEncoder","encoder","getImageData","encode","ret","ceil","lrz","version","setImmediate","bind","fn","thisArg","arguments","TypeError","_state","_value","_deferreds","doResolve","handle","deferred","me","asap","cb","onFulfilled","onRejected","newValue","finale","len","Handler","done","value","reason","ex","setTimeout","isArray","Array","Object","toString","all","args","slice","res","val","remaining","constructor","race","values","_setImmediateFn","always","clearImmediate","Timeout","clearFn","_id","_clearFn","nextTick","Function","immediateIds","nextImmediateId","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","run","Item","fun","array","noop","process","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask","hasFormDataBug","bCheck","vendor","match","BlobConstructor","parts","bb","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","forEach","getBlob","FormDataShim","formDataShimNums","o","boundary","join","Date","random","oldSend","XMLHttpRequest","send","getParts","filename","fr","data","oXHR","FileReader","result","readAsArrayBuffer","setRequestHeader","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","imageHasData","base64ToArrayBuffer","contentType","binary","ArrayBuffer","view","objectURLToBlob","url","http","open","responseType","status","response","handleBinaryFile","binFile","findEXIFinJPEG","iptcdata","findIPTCinJPEG","exifdata","arrayBuffer","fileReader","target","File","debug","console","log","byteLength","dataView","DataView","getUint8","marker","offset","readEXIFData","getUint16","isFieldSegmentStart","nameHeaderLength","startOffset","sectionLength","readIPTCData","fieldValue","dataSize","segmentType","segmentSize","segmentStartPos","IptcFieldMap","getInt16","getStringFromDB","readTags","tiffStart","dirStart","strings","bigEnd","entryOffset","tag","entries","tags","readTagValue","vals","n","numerator","denominator","numValues","getUint32","valueOffset","Number","getInt32","start","outstr","String","fromCharCode","exifData","gpsData","tiffOffset","firstIFDOffset","TiffTags","ExifIFDPointer","ExifTags","StringValues","Components","GPSInfoIFDPointer","GPSTags","EXIF","obj","EXIFwrapped","Tags",36864,40960,40961,40962,40963,37121,37122,37500,37510,40964,36867,36868,37520,37521,37522,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37396,37386,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,40965,42016,256,257,34665,34853,258,259,262,274,277,284,530,531,282,283,296,273,278,279,513,514,301,318,319,529,532,306,270,271,272,305,315,33432,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,"ExposureProgram","MeteringMode",255,"LightSource","Flash",31,32,65,69,71,73,77,79,89,93,95,"SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource",120,110,55,80,85,122,105,116,"HTMLImageElement","complete","getAllTags","pretty","strPretty","readFromBinaryFile"],"mappings":"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","file":"lrz.bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t0:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".chunk.js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// 保证按需加载的文件路径正确\n\t__webpack_require__.p = getJsDir('lrz') + '/';\n\twindow.URL = window.URL || window.webkitURL;\n\t\n\tvar Promise = __webpack_require__(1),\n\t BlobFormDataShim = __webpack_require__(4),\n\t exif = __webpack_require__(5);\n\t\n\t\n\tvar UA = (function (userAgent) {\n\t var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n\t isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\t\n\t // 判断设备是否是IOS7以下\n\t // 判断设备是否是android4.5以下\n\t // 判断是否iOS\n\t // 判断是否android\n\t // 判断是否QQ浏览器\n\t return {\n\t oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n\t oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n\t iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n\t android : /Android/g.test(userAgent),\n\t mQQBrowser: /MQQBrowser/g.test(userAgent)\n\t }\n\t})(navigator.userAgent);\n\t\n\t\n\tfunction Lrz (file, opts) {\n\t var that = this;\n\t\n\t if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\t\n\t opts = opts || {};\n\t\n\t that.defaults = {\n\t width : null,\n\t height : null,\n\t fieldName: 'file',\n\t quality : 0.7\n\t };\n\t\n\t that.file = file;\n\t\n\t for (var p in opts) {\n\t if (!opts.hasOwnProperty(p)) continue;\n\t that.defaults[p] = opts[p];\n\t }\n\t\n\t return this.init();\n\t}\n\t\n\tLrz.prototype.init = function () {\n\t var that = this,\n\t file = that.file,\n\t fileIsString = typeof file === 'string',\n\t fileIsBase64 = /^data:/.test(file),\n\t img = new Image(),\n\t canvas = document.createElement('canvas'),\n\t blob = fileIsString ? file : URL.createObjectURL(file);\n\t\n\t that.img = img;\n\t that.blob = blob;\n\t that.canvas = canvas;\n\t\n\t if (fileIsString) {\n\t that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n\t } else {\n\t that.fileName = file.name;\n\t }\n\t\n\t if (!document.createElement('canvas').getContext) {\n\t throw new Error('浏览器不支持canvas');\n\t }\n\t\n\t return new Promise(function (resolve, reject) {\n\t img.onerror = function () {\n\t throw new Error('加载图片文件失败');\n\t };\n\t\n\t img.onload = function () {\n\t that._getBase64()\n\t .then(function (base64) {\n\t if (base64.length < 10) reject('生成base64失败');\n\t\n\t return base64;\n\t })\n\t .then(function (base64) {\n\t var formData = null;\n\t\n\t // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n\t if (typeof that.file === 'object' && base64.length > that.file.size) {\n\t formData = new FormData();\n\t file = that.file;\n\t } else {\n\t formData = new BlobFormDataShim.FormData();\n\t file = dataURItoBlob(base64);\n\t }\n\t\n\t formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\t\n\t resolve({\n\t formData : formData,\n\t fileLen : +file.size,\n\t base64 : base64,\n\t base64Len: base64.length,\n\t origin : that.file,\n\t file : file\n\t });\n\t\n\t // 释放内存\n\t for (var p in that) {\n\t if (!that.hasOwnProperty(p)) continue;\n\t\n\t that[p] = null;\n\t }\n\t URL.revokeObjectURL(that.blob);\n\t });\n\t };\n\t\n\t // 如果传入的是base64在移动端会报错\n\t !fileIsBase64 && (img.crossOrigin = \"*\");\n\t\n\t img.src = blob;\n\t });\n\t};\n\t\n\tLrz.prototype._getBase64 = function () {\n\t var that = this,\n\t img = that.img,\n\t file = that.file,\n\t canvas = that.canvas;\n\t\n\t return new Promise(function (resolve) {\n\t try {\n\t // 传入blob在android4.3以下有bug\n\t exif.getData(typeof file === 'object' ? file : img, function () {\n\t that.orientation = exif.getTag(this, \"Orientation\");\n\t\n\t that.resize = that._getResize();\n\t that.ctx = canvas.getContext('2d');\n\t\n\t canvas.width = that.resize.width;\n\t canvas.height = that.resize.height;\n\t\n\t // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n\t that.ctx.fillStyle = '#fff';\n\t that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\n\t // 根据设备对应处理方式\n\t if (UA.oldIOS) {\n\t that._createBase64ForOldIOS().then(resolve);\n\t }\n\t else {\n\t that._createBase64().then(resolve);\n\t }\n\t });\n\t } catch (err) {\n\t // 这样能解决低内存设备闪退的问题吗?\n\t throw new Error(err);\n\t }\n\t });\n\t};\n\t\n\t\n\tLrz.prototype._createBase64ForOldIOS = function () {\n\t var that = this,\n\t img = that.img,\n\t canvas = that.canvas,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t return new Promise(function (resolve) {\n\t __webpack_require__.e/* require */(1, function(__webpack_require__) { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(6)]; (function (MegaPixImage) {\n\t var mpImg = new MegaPixImage(img);\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t mpImg.render(canvas, {\n\t width : canvas.height,\n\t height : canvas.width,\n\t orientation: orientation\n\t });\n\t } else {\n\t mpImg.render(canvas, {\n\t width : canvas.width,\n\t height : canvas.height,\n\t orientation: orientation\n\t });\n\t }\n\t\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));});\n\t });\n\t};\n\t\n\tLrz.prototype._createBase64 = function () {\n\t var that = this,\n\t resize = that.resize,\n\t img = that.img,\n\t canvas = that.canvas,\n\t ctx = that.ctx,\n\t defaults = that.defaults,\n\t orientation = that.orientation;\n\t\n\t // 调整为正确方向\n\t switch (orientation) {\n\t case 3:\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 6:\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 8:\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t case 2:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t break;\n\t case 4:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(180 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n\t break;\n\t case 5:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(90 * Math.PI / 180);\n\t ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n\t break;\n\t case 7:\n\t ctx.translate(resize.width, 0);\n\t ctx.scale(-1, 1);\n\t ctx.rotate(270 * Math.PI / 180);\n\t ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n\t break;\n\t\n\t default:\n\t ctx.drawImage(img, 0, 0, resize.width, resize.height);\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n\t __webpack_require__.e/* require */(2, function(__webpack_require__) { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(7)]; (function (JPEGEncoder) {\n\t var encoder = new JPEGEncoder(),\n\t img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\t\n\t resolve(encoder.encode(img, defaults.quality * 100));\n\t }.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));})\n\t }\n\t else {\n\t resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n\t }\n\t });\n\t};\n\t\n\tLrz.prototype._getResize = function () {\n\t var that = this,\n\t img = that.img,\n\t defaults = that.defaults,\n\t width = defaults.width,\n\t height = defaults.height,\n\t orientation = that.orientation;\n\t\n\t var ret = {\n\t width : img.width,\n\t height: img.height\n\t };\n\t\n\t if (\"5678\".indexOf(orientation) > -1) {\n\t ret.width = img.height;\n\t ret.height = img.width;\n\t }\n\t\n\t // 如果原图小于设定,采用原图\n\t if (ret.width < width || ret.height < height) {\n\t return ret;\n\t }\n\t\n\t var scale = ret.width / ret.height;\n\t\n\t if (width && height) {\n\t if (scale >= width / height) {\n\t if (ret.width > width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t } else {\n\t if (ret.height > height) {\n\t ret.height = height;\n\t ret.width = Math.ceil(height * scale);\n\t }\n\t }\n\t }\n\t else if (width) {\n\t if (width < ret.width) {\n\t ret.width = width;\n\t ret.height = Math.ceil(width / scale);\n\t }\n\t }\n\t else if (height) {\n\t if (height < ret.height) {\n\t ret.width = Math.ceil(height * scale);\n\t ret.height = height;\n\t }\n\t }\n\t\n\t // 超过这个值base64无法生成,在IOS上\n\t while (ret.width >= 3264 || ret.height >= 2448) {\n\t ret.width *= 0.8;\n\t ret.height *= 0.8;\n\t }\n\t\n\t return ret;\n\t};\n\t\n\t/**\n\t * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n\t * @returns {string}\n\t */\n\tfunction getJsDir (src) {\n\t var script = null;\n\t\n\t if (src) {\n\t script = [].filter.call(document.scripts, function (v) {\n\t return v.src.indexOf(src) !== -1;\n\t })[0];\n\t } else {\n\t script = document.scripts[document.scripts.length - 1];\n\t }\n\t\n\t if (!script) return null;\n\t\n\t return script.src.substr(0, script.src.lastIndexOf('/'));\n\t}\n\t\n\t\n\t/**\n\t * 转换成formdata\n\t * @param dataURI\n\t * @returns {*}\n\t *\n\t * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n\t */\n\tfunction dataURItoBlob (dataURI) {\n\t // convert base64/URLEncoded data component to raw binary data held in a string\n\t var byteString;\n\t if (dataURI.split(',')[0].indexOf('base64') >= 0)\n\t byteString = atob(dataURI.split(',')[1]);\n\t else\n\t byteString = unescape(dataURI.split(',')[1]);\n\t\n\t // separate out the mime component\n\t var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\t\n\t // write the bytes of the string to a typed array\n\t var ia = new Uint8Array(byteString.length);\n\t for (var i = 0; i < byteString.length; i++) {\n\t ia[i] = byteString.charCodeAt(i);\n\t }\n\t\n\t return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n\t}\n\t\n\twindow.lrz = function (file, opts) {\n\t return new Lrz(file, opts);\n\t};\n\t\n\t// 版本号来自package.json,构建时自动填充\n\twindow.lrz.version = '4.9.36';\n\t\n\tmodule.exports = window.lrz;\n\t\n\t/**\n\t *\n\t *    ┏┓   ┏┓\n\t *   ┏┛┻━━━┛┻┓\n\t *   ┃       ┃\n\t *   ┃   ━   ┃\n\t *   ┃ ┳┛ ┗┳ ┃\n\t *   ┃       ┃\n\t *   ┃   ┻   ┃\n\t *   ┃       ┃\n\t *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n\t *     ┃   ┃ 神兽保佑,代码无bug\n\t *     ┃   ┃\n\t *     ┃   ┗━━━┓\n\t *     ┃      ┣┓\n\t *     ┃     ┏┛\n\t *     ┗┓┓┏━┳┓┏┛\n\t *      ┃┫┫ ┃┫┫\n\t *      ┗┻┛ ┗┻┛\n\t *\n\t */\n\t\n\t\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\t\n\t // Use polyfill for setImmediate for performance gains\n\t var asap = (typeof setImmediate === 'function' && setImmediate) ||\n\t function (fn) {\n\t setTimeout(fn, 1);\n\t };\n\t\n\t // Polyfill for Function.prototype.bind\n\t function bind (fn, thisArg) {\n\t return function () {\n\t fn.apply(thisArg, arguments);\n\t }\n\t }\n\t\n\t var isArray = Array.isArray || function (value) {\n\t return Object.prototype.toString.call(value) === \"[object Array]\"\n\t };\n\t\n\t function Promise (fn) {\n\t if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n\t if (typeof fn !== 'function') throw new TypeError('not a function');\n\t this._state = null;\n\t this._value = null;\n\t this._deferreds = []\n\t\n\t doResolve(fn, bind(resolve, this), bind(reject, this))\n\t }\n\t\n\t function handle (deferred) {\n\t var me = this;\n\t if (this._state === null) {\n\t this._deferreds.push(deferred);\n\t return\n\t }\n\t asap(function () {\n\t var cb = me._state ? deferred.onFulfilled : deferred.onRejected\n\t if (cb === null) {\n\t (me._state ? deferred.resolve : deferred.reject)(me._value);\n\t return;\n\t }\n\t var ret;\n\t try {\n\t ret = cb(me._value);\n\t }\n\t catch (e) {\n\t deferred.reject(e);\n\t return;\n\t }\n\t deferred.resolve(ret);\n\t })\n\t }\n\t\n\t function resolve (newValue) {\n\t try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n\t if (newValue === this) throw new TypeError('A promise cannot be resolved with itself.');\n\t if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n\t var then = newValue.then;\n\t if (typeof then === 'function') {\n\t doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));\n\t return;\n\t }\n\t }\n\t this._state = true;\n\t this._value = newValue;\n\t finale.call(this);\n\t } catch (e) {\n\t reject.call(this, e);\n\t }\n\t }\n\t\n\t function reject (newValue) {\n\t this._state = false;\n\t this._value = newValue;\n\t finale.call(this);\n\t }\n\t\n\t function finale () {\n\t for (var i = 0, len = this._deferreds.length; i < len; i++) {\n\t handle.call(this, this._deferreds[i]);\n\t }\n\t this._deferreds = null;\n\t }\n\t\n\t function Handler (onFulfilled, onRejected, resolve, reject) {\n\t this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n\t this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n\t this.resolve = resolve;\n\t this.reject = reject;\n\t }\n\t\n\t /**\n\t * Take a potentially misbehaving resolver function and make sure\n\t * onFulfilled and onRejected are only called once.\n\t *\n\t * Makes no guarantees about asynchrony.\n\t */\n\t function doResolve (fn, onFulfilled, onRejected) {\n\t var done = false;\n\t try {\n\t fn(function (value) {\n\t if (done) return;\n\t done = true;\n\t onFulfilled(value);\n\t }, function (reason) {\n\t if (done) return;\n\t done = true;\n\t onRejected(reason);\n\t })\n\t } catch (ex) {\n\t if (done) return;\n\t done = true;\n\t onRejected(ex);\n\t }\n\t }\n\t\n\t Promise.prototype['catch'] = function (onRejected) {\n\t return this.then(null, onRejected);\n\t };\n\t\n\t Promise.prototype.then = function (onFulfilled, onRejected) {\n\t var me = this;\n\t return new Promise(function (resolve, reject) {\n\t handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));\n\t })\n\t };\n\t\n\t Promise.all = function () {\n\t var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);\n\t\n\t return new Promise(function (resolve, reject) {\n\t if (args.length === 0) return resolve([]);\n\t var remaining = args.length;\n\t\n\t function res (i, val) {\n\t try {\n\t if (val && (typeof val === 'object' || typeof val === 'function')) {\n\t var then = val.then;\n\t if (typeof then === 'function') {\n\t then.call(val, function (val) {\n\t res(i, val)\n\t }, reject);\n\t return;\n\t }\n\t }\n\t args[i] = val;\n\t if (--remaining === 0) {\n\t resolve(args);\n\t }\n\t } catch (ex) {\n\t reject(ex);\n\t }\n\t }\n\t\n\t for (var i = 0; i < args.length; i++) {\n\t res(i, args[i]);\n\t }\n\t });\n\t };\n\t\n\t Promise.resolve = function (value) {\n\t if (value && typeof value === 'object' && value.constructor === Promise) {\n\t return value;\n\t }\n\t\n\t return new Promise(function (resolve) {\n\t resolve(value);\n\t });\n\t };\n\t\n\t Promise.reject = function (value) {\n\t return new Promise(function (resolve, reject) {\n\t reject(value);\n\t });\n\t };\n\t\n\t Promise.race = function (values) {\n\t return new Promise(function (resolve, reject) {\n\t for (var i = 0, len = values.length; i < len; i++) {\n\t values[i].then(resolve, reject);\n\t }\n\t });\n\t };\n\t\n\t /**\n\t * Set the immediate function to execute callbacks\n\t * @param fn {function} Function to execute\n\t * @private\n\t */\n\t Promise._setImmediateFn = function _setImmediateFn (fn) {\n\t asap = fn;\n\t };\n\t\n\t\n\t Promise.prototype.always = function (callback) {\n\t var constructor = this.constructor;\n\t\n\t return this.then(function (value) {\n\t return constructor.resolve(callback()).then(function () {\n\t return value;\n\t });\n\t }, function (reason) {\n\t return constructor.resolve(callback()).then(function () {\n\t throw reason;\n\t });\n\t });\n\t };\n\t\n\t if (typeof module !== 'undefined' && module.exports) {\n\t module.exports = Promise;\n\t } else if (!root.Promise) {\n\t root.Promise = Promise;\n\t }\n\t\n\t})(this);\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(3).nextTick;\n\tvar apply = Function.prototype.apply;\n\tvar slice = Array.prototype.slice;\n\tvar immediateIds = {};\n\tvar nextImmediateId = 0;\n\t\n\t// DOM APIs, for completeness\n\t\n\texports.setTimeout = function() {\n\t return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n\t};\n\texports.setInterval = function() {\n\t return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n\t};\n\texports.clearTimeout =\n\texports.clearInterval = function(timeout) { timeout.close(); };\n\t\n\tfunction Timeout(id, clearFn) {\n\t this._id = id;\n\t this._clearFn = clearFn;\n\t}\n\tTimeout.prototype.unref = Timeout.prototype.ref = function() {};\n\tTimeout.prototype.close = function() {\n\t this._clearFn.call(window, this._id);\n\t};\n\t\n\t// Does not start the time, just sets up the members needed.\n\texports.enroll = function(item, msecs) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = msecs;\n\t};\n\t\n\texports.unenroll = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = -1;\n\t};\n\t\n\texports._unrefActive = exports.active = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t\n\t var msecs = item._idleTimeout;\n\t if (msecs >= 0) {\n\t item._idleTimeoutId = setTimeout(function onTimeout() {\n\t if (item._onTimeout)\n\t item._onTimeout();\n\t }, msecs);\n\t }\n\t};\n\t\n\t// That's not how node.js implements it but the exposed api is the same.\n\texports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n\t var id = nextImmediateId++;\n\t var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\t\n\t immediateIds[id] = true;\n\t\n\t nextTick(function onNextTick() {\n\t if (immediateIds[id]) {\n\t // fn.call() is faster so we optimize for the common use-case\n\t // @see http://jsperf.com/call-apply-segu\n\t if (args) {\n\t fn.apply(null, args);\n\t } else {\n\t fn.call(null);\n\t }\n\t // Prevent ids from leaking\n\t exports.clearImmediate(id);\n\t }\n\t });\n\t\n\t return id;\n\t};\n\t\n\texports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n\t delete immediateIds[id];\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).setImmediate, __webpack_require__(2).clearImmediate))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\t\n\tvar process = module.exports = {};\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = setTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t clearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t setTimeout(drainQueue, 0);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t//@source https://xts.so/demo/compress/index.html\n\t\n\t// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\n\tvar BlobConstructor = ((function () {\n\t try {\n\t new Blob();\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t})()) ? window.Blob : function (parts, opts) {\n\t var bb = new (\n\t window.BlobBuilder\n\t || window.WebKitBlobBuilder\n\t || window.MSBlobBuilder\n\t || window.MozBlobBuilder\n\t );\n\t parts.forEach(function (p) {\n\t bb.append(p);\n\t });\n\t\n\t return bb.getBlob(opts ? opts.type : undefined);\n\t};\n\t\n\t// Android上的AppleWebKit 534以前的内核存在一个Bug,\n\t// 导致FormData加入一个Blob对象后,上传的文件是0字节\n\tfunction hasFormDataBug () {\n\t var bCheck = ~navigator.userAgent.indexOf('Android')\n\t && ~navigator.vendor.indexOf('Google')\n\t && !~navigator.userAgent.indexOf('Chrome');\n\t\n\t // QQ X5浏览器也有这个BUG\n\t return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n\t}\n\tvar FormDataShim=(function(){\n\t var formDataShimNums = 0;\n\t return function FormDataShim () {\n\t var\n\t // Store a reference to this\n\t o = this,\n\t \n\t // Data to be sent\n\t parts = [],\n\t \n\t // Boundary parameter for separating the multipart values\n\t boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n\t \n\t // Store the current XHR send method so we can safely override it\n\t oldSend = XMLHttpRequest.prototype.send;\n\t this.getParts = function () {\n\t return parts.toString();\n\t };\n\t this.append = function (name, value, filename) {\n\t parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n\t \n\t if (value instanceof Blob) {\n\t parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n\t parts.push(value);\n\t }\n\t else {\n\t parts.push('\\r\\n\\r\\n' + value);\n\t }\n\t parts.push('\\r\\n');\n\t };\n\t \n\t formDataShimNums++;\n\t XMLHttpRequest.prototype.send = function (val) {\n\t var fr,\n\t data,\n\t oXHR = this;\n\t \n\t if (val === o) {\n\t // Append the final boundary string\n\t parts.push('--' + boundary + '--\\r\\n');\n\t // Create the blob\n\t data = new BlobConstructor(parts);\n\t \n\t // Set up and read the blob into an array to be sent\n\t fr = new FileReader();\n\t fr.onload = function () {\n\t oldSend.call(oXHR, fr.result);\n\t };\n\t fr.onerror = function (err) {\n\t throw err;\n\t };\n\t fr.readAsArrayBuffer(data);\n\t \n\t // Set the multipart content type and boudary\n\t this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n\t formDataShimNums--;\n\t if(formDataShimNums == 0){\n\t XMLHttpRequest.prototype.send = oldSend;\n\t }\n\t }\n\t else {\n\t oldSend.call(this, val);\n\t }\n\t };\n\t };\n\t})();\n\t\n\t\n\tmodule.exports = {\n\t Blob : BlobConstructor,\n\t FormData: hasFormDataBug() ? FormDataShim : FormData\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* exif */\n\t(function () {\n\t\n\t var debug = false;\n\t\n\t var root = this;\n\t\n\t var EXIF = function (obj) {\n\t if (obj instanceof EXIF) return obj;\n\t if (!(this instanceof EXIF)) return new EXIF(obj);\n\t this.EXIFwrapped = obj;\n\t };\n\t\n\t if (true) {\n\t if (typeof module !== 'undefined' && module.exports) {\n\t exports = module.exports = EXIF;\n\t }\n\t exports.EXIF = EXIF;\n\t } else {\n\t root.EXIF = EXIF;\n\t }\n\t\n\t var ExifTags = EXIF.Tags = {\n\t\n\t // version tags\n\t 0x9000: \"ExifVersion\", // EXIF version\n\t 0xA000: \"FlashpixVersion\", // Flashpix format version\n\t\n\t // colorspace tags\n\t 0xA001: \"ColorSpace\", // Color space information tag\n\t\n\t // image configuration\n\t 0xA002: \"PixelXDimension\", // Valid width of meaningful image\n\t 0xA003: \"PixelYDimension\", // Valid height of meaningful image\n\t 0x9101: \"ComponentsConfiguration\", // Information about channels\n\t 0x9102: \"CompressedBitsPerPixel\", // Compressed bits per pixel\n\t\n\t // user information\n\t 0x927C: \"MakerNote\", // Any desired information written by the manufacturer\n\t 0x9286: \"UserComment\", // Comments by user\n\t\n\t // related file\n\t 0xA004: \"RelatedSoundFile\", // Name of related sound file\n\t\n\t // date and time\n\t 0x9003: \"DateTimeOriginal\", // Date and time when the original image was generated\n\t 0x9004: \"DateTimeDigitized\", // Date and time when the image was stored digitally\n\t 0x9290: \"SubsecTime\", // Fractions of seconds for DateTime\n\t 0x9291: \"SubsecTimeOriginal\", // Fractions of seconds for DateTimeOriginal\n\t 0x9292: \"SubsecTimeDigitized\", // Fractions of seconds for DateTimeDigitized\n\t\n\t // picture-taking conditions\n\t 0x829A: \"ExposureTime\", // Exposure time (in seconds)\n\t 0x829D: \"FNumber\", // F number\n\t 0x8822: \"ExposureProgram\", // Exposure program\n\t 0x8824: \"SpectralSensitivity\", // Spectral sensitivity\n\t 0x8827: \"ISOSpeedRatings\", // ISO speed rating\n\t 0x8828: \"OECF\", // Optoelectric conversion factor\n\t 0x9201: \"ShutterSpeedValue\", // Shutter speed\n\t 0x9202: \"ApertureValue\", // Lens aperture\n\t 0x9203: \"BrightnessValue\", // Value of brightness\n\t 0x9204: \"ExposureBias\", // Exposure bias\n\t 0x9205: \"MaxApertureValue\", // Smallest F number of lens\n\t 0x9206: \"SubjectDistance\", // Distance to subject in meters\n\t 0x9207: \"MeteringMode\", // Metering mode\n\t 0x9208: \"LightSource\", // Kind of light source\n\t 0x9209: \"Flash\", // Flash status\n\t 0x9214: \"SubjectArea\", // Location and area of main subject\n\t 0x920A: \"FocalLength\", // Focal length of the lens in mm\n\t 0xA20B: \"FlashEnergy\", // Strobe energy in BCPS\n\t 0xA20C: \"SpatialFrequencyResponse\", //\n\t 0xA20E: \"FocalPlaneXResolution\", // Number of pixels in width direction per FocalPlaneResolutionUnit\n\t 0xA20F: \"FocalPlaneYResolution\", // Number of pixels in height direction per FocalPlaneResolutionUnit\n\t 0xA210: \"FocalPlaneResolutionUnit\", // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution\n\t 0xA214: \"SubjectLocation\", // Location of subject in image\n\t 0xA215: \"ExposureIndex\", // Exposure index selected on camera\n\t 0xA217: \"SensingMethod\", // Image sensor type\n\t 0xA300: \"FileSource\", // Image source (3 == DSC)\n\t 0xA301: \"SceneType\", // Scene type (1 == directly photographed)\n\t 0xA302: \"CFAPattern\", // Color filter array geometric pattern\n\t 0xA401: \"CustomRendered\", // Special processing\n\t 0xA402: \"ExposureMode\", // Exposure mode\n\t 0xA403: \"WhiteBalance\", // 1 = auto white balance, 2 = manual\n\t 0xA404: \"DigitalZoomRation\", // Digital zoom ratio\n\t 0xA405: \"FocalLengthIn35mmFilm\", // Equivalent foacl length assuming 35mm film camera (in mm)\n\t 0xA406: \"SceneCaptureType\", // Type of scene\n\t 0xA407: \"GainControl\", // Degree of overall image gain adjustment\n\t 0xA408: \"Contrast\", // Direction of contrast processing applied by camera\n\t 0xA409: \"Saturation\", // Direction of saturation processing applied by camera\n\t 0xA40A: \"Sharpness\", // Direction of sharpness processing applied by camera\n\t 0xA40B: \"DeviceSettingDescription\", //\n\t 0xA40C: \"SubjectDistanceRange\", // Distance to subject\n\t\n\t // other tags\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0xA420: \"ImageUniqueID\" // Identifier assigned uniquely to each image\n\t };\n\t\n\t var TiffTags = EXIF.TiffTags = {\n\t 0x0100: \"ImageWidth\",\n\t 0x0101: \"ImageHeight\",\n\t 0x8769: \"ExifIFDPointer\",\n\t 0x8825: \"GPSInfoIFDPointer\",\n\t 0xA005: \"InteroperabilityIFDPointer\",\n\t 0x0102: \"BitsPerSample\",\n\t 0x0103: \"Compression\",\n\t 0x0106: \"PhotometricInterpretation\",\n\t 0x0112: \"Orientation\",\n\t 0x0115: \"SamplesPerPixel\",\n\t 0x011C: \"PlanarConfiguration\",\n\t 0x0212: \"YCbCrSubSampling\",\n\t 0x0213: \"YCbCrPositioning\",\n\t 0x011A: \"XResolution\",\n\t 0x011B: \"YResolution\",\n\t 0x0128: \"ResolutionUnit\",\n\t 0x0111: \"StripOffsets\",\n\t 0x0116: \"RowsPerStrip\",\n\t 0x0117: \"StripByteCounts\",\n\t 0x0201: \"JPEGInterchangeFormat\",\n\t 0x0202: \"JPEGInterchangeFormatLength\",\n\t 0x012D: \"TransferFunction\",\n\t 0x013E: \"WhitePoint\",\n\t 0x013F: \"PrimaryChromaticities\",\n\t 0x0211: \"YCbCrCoefficients\",\n\t 0x0214: \"ReferenceBlackWhite\",\n\t 0x0132: \"DateTime\",\n\t 0x010E: \"ImageDescription\",\n\t 0x010F: \"Make\",\n\t 0x0110: \"Model\",\n\t 0x0131: \"Software\",\n\t 0x013B: \"Artist\",\n\t 0x8298: \"Copyright\"\n\t };\n\t\n\t var GPSTags = EXIF.GPSTags = {\n\t 0x0000: \"GPSVersionID\",\n\t 0x0001: \"GPSLatitudeRef\",\n\t 0x0002: \"GPSLatitude\",\n\t 0x0003: \"GPSLongitudeRef\",\n\t 0x0004: \"GPSLongitude\",\n\t 0x0005: \"GPSAltitudeRef\",\n\t 0x0006: \"GPSAltitude\",\n\t 0x0007: \"GPSTimeStamp\",\n\t 0x0008: \"GPSSatellites\",\n\t 0x0009: \"GPSStatus\",\n\t 0x000A: \"GPSMeasureMode\",\n\t 0x000B: \"GPSDOP\",\n\t 0x000C: \"GPSSpeedRef\",\n\t 0x000D: \"GPSSpeed\",\n\t 0x000E: \"GPSTrackRef\",\n\t 0x000F: \"GPSTrack\",\n\t 0x0010: \"GPSImgDirectionRef\",\n\t 0x0011: \"GPSImgDirection\",\n\t 0x0012: \"GPSMapDatum\",\n\t 0x0013: \"GPSDestLatitudeRef\",\n\t 0x0014: \"GPSDestLatitude\",\n\t 0x0015: \"GPSDestLongitudeRef\",\n\t 0x0016: \"GPSDestLongitude\",\n\t 0x0017: \"GPSDestBearingRef\",\n\t 0x0018: \"GPSDestBearing\",\n\t 0x0019: \"GPSDestDistanceRef\",\n\t 0x001A: \"GPSDestDistance\",\n\t 0x001B: \"GPSProcessingMethod\",\n\t 0x001C: \"GPSAreaInformation\",\n\t 0x001D: \"GPSDateStamp\",\n\t 0x001E: \"GPSDifferential\"\n\t };\n\t\n\t var StringValues = EXIF.StringValues = {\n\t ExposureProgram : {\n\t 0: \"Not defined\",\n\t 1: \"Manual\",\n\t 2: \"Normal program\",\n\t 3: \"Aperture priority\",\n\t 4: \"Shutter priority\",\n\t 5: \"Creative program\",\n\t 6: \"Action program\",\n\t 7: \"Portrait mode\",\n\t 8: \"Landscape mode\"\n\t },\n\t MeteringMode : {\n\t 0 : \"Unknown\",\n\t 1 : \"Average\",\n\t 2 : \"CenterWeightedAverage\",\n\t 3 : \"Spot\",\n\t 4 : \"MultiSpot\",\n\t 5 : \"Pattern\",\n\t 6 : \"Partial\",\n\t 255: \"Other\"\n\t },\n\t LightSource : {\n\t 0 : \"Unknown\",\n\t 1 : \"Daylight\",\n\t 2 : \"Fluorescent\",\n\t 3 : \"Tungsten (incandescent light)\",\n\t 4 : \"Flash\",\n\t 9 : \"Fine weather\",\n\t 10 : \"Cloudy weather\",\n\t 11 : \"Shade\",\n\t 12 : \"Daylight fluorescent (D 5700 - 7100K)\",\n\t 13 : \"Day white fluorescent (N 4600 - 5400K)\",\n\t 14 : \"Cool white fluorescent (W 3900 - 4500K)\",\n\t 15 : \"White fluorescent (WW 3200 - 3700K)\",\n\t 17 : \"Standard light A\",\n\t 18 : \"Standard light B\",\n\t 19 : \"Standard light C\",\n\t 20 : \"D55\",\n\t 21 : \"D65\",\n\t 22 : \"D75\",\n\t 23 : \"D50\",\n\t 24 : \"ISO studio tungsten\",\n\t 255: \"Other\"\n\t },\n\t Flash : {\n\t 0x0000: \"Flash did not fire\",\n\t 0x0001: \"Flash fired\",\n\t 0x0005: \"Strobe return light not detected\",\n\t 0x0007: \"Strobe return light detected\",\n\t 0x0009: \"Flash fired, compulsory flash mode\",\n\t 0x000D: \"Flash fired, compulsory flash mode, return light not detected\",\n\t 0x000F: \"Flash fired, compulsory flash mode, return light detected\",\n\t 0x0010: \"Flash did not fire, compulsory flash mode\",\n\t 0x0018: \"Flash did not fire, auto mode\",\n\t 0x0019: \"Flash fired, auto mode\",\n\t 0x001D: \"Flash fired, auto mode, return light not detected\",\n\t 0x001F: \"Flash fired, auto mode, return light detected\",\n\t 0x0020: \"No flash function\",\n\t 0x0041: \"Flash fired, red-eye reduction mode\",\n\t 0x0045: \"Flash fired, red-eye reduction mode, return light not detected\",\n\t 0x0047: \"Flash fired, red-eye reduction mode, return light detected\",\n\t 0x0049: \"Flash fired, compulsory flash mode, red-eye reduction mode\",\n\t 0x004D: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\",\n\t 0x004F: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\",\n\t 0x0059: \"Flash fired, auto mode, red-eye reduction mode\",\n\t 0x005D: \"Flash fired, auto mode, return light not detected, red-eye reduction mode\",\n\t 0x005F: \"Flash fired, auto mode, return light detected, red-eye reduction mode\"\n\t },\n\t SensingMethod : {\n\t 1: \"Not defined\",\n\t 2: \"One-chip color area sensor\",\n\t 3: \"Two-chip color area sensor\",\n\t 4: \"Three-chip color area sensor\",\n\t 5: \"Color sequential area sensor\",\n\t 7: \"Trilinear sensor\",\n\t 8: \"Color sequential linear sensor\"\n\t },\n\t SceneCaptureType : {\n\t 0: \"Standard\",\n\t 1: \"Landscape\",\n\t 2: \"Portrait\",\n\t 3: \"Night scene\"\n\t },\n\t SceneType : {\n\t 1: \"Directly photographed\"\n\t },\n\t CustomRendered : {\n\t 0: \"Normal process\",\n\t 1: \"Custom process\"\n\t },\n\t WhiteBalance : {\n\t 0: \"Auto white balance\",\n\t 1: \"Manual white balance\"\n\t },\n\t GainControl : {\n\t 0: \"None\",\n\t 1: \"Low gain up\",\n\t 2: \"High gain up\",\n\t 3: \"Low gain down\",\n\t 4: \"High gain down\"\n\t },\n\t Contrast : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t Saturation : {\n\t 0: \"Normal\",\n\t 1: \"Low saturation\",\n\t 2: \"High saturation\"\n\t },\n\t Sharpness : {\n\t 0: \"Normal\",\n\t 1: \"Soft\",\n\t 2: \"Hard\"\n\t },\n\t SubjectDistanceRange: {\n\t 0: \"Unknown\",\n\t 1: \"Macro\",\n\t 2: \"Close view\",\n\t 3: \"Distant view\"\n\t },\n\t FileSource : {\n\t 3: \"DSC\"\n\t },\n\t\n\t Components: {\n\t 0: \"\",\n\t 1: \"Y\",\n\t 2: \"Cb\",\n\t 3: \"Cr\",\n\t 4: \"R\",\n\t 5: \"G\",\n\t 6: \"B\"\n\t }\n\t };\n\t\n\t function addEvent (element, event, handler) {\n\t if (element.addEventListener) {\n\t element.addEventListener(event, handler, false);\n\t } else if (element.attachEvent) {\n\t element.attachEvent(\"on\" + event, handler);\n\t }\n\t }\n\t\n\t function imageHasData (img) {\n\t return !!(img.exifdata);\n\t }\n\t\n\t\n\t function base64ToArrayBuffer (base64, contentType) {\n\t contentType = contentType || base64.match(/^data\\:([^\\;]+)\\;base64,/mi)[1] || ''; // e.g. 'data:image/jpeg;base64,...' => 'image/jpeg'\n\t base64 = base64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n\t var binary = atob(base64);\n\t var len = binary.length;\n\t var buffer = new ArrayBuffer(len);\n\t var view = new Uint8Array(buffer);\n\t for (var i = 0; i < len; i++) {\n\t view[i] = binary.charCodeAt(i);\n\t }\n\t return buffer;\n\t }\n\t\n\t function objectURLToBlob (url, callback) {\n\t var http = new XMLHttpRequest();\n\t http.open(\"GET\", url, true);\n\t http.responseType = \"blob\";\n\t http.onload = function (e) {\n\t if (this.status == 200 || this.status === 0) {\n\t callback(this.response);\n\t }\n\t };\n\t http.send();\n\t }\n\t\n\t function getImageData (img, callback) {\n\t function handleBinaryFile (binFile) {\n\t var data = findEXIFinJPEG(binFile);\n\t var iptcdata = findIPTCinJPEG(binFile);\n\t img.exifdata = data || {};\n\t img.iptcdata = iptcdata || {};\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t\n\t if (img.src) {\n\t if (/^data\\:/i.test(img.src)) { // Data URI\n\t var arrayBuffer = base64ToArrayBuffer(img.src);\n\t handleBinaryFile(arrayBuffer);\n\t\n\t } else if (/^blob\\:/i.test(img.src)) { // Object URL\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t handleBinaryFile(e.target.result);\n\t };\n\t objectURLToBlob(img.src, function (blob) {\n\t fileReader.readAsArrayBuffer(blob);\n\t });\n\t } else {\n\t var http = new XMLHttpRequest();\n\t http.onload = function () {\n\t if (this.status == 200 || this.status === 0) {\n\t handleBinaryFile(http.response);\n\t } else {\n\t callback(new Error(\"Could not load image\"));\n\t }\n\t http = null;\n\t };\n\t http.open(\"GET\", img.src, true);\n\t http.responseType = \"arraybuffer\";\n\t http.send(null);\n\t }\n\t } else if (window.FileReader && (img instanceof window.Blob || img instanceof window.File)) {\n\t var fileReader = new FileReader();\n\t fileReader.onload = function (e) {\n\t if (debug) console.log(\"Got file of length \" + e.target.result.byteLength);\n\t handleBinaryFile(e.target.result);\n\t };\n\t\n\t fileReader.readAsArrayBuffer(img);\n\t }\n\t }\n\t\n\t function findEXIFinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength,\n\t marker;\n\t\n\t while (offset < length) {\n\t if (dataView.getUint8(offset) != 0xFF) {\n\t if (debug) console.log(\"Not a valid marker at offset \" + offset + \", found: \" + dataView.getUint8(offset));\n\t return false; // not a valid marker, something is wrong\n\t }\n\t\n\t marker = dataView.getUint8(offset + 1);\n\t if (debug) console.log(marker);\n\t\n\t // we could implement handling for other markers here,\n\t // but we're only looking for 0xFFE1 for EXIF data\n\t\n\t if (marker == 225) {\n\t if (debug) console.log(\"Found 0xFFE1 marker\");\n\t\n\t return readEXIFData(dataView, offset + 4, dataView.getUint16(offset + 2) - 2);\n\t\n\t // offset += 2 + file.getShortAt(offset+2, true);\n\t\n\t } else {\n\t offset += 2 + dataView.getUint16(offset + 2);\n\t }\n\t\n\t }\n\t\n\t }\n\t\n\t function findIPTCinJPEG (file) {\n\t var dataView = new DataView(file);\n\t\n\t if (debug) console.log(\"Got file of length \" + file.byteLength);\n\t if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {\n\t if (debug) console.log(\"Not a valid JPEG\");\n\t return false; // not a valid jpeg\n\t }\n\t\n\t var offset = 2,\n\t length = file.byteLength;\n\t\n\t\n\t var isFieldSegmentStart = function (dataView, offset) {\n\t return (\n\t dataView.getUint8(offset) === 0x38 &&\n\t dataView.getUint8(offset + 1) === 0x42 &&\n\t dataView.getUint8(offset + 2) === 0x49 &&\n\t dataView.getUint8(offset + 3) === 0x4D &&\n\t dataView.getUint8(offset + 4) === 0x04 &&\n\t dataView.getUint8(offset + 5) === 0x04\n\t );\n\t };\n\t\n\t while (offset < length) {\n\t\n\t if (isFieldSegmentStart(dataView, offset)) {\n\t\n\t // Get the length of the name header (which is padded to an even number of bytes)\n\t var nameHeaderLength = dataView.getUint8(offset + 7);\n\t if (nameHeaderLength % 2 !== 0) nameHeaderLength += 1;\n\t // Check for pre photoshop 6 format\n\t if (nameHeaderLength === 0) {\n\t // Always 4\n\t nameHeaderLength = 4;\n\t }\n\t\n\t var startOffset = offset + 8 + nameHeaderLength;\n\t var sectionLength = dataView.getUint16(offset + 6 + nameHeaderLength);\n\t\n\t return readIPTCData(file, startOffset, sectionLength);\n\t\n\t break;\n\t\n\t }\n\t\n\t\n\t // Not the marker, continue searching\n\t offset++;\n\t\n\t }\n\t\n\t }\n\t\n\t var IptcFieldMap = {\n\t 0x78: 'caption',\n\t 0x6E: 'credit',\n\t 0x19: 'keywords',\n\t 0x37: 'dateCreated',\n\t 0x50: 'byline',\n\t 0x55: 'bylineTitle',\n\t 0x7A: 'captionWriter',\n\t 0x69: 'headline',\n\t 0x74: 'copyright',\n\t 0x0F: 'category'\n\t };\n\t\n\t function readIPTCData (file, startOffset, sectionLength) {\n\t var dataView = new DataView(file);\n\t var data = {};\n\t var fieldValue, fieldName, dataSize, segmentType, segmentSize;\n\t var segmentStartPos = startOffset;\n\t while (segmentStartPos < startOffset + sectionLength) {\n\t if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) {\n\t segmentType = dataView.getUint8(segmentStartPos + 2);\n\t if (segmentType in IptcFieldMap) {\n\t dataSize = dataView.getInt16(segmentStartPos + 3);\n\t segmentSize = dataSize + 5;\n\t fieldName = IptcFieldMap[segmentType];\n\t fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize);\n\t // Check if we already stored a value with this name\n\t if (data.hasOwnProperty(fieldName)) {\n\t // Value already stored with this name, create multivalue field\n\t if (data[fieldName] instanceof Array) {\n\t data[fieldName].push(fieldValue);\n\t }\n\t else {\n\t data[fieldName] = [data[fieldName], fieldValue];\n\t }\n\t }\n\t else {\n\t data[fieldName] = fieldValue;\n\t }\n\t }\n\t\n\t }\n\t segmentStartPos++;\n\t }\n\t return data;\n\t }\n\t\n\t\n\t function readTags (file, tiffStart, dirStart, strings, bigEnd) {\n\t var entries = file.getUint16(dirStart, !bigEnd),\n\t tags = {},\n\t entryOffset, tag,\n\t i;\n\t\n\t for (i = 0; i < entries; i++) {\n\t entryOffset = dirStart + i * 12 + 2;\n\t tag = strings[file.getUint16(entryOffset, !bigEnd)];\n\t if (!tag && debug) console.log(\"Unknown tag: \" + file.getUint16(entryOffset, !bigEnd));\n\t tags[tag] = readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd);\n\t }\n\t return tags;\n\t }\n\t\n\t\n\t function readTagValue (file, entryOffset, tiffStart, dirStart, bigEnd) {\n\t var type = file.getUint16(entryOffset + 2, !bigEnd),\n\t numValues = file.getUint32(entryOffset + 4, !bigEnd),\n\t valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart,\n\t offset,\n\t vals, val, n,\n\t numerator, denominator;\n\t\n\t switch (type) {\n\t case 1: // byte, 8-bit unsigned int\n\t case 7: // undefined, 8-bit byte, value depending on field\n\t if (numValues == 1) {\n\t return file.getUint8(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint8(offset + n);\n\t }\n\t return vals;\n\t }\n\t\n\t case 2: // ascii, 8-bit byte\n\t offset = numValues > 4 ? valueOffset : (entryOffset + 8);\n\t return getStringFromDB(file, offset, numValues - 1);\n\t\n\t case 3: // short, 16 bit int\n\t if (numValues == 1) {\n\t return file.getUint16(entryOffset + 8, !bigEnd);\n\t } else {\n\t offset = numValues > 2 ? valueOffset : (entryOffset + 8);\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint16(offset + 2 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 4: // long, 32 bit int\n\t if (numValues == 1) {\n\t return file.getUint32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 5: // rational = two long values, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t numerator = file.getUint32(valueOffset, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4, !bigEnd);\n\t val = new Number(numerator / denominator);\n\t val.numerator = numerator;\n\t val.denominator = denominator;\n\t return val;\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t numerator = file.getUint32(valueOffset + 8 * n, !bigEnd);\n\t denominator = file.getUint32(valueOffset + 4 + 8 * n, !bigEnd);\n\t vals[n] = new Number(numerator / denominator);\n\t vals[n].numerator = numerator;\n\t vals[n].denominator = denominator;\n\t }\n\t return vals;\n\t }\n\t\n\t case 9: // slong, 32 bit signed int\n\t if (numValues == 1) {\n\t return file.getInt32(entryOffset + 8, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 4 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t\n\t case 10: // signed rational, two slongs, first is numerator, second is denominator\n\t if (numValues == 1) {\n\t return file.getInt32(valueOffset, !bigEnd) / file.getInt32(valueOffset + 4, !bigEnd);\n\t } else {\n\t vals = [];\n\t for (n = 0; n < numValues; n++) {\n\t vals[n] = file.getInt32(valueOffset + 8 * n, !bigEnd) / file.getInt32(valueOffset + 4 + 8 * n, !bigEnd);\n\t }\n\t return vals;\n\t }\n\t }\n\t }\n\t\n\t function getStringFromDB (buffer, start, length) {\n\t var outstr = \"\", n;\n\t for (n = start; n < start + length; n++) {\n\t outstr += String.fromCharCode(buffer.getUint8(n));\n\t }\n\t return outstr;\n\t }\n\t\n\t function readEXIFData (file, start) {\n\t if (getStringFromDB(file, start, 4) != \"Exif\") {\n\t if (debug) console.log(\"Not valid EXIF data! \" + getStringFromDB(file, start, 4));\n\t return false;\n\t }\n\t\n\t var bigEnd,\n\t tags, tag,\n\t exifData, gpsData,\n\t tiffOffset = start + 6;\n\t\n\t // test for TIFF validity and endianness\n\t if (file.getUint16(tiffOffset) == 0x4949) {\n\t bigEnd = false;\n\t } else if (file.getUint16(tiffOffset) == 0x4D4D) {\n\t bigEnd = true;\n\t } else {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x4949 or 0x4D4D)\");\n\t return false;\n\t }\n\t\n\t if (file.getUint16(tiffOffset + 2, !bigEnd) != 0x002A) {\n\t if (debug) console.log(\"Not valid TIFF data! (no 0x002A)\");\n\t return false;\n\t }\n\t\n\t var firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);\n\t\n\t if (firstIFDOffset < 0x00000008) {\n\t if (debug) console.log(\"Not valid TIFF data! (First offset less than 8)\", file.getUint32(tiffOffset + 4, !bigEnd));\n\t return false;\n\t }\n\t\n\t tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);\n\t\n\t if (tags.ExifIFDPointer) {\n\t exifData = readTags(file, tiffOffset, tiffOffset + tags.ExifIFDPointer, ExifTags, bigEnd);\n\t for (tag in exifData) {\n\t switch (tag) {\n\t case \"LightSource\" :\n\t case \"Flash\" :\n\t case \"MeteringMode\" :\n\t case \"ExposureProgram\" :\n\t case \"SensingMethod\" :\n\t case \"SceneCaptureType\" :\n\t case \"SceneType\" :\n\t case \"CustomRendered\" :\n\t case \"WhiteBalance\" :\n\t case \"GainControl\" :\n\t case \"Contrast\" :\n\t case \"Saturation\" :\n\t case \"Sharpness\" :\n\t case \"SubjectDistanceRange\" :\n\t case \"FileSource\" :\n\t exifData[tag] = StringValues[tag][exifData[tag]];\n\t break;\n\t\n\t case \"ExifVersion\" :\n\t case \"FlashpixVersion\" :\n\t exifData[tag] = String.fromCharCode(exifData[tag][0], exifData[tag][1], exifData[tag][2], exifData[tag][3]);\n\t break;\n\t\n\t case \"ComponentsConfiguration\" :\n\t exifData[tag] =\n\t StringValues.Components[exifData[tag][0]] +\n\t StringValues.Components[exifData[tag][1]] +\n\t StringValues.Components[exifData[tag][2]] +\n\t StringValues.Components[exifData[tag][3]];\n\t break;\n\t }\n\t tags[tag] = exifData[tag];\n\t }\n\t }\n\t\n\t if (tags.GPSInfoIFDPointer) {\n\t gpsData = readTags(file, tiffOffset, tiffOffset + tags.GPSInfoIFDPointer, GPSTags, bigEnd);\n\t for (tag in gpsData) {\n\t switch (tag) {\n\t case \"GPSVersionID\" :\n\t gpsData[tag] = gpsData[tag][0] +\n\t \".\" + gpsData[tag][1] +\n\t \".\" + gpsData[tag][2] +\n\t \".\" + gpsData[tag][3];\n\t break;\n\t }\n\t tags[tag] = gpsData[tag];\n\t }\n\t }\n\t\n\t return tags;\n\t }\n\t\n\t EXIF.getData = function (img, callback) {\n\t if ((img instanceof Image || img instanceof HTMLImageElement) && !img.complete) return false;\n\t\n\t if (!imageHasData(img)) {\n\t getImageData(img, callback);\n\t } else {\n\t if (callback) {\n\t callback.call(img);\n\t }\n\t }\n\t return true;\n\t }\n\t\n\t EXIF.getTag = function (img, tag) {\n\t if (!imageHasData(img)) return;\n\t return img.exifdata[tag];\n\t }\n\t\n\t EXIF.getAllTags = function (img) {\n\t if (!imageHasData(img)) return {};\n\t var a,\n\t data = img.exifdata,\n\t tags = {};\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t tags[a] = data[a];\n\t }\n\t }\n\t return tags;\n\t }\n\t\n\t EXIF.pretty = function (img) {\n\t if (!imageHasData(img)) return \"\";\n\t var a,\n\t data = img.exifdata,\n\t strPretty = \"\";\n\t for (a in data) {\n\t if (data.hasOwnProperty(a)) {\n\t if (typeof data[a] == \"object\") {\n\t if (data[a] instanceof Number) {\n\t strPretty += a + \" : \" + data[a] + \" [\" + data[a].numerator + \"/\" + data[a].denominator + \"]\\r\\n\";\n\t } else {\n\t strPretty += a + \" : [\" + data[a].length + \" values]\\r\\n\";\n\t }\n\t } else {\n\t strPretty += a + \" : \" + data[a] + \"\\r\\n\";\n\t }\n\t }\n\t }\n\t return strPretty;\n\t }\n\t\n\t EXIF.readFromBinaryFile = function (file) {\n\t return findEXIFinJPEG(file);\n\t }\n\t\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return EXIF;\n\t }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t }\n\t}.call(this));\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** lrz.bundle.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t0:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"\" + ({}[chunkId]||chunkId) + \".chunk.js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap b1ee1fba6b8bad6e08f4\n **/","// 保证按需加载的文件路径正确\n__webpack_public_path__ = getJsDir('lrz') + '/';\nwindow.URL = window.URL || window.webkitURL;\n\nvar Promise = require('Promise'),\n BlobFormDataShim = require('Blob.FormData.shim'),\n exif = require('exif');\n\n\nvar UA = (function (userAgent) {\n var ISOldIOS = /OS (\\d)_.* like Mac OS X/g.exec(userAgent),\n isOldAndroid = /Android (\\d.*?);/g.exec(userAgent) || /Android\\/(\\d.*?) /g.exec(userAgent);\n\n // 判断设备是否是IOS7以下\n // 判断设备是否是android4.5以下\n // 判断是否iOS\n // 判断是否android\n // 判断是否QQ浏览器\n return {\n oldIOS : ISOldIOS ? +ISOldIOS.pop() < 8 : false,\n oldAndroid: isOldAndroid ? +isOldAndroid.pop().substr(0, 3) < 4.5 : false,\n iOS : /\\(i[^;]+;( U;)? CPU.+Mac OS X/.test(userAgent),\n android : /Android/g.test(userAgent),\n mQQBrowser: /MQQBrowser/g.test(userAgent)\n }\n})(navigator.userAgent);\n\n\nfunction Lrz (file, opts) {\n var that = this;\n\n if (!file) throw new Error('没有收到图片,可能的解决方案:https://github.com/think2011/localResizeIMG/issues/7');\n\n opts = opts || {};\n\n that.defaults = {\n width : null,\n height : null,\n fieldName: 'file',\n quality : 0.7\n };\n\n that.file = file;\n\n for (var p in opts) {\n if (!opts.hasOwnProperty(p)) continue;\n that.defaults[p] = opts[p];\n }\n\n return this.init();\n}\n\nLrz.prototype.init = function () {\n var that = this,\n file = that.file,\n fileIsString = typeof file === 'string',\n fileIsBase64 = /^data:/.test(file),\n img = new Image(),\n canvas = document.createElement('canvas'),\n blob = fileIsString ? file : URL.createObjectURL(file);\n\n that.img = img;\n that.blob = blob;\n that.canvas = canvas;\n\n if (fileIsString) {\n that.fileName = fileIsBase64 ? 'base64.jpg' : (file.split('/').pop());\n } else {\n that.fileName = file.name;\n }\n\n if (!document.createElement('canvas').getContext) {\n throw new Error('浏览器不支持canvas');\n }\n\n return new Promise(function (resolve, reject) {\n img.onerror = function () {\n throw new Error('加载图片文件失败');\n };\n\n img.onload = function () {\n that._getBase64()\n .then(function (base64) {\n if (base64.length < 10) reject('生成base64失败');\n\n return base64;\n })\n .then(function (base64) {\n var formData = null;\n\n // 压缩文件太大就采用源文件,且使用原生的FormData() @source #55\n if (typeof that.file === 'object' && base64.length > that.file.size) {\n formData = new FormData();\n file = that.file;\n } else {\n formData = new BlobFormDataShim.FormData();\n file = dataURItoBlob(base64);\n }\n\n formData.append(that.defaults.fieldName, file, (that.fileName.replace(/\\..+/g, '.jpg')));\n\n resolve({\n formData : formData,\n fileLen : +file.size,\n base64 : base64,\n base64Len: base64.length,\n origin : that.file,\n file : file\n });\n\n // 释放内存\n for (var p in that) {\n if (!that.hasOwnProperty(p)) continue;\n\n that[p] = null;\n }\n URL.revokeObjectURL(that.blob);\n });\n };\n\n // 如果传入的是base64在移动端会报错\n !fileIsBase64 && (img.crossOrigin = \"*\");\n\n img.src = blob;\n });\n};\n\nLrz.prototype._getBase64 = function () {\n var that = this,\n img = that.img,\n file = that.file,\n canvas = that.canvas;\n\n return new Promise(function (resolve) {\n try {\n // 传入blob在android4.3以下有bug\n exif.getData(typeof file === 'object' ? file : img, function () {\n that.orientation = exif.getTag(this, \"Orientation\");\n\n that.resize = that._getResize();\n that.ctx = canvas.getContext('2d');\n\n canvas.width = that.resize.width;\n canvas.height = that.resize.height;\n\n // 设置为白色背景,jpg是不支持透明的,所以会被默认为canvas默认的黑色背景。\n that.ctx.fillStyle = '#fff';\n that.ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // 根据设备对应处理方式\n if (UA.oldIOS) {\n that._createBase64ForOldIOS().then(resolve);\n }\n else {\n that._createBase64().then(resolve);\n }\n });\n } catch (err) {\n // 这样能解决低内存设备闪退的问题吗?\n throw new Error(err);\n }\n });\n};\n\n\nLrz.prototype._createBase64ForOldIOS = function () {\n var that = this,\n img = that.img,\n canvas = that.canvas,\n defaults = that.defaults,\n orientation = that.orientation;\n\n return new Promise(function (resolve) {\n require(['megapix-image'], function (MegaPixImage) {\n var mpImg = new MegaPixImage(img);\n\n if (\"5678\".indexOf(orientation) > -1) {\n mpImg.render(canvas, {\n width : canvas.height,\n height : canvas.width,\n orientation: orientation\n });\n } else {\n mpImg.render(canvas, {\n width : canvas.width,\n height : canvas.height,\n orientation: orientation\n });\n }\n\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n });\n });\n};\n\nLrz.prototype._createBase64 = function () {\n var that = this,\n resize = that.resize,\n img = that.img,\n canvas = that.canvas,\n ctx = that.ctx,\n defaults = that.defaults,\n orientation = that.orientation;\n\n // 调整为正确方向\n switch (orientation) {\n case 3:\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 6:\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 8:\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n case 2:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n break;\n case 4:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(180 * Math.PI / 180);\n ctx.drawImage(img, -resize.width, -resize.height, resize.width, resize.height);\n break;\n case 5:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(90 * Math.PI / 180);\n ctx.drawImage(img, 0, -resize.width, resize.height, resize.width);\n break;\n case 7:\n ctx.translate(resize.width, 0);\n ctx.scale(-1, 1);\n ctx.rotate(270 * Math.PI / 180);\n ctx.drawImage(img, -resize.height, 0, resize.height, resize.width);\n break;\n\n default:\n ctx.drawImage(img, 0, 0, resize.width, resize.height);\n }\n\n return new Promise(function (resolve) {\n if (UA.oldAndroid || UA.mQQBrowser || !navigator.userAgent) {\n require(['jpeg_encoder_basic'], function (JPEGEncoder) {\n var encoder = new JPEGEncoder(),\n img = ctx.getImageData(0, 0, canvas.width, canvas.height);\n\n resolve(encoder.encode(img, defaults.quality * 100));\n })\n }\n else {\n resolve(canvas.toDataURL('image/jpeg', defaults.quality));\n }\n });\n};\n\nLrz.prototype._getResize = function () {\n var that = this,\n img = that.img,\n defaults = that.defaults,\n width = defaults.width,\n height = defaults.height,\n orientation = that.orientation;\n\n var ret = {\n width : img.width,\n height: img.height\n };\n\n if (\"5678\".indexOf(orientation) > -1) {\n ret.width = img.height;\n ret.height = img.width;\n }\n\n // 如果原图小于设定,采用原图\n if (ret.width < width || ret.height < height) {\n return ret;\n }\n\n var scale = ret.width / ret.height;\n\n if (width && height) {\n if (scale >= width / height) {\n if (ret.width > width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n } else {\n if (ret.height > height) {\n ret.height = height;\n ret.width = Math.ceil(height * scale);\n }\n }\n }\n else if (width) {\n if (width < ret.width) {\n ret.width = width;\n ret.height = Math.ceil(width / scale);\n }\n }\n else if (height) {\n if (height < ret.height) {\n ret.width = Math.ceil(height * scale);\n ret.height = height;\n }\n }\n\n // 超过这个值base64无法生成,在IOS上\n while (ret.width >= 3264 || ret.height >= 2448) {\n ret.width *= 0.8;\n ret.height *= 0.8;\n }\n\n return ret;\n};\n\n/**\n * 获取当前js文件所在路径,必须得在代码顶部执行此函数\n * @returns {string}\n */\nfunction getJsDir (src) {\n var script = null;\n\n if (src) {\n script = [].filter.call(document.scripts, function (v) {\n return v.src.indexOf(src) !== -1;\n })[0];\n } else {\n script = document.scripts[document.scripts.length - 1];\n }\n\n if (!script) return null;\n\n return script.src.substr(0, script.src.lastIndexOf('/'));\n}\n\n\n/**\n * 转换成formdata\n * @param dataURI\n * @returns {*}\n *\n * @source http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata\n */\nfunction dataURItoBlob (dataURI) {\n // convert base64/URLEncoded data component to raw binary data held in a string\n var byteString;\n if (dataURI.split(',')[0].indexOf('base64') >= 0)\n byteString = atob(dataURI.split(',')[1]);\n else\n byteString = unescape(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to a typed array\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new BlobFormDataShim.Blob([ia.buffer], {type: mimeString});\n}\n\nwindow.lrz = function (file, opts) {\n return new Lrz(file, opts);\n};\n\n// 版本号来自package.json,构建时自动填充\nwindow.lrz.version = '4.9.36';\n\nmodule.exports = window.lrz;\n\n/**\n *\n *    ┏┓   ┏┓\n *   ┏┛┻━━━┛┻┓\n *   ┃       ┃\n *   ┃   ━   ┃\n *   ┃ ┳┛ ┗┳ ┃\n *   ┃       ┃\n *   ┃   ┻   ┃\n *   ┃       ┃\n *   ┗━┓   ┏━┛Code is far away from bug with the animal protecting\n *     ┃   ┃ 神兽保佑,代码无bug\n *     ┃   ┃\n *     ┃   ┗━━━┓\n *     ┃      ┣┓\n *     ┃     ┏┛\n *     ┗┓┓┏━┳┓┏┛\n *      ┃┫┫ ┃┫┫\n *      ┗┻┛ ┗┻┛\n *\n */\n\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/lrz.js\n ** module id = 0\n ** module chunks = 0\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Promise.js\n **/","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/timers-browserify/main.js\n ** module id = 2\n ** module chunks = 0 3\n **/","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/process/browser.js\n ** module id = 3\n ** module chunks = 0 3\n **/","//@source https://xts.so/demo/compress/index.html\n\n// 早期版本的浏览器需要用BlobBuilder来构造Blob,创建一个通用构造器来兼容早期版本\nvar BlobConstructor = ((function () {\n try {\n new Blob();\n return true;\n } catch (e) {\n return false;\n }\n})()) ? window.Blob : function (parts, opts) {\n var bb = new (\n window.BlobBuilder\n || window.WebKitBlobBuilder\n || window.MSBlobBuilder\n || window.MozBlobBuilder\n );\n parts.forEach(function (p) {\n bb.append(p);\n });\n\n return bb.getBlob(opts ? opts.type : undefined);\n};\n\n// Android上的AppleWebKit 534以前的内核存在一个Bug,\n// 导致FormData加入一个Blob对象后,上传的文件是0字节\nfunction hasFormDataBug () {\n var bCheck = ~navigator.userAgent.indexOf('Android')\n && ~navigator.vendor.indexOf('Google')\n && !~navigator.userAgent.indexOf('Chrome');\n\n // QQ X5浏览器也有这个BUG\n return bCheck && navigator.userAgent.match(/AppleWebKit\\/(\\d+)/).pop() <= 534 || /MQQBrowser/g.test(navigator.userAgent);\n}\nvar FormDataShim=(function(){\n var formDataShimNums = 0;\n return function FormDataShim () {\n var\n // Store a reference to this\n o = this,\n \n // Data to be sent\n parts = [],\n \n // Boundary parameter for separating the multipart values\n boundary = Array(21).join('-') + (+new Date() * (1e16 * Math.random())).toString(36),\n \n // Store the current XHR send method so we can safely override it\n oldSend = XMLHttpRequest.prototype.send;\n this.getParts = function () {\n return parts.toString();\n };\n this.append = function (name, value, filename) {\n parts.push('--' + boundary + '\\r\\nContent-Disposition: form-data; name=\"' + name + '\"');\n \n if (value instanceof Blob) {\n parts.push('; filename=\"' + (filename || 'blob') + '\"\\r\\nContent-Type: ' + value.type + '\\r\\n\\r\\n');\n parts.push(value);\n }\n else {\n parts.push('\\r\\n\\r\\n' + value);\n }\n parts.push('\\r\\n');\n };\n \n formDataShimNums++;\n XMLHttpRequest.prototype.send = function (val) {\n var fr,\n data,\n oXHR = this;\n \n if (val === o) {\n // Append the final boundary string\n parts.push('--' + boundary + '--\\r\\n');\n // Create the blob\n data = new BlobConstructor(parts);\n \n // Set up and read the blob into an array to be sent\n fr = new FileReader();\n fr.onload = function () {\n oldSend.call(oXHR, fr.result);\n };\n fr.onerror = function (err) {\n throw err;\n };\n fr.readAsArrayBuffer(data);\n \n // Set the multipart content type and boudary\n this.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);\n formDataShimNums--;\n if(formDataShimNums == 0){\n XMLHttpRequest.prototype.send = oldSend;\n }\n }\n else {\n oldSend.call(this, val);\n }\n };\n };\n})();\n\n\nmodule.exports = {\n Blob : BlobConstructor,\n FormData: hasFormDataBug() ? FormDataShim : FormData\n};\n\n\n\n/** WEBPACK FOOTER **\n ** src/lib/Blob.FormData.shim.js\n **/","null\n\n\n/** WEBPACK FOOTER **\n ** src/lib/exif.js\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 157fec9..d5effd9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lrz", - "version": "4.9.35", + "version": "4.9.36", "description": "前端本地客户端压缩图片,兼容IOS,Android,PC、自动按需加载文件", "main": "dist/lrz.bundle.js", "scripts": { diff --git a/test/index.html b/test/index.html index 7a6f957..e67d290 100644 --- a/test/index.html +++ b/test/index.html @@ -91,7 +91,7 @@

旋转方向测试

- + diff --git a/test/server.html b/test/server.html index 0e2b0ac..9cdc0bd 100644 --- a/test/server.html +++ b/test/server.html @@ -95,7 +95,7 @@

旋转方向测试

- +