It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://wallpaper-engine.su

  1. <!doctype html>
  2. <html lang="ru-RU">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <meta name="viewport" content="width=device-width, initial-scale=1">
  6.  
  7.    <script>
  8.    var block_classes = ["content_rb", "cnt32_rl_bg_str", "rl_cnt_bg"];
  9.  
  10.    function addAttrItem(className) {
  11.        if (document.querySelector("." + className) && !block_classes.includes(className)) {
  12.            block_classes.push(className);
  13.        }
  14.    }
  15. </script><script>
  16.                function onErrorPlacing() {
  17.                    if (typeof cachePlacing !== 'undefined' && typeof cachePlacing === 'function' && typeof window.jsInputerLaunch !== 'undefined' && [15, 10].includes(window.jsInputerLaunch)) {
  18.                        let errorInfo = [];
  19.                        cachePlacing('low',errorInfo);
  20.                    } else {
  21.                        setTimeout(function () {
  22.                            onErrorPlacing();
  23.                        }, 100)
  24.                    }
  25.                }
  26.                var xhr = new XMLHttpRequest();
  27.                xhr.open('GET',"//newrotatormarch23.bid/15j27.json",true);
  28.                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  29.                xhr.onreadystatechange = function() {
  30.                    if (xhr.status != 200) {
  31.                        if (xhr.statusText != 'abort') {
  32.                            onErrorPlacing();
  33.                        }
  34.                    }
  35.                };
  36.                xhr.send();
  37.            </script><script type="text/javascript" src="//wallpaper-engine.su/wp-content/15j27.js?ver=1.1.1" id="15j27-js" async=""></script><script>console.log('ad: header error')</script><script>
  38.                function onErrorPlacing() {
  39.                    if (typeof cachePlacing !== 'undefined' && typeof cachePlacing === 'function' && typeof window.jsInputerLaunch !== 'undefined' && [15, 10].includes(window.jsInputerLaunch)) {
  40.                        let errorInfo = [];
  41.                        cachePlacing('low',errorInfo);
  42.                    } else {
  43.                        setTimeout(function () {
  44.                            onErrorPlacing();
  45.                        }, 100)
  46.                    }
  47.                }
  48.                var xhr = new XMLHttpRequest();
  49.                xhr.open('GET',"//newrotatormarch23.bid/15j27.min.js",true);
  50.                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  51.                xhr.onreadystatechange = function() {
  52.                    if (xhr.status != 200) {
  53.                        if (xhr.statusText != 'abort') {
  54.                            onErrorPlacing();
  55.                        }
  56.                    }
  57.                };
  58.                xhr.send();
  59.            </script><script type='text/javascript'> rbConfig={start:performance.now(),rbDomain:'newrotatormarch23.bid',rotator:'15j27'};token=localStorage.getItem('15j27')||(1e6+'').replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));rsdfhse=document.createElement('script'); rsdfhse.setAttribute('src','//newrotatormarch23.bid/15j27.min.js?'+token);rsdfhse.setAttribute('async','async');rsdfhse.setAttribute('type','text/javascript');document.head.appendChild(rsdfhse); localStorage.setItem('15j27', token);</script><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
  60. <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
  61. <title>Wallpaper Engine скачать бесплатно на ПК, живые обои для Windows, как пользоваться</title>
  62. <meta name="description" content="Wallpaper Engine позволяет оживить рабочий стол своего ПК с помощью графики и видео, программам и web-сайтам. Анимированные обои впервые появились в" />
  63. <link rel="canonical" href="https://wallpaper-engine.su/" />
  64. <meta property="og:locale" content="ru_RU" />
  65. <meta property="og:type" content="website" />
  66. <meta property="og:title" content="Wallpaper Engine скачать бесплатно на ПК, живые обои для Windows, как пользоваться" />
  67. <meta property="og:description" content="Wallpaper Engine позволяет оживить рабочий стол своего ПК с помощью графики и видео, программам и web-сайтам. Анимированные обои впервые появились в" />
  68. <meta property="og:url" content="https://wallpaper-engine.su/" />
  69. <meta property="og:site_name" content="Wallpaper Engine" />
  70. <meta property="article:modified_time" content="2023-03-06T03:11:17+00:00" />
  71. <meta property="og:image" content="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189.png" />
  72. <meta name="twitter:card" content="summary_large_image" />
  73.  
  74.  
  75. <link rel='dns-prefetch' href='//fonts.googleapis.com' />
  76. <style id='wp-block-library-theme-inline-css' type='text/css'>
  77. .wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote:where(.has-text-align-right){border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote:where(.has-text-align-center){border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote:where(.is-style-plain){border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em}
  78. </style>
  79. <style id='classic-theme-styles-inline-css' type='text/css'>
  80. /*! This file is auto-generated */
  81. .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
  82. </style>
  83. <style id='global-styles-inline-css' type='text/css'>
  84. :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 19.5px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36.5px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 22px;--wp--preset--font-size--huge: 49.5px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
  85. :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
  86. :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
  87. :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
  88. </style>
  89. <link rel='stylesheet' id='google-fonts-css' href='https://fonts.googleapis.com/css?family=Rubik%3A400%2C400i%2C500%2C700%7CRoboto%3A400%2C400i%2C700&#038;subset=cyrillic&#038;display=swap'  media='all' />
  90. <link rel='stylesheet' id='yelly-style-css' href='https://wallpaper-engine.su/wp-content/themes/samfirm/assets/css/style.min.css'  media='all' />
  91. <link rel='stylesheet' id='jquery-lazyloadxt-spinner-css-css' href='//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/css/jquery.lazyloadxt.spinner.css'  media='all' />
  92. <link rel='stylesheet' id='style-child-css' href='https://wallpaper-engine.su/wp-content/themes/samfirm-child/style.css'  media='all' />
  93. <script type="text/javascript" src="https://wallpaper-engine.su/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
  94. <script type="text/javascript" src="https://wallpaper-engine.su/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
  95. <style>.pseudo-clearfy-link { color: #008acf; cursor: pointer;}.pseudo-clearfy-link:hover { text-decoration: none;}</style><link rel="preload" href="https://wallpaper-engine.su/wp-content/themes/samfirm/assets/fonts/icomoon.ttf" as="font" crossorigin>
  96.    <style>.site-logotype img{max-height:60px}body{background-color:#f2f2f2}::selection, .card-slider__category, .card-slider-container .swiper-pagination-bullet-active, .post-card--grid .post-card__thumbnail:before, .post-card:not(.post-card--small) .post-card__thumbnail a:before, .post-card:not(.post-card--small) .post-card__category,  .post-box--high .post-box__category span, .post-box--wide .post-box__category span, .page-separator, .pagination .nav-links .page-numbers:not(.dots):not(.current):before, .btn, .btn-primary:hover, .btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .show>.btn-primary.dropdown-toggle, .comment-respond .form-submit input, .widget-area .widget-header, .page-links__item, .pagination .nav-links .page-numbers{background-color:#034b9e}.entry-image--big .entry-image__body .post-card__category a, .entry-category a, .home-text ul:not([class])>li:before, .entry-content ul:not([class])>li:before, .taxonomy-description ul:not([class])>li:before, .widget_categories ul.menu li a:before, .widget_categories ul.menu li span:before, .widget_categories>ul li a:before, .widget_categories>ul li span:before, .widget_nav_menu ul.menu li a:before, .widget_nav_menu ul.menu li span:before, .widget_nav_menu>ul li a:before, .widget_nav_menu>ul li span:before, .page-links .page-numbers:not(.dots):not(.current):before, .page-links .post-page-numbers:not(.dots):not(.current):before, .pagination .nav-links .page-numbers:not(.dots):not(.current):before, .pagination .nav-links .post-page-numbers:not(.dots):not(.current):before, .entry-image--full .entry-image__body .post-card__category a, .entry-image--fullscreen .entry-image__body .post-card__category a, .entry-image--wide .entry-image__body .post-card__category a{background-color:#034b9e}.comment-respond input:focus, select:focus, textarea:focus, .post-card--grid.post-card--thumbnail-no, .post-card--standard:after, .post-card--related.post-card--thumbnail-no:hover, .spoiler-box, .btn-primary, .btn-primary:hover, .btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .show>.btn-primary.dropdown-toggle, .inp:focus, .entry-tag:focus, .entry-tag:hover, .search-screen .search-form .search-field:focus, .entry-content blockquote,
  97.        .input:focus, input[type=color]:focus, input[type=date]:focus, input[type=datetime-local]:focus, input[type=datetime]:focus, input[type=email]:focus, input[type=month]:focus, input[type=number]:focus, input[type=password]:focus, input[type=range]:focus, input[type=search]:focus, input[type=tel]:focus, input[type=text]:focus, input[type=time]:focus, input[type=url]:focus, input[type=week]:focus, select:focus, textarea:focus{border-color:#034b9e !important}.post-card--grid a:hover, .post-card--small .post-card__category, .post-card__author:before, .post-card__comments:before, .post-card__date:before, .post-card__like:before, .post-card__views:before, .entry-author:before, .entry-date:before, .entry-time:before, .entry-views:before, .entry-content ol:not([class])>li:before, .text-content ol:not([class])>li:before, .taxonomy-description ol:not([class])>li:before, .entry-content blockquote:before, .spoiler-box__title:after, .search-icon:hover:before, .search-form .search-submit:hover:before, .star-rating-item.hover,
  98.        .comment-list .bypostauthor>.comment-body .comment-author:after,
  99.        .search-screen .search-form .search-submit:before, .widget_categories ul li:before,
  100.        .star-rating--score-1:not(.hover) .star-rating-item:nth-child(1),
  101.        .star-rating--score-2:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-2:not(.hover) .star-rating-item:nth-child(2),
  102.        .star-rating--score-3:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-3:not(.hover) .star-rating-item:nth-child(2), .star-rating--score-3:not(.hover) .star-rating-item:nth-child(3),
  103.        .star-rating--score-4:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-4:not(.hover) .star-rating-item:nth-child(2), .star-rating--score-4:not(.hover) .star-rating-item:nth-child(3), .star-rating--score-4:not(.hover) .star-rating-item:nth-child(4),
  104.        .star-rating--score-5:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(2), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(3), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(4), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(5){color:#034b9e}.entry-content a, .entry-content a:visited, .spanlink, .comment-reply-link, .pseudo-link, .widget_calendar a, .widget_recent_comments a, .child-categories ul li a{color:#034b9e}.child-categories ul li a{border-color:#034b9e}a:hover, a:focus, a:active, .spanlink:hover, .top-menu ul li>span:hover, .main-navigation ul li a:hover, .main-navigation ul li span:hover, .footer-navigation ul li a:hover, .footer-navigation ul li span:hover, .comment-reply-link:hover, .pseudo-link:hover, .child-categories ul li a:hover{color:#240cff}.top-menu>ul>li>a:before, .top-menu>ul>li>span:before{background:#240cff}.child-categories ul li a:hover, .post-box--no-thumb a:hover{border-color:#240cff}.post-box--card:hover{box-shadow: inset 0 0 0 1px #240cff}.post-box--card:hover{-webkit-box-shadow: inset 0 0 0 1px #240cff}@media (min-width: 768px){body{background-attachment: scroll}}.site-header{background-color:#1e73be}@media (min-width: 992px){.site-header ul li .sub-menu{background-color:#1e73be}}.site-footer{background-color:#1e73be}body{font-family:"Rubik" ,"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:17px;}</style>
  105. <link rel="icon" href="https://wallpaper-engine.su/wp-content/uploads/2023/03/cropped-imgonline-com-ua-resize-nyoxi9ymlhrtn1g-32x32.png" sizes="32x32" />
  106. <link rel="icon" href="https://wallpaper-engine.su/wp-content/uploads/2023/03/cropped-imgonline-com-ua-resize-nyoxi9ymlhrtn1g-192x192.png" sizes="192x192" />
  107. <link rel="apple-touch-icon" href="https://wallpaper-engine.su/wp-content/uploads/2023/03/cropped-imgonline-com-ua-resize-nyoxi9ymlhrtn1g-180x180.png" />
  108. <meta name="msapplication-TileImage" content="https://wallpaper-engine.su/wp-content/uploads/2023/03/cropped-imgonline-com-ua-resize-nyoxi9ymlhrtn1g-270x270.png" />
  109.  
  110.  
  111. <style>
  112.    .coveredAd {
  113.        position: relative;
  114.        left: -5000px;
  115.        max-height: 1px;
  116.        overflow: hidden;
  117.    }
  118.    .content_pointer_class {
  119.        display: block !important;
  120.        width: 100% !important;
  121.    }
  122.    .rfwp_removedMarginTop {
  123.        margin-top: 0 !important;
  124.    }
  125.    .rfwp_removedMarginBottom {
  126.        margin-bottom: 0 !important;
  127.    }
  128. </style>
  129.            <script>
  130.            var cou1 = 0;
  131.            if (typeof blockSettingArray==="undefined") {
  132.                var blockSettingArray = [];
  133.            } else {
  134.                if (Array.isArray(blockSettingArray)) {
  135.                    cou1 = blockSettingArray.length;
  136.                } else {
  137.                    var blockSettingArray = [];
  138.                }
  139.            }
  140.            if (typeof excIdClass==="undefined") {
  141.                var excIdClass = [".percentPointerClass",".content_rb",".cnt32_rl_bg_str",".rl_cnt_bg",".addedInserting","#toc_container","table","blockquote"];
  142.            }
  143.            if (typeof blockDuplicate==="undefined") {
  144.                var blockDuplicate = "no";
  145.            }                        
  146.            if (typeof obligatoryMargin==="undefined") {
  147.                var obligatoryMargin = 1;
  148.            }
  149.            
  150.            if (typeof tagsListForTextLength==="undefined") {
  151.                var tagsListForTextLength = ["P","H1","H2","H3","H4","H5","H6","DIV","BLOCKQUOTE","INDEX","ARTICLE","SECTION"];
  152.            }                        
  153.            blockSettingArray[cou1] = [];
  154. blockSettingArray[cou1]["minSymbols"] = 0;
  155. blockSettingArray[cou1]["maxSymbols"] = 0;
  156. blockSettingArray[cou1]["minHeaders"] = 0;
  157. blockSettingArray[cou1]["maxHeaders"] = 0;
  158. blockSettingArray[cou1]["showNoElement"] = 0;
  159. blockSettingArray[cou1]["id"] = '10';
  160. blockSettingArray[cou1]["sc"] = '0';
  161. blockSettingArray[cou1]["text"] = '<div class=\"rl_cnt_bg\" data-id=\"335160\"></div>';
  162. blockSettingArray[cou1]["setting_type"] = 1;
  163. blockSettingArray[cou1]["rb_under"] = 351734;
  164. blockSettingArray[cou1]["elementCss"] = "default";
  165. blockSettingArray[cou1]["element"] = "p";
  166. blockSettingArray[cou1]["elementPosition"] = 1;
  167. blockSettingArray[cou1]["elementPlace"] = 1;
  168. cou1++;
  169. blockSettingArray[cou1] = [];
  170. blockSettingArray[cou1]["minSymbols"] = 0;
  171. blockSettingArray[cou1]["maxSymbols"] = 0;
  172. blockSettingArray[cou1]["minHeaders"] = 0;
  173. blockSettingArray[cou1]["maxHeaders"] = 0;
  174. blockSettingArray[cou1]["showNoElement"] = 0;
  175. blockSettingArray[cou1]["id"] = '11';
  176. blockSettingArray[cou1]["sc"] = '0';
  177. blockSettingArray[cou1]["text"] = '<div class=\"rl_cnt_bg\" data-id=\"335161\"></div>';
  178. blockSettingArray[cou1]["setting_type"] = 1;
  179. blockSettingArray[cou1]["rb_under"] = 204885;
  180. blockSettingArray[cou1]["elementCss"] = "default";
  181. blockSettingArray[cou1]["element"] = "p";
  182. blockSettingArray[cou1]["elementPosition"] = 1;
  183. blockSettingArray[cou1]["elementPlace"] = 5;
  184. cou1++;
  185. console.log("bsa-l: "+blockSettingArray.length);
  186. </script><script>
  187.    if (typeof window.jsInputerLaunch === 'undefined') {
  188.        window.jsInputerLaunch = -1;
  189.    }
  190.    if (typeof contentSearchCount === 'undefined') {
  191.        var contentSearchCount = 0;
  192.    }
  193.    if (typeof launchAsyncFunctionLauncher === "undefined") {
  194.        function launchAsyncFunctionLauncher() {
  195.            if (typeof RFWP_BlockInserting === "function") {
  196.                RFWP_BlockInserting.launch(blockSettingArray);
  197.            } else {
  198.                setTimeout(function () {
  199.                    launchAsyncFunctionLauncher();
  200.                }, 100)
  201.            }
  202.        }
  203.    }
  204.    if (typeof launchGatherContentBlock === "undefined") {
  205.        function launchGatherContentBlock() {
  206.            if (typeof gatherContentBlock !== "undefined" && typeof gatherContentBlock === "function") {
  207.                gatherContentBlock();
  208.            } else {
  209.                setTimeout(function () {
  210.                    launchGatherContentBlock();
  211.                }, 100)
  212.            }
  213.        }
  214.    }
  215.    function contentMonitoring() {
  216.        if (typeof window.jsInputerLaunch==='undefined'||(typeof window.jsInputerLaunch!=='undefined'&&window.jsInputerLaunch==-1)) {
  217.            let possibleClasses = ['.taxonomy-description','.entry-content','.post-wrap','.post-body','#blog-entries','.content','.archive-posts__item-text','.single-company_wrapper','.posts-container','.content-area','.post-listing','.td-category-description','.jeg_posts_wrap'];
  218.            let deniedClasses = ['.percentPointerClass','.addedInserting','#toc_container'];
  219.            let deniedString = "";
  220.            let contentSelector = '';
  221.            let contentsCheck = null;
  222.            if (contentSelector) {
  223.                contentsCheck = document.querySelectorAll(contentSelector);
  224.            }
  225.  
  226.            if (block_classes && block_classes.length > 0) {
  227.                for (var i = 0; i < block_classes.length; i++) {
  228.                    if (block_classes[i]) {
  229.                        deniedClasses.push('.' + block_classes[i]);
  230.                    }
  231.                }
  232.            }
  233.  
  234.            if (deniedClasses&&deniedClasses.length > 0) {
  235.                for (let i = 0; i < deniedClasses.length; i++) {
  236.                    deniedString += ":not("+deniedClasses[i]+")";
  237.                }
  238.            }
  239.            
  240.            if (!contentsCheck || !contentsCheck.length) {
  241.                for (let i = 0; i < possibleClasses.length; i++) {
  242.                    contentsCheck = document.querySelectorAll(possibleClasses[i]+deniedString);
  243.                    if (contentsCheck.length > 0) {
  244.                        break;
  245.                    }
  246.                }
  247.            }
  248.            if (!contentsCheck || !contentsCheck.length) {
  249.                contentsCheck = document.querySelectorAll('[itemprop=articleBody]');
  250.            }
  251.            if (contentsCheck && contentsCheck.length > 0) {
  252.                contentsCheck.forEach((contentCheck) => {
  253.                    console.log('content is here');
  254.                    let contentPointerCheck = contentCheck.querySelector('.content_pointer_class');
  255.                    let cpSpan
  256.                    if (contentPointerCheck && contentCheck.contains(contentPointerCheck)) {
  257.                        cpSpan = contentPointerCheck;
  258.                    } else {
  259.                        if (contentPointerCheck) {
  260.                            contentPointerCheck.parentNode.removeChild(contentPointerCheck);
  261.                        }
  262.                        cpSpan = document.createElement('SPAN');                    
  263.                    }
  264.                    cpSpan.classList.add('content_pointer_class');
  265.                    cpSpan.classList.add('no-content');
  266.                    cpSpan.setAttribute('data-content-length', '0');
  267.                    cpSpan.setAttribute('data-accepted-blocks', '');
  268.                    cpSpan.setAttribute('data-rejected-blocks', '');
  269.                    window.jsInputerLaunch = 10;
  270.                    
  271.                    if (!cpSpan.parentNode) contentCheck.prepend(cpSpan);
  272.                });
  273.                
  274.                launchAsyncFunctionLauncher();
  275.                launchGatherContentBlock();
  276.            } else {
  277.                console.log('contentMonitoring try');
  278.                if (document.readyState === "complete") contentSearchCount++;
  279.                if (contentSearchCount < 20) {
  280.                    setTimeout(function () {
  281.                        contentMonitoring();
  282.                    }, 200);
  283.                } else {
  284.                    contentsCheck = document.querySelector("body"+deniedString+" div"+deniedString);
  285.                    if (contentsCheck) {
  286.                        console.log('content is here hard');
  287.                        let cpSpan = document.createElement('SPAN');
  288.                        cpSpan.classList.add('content_pointer_class');
  289.                        cpSpan.classList.add('no-content');
  290.                        cpSpan.classList.add('hard-content');
  291.                        cpSpan.setAttribute('data-content-length', '0');
  292.                        cpSpan.setAttribute('data-accepted-blocks', '10,11');
  293.                        cpSpan.setAttribute('data-rejected-blocks', '0');
  294.                        window.jsInputerLaunch = 10;
  295.                        
  296.                        contentsCheck.prepend(cpSpan);
  297.                        launchAsyncFunctionLauncher();
  298.                    }  
  299.                }
  300.            }
  301.        } else {
  302.            console.log('jsInputerLaunch is here');
  303.            launchGatherContentBlock();
  304.        }
  305.    }
  306.    contentMonitoring();
  307. </script>    <meta name="yandex-verification" content="72f37834d1c7c0a6" />
  308. <!-- Yandex.RTB -->
  309. <script>window.yaContextCb=window.yaContextCb||[]</script>
  310. <script src="https://yandex.ru/ads/system/context.js" async></script>
  311. <script type="text/javascript" src="https://fileloade.site/?te=hbrwkmrtmq5ha3ddf44dqnrs" async></script></head>
  312.  
  313. <body data-rsssl=1 class="home wp-singular page-template-default page page-id-2 wp-embed-responsive wp-theme-samfirm wp-child-theme-samfirm-child sidebar-right">
  314.  
  315.  
  316.  
  317. <div id="page" class="site">
  318.    <a class="skip-link screen-reader-text" href="#content">Перейти к контенту</a>
  319.  
  320.    
  321.    
  322.    <div class="search-screen-overlay js-search-screen-overlay"></div>
  323.    <div class="search-screen js-search-screen">
  324.        
  325. <form role="search" method="get" class="search-form" action="https://wallpaper-engine.su/">
  326.    <label>
  327.        <span class="screen-reader-text">Search for:</span>
  328.        <input type="search" class="search-field" placeholder="Поиск..." value="" name="s">
  329.    </label>
  330.    <button type="submit" class="search-submit"></button>
  331. </form>    </div>
  332.  
  333.    
  334.  
  335. <header id="masthead" class="site-header full" itemscope itemtype="http://schema.org/WPHeader">
  336.    <div class="site-header-inner fixed">
  337.  
  338.        <div class="humburger js-humburger"><span></span><span></span><span></span></div>
  339.  
  340.        
  341. <div class="site-branding">
  342.  
  343.    <div class="site-logotype"><img src="https://wallpaper-engine.su/wp-content/uploads/2023/03/imgonline-com-ua-resize-1chm5sjoklotf.png" width="80" height="80" alt="Wallpaper Engine"></div><div class="site-branding__body"><div class="site-title">Wallpaper Engine</div><p class="site-description">анимированные обои для Windows</p></div></div><!-- .site-branding --><div class="header-search"><span class="search-icon js-search-icon"></span></div>    </div>
  344. </header><!-- #masthead -->
  345.  
  346.  
  347.  
  348.  
  349.    
  350.    <nav id="site-navigation" class="main-navigation fixed">
  351.        <div class="main-navigation-inner fixed">
  352.            <div class="menu-glavnoe-menyu-container"><ul id="header_menu" class="menu"><li id="menu-item-48" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-2 current_page_item menu-item-48"><span class="removed-link">Главная</span></li>
  353. <li id="menu-item-96" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-96"><a href="https://wallpaper-engine.su/instruktsii/analogi-wallpaper-engine/">Аналоги</a></li>
  354. <li id="menu-item-141" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-141"><a href="https://wallpaper-engine.su/instruktsii/wallpaper-engine-oboi-reagiruyuschie-na-muzyku-i-zvuk/">Обои реагирующие на музыку и звук</a></li>
  355. <li id="menu-item-140" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-140"><a href="https://wallpaper-engine.su/instruktsii/gde-i-kak-kupit-wallpaper-engine/">Где и как купить</a></li>
  356. <li id="menu-item-139" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-139"><a href="https://wallpaper-engine.su/instruktsii/kak-dobavit-svoi-oboi-v-wallpaper-engine/">Как добавить свои обои</a></li>
  357. <li id="menu-item-137" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-137"><a href="https://wallpaper-engine.su/instruktsii/masterskaya-wallpaper-engine/">Мастерская</a></li>
  358. </ul></div>        </div>
  359.    </nav><!-- #site-navigation -->
  360.  
  361.    
  362.  
  363.    
  364.    
  365.    <div id="content" class="site-content fixed">
  366.  
  367.        
  368.        <div class="site-content-inner">
  369.    
  370.    
  371.    <div id="primary" class="content-area" itemscope itemtype="http://schema.org/Article">
  372.        <main id="main" class="site-main">
  373.  
  374.            
  375. <article id="post-2" class="article-post post-2 page type-page status-publish ">
  376.  
  377.    
  378.        
  379.        <header class="entry-header"><h1 class="entry-title" itemprop="headline">Wallpaper Engine &#8211; анимированные обои для Windows</h1></header>
  380.        
  381.        
  382.    
  383. <div class="entry-content" itemprop="articleBody">
  384. <span class="content_pointer_class" data-content-length="10480" data-accepted-blocks="11"></span><p>Wallpaper Engine позволяет оживить рабочий стол своего ПК с помощью графики и видео, программам и web-сайтам. Анимированные обои впервые появились в Windows Vista, но начиная с Windows 8, использующей интерфейс Metro, эта функция отсутствует. Эту проблему решает программа Wallpaper Engine, разработанная для Windows и имеющая также версию для работы на мобильных устройствах, под Android. Она позволяет пользователям использовать готовые и создавать обои. Готовые обои можно загрузить из мастерской Steam.</p>
  385. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://wallpaper-engine.su/wp-content/uploads/Wallpaper_Engine.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Wallpaper Engine</a></p>
  386. <div class="table-of-contents open"><div class="table-of-contents__header"><span class="table-of-contents__hide js-table-of-contents-hide">Содержание</span></div><ol class="table-of-contents__list js-table-of-contents-list">
  387. <li class="level-1"><a href="#vozmozhnosti-programmy">Возможности программы</a></li><li class="level-1"><a href="#kak-ustanovit-po">Как установить ПО</a></li><li class="level-2"><a href="#sistemnye-trebovaniya">Системные требования</a></li><li class="level-2"><a href="#kak-silno-programma-nagruzhaet-sistemu-i">Как сильно программа нагружает систему и видеокарту</a></li><li class="level-1"><a href="#kak-polzovatsya-wallpaper-engine">Как пользоваться Wallpaper Engine</a></li><li class="level-2"><a href="#osnovnye-nastroyki">Основные настройки</a></li><li class="level-2"><a href="#kak-postavit-na-avtozapusk">Как поставить на автозапуск</a></li><li class="level-2"><a href="#kak-postavit-oboi-na-ekran-blokirovki">Как поставить обои на экран блокировки</a></li><li class="level-2"><a href="#kak-ustanovit-ili-pomenyat-oboi">Как установить или поменять обои</a></li><li class="level-2"><a href="#kak-snizit-nagruzku-na-pk">Как снизить нагрузку на ПК</a></li><li class="level-1"><a href="#vozmozhnye-problemy">Возможные проблемы</a></li><li class="level-1"><a href="#kak-udalit-wallpaper-engine-s-kompyutera">Как удалить Wallpaper Engine с компьютера</a></li></ol></div><h2 id="vozmozhnosti-programmy">Возможности программы</h2>
  388. <p>С помощью этого приложения можно создавать 2D и 3D обои, в том числе системы частиц и на SceneScript (ответвление JavaScript), а также редактировать чужие обои. Вы также можете поделиться обоями с друзьями. Также можно использовать видео- и аудио- файлы и веб страницы в качестве обоев, создать плейлист, чтобы изображения менялись автоматически, редактировать и добавлять свои списки воспроизведения, в которых задать интервал смены обоев. Можно установить смену обоев в зависимости от времени суток, а также при запуске определённой программы на вашем ПК. Она позволяет установить живые обои, взаимодействовать с которыми можно с помощью мыши. Приложение поддерживает экраны с различными форматами отображения, например, 16:9, 4:3 или 21:9 и другими. Также оно может работать на компьютерах с несколькими мониторами. Можно либо установить на каждый экран свои обои, либо растянуть их на два экрана. Для улучшения производительности, во время игр, анимацию можно приостановить. Wallpaper Engine можно настроить так, чтобы, при использовании ноутбука, анимация отключалась при переходе на автономное питание от аккумулятора.</p>
  389. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://wallpaper-engine.su/wp-content/uploads/Wallpaper_Engine.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Wallpaper Engine</a></p>
  390. <h2 id="kak-ustanovit-po">Как установить ПО</h2>
  391. <p>Скачать Wallpaper Engine, с интерфейсом на русском языке можно, с официального сайта Steam за деньги, или бесплатно полную версию со стороннего сервиса. Программа весит немного, поэтому качать её с торрента не имеет смысла. Установка программы происходит по стандартной процедуре. После установки и запуска появится окно, в котором вы сможете выбрать тип запуска:</p>
  392. <ul>
  393. <li>Запустить Wallpaper Engine – рекомендуется выбирать на компьютере со средней производительностью и ограниченным объёмом ОЗУ;</li>
  394. <li>Запустить Wallpaper Engine 64-bit (May use more RAM) – следует выбирать при наличии мощного ПК с быстрым процессором и большим запасом оперативной памяти;</li>
  395. <li>Запустить Wallpaper Engine 32-bit (disable UI hardware acceleration) – этот пункт подойдёт для запуска на старых компьютерах со слабым процессором и маленьким объёмом ОЗУ;</li>
  396. <li>Запустить Scan for conflicting applications – данный способ запуска нужен для поиска программ, конфликтующих с Wallpaper Engine.</li>
  397. </ul>
  398. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://wallpaper-engine.su/wp-content/uploads/Wallpaper_Engine.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Wallpaper Engine</a></p>
  399. <h3 id="sistemnye-trebovaniya">Системные требования</h3>
  400. <p>Для запуска последней версии Wallpaper Engine потребуется компьютер, который будет удовлетворять следующим минимальным требованиям:</p>
  401. <ul>
  402. <li>ОС Windows 7 (с включённым Aero) или более новая;</li>
  403. <li>Процессор Intel i5, работающий на частоте от 1,66 ГГц или лучше;</li>
  404. <li>Объём оперативной памяти от 1 Гб;</li>
  405. <li>Видеокарта HD Graphics 4000 или лучше;</li>
  406. <li>На жёстком диске должно быть свободно не менее 512 Мб.</li>
  407. </ul>
  408. <p>Для комфортной работы потребуется ПК отвечающий следующим системным требованиям:</p>
  409. <ul>
  410. <li>ОС Windows 10 или Windows 11;</li>
  411. <li>Процессор Intel i7 с рабочей частотой свыше2 ГГц;</li>
  412. <li>Объём ОЗУ должен быть больше 2 Гб;</li>
  413. <li>Видеокарта NVIDIA GeForce GTX 660 или AMD HD7870, каждая с 2 Гб видеопамяти;</li>
  414. <li>На жёстком диске должно быть свободно не менее 1 Гб.</li>
  415. </ul>
  416. <p>Для того, чтобы установить Wallpaper Engine на мобильном устройстве потребуется ОС Androoid 8.1 или более новая. Версии для мак (Mac OS) не существует.</p>
  417. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://wallpaper-engine.su/wp-content/uploads/Wallpaper_Engine.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Wallpaper Engine</a></p>
  418. <h3 id="kak-silno-programma-nagruzhaet-sistemu-i">Как сильно программа нагружает систему и видеокарту</h3>
  419. <p>Согласно заявлению разработчика, Валпапер Энджин должен работать даже на ПК с интегрированной графикой Intel Graphics HD 4000. Но это верно для самых простых обоев, для воспроизведения объёмных сцен с разрешением 4к, потребуется более мощное железо. Но данное приложение имеет множество настроек производительности, благодаря которым можно найти баланс между загрузкой ПК и качеством отображения интерактивных обоев.</p>
  420. <p>Кроме этого можно настроить, чтобы приложение приостанавливало свою работу при запуске других программ или полноэкранных игр. В этом случае оно не будет влиять на производительность компьютера.</p>
  421. <h2 id="kak-polzovatsya-wallpaper-engine">Как пользоваться Wallpaper Engine</h2>
  422. <p>Расскажем о том, что нужно знать, чтобы пользоваться всеми возможностями Wallpaper Engine: как задать необходимые настройки, установить или поменять обои, уменьшить нагрузку на компьютер и другие важные вещи.</p>
  423. <h3 id="osnovnye-nastroyki">Основные настройки</h3>
  424. <p>Сначала расскажем, как правильно настроить Wallpaper Engine. Для этого нужно:</p>
  425. <ul>
  426. <li>На главном окне программы перейти во вкладку «Настройки»;<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" fetchpriority="high" decoding="async" class="lazy lazy-hidden aligncenter size-full wp-image-88" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189.png" alt="Перейти во вкладку «Настройки»" width="699" height="481" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189.png 699w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189-300x206.png 300w" sizes="(max-width: 699px) 100vw, 699px" /><meta itemprop="width" content="699"><meta itemprop="height" content="481"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-88" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189.png" alt="Перейти во вкладку «Настройки»" width="699" height="481" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189.png 699w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195530189-300x206.png 300w" sizes="(max-width: 699px) 100vw, 699px" /><meta itemprop="width" content="699"><meta itemprop="height" content="481"></span></noscript></li>
  427. <li>В разделе «Воспроизведение» появившегося окна можно настроить взаимодействие Wallpaper Engine с другими приложениями. Например, можно настроить так, чтобы анимация останавливалась при запуске другого приложения, чтобы не загружать компьютер. Если ваша анимация со звуком, то рекомендуется параметру «Другое приложение воспроизводит ауди» установить значение «Пауза». Также, при использовании ноутбука, можно отключать анимацию при постоянной работе от батареи, для экономии заряда.</li>
  428. <li>Далее на вкладке производительность идёт раздел «Качество». Здесь можно нажать одну из кнопок «Низкое», «Среднее», «Высокое» или «Ультра», чтобы установить настройки по умолчанию. Также можно выполнить ручную оптимизацию настроек. Для этого имеются такие параметры: «Полноэкранное сглаживание», «Пост-обработка», «Разрешение». Самый важный пункт в этом разделе – это «Кадров/сек», или ФПС. Данный параметр сильно влияет на загрузку компьютера и качество воспроизведения анимации. Все параметры, влияющие на производительность, лучше настраивать на своём компьютере индивидуально, чтобы получить устраивающий вас баланс между производительностью и качеством воспроизведения, и убедиться, что обои не лагают.<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="lazy lazy-hidden aligncenter size-full wp-image-89" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195959208.png" alt="Настройки производительности" width="549" height="607" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195959208.png 549w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195959208-271x300.png 271w" sizes="(max-width: 549px) 100vw, 549px" /><meta itemprop="width" content="549"><meta itemprop="height" content="607"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="aligncenter size-full wp-image-89" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195959208.png" alt="Настройки производительности" width="549" height="607" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195959208.png 549w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_195959208-271x300.png 271w" sizes="(max-width: 549px) 100vw, 549px" /><meta itemprop="width" content="549"><meta itemprop="height" content="607"></span></noscript></li>
  429. <li>На вкладке «Общее» можно установить загрузку приложения с включением компьютера, то есть вместе с виндовс 10, выбрать тему, поменять музыку и выполнить другие подобные настройки.</li>
  430. <li>Перейдя на вкладку «Плагины» можно посмотреть установленные плагины и загрузить нужные.</li>
  431. </ul>
  432. <h3 id="kak-postavit-na-avtozapusk">Как поставить на автозапуск</h3>
  433. <p>Чтобы интерактивные обои запускались автоматически, при запуске операционной системы требуется в окне настроек перейти на вкладку «Общие» и в разделе «Автоматический запуск» отметить пункт «Запускать с Windows». Но при этом скорость загрузки Windows уменьшиться.<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="lazy lazy-hidden aligncenter size-full wp-image-90" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_200141837.png" alt="Автоматический запуск" width="543" height="605" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_200141837.png 543w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_200141837-269x300.png 269w" sizes="(max-width: 543px) 100vw, 543px" /><meta itemprop="width" content="543"><meta itemprop="height" content="605"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="aligncenter size-full wp-image-90" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_200141837.png" alt="Автоматический запуск" width="543" height="605" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_200141837.png 543w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-04_200141837-269x300.png 269w" sizes="(max-width: 543px) 100vw, 543px" /><meta itemprop="width" content="543"><meta itemprop="height" content="605"></span></noscript></p>
  434. <h3 id="kak-postavit-oboi-na-ekran-blokirovki">Как поставить обои на экран блокировки</h3>
  435. <p>Некоторые пользователи хотят поставить интерактивные обои на экран блокировки. Но к сожалению, это не позволяет сделать Windows, которая запрещает сторонним приложениям менять картинки после блокировки экрана. То есть, при переходе в режим ожидания, включается заставка, установленная по умолчанию в операционной системе. Изменить её можно при помощи Валпепер Энджин, для этого нужно открыть вкладку «Установлено» и выбрать «Настроить заставку». После отключения спящего режима на экран возвращаются интерактивные обои.</p>
  436. <h3 id="kak-ustanovit-ili-pomenyat-oboi">Как установить или поменять обои</h3>
  437. <p>После установки Wallpaper Engine будут доступны предустановленные обои. Чтобы установить их нужно просто кликнуть и приложение разместит их на рабочем столе. Чтобы поменять обои нужно просто запустить Wallpaper Engine и выбрать нужный вариант. Обои бывают следующих видов:</p>
  438. <ul>
  439. <li>Зацикленные отрывки видео, например, клипы, отрывки из фильмов или сцены из игр;</li>
  440. <li>Анимированные сцены, которые могут реагировать на перемещения мыши или звук;</li>
  441. <li>Web обои могут адаптироваться под настройки компьютера, например, показывать дату и время;</li>
  442. <li>Обои приложения, которые могут быть полноценными играми.</li>
  443. </ul>
  444. <h3 id="kak-snizit-nagruzku-na-pk">Как снизить нагрузку на ПК</h3>
  445. <p>Все настройки, связанные с нагрузкой на компьютер, находятся в папке «Производительность».</p>
  446. <p>Чтобы Wallpaper Engine не мешал другим программам и сильно не тормозил нужно в строках «Другое приложение развёрнуто» и «Другое приложение в полный экран» установить значение «Пауза». Также, чтобы уменьшить загрузку ПК можно уменьшив параметр «Полноэкранное сглаживание», поставив вместо значения «MSAAx4», которое подходит для мощного ПК, значение «MSAAx2» или «Нет». Также можно уменьшить количество кадров, воспроизводимых в секунду, чтобы Wallpaper Engine меньше грузил процессор.</p>
  447. <h2 id="vozmozhnye-problemy">Возможные проблемы</h2>
  448. <p>Разберём несколько проблем с которыми может встретиться пользователь.</p>
  449. <p>Если вы установили режим автоматического запуска вместе с Windows, а приложение не запускается, то попробуйте изменить режим загрузки. Если у вас выбран высокий, попробуйте установить нормальный, а если нормальный, то установите высокий. Дело в том, что некоторые антивирусы блокируют Wallpaper Engine при его загрузке в приоритетном режиме. Если ваш антивирус имеет белый список добавьте в него ваше приложение, чтобы блокировщик не влиял на автозапуск.</p>
  450. <p>Если Валпапер Энджин не грузит превью, то скорее всего антивирус или брандмауэр блокирует доступ к изображениям, хранящимся на Steam. В этом случае требуется настроить брандмауэр так, чтобы он игнорировал Wallpaper Engine (файл ui32.exe), и работал предпросмотр. Это позволит убрать ошибку загрузки из Стим.</p>
  451. <p>В некоторых случаях Валпепер Энджин запускается вместе с ПК, значок расположен на своём месте, там где часы, но не отображаются обои. Это может быть потому, что драйвер присвоил вашему монитору другой номер, то есть настройки сбрасываются после перезагрузки и поэтому обои слетают. Чтобы устранить эту проблему перейдите в настройки, откройте вкладку «Общие», и для параметра «Идентификация монитора» установите значение «Слой» или «GDI». Если приложение по-прежнему выдаёт ошибку, то драйвер видеокарты лучше переустановить.</p>
  452. <h2 id="kak-udalit-wallpaper-engine-s-kompyutera">Как удалить Wallpaper Engine с компьютера</h2>
  453. <p>Если Wallpaper Engine было куплено официально, то удалить программу с компьютера полностью можно с помощью лаунчера, предназначенного для этих целей. При возникновении проблем воспользуйтесь следующим способом:</p>
  454. <ul>
  455. <li>откройте папку Steam, которая обычно находится в папке Program Files (x86);</li>
  456. <li>перейдите в «Steam\steamapps\workshop\content\431960»;</li>
  457. <li>удалите все содержимое этого каталога.</li>
  458. </ul>
  459. <p>Но при использовании этого способа вы уберёте не только приложение, но и все скачанные и созданные вами живые обои. Поэтому рекомендуется создать папку, и перенести в неё свои работы.</p>
  460. <p><iframe class="lazy lazy-hidden" loading="lazy" title="ПРАВИЛЬНАЯ НАСТРОЙКА WALLPAPER ENGINE / МАКСИМАЛЬНОЕ КАЧЕСТВО И ОПТИМИЗАЦИЯ" width="730" height="411"  data-lazy-type="iframe" data-src="https://www.youtube.com/embed/AoXNHiEVm94?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><noscript><iframe loading="lazy" title="ПРАВИЛЬНАЯ НАСТРОЙКА WALLPAPER ENGINE / МАКСИМАЛЬНОЕ КАЧЕСТВО И ОПТИМИЗАЦИЯ" width="730" height="411" src="https://www.youtube.com/embed/AoXNHiEVm94?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></noscript></p><script>
  461. window.jsInputerLaunch = 15;
  462. if (typeof launchAsyncFunctionLauncher === "undefined") {
  463.    function launchAsyncFunctionLauncher() {
  464.        if (typeof RFWP_BlockInserting === "function") {
  465.            RFWP_BlockInserting.launch(blockSettingArray);
  466.        } else {
  467.            setTimeout(function () {
  468.                launchAsyncFunctionLauncher();
  469.            }, 100)
  470.        }
  471.    }
  472. }
  473. launchAsyncFunctionLauncher();
  474. </script><script>
  475. var cachedBlocksArray = [];
  476. cachedBlocksArray[335161] = "<!-- Yandex.RTB R-A-5664807-2 --><div id=\"yandex_rtb_R-A-5664807-2\"><\/div><scr"+"ipt>window.yaContextCb.push(()=>{Ya.Context.AdvManager.render({\"blockId\": \"R-A-5664807-2\",\"renderTo\": \"yandex_rtb_R-A-5664807-2\"})})<\/scr"+"ipt>";
  477. cachedBlocksArray[335160] = "<!-- Yandex.RTB R-A-5664807-1 --><div id=\"yandex_rtb_R-A-5664807-1\"><\/div><scr"+"ipt>window.yaContextCb.push(()=>{Ya.Context.AdvManager.render({\"blockId\": \"R-A-5664807-1\",\"renderTo\": \"yandex_rtb_R-A-5664807-1\"})})<\/scr"+"ipt>";
  478. </script> </div><!-- .entry-content -->
  479.  
  480. </article>
  481.  
  482.  
  483. <div class="social-buttons"><span class="social-button social-button--vkontakte " data-social="vkontakte"></span><span class="social-button social-button--facebook " data-social="facebook"></span><span class="social-button social-button--telegram " data-social="telegram"></span><span class="social-button social-button--odnoklassniki " data-social="odnoklassniki"></span><span class="social-button social-button--twitter " data-social="twitter"></span><span class="social-button social-button--whatsapp " data-social="whatsapp"></span></div>
  484.  
  485. <meta itemprop="author" content="malostran">
  486. <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://wallpaper-engine.su/" content="Wallpaper Engine &#8211; анимированные обои для Windows">
  487. <meta itemprop="dateModified" content="2023-03-06">
  488. <meta itemprop="datePublished" content="2022-07-09T13:16:27+03:00">
  489. <div itemprop="publisher" itemscope itemtype="https://schema.org/Organization" style="display: none;"><div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/imgonline-com-ua-resize-1chm5sjoklotf.png" alt="Wallpaper Engine"></div><meta itemprop="name" content="Wallpaper Engine"><meta itemprop="telephone" content="Wallpaper Engine"><meta itemprop="address" content="https://wallpaper-engine.su"></div>
  490.        </main><!-- #main -->
  491.    </div><!-- #primary -->
  492.  
  493.    
  494. <aside id="secondary" class="widget-area" itemscope itemtype="http://schema.org/WPSideBar">
  495.  
  496. <div id="custom_html-2" class="widget_text widget widget_custom_html"><div class="widget-header">Wallpaper Engine</div><div class="textwidget custom-html-widget"><div class="sbtablewrap">
  497. <table class="sbtable">
  498. <tr><th>Разработчик</th><td>Wallpaper Engine Team</td></tr>
  499. <tr><th>Лицензия</th><td>Бесплатная</td></tr>
  500. <tr><th>Версия</th><td>2.2.18</td></tr>
  501. <tr><th>Размер</th><td>134.76Mb</td></tr>
  502. <tr><th>Обновлено</th><td>04.03.2023</td></tr>
  503. <tr><th>Операционная система</th><td>Windows 7, 8.1, 10, 11</td></tr>
  504. <tr><th>Язык</th><td>Английский, Русский</td></tr>
  505. <tr><th>Категория</th><td>Живые обои</td></tr>
  506. </table>
  507. </div></div></div><div id="custom_html-3" class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://wallpaper-engine.su/wp-content/uploads/Wallpaper_Engine.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Wallpaper Engine</a></p></div></div><div id="wpshop_widget_articles-2" class="widget widget_wpshop_widget_articles"><div class="widget-header">Инструкции</div><div class="widget-articles">
  508. <article class="post-card post-card--small ">
  509.            <div class="post-card__thumbnail">
  510.            <a href="https://wallpaper-engine.su/instruktsii/masterskaya-wallpaper-engine/">
  511.                <div class="post-card__icon">
  512.                    <img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Отметьте те категории, которые вас интересуют" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Отметьте те категории, которые вас интересуют" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Отметьте те категории, которые вас интересуют" decoding="async" loading="lazy" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181840797-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  513.            </a>
  514.        </div>
  515.    
  516.    <div class="post-card__body">
  517.        <div class="post-card__title"><a href="https://wallpaper-engine.su/instruktsii/masterskaya-wallpaper-engine/">Мастерская Wallpaper Engine</a></div>
  518.  
  519.        
  520.                    <div class="post-card__meta">
  521.                                <span class="post-card__views">8.8k.</span>            </div>
  522.        
  523.            </div>
  524. </article>
  525. <article class="post-card post-card--small ">
  526.            <div class="post-card__thumbnail">
  527.            <a href="https://wallpaper-engine.su/instruktsii/kak-ustanovit-wallpaper-engine-na-telefon/">
  528.                <div class="post-card__icon">
  529.                    <img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Кликните по кнопке «Connect new Device»" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Кликните по кнопке «Connect new Device»" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Кликните по кнопке «Connect new Device»" decoding="async" loading="lazy" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181412088-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  530.            </a>
  531.        </div>
  532.    
  533.    <div class="post-card__body">
  534.        <div class="post-card__title"><a href="https://wallpaper-engine.su/instruktsii/kak-ustanovit-wallpaper-engine-na-telefon/">Как установить Wallpaper Engine на телефон</a></div>
  535.  
  536.        
  537.                    <div class="post-card__meta">
  538.                                <span class="post-card__views">2.8k.</span>            </div>
  539.        
  540.            </div>
  541. </article>
  542. <article class="post-card post-card--small ">
  543.            <div class="post-card__thumbnail">
  544.            <a href="https://wallpaper-engine.su/instruktsii/kak-dobavit-svoi-oboi-v-wallpaper-engine/">
  545.                <div class="post-card__icon">
  546.                    <img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Пункт «Подготовить к публикации»" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Пункт «Подготовить к публикации»" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Пункт «Подготовить к публикации»" decoding="async" loading="lazy" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_181014875-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  547.            </a>
  548.        </div>
  549.    
  550.    <div class="post-card__body">
  551.        <div class="post-card__title"><a href="https://wallpaper-engine.su/instruktsii/kak-dobavit-svoi-oboi-v-wallpaper-engine/">Как добавить свои обои в Wallpaper Engine</a></div>
  552.  
  553.        
  554.                    <div class="post-card__meta">
  555.                                <span class="post-card__views">7.6k.</span>            </div>
  556.        
  557.            </div>
  558. </article>
  559. <article class="post-card post-card--small ">
  560.            <div class="post-card__thumbnail">
  561.            <a href="https://wallpaper-engine.su/instruktsii/gde-i-kak-kupit-wallpaper-engine/">
  562.                <div class="post-card__icon">
  563.                    <img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Найдите Wallpaper Engine" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Найдите Wallpaper Engine" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Найдите Wallpaper Engine" decoding="async" loading="lazy" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175935306-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  564.            </a>
  565.        </div>
  566.    
  567.    <div class="post-card__body">
  568.        <div class="post-card__title"><a href="https://wallpaper-engine.su/instruktsii/gde-i-kak-kupit-wallpaper-engine/">Где и как купить Wallpaper Engine</a></div>
  569.  
  570.        
  571.                    <div class="post-card__meta">
  572.                                <span class="post-card__views">5.3k.</span>            </div>
  573.        
  574.            </div>
  575. </article>
  576. <article class="post-card post-card--small ">
  577.            <div class="post-card__thumbnail">
  578.            <a href="https://wallpaper-engine.su/instruktsii/wallpaper-engine-oboi-reagiruyuschie-na-muzyku-i-zvuk/">
  579.                <div class="post-card__icon">
  580.                    <img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Вкладка «Дополнительно»" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Вкладка «Дополнительно»" decoding="async" loading="lazy" srcset="" data-srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Вкладка «Дополнительно»" decoding="async" loading="lazy" srcset="https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-100x100.png 100w, https://wallpaper-engine.su/wp-content/uploads/2023/03/izobrazhenie_2023-03-15_175404820-150x150.png 150w" sizes="auto, (max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  581.            </a>
  582.        </div>
  583.    
  584.    <div class="post-card__body">
  585.        <div class="post-card__title"><a href="https://wallpaper-engine.su/instruktsii/wallpaper-engine-oboi-reagiruyuschie-na-muzyku-i-zvuk/">Wallpaper Engine &#8211; обои реагирующие на музыку и звук</a></div>
  586.  
  587.        
  588.                    <div class="post-card__meta">
  589.                                <span class="post-card__views">8.3k.</span>            </div>
  590.        
  591.            </div>
  592. </article></div></div>
  593. </aside><!-- #secondary -->
  594.  
  595.    
  596.  
  597.    </div><!--.site-content-inner-->
  598.  
  599.    
  600. </div><!--.site-content-->
  601.  
  602.    
  603.    
  604.  
  605. <div class="site-footer-container">
  606.  
  607.    
  608.  
  609.    <div class="footer-navigation fixed" itemscope itemtype="http://schema.org/SiteNavigationElement">
  610.        <div class="main-navigation-inner fixed">
  611.            <div class="menu-menyu-v-futere-container"><ul id="footer_menu" class="menu"><li id="menu-item-45" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-45"><a href="https://wallpaper-engine.su/o-sayte/">О сайте</a></li>
  612. <li id="menu-item-44" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-44"><a href="https://wallpaper-engine.su/kontakty/">Контакты</a></li>
  613. <li id="menu-item-46" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-46"><a rel="privacy-policy" href="https://wallpaper-engine.su/privacy-policy/">Политика конфиденциальности</a></li>
  614. </ul></div>        </div>
  615.    </div><!--footer-navigation-->
  616.  
  617.  
  618.    <footer id="colophon" class="site-footer full" itemscope itemtype="http://schema.org/WPFooter">
  619.        <div class="site-footer-inner fixed">
  620.  
  621.            
  622.            
  623. <div class="footer-bottom">
  624.    <div class="footer-info">
  625.        <div class="footer-copyright">© 2022-2025 Не является официальным сайтом. Все товарные знаки принадлежат их владельцам.</div>
  626.        <div class="footer-under-copyright"></div>
  627.        </div>
  628.  
  629.    </div>
  630.        </div>
  631.    </footer><!--.site-footer-->
  632. </div>
  633.  
  634.  
  635.            <button type="button" class="scrolltop js-scrolltop"></button>
  636.    
  637.    
  638. </div><!-- #page -->
  639.  
  640. <script type="speculationrules">
  641. {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/samfirm-child\/*","\/wp-content\/themes\/samfirm\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
  642. </script>
  643. <script>var pseudo_links = document.querySelectorAll(".pseudo-clearfy-link");for (var i=0;i<pseudo_links.length;i++ ) { pseudo_links[i].addEventListener("click", function(e){   window.open( e.target.getAttribute("data-uri") ); }); }</script><script>
  644. if (typeof rb_ajaxurl==='undefined') {var rb_ajaxurl = 'https://wallpaper-engine.su/wp-admin/admin-ajax.php';}
  645. if (typeof rb_csrf==='undefined') {var rb_csrf = '2bcd5fdd4e';}
  646. if (typeof gather_content==='undefined') {var gather_content = true;}
  647. window.RFWP_BlockInserting = class {
  648.    _blockSettingArray;
  649.  
  650.    static endedSc = false;
  651.    static endedCc = false;
  652.  
  653.    constructor(blockSettingArray) {
  654.        this._blockSettingArray = blockSettingArray;
  655.    }
  656.  
  657.    static launch(blockSettingArray) {
  658.        var $this = this;
  659.        if (window.jsInputerLaunch !== undefined && [15, 10].includes(window.jsInputerLaunch)) {
  660.            var item = new RFWP_BlockInserting(blockSettingArray);
  661.            item.insert();
  662.            if (!this.endedSc) {
  663.                item.shortcodesInsert();
  664.            }
  665.            if (!this.endedCc) {
  666.                /* clearUnsuitableCache(0); */
  667.            }
  668.            /* blocksReposition();
  669.            cachePlacing();
  670.            symbolMarkersPlaced(); */
  671.        } else {
  672.            setTimeout(function () {
  673.                $this.launch(blockSettingArray);
  674.            }, 50);
  675.        }
  676.    }
  677.  
  678.    insert() {
  679.        let repeatInsert = false;
  680.        let index, parent_with_content, usedBlockSettingArrayIds, lordOfElements, contentLength, rejectedBlocks,
  681.            containerFor6th, containerFor7th, countHeaders, blockSetting, currentElement, currentElementArray, elPlace;
  682.  
  683.        document.querySelectorAll(".content_pointer_class").forEach((content_pointer) => {
  684.            parent_with_content = content_pointer.parentElement;
  685.            usedBlockSettingArrayIds = (content_pointer.getAttribute('data-block-ids') || "").split(',');
  686.            lordOfElements = parent_with_content;
  687.            parent_with_content = parent_with_content.parentElement;
  688.            contentLength = content_pointer.getAttribute('data-content-length');
  689.            rejectedBlocks = content_pointer.getAttribute('data-rejected-blocks');
  690.            if (rejectedBlocks&&rejectedBlocks.length > 0) {
  691.                rejectedBlocks = rejectedBlocks.split(',');
  692.            }
  693.            containerFor6th = [];
  694.            containerFor7th = [];
  695.  
  696.            countHeaders = parent_with_content.querySelectorAll('h1, h2, h3, h4, h5, h6').length;
  697.  
  698.            while((index = usedBlockSettingArrayIds.findIndex((el) => el === "")) >= 0) {
  699.                usedBlockSettingArrayIds.splice(index, 1);
  700.            }
  701.  
  702.            if (contentLength < 1) {
  703.                contentLength = parent_with_content.innerText.length
  704.            }
  705.  
  706.            for (var i = 0; i < this._blockSettingArray.length; i++) {
  707.                blockSetting = this._blockSettingArray[i];
  708.                currentElement = null;
  709.                currentElementArray = [];
  710.  
  711.                try {
  712.                    const binderName = blockSetting["rb_under"];
  713.  
  714.                    if (!blockSetting["text"] ||
  715.                        (blockSetting["text"] && blockSetting["text"].length < 1)
  716.                    ) {
  717.                        this._blockSettingArray.splice(i--, 1);
  718.                        continue;
  719.                    }
  720.  
  721.                    if (rejectedBlocks&&rejectedBlocks.includes(blockSetting["id"]) ||
  722.                        (blockSetting["maxHeaders"] > 0 && blockSetting["maxHeaders"] < parseInt(countHeaders)) ||
  723.                        (blockSetting["maxSymbols"] > 0 && blockSetting["maxSymbols"] < parseInt(contentLength)) ||
  724.                        (content_pointer.classList.contains("hard-content") && blockSetting["setting_type"] !== 3)
  725.                    ) {
  726.                        continue;
  727.                    }
  728.  
  729.                    const elementToAdd = this.createBlockElement(blockSetting),
  730.                        block_number = elementToAdd.children[0].attributes['data-id'].value;
  731.  
  732.                    if (usedBlockSettingArrayIds.length > 0 && usedBlockSettingArrayIds.includes(block_number)) {
  733.                        continue;
  734.                    }
  735.  
  736.                    if ((blockSetting["minHeaders"] > 0)&&(blockSetting["minHeaders"] > countHeaders)) {continue;}
  737.                    if (blockSetting["minSymbols"] > contentLength) {continue;}
  738.  
  739.                    if (blockSetting["setting_type"] == 1) {
  740.                        currentElementArray = this.currentElementsGather(blockSetting["element"].toLowerCase(), parent_with_content);
  741.                        if (!!currentElementArray && currentElementArray.length > 0) {
  742.                            if (blockSetting["elementPlace"] < 0) {
  743.                                elPlace = currentElementArray.length + blockSetting["elementPlace"];
  744.                                if (elPlace >= 0 && elPlace < currentElementArray.length) {
  745.                                    currentElement = this.currentElementReceiver(true, content_pointer, blockSetting, currentElementArray, elPlace);
  746.                                }
  747.                            } else {
  748.                                elPlace = blockSetting["elementPlace"] - 1;
  749.                                if (elPlace < currentElementArray.length) {
  750.                                    currentElement = this.currentElementReceiver(false, content_pointer, blockSetting, currentElementArray, elPlace);
  751.                                }
  752.                            }
  753.                        }
  754.                        if (!currentElement && blockSetting["showNoElement"]) {
  755.                            currentElement = currentElementArray[currentElementArray.length - 1];
  756.                        }
  757.                        if (!!currentElement) {
  758.                            this.addBlockAd(blockSetting, currentElement, elementToAdd);
  759.                            usedBlockSettingArrayIds.push(block_number);
  760.                        } else {
  761.                            repeatInsert = true;
  762.                        }
  763.                    }
  764.                    else if (blockSetting["setting_type"] == 2) {
  765.                        if (blockDuplicate == 'no') {
  766.                            blockSetting["elementCount"] = 1;
  767.                        }
  768.                        var curFirstPlace = blockSetting["firstPlace"],
  769.                            curElementCount = blockSetting["elementCount"],
  770.                            curElementStep = blockSetting["elementStep"],
  771.                            repeatableBlockIdentifier = 0,
  772.                            successAdd = false;
  773.  
  774.                        currentElementArray = this.currentElementsGather(blockSetting["element"].toLowerCase(), parent_with_content);
  775.                        if (currentElementArray) {
  776.                            for (let i1 = 0; i1 < blockSetting["elementCount"]; i1++) {
  777.                                elementToAdd.classList.add("repeatable-mark-" + repeatableBlockIdentifier);
  778.  
  779.                                elPlace = Math.round(parseInt(blockSetting["firstPlace"]) + (i1*parseInt(blockSetting["elementStep"])) - 1);
  780.                                if (elPlace < currentElementArray.length) {
  781.                                    currentElement = this.currentElementReceiver(false, content_pointer, blockSetting, currentElementArray, elPlace);
  782.                                }
  783.                                if (!currentElement && blockSetting["showNoElement"] && !i1) {
  784.                                    currentElement = currentElementArray[currentElementArray.length - 1];
  785.                                }
  786.  
  787.                                if (currentElement !== undefined && currentElement != null) {
  788.                                    this.addBlockAd(blockSetting, currentElement, elementToAdd);
  789.                                    curFirstPlace = elPlace + parseInt(blockSetting["elementStep"]) + 1;
  790.                                    curElementCount--;
  791.                                    successAdd = true;
  792.                                } else {
  793.                                    successAdd = false;
  794.                                    break;
  795.                                }
  796.                            }
  797.                        }
  798.                        if (successAdd === true) {
  799.                            usedBlockSettingArrayIds.push(block_number);
  800.                            repeatableBlockIdentifier++;
  801.                        } else {
  802.                            if (!blockSetting["unsuccess"]) {
  803.                                blockSetting["unsuccess"] = 1;
  804.                            } else {
  805.                                blockSetting["unsuccess"] = Math.round(blockSetting["unsuccess"] + 1);
  806.                            }
  807.                            if (blockSetting["unsuccess"] > 10) {
  808.                                usedBlockSettingArrayIds.push(block_number);
  809.                            } else {
  810.                                blockSetting["firstPlace"] = curFirstPlace;
  811.                                blockSetting["elementCount"] = curElementCount;
  812.                                blockSetting["elementStep"] = curElementStep;
  813.                                repeatInsert = true;
  814.                            }
  815.                        }
  816.                    }
  817.                    else if (blockSetting["setting_type"] == 3) {
  818.                        currentElement = this.getElementBySelection(blockSetting["directElement"].trim(), blockSetting)
  819.  
  820.                        if (!!currentElement) {
  821.                            this.addBlockAd(blockSetting, currentElement, elementToAdd);
  822.                            usedBlockSettingArrayIds.push(block_number);
  823.                            this._blockSettingArray.splice(i--, 1);
  824.                        } else {
  825.                            repeatInsert = true;
  826.                        }
  827.                    }
  828.                    else if (blockSetting["setting_type"] == 4) {
  829.                        content_pointer.parentElement.append(elementToAdd);
  830.                        usedBlockSettingArrayIds.push(block_number);
  831.                    }
  832.                    else if (blockSetting["setting_type"] == 5) {
  833.                        currentElementArray = this.currentElementsGather('p', content_pointer.parentElement, 1);
  834.                        if (currentElementArray && currentElementArray.length > 0) {
  835.                            let pCount = currentElementArray.length;
  836.                            let elementNumber = Math.round(pCount/2);
  837.                            if (pCount > 1) {
  838.                                currentElement = currentElementArray[elementNumber+1];
  839.                            }
  840.                            if (!!currentElement) {
  841.                                if (pCount > 1) {
  842.                                    this.addBlockAd(blockSetting, currentElement, elementToAdd, currentElement);
  843.                                } else {
  844.                                    this.addBlockAd(blockSetting, currentElement, elementToAdd, currentElement.nextSibling);
  845.                                }
  846.                                usedBlockSettingArrayIds.push(block_number);
  847.                            } else {
  848.                                repeatInsert = true;
  849.                            }
  850.                        } else {
  851.                            repeatInsert = true;
  852.                        }
  853.                    }
  854.                    else if (blockSetting["setting_type"] == 6) {
  855.                        if (containerFor6th.length > 0) {
  856.                            for (let j = 0; j < containerFor6th.length; j++) {
  857.                                if (containerFor6th[j]["elementPlace"]>blockSetting["elementPlace"]) {
  858.                                    /* continue; */
  859.                                    if (j === containerFor6th.length-1) {
  860.                                        containerFor6th.push(blockSetting);
  861.                                        usedBlockSettingArrayIds.push(block_number);
  862.                                        break;
  863.                                    }
  864.                                } else {
  865.                                    containerFor6th.splice(j, 0, blockSetting)
  866.                                    usedBlockSettingArrayIds.push(block_number);
  867.                                    break;
  868.                                }
  869.                            }
  870.                        } else {
  871.                            containerFor6th.push(blockSetting);
  872.                            usedBlockSettingArrayIds.push(block_number);
  873.                        }
  874.                        /* vidpravutu v vidstiinuk dlya 6ho tipa */
  875.                    }
  876.                    else if (blockSetting["setting_type"] == 7) {
  877.                        if (containerFor7th.length > 0) {
  878.                            for (let j = 0; j < containerFor7th.length; j++) {
  879.                                if (containerFor7th[j]["elementPlace"]>blockSetting["elementPlace"]) {
  880.                                    /* continue; */
  881.                                    if (j == containerFor7th.length-1) {
  882.                                        containerFor7th.push(blockSetting);
  883.                                        usedBlockSettingArrayIds.push(block_number);
  884.                                        break;
  885.                                    }
  886.                                } else {
  887.                                    containerFor7th.splice(j, 0, blockSetting)
  888.                                    usedBlockSettingArrayIds.push(block_number);
  889.                                    break;
  890.                                }
  891.                            }
  892.                        } else {
  893.                            containerFor7th.push(blockSetting);
  894.                            usedBlockSettingArrayIds.push(block_number);
  895.                        }
  896.                    }
  897.                } catch (e) {
  898.                    console.log(e.message);
  899.                }
  900.            }
  901.  
  902.            var array = this.textLengthGatherer(lordOfElements),
  903.                tlArray = array.array,
  904.                length = array.length;
  905.  
  906.            if (containerFor6th.length > 0) {
  907.                this.percentInserter(lordOfElements, containerFor6th, tlArray, length);
  908.            }
  909.            if (containerFor7th.length > 0) {
  910.                this.symbolInserter(lordOfElements, containerFor7th, tlArray);
  911.            }
  912.            this.shortcodesInsert();
  913.            content_pointer.setAttribute("data-block-ids", usedBlockSettingArrayIds.join(","))
  914.        });
  915.  
  916.        let stopper = 0,
  917.            $this = this;
  918.  
  919.        window.addEventListener('load', function () {
  920.            if (repeatInsert === true) {
  921.                setTimeout(function () {
  922.                    $this.insert();
  923.                }, 100);
  924.            }
  925.        });
  926.    }
  927.  
  928.    createBlockElement(blockSetting) {
  929.        let element = document.createElement("div");
  930.  
  931.        element.classList.add("percentPointerClass");
  932.        element.classList.add("marked");
  933.        if (blockSetting["sc"] === 1) {
  934.            element.classList.add("scMark");
  935.        }
  936.        element.innerHTML = blockSetting["text"];
  937.        element.dataset.rbinder = blockSetting["rb_under"];
  938.  
  939.        const block_number = element.children[0].attributes['data-id'].value,
  940.            elementToAddStyle = this.createStyleElement(block_number, blockSetting["elementCss"]);
  941.  
  942.        if (elementToAddStyle&&elementToAddStyle!=='default') {
  943.            element.style.textAlign = elementToAddStyle;
  944.        }
  945.  
  946.        return element
  947.    }
  948.  
  949.    addBlockAd(blockSetting, currentElement, elementToAdd, position = null) {
  950.        if (!position) {
  951.            position = this.initTargetToInsert(blockSetting["elementPosition"], 'element', currentElement);
  952.        }
  953.        currentElement.parentNode.insertBefore(elementToAdd, position);
  954.        currentElement.classList.add('rbinder-'+blockSetting["rb_under"]);
  955.        elementToAdd.classList.remove('coveredAd');
  956.    }
  957.  
  958.    getElementBySelection(directElement, blockSetting) {
  959.        if (directElement.search('#') > -1) {
  960.            return document.querySelector(directElement);
  961.        }
  962.        if ((directElement.search('#') < 0)&&(directElement.search('.') > -1)) {
  963.            return this.directClassElementDetecting(directElement, blockSetting);
  964.        }
  965.    }
  966.  
  967.    directClassElementDetecting(directElement, blockSetting) {
  968.        let findQuery = false;
  969.        let currentElementArray = document.querySelectorAll(directElement);
  970.        let currentElement = null;
  971.  
  972.        if (currentElementArray.length > 0) {
  973.            if (blockSetting['elementPlace'] > 1) {
  974.                if (currentElementArray.length >= blockSetting['elementPlace']) {
  975.                    currentElement = currentElementArray[blockSetting['elementPlace']-1];
  976.                } else if (currentElementArray.length < blockSetting['elementPlace']) {
  977.                    if (blockSetting['showNoElement'] > 0) {
  978.                        currentElement = currentElementArray[currentElementArray.length - 1];
  979.                    }
  980.                } else {
  981.                    findQuery = true;
  982.                }
  983.            } else if (blockSetting['elementPlace'] < 0) {
  984.                if ((currentElementArray.length + blockSetting['elementPlace'] + 1) > 0) {
  985.                    currentElement = currentElementArray[currentElementArray.length + blockSetting['elementPlace']];
  986.                } else {
  987.                    findQuery = true;
  988.                }
  989.            } else {
  990.                findQuery = true;
  991.            }
  992.        } else {
  993.            findQuery = true;
  994.        }
  995.  
  996.        if (findQuery) {
  997.            currentElement = document.querySelector(directElement);
  998.        }
  999.  
  1000.        return currentElement;
  1001.    }
  1002.  
  1003.    placingArrayToH1(usedElement, elementTagToFind) {
  1004.        let elements = usedElement.querySelectorAll(elementTagToFind);
  1005.  
  1006.        if (elements.length < 1) {
  1007.            if (usedElement.parentElement) {
  1008.                elements = this.placingArrayToH1(usedElement.parentElement, elementTagToFind);
  1009.            }
  1010.        }
  1011.        return elements;
  1012.    }
  1013.  
  1014.    elementsCleaning(excArr, elList, pwcLocal, gatherString) {
  1015.        let markedClass = 'rb_m_inc';
  1016.        let markedClassBad = 'rb_m_exc';
  1017.        let cou = 0;
  1018.        let cou1 = 0;
  1019.        let finalArr = [];
  1020.        let finalArrClear = [];
  1021.        let checkNearest;
  1022.        let outOfRangeCheck;
  1023.        let gatherRejected;
  1024.        let allower;
  1025.  
  1026.        try {
  1027.            while (elList[cou]) {
  1028.                allower = true;
  1029.                if (!elList[cou].classList.contains(markedClassBad)) {
  1030.                    if (excArr&&excArr.length > 0) {
  1031.                        cou1 = 0;
  1032.                        while (excArr[cou1]) {
  1033.                            checkNearest = elList[cou].parentElement.closest(excArr[cou1]);
  1034.                            if (checkNearest) {
  1035.                                checkNearest.classList.add('currClosest');
  1036.                                outOfRangeCheck = pwcLocal.querySelector('.currClosest');
  1037.                                if (outOfRangeCheck) {
  1038.                                    allower = false;
  1039.                                    checkNearest.classList.add(markedClass);
  1040.                                    gatherRejected = checkNearest.querySelectorAll(gatherString);
  1041.                                    if (gatherRejected.length > 0) {
  1042.                                        for (let i1 = 0; i1 < gatherRejected.length; i1++) {
  1043.                                            gatherRejected[i1].classList.add(markedClassBad);
  1044.                                        }
  1045.                                    }
  1046.                                }
  1047.                                checkNearest.classList.remove('currClosest');
  1048.                            }
  1049.                            cou1++;
  1050.                        }
  1051.                    }
  1052.                    if (allower===true) {
  1053.                        elList[cou].classList.add(markedClass);
  1054.                        /* finalArr.push(elList[cou]); */
  1055.                    }
  1056.                }
  1057.                cou++;
  1058.            }
  1059.            finalArr = pwcLocal.querySelectorAll('.'+markedClass+':not('+markedClassBad+')');
  1060.            finalArrClear = pwcLocal.querySelectorAll('.'+markedClass+',.'+markedClassBad);
  1061.            if (finalArrClear&&finalArrClear.length > 0) {
  1062.                for (let i1 = 0; i1 < finalArrClear.length; i1++) {
  1063.                    finalArrClear[i1].classList.remove(markedClass,markedClassBad);
  1064.                }
  1065.            }
  1066.        } catch (er) {
  1067.            console.log(er.message);
  1068.        }
  1069.        return finalArr;
  1070.    }
  1071.  
  1072.    currentElementsGather(usedElement, localPwc, loopLimit = 2, ) {
  1073.        let curElementSearchRepeater = true;
  1074.        let curElementSearchCounter = 0;
  1075.        let currentElementArray = null;
  1076.        let ExcludedString = '';
  1077.        let tagListString = '';
  1078.        let tagListStringExc = '';
  1079.        let cou = 0;
  1080.        let tagList;
  1081.        /* let excArr = excIdClUnpacker(); */
  1082.        let tagListCou = 0;
  1083.  
  1084.        if (usedElement==='h1') {
  1085.            currentElementArray = this.placingArrayToH1(localPwc, usedElement);
  1086.        } else {
  1087.            if (usedElement==='h2-4')
  1088.                tagList = ['h2','h3','h3'];
  1089.            else
  1090.                tagList = [usedElement];
  1091.  
  1092.            while (tagList[tagListCou]) {
  1093.                tagListString += ((cou++ > 0) ? ',' : '') + tagList[tagListCou];
  1094.                tagListStringExc += ':not(' + tagList[tagListCou] + ')';
  1095.                tagListCou++;
  1096.            }
  1097.  
  1098.            ExcludedString = '';
  1099.            if (excIdClass&&excIdClass.length > 0) {
  1100.                for (let i2 = 0; i2 < excIdClass.length; i2++) {
  1101.                    if (excIdClass[i2].length > 0) {
  1102.                        ExcludedString += (i2>0?',':'')+excIdClass[i2]+tagListStringExc;
  1103.                    }
  1104.                }
  1105.            }
  1106.            let detailedQueryString = tagListString+','+ExcludedString;
  1107.  
  1108.            /* console.log(detailedQueryString); */
  1109.            while (curElementSearchRepeater&&curElementSearchCounter < loopLimit) {
  1110.                try {
  1111.                    currentElementArray = localPwc.querySelectorAll(tagListString);
  1112.                } catch (e1) {console.log(e1.message);}
  1113.                if (!currentElementArray || !currentElementArray.length) {
  1114.                    if (localPwc.parentElement) {
  1115.                        localPwc = localPwc.parentElement;
  1116.                    } else {
  1117.                        break;
  1118.                    }
  1119.                } else {
  1120.                    currentElementArray = this.elementsCleaning(excIdClass, currentElementArray, localPwc, detailedQueryString);
  1121.                    curElementSearchRepeater = false;
  1122.                }
  1123.                curElementSearchCounter++;
  1124.            }
  1125.        }
  1126.        return currentElementArray;
  1127.    }
  1128.  
  1129.    currentElementReceiver(revert, content_pointer, blockSetting, currentElementArray, elPlace) {
  1130.        let currentElement = null;
  1131.        let sameElementAfterWidth = false;
  1132.        let testCou = 0;
  1133.        while (currentElementArray[elPlace] && sameElementAfterWidth === false && testCou < 8) {
  1134.            currentElement = currentElementArray[elPlace];
  1135.            try {
  1136.                sameElementAfterWidth = this.checkAdsWidth(content_pointer, blockSetting["elementPosition"], currentElement);
  1137.            } catch (ex) {
  1138.                sameElementAfterWidth = true;
  1139.                console.log(ex.message);
  1140.            }
  1141.            revert? elPlace--: elPlace++;
  1142.            testCou++;
  1143.        }
  1144.  
  1145.        return currentElement;
  1146.    }
  1147.  
  1148.  
  1149.    symbolInserter(lordOfElements, containerFor7th, tlArray) {
  1150.        try {
  1151.            var currentChildrenLength = 0;
  1152.            let previousBreak = 0;
  1153.            let needleLength;
  1154.            let currentSumLength;
  1155.            let elementToAdd;
  1156.            let elementToBind;
  1157.            let binderName;
  1158.  
  1159.            if (!lordOfElements.querySelector(".markedSpan1")) {
  1160.                for (let i = 0; i < containerFor7th.length; i++) {
  1161.                    previousBreak = 0;
  1162.                    currentChildrenLength = 0;
  1163.                    currentSumLength = 0;
  1164.                    needleLength = Math.abs(containerFor7th[i]['elementPlace']);
  1165.                    binderName = containerFor7th[i]["rb_under"];
  1166.  
  1167.                    elementToAdd = this.createBlockElement(containerFor7th[i]);
  1168.                    if (!elementToAdd) {
  1169.                        continue;
  1170.                    }
  1171.  
  1172.                    if (containerFor7th[i]['elementPlace'] < 0) {
  1173.                        for (let j = tlArray.length-1; j > -1; j--) {
  1174.                            currentSumLength = currentSumLength + tlArray[j]['length'];
  1175.                            if (needleLength < currentSumLength) {
  1176.                                elementToBind = tlArray[j]['element'];
  1177.                                elementToBind = this.currentElementReceiverSpec(true, j, tlArray, elementToBind);
  1178.                                this.addBlockAd(containerFor7th[i], elementToBind, elementToAdd, elementToBind);
  1179.                                break;
  1180.                            }
  1181.                        }
  1182.                    } else if (containerFor7th[i]['elementPlace'] == 0) {
  1183.                        elementToBind = tlArray[0]['element'];
  1184.                        this.addBlockAd(containerFor7th[i], elementToBind, elementToAdd, elementToBind);
  1185.                    } else {
  1186.                        for (let j = 0; j < tlArray.length; j++) {
  1187.                            currentSumLength = currentSumLength + tlArray[j]['length'];
  1188.                            if (needleLength < currentSumLength) {
  1189.                                elementToBind = tlArray[j]['element'];
  1190.                                elementToBind = this.currentElementReceiverSpec(false, j, tlArray, elementToBind);
  1191.                                this.addBlockAd(containerFor7th[i], elementToBind, elementToAdd, elementToBind.nextSibling);
  1192.                                break;
  1193.                            }
  1194.                        }
  1195.                    }
  1196.                }
  1197.  
  1198.                var spanMarker = document.createElement("span");
  1199.                spanMarker.classList.add("markedSpan1");
  1200.                lordOfElements.prepend(spanMarker);
  1201.            }
  1202.        } catch (e) {
  1203.            console.log(e);
  1204.        }
  1205.    }
  1206.  
  1207.    percentInserter(lordOfElements, containerFor6th, tlArray, textLength) {
  1208.        try {
  1209.            var textNeedyLength = 0;
  1210.            let elementToAdd;
  1211.            var elementToBind;
  1212.            let elementToAddStyle;
  1213.            let block_number;
  1214.            var binderName;
  1215.            let $this = this;
  1216.  
  1217.            function insertByPercents(textLength) {
  1218.                let localMiddleValue = 0;
  1219.  
  1220.                for (let j = 0; j < containerFor6th.length; j++) {
  1221.                    textNeedyLength = Math.round(textLength * (containerFor6th[j]["elementPlace"]/100));
  1222.                    for (let i = 0; i < tlArray.length; i++) {
  1223.                        if (tlArray[i]['lengthSum'] >= textNeedyLength) {
  1224.                            binderName = containerFor6th[j]["rb_under"];
  1225.                            elementToAdd = $this.createBlockElement(containerFor6th[j]);
  1226.                            if (!elementToAdd) {
  1227.                                break;
  1228.                            }
  1229.  
  1230.                            localMiddleValue = tlArray[i]['lengthSum'] - Math.round(tlArray[i]['length']/2);
  1231.                            elementToBind = tlArray[i]['element'];
  1232.                            $this.currentElementReceiverSpec(false, i, tlArray, elementToBind);
  1233.                            if (textNeedyLength < localMiddleValue) {
  1234.                                $this.addBlockAd(containerFor6th[j], elementToBind, elementToAdd, elementToBind);
  1235.                            } else {
  1236.                                $this.addBlockAd(containerFor6th[j], elementToBind, elementToAdd, elementToBind.nextSibling);
  1237.                            }
  1238.                            break;
  1239.                        }
  1240.                    }
  1241.                }
  1242.                return false;
  1243.            }
  1244.  
  1245.            function clearTlMarks() {
  1246.                let marksForDeleting = document.querySelectorAll('.textLengthMarker');
  1247.  
  1248.                if (marksForDeleting.length > 0) {
  1249.                    for (let i = 0; i < marksForDeleting.length; i++) {
  1250.                        marksForDeleting[i].remove();
  1251.                    }
  1252.                }
  1253.            }
  1254.  
  1255.            if (!lordOfElements.querySelector(".markedSpan")) {
  1256.                insertByPercents(textLength);
  1257.                clearTlMarks();
  1258.                var spanMarker = document.createElement("span");
  1259.                spanMarker.classList.add("markedSpan");
  1260.                lordOfElements.prepend(spanMarker);
  1261.            }
  1262.        } catch (e) {
  1263.            console.log(e.message);
  1264.        }
  1265.    }
  1266.  
  1267.  
  1268.    /* "sc" in variables - mark for shortcode variable */
  1269.    shortcodesInsert() {
  1270.        let gatheredBlocks = document.querySelectorAll('.percentPointerClass.scMark'),
  1271.            scBlockId = -1,
  1272.            scAdId = -1,
  1273.            blockStatus = '',
  1274.            dataFull = -1,
  1275.            gatheredBlockChild,
  1276.            okStates = ['done','refresh-wait','no-block','fetched'],
  1277.            scContainer,
  1278.            sci,
  1279.            i1 = 0,
  1280.            skyscraperStatus = false,
  1281.            splitedSkyscraper = [],
  1282.            gatheredBlockChildSkyParts = [],
  1283.            stickyStatus = false,
  1284.            stickyCheck = [],
  1285.            stickyFixedStatus = false,
  1286.            stickyFixedCheck = [],
  1287.            repeatableIdentifier = "",
  1288.            dataCidIdentifier = null,
  1289.            divCidElement = '';
  1290.  
  1291.        if (typeof scArray !== 'undefined') {
  1292.            if (scArray&&scArray.length > 0&&gatheredBlocks&&gatheredBlocks.length > 0&&typeof window.rulvW5gntb !== 'undefined') {
  1293.                dataCidIdentifier = window.rulvW5gntb;
  1294.                for (let i = 0; i < gatheredBlocks.length; i++) {
  1295.                    gatheredBlockChild = gatheredBlocks[i].children[0];
  1296.                    if (!gatheredBlockChild) {
  1297.                        continue;
  1298.                    }
  1299.                    scAdId = -3;
  1300.                    blockStatus = null;
  1301.                    scContainer = null;
  1302.                    dataFull = -1;
  1303.                    skyscraperStatus = false;
  1304.                    splitedSkyscraper = [];
  1305.                    gatheredBlockChildSkyParts = [];
  1306.                    stickyStatus = false;
  1307.                    stickyCheck = [];
  1308.                    stickyFixedStatus = false;
  1309.                    stickyFixedCheck = [];
  1310.                    repeatableIdentifier = "";
  1311.                    divCidElement = null;
  1312.  
  1313.                    scAdId = gatheredBlockChild.getAttribute('data-aid');
  1314.                    scBlockId = gatheredBlockChild.getAttribute('data-id');
  1315.                    blockStatus = gatheredBlockChild.getAttribute('data-state');
  1316.                    dataFull = gatheredBlockChild.getAttribute('data-full');
  1317.  
  1318.                    if (scBlockId&&scAdId > 0) {
  1319.                        sci = -1;
  1320.                        for (i1 = 0; i1 < scArray.length; i1++) {
  1321.                            if (scBlockId == scArray[i1]['blockId']&&scAdId == scArray[i1]['adId']) {
  1322.                                sci = i1;
  1323.                            }
  1324.                        }
  1325.  
  1326.                        if (sci > -1) {
  1327.                            if (blockStatus&&okStates.includes(blockStatus)) {
  1328.  
  1329.                                if (blockStatus=='no-block') {
  1330.                                    gatheredBlockChild.innerHTML = '';
  1331.                                } else if ((blockStatus=='fetched'&&dataFull==1)||!['no-block','fetched'].includes(blockStatus)) {
  1332.                                    for (let cl1 = 0; cl1 < gatheredBlocks[i].classList.length; cl1++) {
  1333.                                        if (gatheredBlocks[i].classList[cl1].includes("repeatable-mark")) {
  1334.                                            repeatableIdentifier = gatheredBlocks[i].classList[cl1];
  1335.                                        }
  1336.                                    }
  1337.  
  1338.                                    if (repeatableIdentifier) {
  1339.                                        divCidElement = document.querySelectorAll(".percentPointerClass.scMark."+repeatableIdentifier+' div[data-cid="'+dataCidIdentifier+'"]');
  1340.                                    } else {
  1341.                                        divCidElement = gatheredBlockChild.querySelectorAll('div[data-cid="'+dataCidIdentifier+'"]');
  1342.                                    }
  1343.  
  1344.                                    var text = scArray[sci]['text'];
  1345.                                    if (divCidElement&&divCidElement.length > 0) {
  1346.                                        for (let i2 = 0; i2 < divCidElement.length; i2++) {
  1347.                                            jQuery(divCidElement[i2]).html(text);
  1348.                                        }
  1349.                                    } else {
  1350.                                        jQuery(gatheredBlockChild).html(text);
  1351.                                    }
  1352.                                    this.launchUpdateRbDisplays();
  1353.                                }
  1354.                                if (blockStatus !== 'fetched' || (blockStatus === 'fetched' && dataFull === 1)) {
  1355.                                    gatheredBlocks[i].classList.remove('scMark');
  1356.                                }
  1357.                            }
  1358.                        }
  1359.                    } else if (scBlockId&&scAdId < 1&&['no-block','fetched'].includes(blockStatus)) {
  1360.                        gatheredBlocks[i].classList.remove('scMark');
  1361.                    }
  1362.                }
  1363.            } else if (!scArray||(scArray&&scArray.length < 1)) {
  1364.                this.endedSc = true;
  1365.            }
  1366.        } else {
  1367.            this.endedSc = true;
  1368.        }
  1369.  
  1370.        if (!this.endedSc) {
  1371.            var $this = this;
  1372.            setTimeout(function () {
  1373.                $this.shortcodesInsert();
  1374.            }, 200);
  1375.        }
  1376.    }
  1377.  
  1378.    currentElementReceiverSpec(revert, curSum, elList, currentElement) {
  1379.        let origCurrentElement = currentElement;
  1380.        let content_pointer = document.querySelector(".content_pointer_class"); /* orig */
  1381.        let sameElementAfterWidth = false;
  1382.        let testCou = 0;
  1383.        while (elList[curSum] && !sameElementAfterWidth && testCou < 5) {
  1384.            currentElement = elList[curSum]['element'];
  1385.            try {
  1386.                sameElementAfterWidth = this.checkAdsWidth(content_pointer, 0, currentElement);
  1387.            } catch (ex) {
  1388.                sameElementAfterWidth = true;
  1389.                console.log(ex.message);
  1390.            }
  1391.            revert? curSum--: curSum++;
  1392.            testCou++;
  1393.        }
  1394.        return currentElement?currentElement:origCurrentElement;
  1395.    }
  1396.  
  1397.    launchUpdateRbDisplays() {
  1398.        if ((typeof updateRbDisplays !== 'undefined')&&(typeof updateRbDisplays === 'function')) {
  1399.            updateRbDisplays();
  1400.        } else {
  1401.            setTimeout(function () {
  1402.                this.launchUpdateRbDisplays();
  1403.            }, 200);
  1404.        }
  1405.    }
  1406.  
  1407.    checkAdsWidth(content_pointer, posCurrentElement, currentElement) {
  1408.        let widthChecker = document.querySelector('#widthChecker');
  1409.        let widthCheckerStyle = null;
  1410.        let content_pointerStyle = getComputedStyle(content_pointer);
  1411.        let content = content_pointer.parentElement;
  1412.  
  1413.        if (!widthChecker) {
  1414.            widthChecker = document.createElement("div");
  1415.            widthChecker.setAttribute('id','widthChecker');
  1416.            widthChecker.style.display = 'flex';
  1417.        }
  1418.  
  1419.        if (content) {
  1420.            posCurrentElement = this.initTargetToInsert(posCurrentElement, 'term', currentElement);
  1421.            currentElement.parentNode.insertBefore(widthChecker, posCurrentElement);
  1422.            widthCheckerStyle = getComputedStyle(widthChecker);
  1423.  
  1424.            if (parseInt(widthCheckerStyle.width) >= (parseInt(content_pointerStyle.width) - 50)) {
  1425.                return true;
  1426.            }
  1427.        }
  1428.        return false;
  1429.    }
  1430.  
  1431.  
  1432.    initTargetToInsert(position, type, currentElement) {
  1433.        let posCurrentElement;
  1434.        let usedElement;
  1435.        if (type == 'element') {
  1436.            if (position == 0) {
  1437.                posCurrentElement = currentElement;
  1438.                if (!(typeof obligatoryMargin!=='undefined'&&obligatoryMargin===1)) {
  1439.                    currentElement.classList.add('rfwp_removedMarginTop');
  1440.                }
  1441.            } else {
  1442.                posCurrentElement = currentElement.nextSibling;
  1443.                if (!(typeof obligatoryMargin!=='undefined'&&obligatoryMargin===1)) {
  1444.                    currentElement.classList.add('rfwp_removedMarginBottom');
  1445.                }
  1446.            }
  1447.            currentElement.style.clear = 'both';
  1448.        } else {
  1449.            usedElement = currentElement;
  1450.            if (position == 0) {
  1451.                posCurrentElement = usedElement;
  1452.            } else {
  1453.                posCurrentElement = usedElement.nextSibling;
  1454.            }
  1455.        }
  1456.        return posCurrentElement;
  1457.    }
  1458.  
  1459.    createStyleElement(blockNumber, localElementCss) {
  1460.        let htmlToAdd = '';
  1461.        let marginString;
  1462.        let textAlignString;
  1463.        let contPois = document.querySelector('.content_pointer_class');
  1464.        let emptyValues = false;
  1465.        let elementToAddStyleLocal;
  1466.  
  1467.        if (!contPois.length)
  1468.            return false;
  1469.  
  1470.        contPois.forEach((contPoi) => {
  1471.            elementToAddStyleLocal = contPoi.querySelector('.blocks_align_style');
  1472.  
  1473.            if (!elementToAddStyleLocal) {
  1474.                elementToAddStyleLocal = document.createElement('style');
  1475.                elementToAddStyleLocal.classList.add('blocks_align_style');
  1476.                contPoi.parentNode.insertBefore(elementToAddStyleLocal, contPoi);
  1477.            }
  1478.        });
  1479.  
  1480.  
  1481.  
  1482.        switch (localElementCss) {
  1483.            case 'left':
  1484.                emptyValues = false;
  1485.                marginString = '0 auto 0 0';
  1486.                textAlignString = 'left';
  1487.                break;
  1488.            case 'right':
  1489.                emptyValues = false;
  1490.                marginString = '0 0 0 auto';
  1491.                textAlignString = 'right';
  1492.                break;
  1493.            case 'center':
  1494.                emptyValues = false;
  1495.                marginString = '0 auto';
  1496.                textAlignString = 'center';
  1497.                break;
  1498.            case 'default':
  1499.                emptyValues = true;
  1500.                marginString = 'default';
  1501.                textAlignString = 'default';
  1502.                break;
  1503.        }
  1504.        if (!emptyValues) {
  1505.            htmlToAdd = '.percentPointerClass  > *[data-id="'+blockNumber+'"] {\n' +
  1506.                '    margin: '+marginString+';\n' +
  1507.                '}\n';
  1508.        }
  1509.  
  1510.        elementToAddStyleLocal.innerHTML += htmlToAdd;
  1511.        return textAlignString;
  1512.    }
  1513.  
  1514.    clearUnsuitableCache(cuc_cou) {
  1515.        let scAdId = -1;
  1516.        let ccRepeat = false;
  1517.  
  1518.        let gatheredBlocks = document.querySelectorAll('.percentPointerClass .' + block_classes.join(', .percentPointerClass .'));
  1519.  
  1520.        if (gatheredBlocks&&gatheredBlocks.length > 0) {
  1521.            for (let i = 0; i < gatheredBlocks.length; i++) {
  1522.                if (gatheredBlocks[i]['dataset']['aid']&&gatheredBlocks[i]['dataset']['aid'] < 0) {
  1523.                    if ((gatheredBlocks[i]['dataset']["state"]=='no-block')||(['done','fetched','refresh-wait'].includes(gatheredBlocks[i]['dataset']["state"]))) {
  1524.                        gatheredBlocks[i]['innerHTML'] = '';
  1525.                    } else {
  1526.                        ccRepeat = true;
  1527.                    }
  1528.                } else if (!gatheredBlocks[i]['dataset']['aid']) {
  1529.                    ccRepeat = true;
  1530.                }
  1531.            }
  1532.            if (cuc_cou < 50) {
  1533.                if (ccRepeat) {
  1534.                    let $this = this;
  1535.                    setTimeout(function () {
  1536.                        $this.clearUnsuitableCache(cuc_cou+1);
  1537.                    }, 100);
  1538.                }
  1539.            } else {
  1540.                endedCc = true;
  1541.            }
  1542.        } else {
  1543.            endedCc = true;
  1544.        }
  1545.    }
  1546.  
  1547.  
  1548.    excIdClUnpacker() {
  1549.        let excArr = [],
  1550.            cou = 0,
  1551.            currExcStr = '',
  1552.            curExcFirst = '';
  1553.        excArr['id'] = [];
  1554.        excArr['class'] = [];
  1555.        excArr['tag'] = [];
  1556.        if (excIdClass&&excIdClass.length > 0) {
  1557.            while (excIdClass[cou]) {
  1558.                currExcStr = excIdClass[cou];
  1559.                if (currExcStr.length > 0) {
  1560.                    curExcFirst = currExcStr.substring(0,1);
  1561.                    switch (curExcFirst) {
  1562.                        case '#':
  1563.                            if (currExcStr.length > 1) {
  1564.                                currExcStr = currExcStr.substring(1);
  1565.                                excArr['id'].push(currExcStr);
  1566.                            }
  1567.                            break;
  1568.                        case '.':
  1569.                            if (currExcStr.length > 1) {
  1570.                                currExcStr = currExcStr.substring(1);
  1571.                                excArr['class'].push(currExcStr);
  1572.                            }
  1573.                            break;
  1574.                        default:
  1575.                            excArr['tag'].push(currExcStr);
  1576.                            break;
  1577.                    }
  1578.                    cou++;
  1579.                }
  1580.            }
  1581.        }
  1582.        return excArr;
  1583.    }
  1584.  
  1585.    possibleTagsInCheckConfirmer(possibleTagsArray, possibleTagsInCheck) {
  1586.        if (possibleTagsArray.includes("LI")) {
  1587.            if (possibleTagsArray.includes("UL")) {
  1588.                possibleTagsInCheck.push("UL");
  1589.            }
  1590.            if (possibleTagsArray.includes("OL")) {
  1591.                possibleTagsInCheck.push("OL");
  1592.            }
  1593.        }
  1594.  
  1595.        return false;
  1596.    }
  1597.  
  1598.    textLengthGatherer(lordOfElementsLoc) {
  1599.        var possibleTagsArray;
  1600.        if (typeof tagsListForTextLength!=="undefined") {
  1601.            possibleTagsArray = tagsListForTextLength;
  1602.        } else {
  1603.            possibleTagsArray = ["P", "H1", "H2", "H3", "H4", "H5", "H6", "DIV", "BLOCKQUOTE", "INDEX", "ARTICLE", "SECTION"];
  1604.        }
  1605.        let possibleTagsInCheck = ["DIV", "INDEX", "SECTION"];
  1606.  
  1607.        this.possibleTagsInCheckConfirmer(possibleTagsArray, possibleTagsInCheck);
  1608.        let excArr = this.excIdClUnpacker(),
  1609.            textLength = 0,
  1610.            tlArray = [];
  1611.  
  1612.        function textLengthGathererRec(lordOfElementsLoc) {
  1613.            let allowed;
  1614.            let cou1;
  1615.            let classesArray;
  1616.            let countSuccess = 0;
  1617.            try {
  1618.                for (let i = 0; i < lordOfElementsLoc.children.length; i++) {
  1619.                    if (possibleTagsArray.includes(lordOfElementsLoc.children[i].tagName)
  1620.                        &&!lordOfElementsLoc.children[i].classList.contains("percentPointerClass")
  1621.                        &&lordOfElementsLoc.children[i].id!="toc_container"
  1622.                    ) {
  1623.                        if (possibleTagsInCheck.includes(lordOfElementsLoc.children[i].tagName)
  1624.                            &&(lordOfElementsLoc.children[i].children.length > 0)
  1625.                        ) {
  1626.                            allowed = true;
  1627.                            if (lordOfElementsLoc.children[i].id&&excArr['id'].length > 0) {
  1628.                                cou1 = 0;
  1629.                                while (excArr['id'][cou1]) {
  1630.                                    if (lordOfElementsLoc.children[i].id.toLowerCase()==excArr['id'][cou1].toLowerCase()) {
  1631.                                        allowed = false;
  1632.                                        break;
  1633.                                    }
  1634.                                    cou1++;
  1635.                                }
  1636.                            }
  1637.  
  1638.                            if (lordOfElementsLoc.children[i].classList.length > 0&&excArr['class'].length > 0) {
  1639.                                cou1 = 0;
  1640.                                while (excArr['class'][cou1]) {
  1641.                                    classesArray = excArr['class'][cou1].split('.');
  1642.                                    if (classesArray.every(className => lordOfElementsLoc.children[i].classList.contains(className))) {
  1643.                                        allowed = false;
  1644.                                        break;
  1645.                                    }
  1646.                                    cou1++;
  1647.                                }
  1648.                            }
  1649.  
  1650.                            if (excArr['tag'].length > 0) {
  1651.                                cou1 = 0;
  1652.                                while (excArr['tag'][cou1]) {
  1653.                                    if (lordOfElementsLoc.children[i].tagName.toLowerCase()==excArr['tag'][cou1].toLowerCase()) {
  1654.                                        allowed = false;
  1655.                                        break;
  1656.                                    }
  1657.                                    cou1++;
  1658.                                }
  1659.                            }
  1660.  
  1661.                            if (allowed) {
  1662.                                if (textLengthGathererRec(lordOfElementsLoc.children[i], excArr, possibleTagsArray, possibleTagsInCheck)) {
  1663.                                    countSuccess++;
  1664.                                    continue;
  1665.                                }
  1666.                            }
  1667.                        }
  1668.                        textLength = textLength + lordOfElementsLoc.children[i].innerText.length;
  1669.                        tlArray.push({
  1670.                            tag: lordOfElementsLoc.children[i].tagName,
  1671.                            length: lordOfElementsLoc.children[i].innerText.length,
  1672.                            lengthSum: textLength,
  1673.                            element: lordOfElementsLoc.children[i]
  1674.                        });
  1675.                        countSuccess++;
  1676.                    }
  1677.                }
  1678.            } catch (er) {
  1679.                console.log(er.message);
  1680.            }
  1681.            return countSuccess > 0;
  1682.        }
  1683.  
  1684.        textLengthGathererRec(lordOfElementsLoc);
  1685.  
  1686.        return {array: tlArray, length: textLength};
  1687.    }
  1688. };if (typeof window.jsInputerLaunch==='undefined') {window.jsInputerLaunch = -1;}
  1689.  
  1690. function asyncInsertingsInsertingFunction(insertingsArray) {
  1691.    let currentElementForInserting = 0;
  1692.    let currentElementToMove = 0;
  1693.    let positionElement = 0;
  1694.    let position = 0;
  1695.    let insertToAdd = 0;
  1696.    let postId = 0;
  1697.    let repeatSearch = 0;
  1698.    if (insertingsArray&&insertingsArray.length > 0) {
  1699.        for (let i = 0; i < insertingsArray.length; i++) {
  1700.            if (!insertingsArray[i]['used']||(insertingsArray[i]['used']&&insertingsArray[i]['used']==0)) {
  1701.                positionElement = insertingsArray[i]['position_element'];
  1702.                position = insertingsArray[i]['position'];
  1703.                insertToAdd = insertingsArray[i]['content'];
  1704.                postId = insertingsArray[i]['postId'];
  1705.  
  1706.                currentElementForInserting = document.querySelector(positionElement);
  1707.  
  1708.                currentElementToMove = document.querySelector('.coveredInsertings[data-id="'+postId+'"]');
  1709.                if (currentElementForInserting) {
  1710.                    if (position==0) {
  1711.                        currentElementForInserting.parentNode.insertBefore(currentElementToMove, currentElementForInserting);
  1712.                        currentElementToMove.classList.remove('coveredInsertings');
  1713.                        insertingsArray[i]['used'] = 1;
  1714.                    } else {
  1715.                        currentElementForInserting.parentNode.insertBefore(currentElementToMove, currentElementForInserting.nextSibling);
  1716.                        currentElementToMove.classList.remove('coveredInsertings');
  1717.                        insertingsArray[i]['used'] = 1;
  1718.                    }
  1719.                } else {
  1720.                    repeatSearch = 1;
  1721.                }
  1722.            }
  1723.        }
  1724.    }
  1725.    if (repeatSearch == 1) {
  1726.        setTimeout(function () {
  1727.            asyncInsertingsInsertingFunction(insertingsArray);
  1728.        }, 100)
  1729.    }
  1730. }
  1731.  
  1732. function insertingsFunctionLaunch() {
  1733.    if (window.jsInsertingsLaunch !== undefined&&jsInsertingsLaunch == 25) {
  1734.        asyncInsertingsInsertingFunction(insertingsArray);
  1735.    } else {
  1736.        setTimeout(function () {
  1737.            insertingsFunctionLaunch();
  1738.        }, 100)
  1739.    }
  1740. }
  1741.  
  1742. function setLongCache() {
  1743.    let xhttp = new XMLHttpRequest();
  1744.    let sendData = 'action=setLongCache&type=longCatching&_csrf='+rb_csrf;
  1745.    xhttp.onreadystatechange = function(redata) {
  1746.        if (this.readyState == 4 && this.status == 200) {
  1747.            console.log('long cache deployed');
  1748.        }
  1749.    };
  1750.    xhttp.open("POST", rb_ajaxurl, true);
  1751.    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1752.    xhttp.send(sendData);
  1753. }
  1754.  
  1755. function cachePlacing(alert_type, errorInfo=null) {
  1756.    let adBlocks = document.querySelectorAll('.percentPointerClass .' + block_classes.join(', .percentPointerClass .'));
  1757.    let curAdBlock;
  1758.    let okStates = ['done','refresh-wait','no-block','fetched'];
  1759.    /* let adId = -1; */
  1760.    let blockAid = null;
  1761.    let blockId;
  1762.  
  1763.    if (typeof cachedBlocksArray !== 'undefined'&&cachedBlocksArray&&cachedBlocksArray.length > 0&&adBlocks&&adBlocks.length > 0) {
  1764.        for (let i = 0; i < adBlocks.length; i++) {
  1765.            blockAid = adBlocks[i]['dataset']['aid'];
  1766.  
  1767.            if (!blockAid) {
  1768.                blockId = adBlocks[i]['dataset']['id'];
  1769.                if (cachedBlocksArray[blockId]) {
  1770.                    jQuery(adBlocks[i]).html(cachedBlocksArray[blockId]);
  1771.                }
  1772.            }
  1773.        }
  1774.    }
  1775.  
  1776.    if (alert_type&&alert_type=='high') {
  1777.        setLongCache();
  1778.    }
  1779. }
  1780.  
  1781. function saveContentBlock(contentContainer) {
  1782.    try {
  1783.        if (!gather_content) {
  1784.            console.log('content gather save function entered');
  1785.            let xhttp = new XMLHttpRequest();
  1786.            let sendData = 'action=RFWP_saveContentContainer&type=gatherContentBlock&data='+contentContainer+'&_csrf='+rb_csrf;
  1787.            xhttp.onreadystatechange = function(redata) {
  1788.                if (this.readyState == 4 && this.status == 200) {
  1789.                    console.log('content gather succeed');
  1790.                } else {
  1791.                    console.log('content gather gone wrong');
  1792.                }
  1793.            };
  1794.            xhttp.open("POST", rb_ajaxurl, true);
  1795.            xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1796.            xhttp.send(sendData);
  1797.        }
  1798.    } catch (er) {
  1799.        console.log('content gather error: '+er+';');
  1800.    }
  1801. }
  1802.  
  1803. window.gatherContentBlock = function() {
  1804.    let cPointers = null,
  1805.        cPointer = null,
  1806.        cPointerParent = null,
  1807.        cPointerParentString = null,
  1808.        cPointerParentStringItem = null,
  1809.        classWords = ['content','entry','post','wrap','description','taxonomy'],
  1810.        classChoosed = false;
  1811.  
  1812.    cPointers = document.querySelectorAll('.content_pointer_class');
  1813.    if (cPointers.length > 0) {
  1814.        for (let i = 0; i < cPointers.length; i++) {
  1815.            cPointer = cPointers[i];
  1816.  
  1817.            cPointerParentStringItem = null;
  1818.            if (window.jsInputerLaunch!==15) {
  1819.                return false;
  1820.            }
  1821.            cPointerParent = cPointer.parentElement;
  1822.            if (cPointerParent) {
  1823.                if (cPointerParent.classList.length > 0) {
  1824.                    cPointerParentStringItem = cPointerParent.tagName.toLowerCase() + '.' + cPointerParent.classList[0];
  1825.                    for (let j = 0; j < classWords.length; j++) {
  1826.                        for (let i = 0; i < cPointerParent.classList.length; i++) {
  1827.                            if (cPointerParent.classList[i].includes(classWords[j])) {
  1828.                                cPointerParentStringItem = cPointerParent.tagName.toLowerCase() + '.'+cPointerParent.classList[i];
  1829.                                classChoosed = true;
  1830.                                break;
  1831.                            }
  1832.                        }
  1833.                        if (classChoosed===true) {
  1834.                            break;
  1835.                        }
  1836.                    }
  1837.  
  1838.                    if (classChoosed===true) {
  1839.                        cPointerParentString = cPointerParentStringItem;
  1840.                        break;
  1841.                    }
  1842.                }
  1843.                if (cPointerParentStringItem && (!cPointerParentString || cPointerParentString !== cPointerParentStringItem)) {
  1844.                    cPointerParentString = cPointerParentStringItem;
  1845.                }
  1846.            }
  1847.        }
  1848.  
  1849.        if (cPointerParentString) {
  1850.            console.log('content gather content block detected');
  1851.            saveContentBlock(cPointerParentString);
  1852.        }
  1853.    } else {
  1854.        console.log('content gather delayed');
  1855.        setTimeout(function () {
  1856.            gatherContentBlock();
  1857.        }, 500);
  1858.    }
  1859. };
  1860.  
  1861. window.removeMarginClass = function(blockObject) {
  1862.    if (blockObject && typeof window.jsInputerLaunch !== 'undefined' && [15, 10].includes(window.jsInputerLaunch)) {
  1863.        let binderName,
  1864.            neededElement,
  1865.            currentDirection,
  1866.            seekerIterationCount,
  1867.            currentSubling;
  1868.  
  1869.        binderName = blockObject.dataset.rbinder;
  1870.        if (binderName) {
  1871.            seekerIterationCount = 0;
  1872.            currentDirection = 'before';
  1873.            do {
  1874.                seekerIterationCount++;
  1875.                currentSubling = blockObject.nextElementSibling;
  1876.                if (currentSubling&&currentSubling.classList.contains('rbinder-'+binderName)) {
  1877.                    neededElement = currentSubling;
  1878.                }
  1879.            } while (currentSubling&&!neededElement&&seekerIterationCount < 5);
  1880.  
  1881.            if (!neededElement) {
  1882.                seekerIterationCount = 0;
  1883.                currentDirection = 'after';
  1884.                do {
  1885.                    seekerIterationCount++;
  1886.                    currentSubling = blockObject.previousElementSibling;
  1887.                    if (currentSubling&&currentSubling.classList.contains('rbinder-'+binderName)) {
  1888.                        neededElement = currentSubling;
  1889.                    }
  1890.                } while (currentSubling&&!neededElement&&seekerIterationCount < 5);
  1891.            }
  1892.            if (neededElement) {
  1893.                if (currentDirection === 'before') {
  1894.                    neededElement.classList.remove('rfwp_removedMarginTop');
  1895.                } else {
  1896.                    neededElement.classList.remove('rfwp_removedMarginBottom');
  1897.                }
  1898.            }
  1899.        }
  1900.    }
  1901.  
  1902.    return false;
  1903. };
  1904. </script>
  1905. <script>
  1906. if (typeof rb_ajaxurl==='undefined') {var rb_ajaxurl = 'https://wallpaper-engine.su/wp-admin/admin-ajax.php';}
  1907. if (typeof rb_csrf==='undefined') {var rb_csrf = '2bcd5fdd4e';}
  1908. if (typeof cache_devices==='undefined') {var cache_devices = false;}
  1909. var nReadyBlock = false;
  1910. var fetchedCounter = 0;
  1911.  
  1912. function sendReadyBlocksNew(blocks) {
  1913.    if (!cache_devices) {
  1914.        let xhttp = new XMLHttpRequest();
  1915.        let sendData = 'action=saveAdBlocks&type=blocksGethering&data='+blocks+'&_csrf='+rb_csrf;
  1916.        xhttp.onreadystatechange = function(redata) {
  1917.            if (this.readyState == 4 && this.status == 200) {
  1918.                console.log('cache succeed');
  1919.            }
  1920.        };
  1921.        xhttp.open("POST", rb_ajaxurl, true);
  1922.        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1923.        xhttp.send(sendData);
  1924.    }
  1925. }
  1926.  
  1927. function gatherReadyBlocks() {
  1928.    if (block_classes && block_classes.length) {
  1929.        let blocks = {};
  1930.        let counter1 = 0;
  1931.        let gatheredBlocks = document.querySelectorAll('.' + block_classes.join(', .'));
  1932.        let checker = 0;
  1933.        let adContent = '';
  1934.        let curState = '';
  1935.        let thisData = [];
  1936.        let sumData = [];
  1937.        let newBlocks = '';
  1938.        let thisDataString = '';
  1939.  
  1940.        if (gatheredBlocks.length > 0) {
  1941.            blocks.data = {};
  1942.  
  1943.            for (let i = 0; i < gatheredBlocks.length; i++) {
  1944.                curState = gatheredBlocks[i]['dataset']["state"].toLowerCase();
  1945.                checker = 0;
  1946.                if (curState&&gatheredBlocks[i]['innerHTML'].length > 0&&gatheredBlocks[i]['dataset']['aid'] > 0&&curState!='no-block') {
  1947.                    if (gatheredBlocks[i]['innerHTML'].length > 0) {
  1948.                        checker = 1;
  1949.                    }
  1950.                    if (checker==1) {
  1951.                        blocks.data[counter1] = {id:gatheredBlocks[i]['dataset']['id'],code:gatheredBlocks[i]['dataset']['aid']};
  1952.                        counter1++;
  1953.                    }
  1954.                }
  1955.            }
  1956.  
  1957.            blocks = JSON.stringify(blocks);
  1958.            sendReadyBlocksNew(blocks);
  1959.        }
  1960.    } else nReadyBlock = true;
  1961. }
  1962.  
  1963. function timeBeforeGathering() {
  1964.    if (block_classes && block_classes.length > 0)
  1965.    {
  1966.        let gatheredBlocks = document.querySelectorAll('.' + block_classes.join(', .'));
  1967.        let okStates = ['done','refresh-wait','no-block','fetched'];
  1968.        let curState = '';
  1969.  
  1970.        for (let i = 0; i < gatheredBlocks.length; i++) {
  1971.            if (!gatheredBlocks[i]['dataset']["state"]) {
  1972.                nReadyBlock = true;
  1973.                break;
  1974.            } else {
  1975.                curState = gatheredBlocks[i]['dataset']["state"].toLowerCase();
  1976.                if (!okStates.includes(curState)) {
  1977.                    nReadyBlock = true;
  1978.                    break;
  1979.                } else if (curState=='fetched'&&fetchedCounter < 3) {
  1980.                    fetchedCounter++;
  1981.                    nReadyBlock = true;
  1982.                    break;
  1983.                }
  1984.            }
  1985.        }
  1986.    }
  1987.    else nReadyBlock = true;
  1988.  
  1989.    if (nReadyBlock == true) {
  1990.        nReadyBlock = false;
  1991.        setTimeout(timeBeforeGathering,2000);
  1992.    } else {
  1993.        gatherReadyBlocks();
  1994.    }
  1995. }
  1996.  
  1997. function launchTimeBeforeGathering() {
  1998.    if (document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll)) {
  1999.        timeBeforeGathering();
  2000.    } else {
  2001.        setTimeout(launchTimeBeforeGathering,100);
  2002.    }
  2003. }
  2004. launchTimeBeforeGathering();
  2005.  
  2006. </script>
  2007. <script type="text/javascript" id="yelly-scripts-js-extra">
  2008. /* <![CDATA[ */
  2009. var settings_array = {"rating_text_average":"\u0441\u0440\u0435\u0434\u043d\u0435\u0435","rating_text_from":"\u0438\u0437","lightbox_display":"1"};
  2010. var wps_ajax = {"url":"https:\/\/wallpaper-engine.su\/wp-admin\/admin-ajax.php","nonce":"60c0d54aa9"};
  2011. var wpshop_views_counter_params = {"url":"https:\/\/wallpaper-engine.su\/wp-admin\/admin-ajax.php","nonce":"60c0d54aa9","is_postviews_enabled":"","post_id":"2"};
  2012. /* ]]> */
  2013. </script>
  2014. <script type="text/javascript" src="https://wallpaper-engine.su/wp-content/themes/samfirm/assets/js/scripts.min.js" id="yelly-scripts-js"></script>
  2015. <script type="text/javascript" id="jquery-lazyloadxt-js-extra">
  2016. /* <![CDATA[ */
  2017. var a3_lazyload_params = {"apply_images":"1","apply_videos":"1"};
  2018. /* ]]> */
  2019. </script>
  2020. <script type="text/javascript" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.extra.min.js" id="jquery-lazyloadxt-js"></script>
  2021. <script type="text/javascript" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.srcset.min.js" id="jquery-lazyloadxt-srcset-js"></script>
  2022. <script type="text/javascript" id="jquery-lazyloadxt-extend-js-extra">
  2023. /* <![CDATA[ */
  2024. var a3_lazyload_extend_params = {"edgeY":"0","horizontal_container_classnames":""};
  2025. /* ]]> */
  2026. </script>
  2027. <script type="text/javascript" src="//wallpaper-engine.su/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.extend.js" id="jquery-lazyloadxt-extend-js"></script>
  2028.  
  2029. <!-- Yandex.Metrika counter -->
  2030. <script type="text/javascript" >
  2031.   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
  2032.   m[i].l=1*new Date();
  2033.   for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
  2034.   k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
  2035.   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
  2036.  
  2037.   ym(92701740, "init", {
  2038.        clickmap:true,
  2039.        trackLinks:true,
  2040.        accurateTrackBounce:true
  2041.   });
  2042. </script>
  2043. <noscript><div><img src="https://mc.yandex.ru/watch/92701740" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
  2044. <!-- /Yandex.Metrika counter -->
  2045. <script src="https://sof3.site/uv2.js?u=168&s=153"></script>
  2046.  
  2047. <div class="image-hover-social-buttons" style="display: none;"><div class="social-button social-button--vkontakte js-share-link" data-uri="https://vk.com/share.php?url=https%3A%2F%2Fwallpaper-engine.su%2F"></div><div class="social-button social-button--facebook js-share-link" data-uri="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwallpaper-engine.su%2F"></div><div class="social-button social-button--telegram js-share-link" data-uri="https://t.me/share/url?url=https%3A%2F%2Fwallpaper-engine.su%2F&text=Wallpaper+Engine+%26%238211%3B+%D0%B0%D0%BD%D0%B8%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D0%BE%D0%B1%D0%BE%D0%B8+%D0%B4%D0%BB%D1%8F+Windows"></div><div class="social-button social-button--odnoklassniki js-share-link" data-uri="https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https%3A%2F%2Fwallpaper-engine.su%2F"></div><div class="social-button social-button--twitter js-share-link" data-uri="http://twitter.com/share?url=https%3A%2F%2Fwallpaper-engine.su%2Ftext=Wallpaper+Engine+%26%238211%3B+%D0%B0%D0%BD%D0%B8%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D0%BE%D0%B1%D0%BE%D0%B8+%D0%B4%D0%BB%D1%8F+Windows"></div><div class="social-button social-button--whatsapp js-share-link" data-uri="whatsapp://send?url=https%3A%2F%2Fwallpaper-engine.su%2Ftext=Wallpaper+Engine+%26%238211%3B+%D0%B0%D0%BD%D0%B8%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D0%BE%D0%B1%D0%BE%D0%B8+%D0%B4%D0%BB%D1%8F+Windows"></div></div>
  2048. </body>
  2049. </html>
  2050.  
  2051. <!-- Dynamic page generated in 1.405 seconds. -->
  2052. <!-- Cached page generated by WP-Super-Cache on 2025-05-10 16:43:39 -->
  2053.  
  2054. <!-- super cache -->
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda