//>>builtdefine(["./has","./_base/lang","./errors/CancelError","./promise/Promise","./has!config-deferredInstrumentation?./promise/instrumentation"],function(n,x,u,v,r){varw=Object.freeze||function(){},p=function(b,a,c,d,e){n("config-deferredInstrumentation")&&2===a&&g.instrumentRejected&&0===b.length&&g.instrumentRejected(c,!1,d,e);for(e=0;e<b.length;e++)t(b[e],a,c,d)},t=function(b,a,c,d){vare=b[a],f=b.deferred;if(e)try{varh=e(c);if(0===a)"undefined"!==typeofh&&l(f,a,h);else{if(h&&"function"===typeofh.then){b.cancel=h.cancel;h.then(q(f,1),q(f,2),q(f,0));return}l(f,1,h)}}catch(k){l(f,2,k)}elsel(f,a,c);n("config-deferredInstrumentation")&&2===a&&g.instrumentRejected&&g.instrumentRejected(c,!!e,d,f.promise)},q=function(b,a){returnfunction(c){l(b,a,c)}},l=function(b,a,c){if(!b.isCanceled())switch(a){case0:b.progress(c);break;case1:b.resolve(c);break;case2:b.reject(c)}},g=function(b){vara=this.promise=newv,c=this,d,e,f,h=!1,k=[];n("config-deferredInstrumentation")&&Error.captureStackTrace&&(Error.captureStackTrace(c,g),Error.captureStackTrace(a,g));this.isResolved=a.isResolved=function(){return1===d};this.isRejected=a.isRejected=function(){return2===d};this.isFulfilled=a.isFulfilled=function(){return!!d};this.isCanceled=a.isCanceled=function(){returnh};this.progress=function(b,e){if(d){if(!0===e)throwError("This deferred has already been fulfilled.");returna}p(k,0,b,null,c);returna};this.resolve=function(b,f){if(d){if(!0===f)throwError("This deferred has already been fulfilled.");returna}p(k,d=1,e=b,null,c);k=null;returna};varl=this.reject=function(b,g){if(d){if(!0===g)throwError("This deferred has already been fulfilled.");returna}n("config-deferredInstrumentation")&&Error.captureStackTrace&&Error.captureStackTrace(f={},l);p(k,d=2,e=b,f,c);k=null;returna};this.then=a.then=function(b,c,h){varm=[h,b,c];m.cancel=a.cancel;m.deferred=newg(function(a){returnm.cancel&&m.cancel(a)});d&&!k?t(m,d,e,f):k.push(m);returnm.deferred.promise};this.cancel=a.cancel=function(a,c){if(!d){b&&(c=b(a),a="undefined"===typeofc?a:c);h=!0;if(!d)return"undefined"===typeofa&&(a=newu),l(a),a;if(2===d&&e===a)returna}elseif(!0===c)throwError("This deferred has already been fulfilled.");};w(a)};g.prototype.toString=function(){return"[object Deferred]"};r&&r(g);returng});