CINXE.COM

Performance Improvements in KWin 4.9.2 and 4.10 – Martin's Blog

<!DOCTYPE html> <html lang="en-US" class="no-js no-svg"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="https://gmpg.org/xfn/11"> <script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <title>Performance Improvements in KWin 4.9.2 and 4.10 &#8211; Martin&#039;s Blog</title> <link rel='dns-prefetch' href='//s0.wp.com' /> <link rel='dns-prefetch' href='//secure.gravatar.com' /> <link rel='dns-prefetch' href='//fonts.googleapis.com' /> <link rel='dns-prefetch' href='//s.w.org' /> <link href='https://fonts.gstatic.com' crossorigin rel='preconnect' /> <link rel="alternate" type="application/rss+xml" title="Martin&#039;s Blog &raquo; Feed" href="https://blog.martin-graesslin.com/blog/feed/" /> <link rel="alternate" type="application/rss+xml" title="Martin&#039;s Blog &raquo; Comments Feed" href="https://blog.martin-graesslin.com/blog/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="Martin&#039;s Blog &raquo; Performance Improvements in KWin 4.9.2 and 4.10 Comments Feed" href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/feed/" /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.3\/svg\/","svgExt":".svg","source":{"concatemoji":"http:\/\/blog.martin-graesslin.com\/blog\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.8.2"}}; !function(a,b,c){function d(a){var b,c,d,e,f=String.fromCharCode;if(!k||!k.fillText)return!1;switch(k.clearRect(0,0,j.width,j.height),k.textBaseline="top",k.font="600 32px Arial",a){case"flag":return k.fillText(f(55356,56826,55356,56819),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,56826,8203,55356,56819),0,0),c=j.toDataURL(),b!==c&&(k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447),0,0),c=j.toDataURL(),b!==c);case"emoji4":return k.fillText(f(55358,56794,8205,9794,65039),0,0),d=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55358,56794,8203,9794,65039),0,0),e=j.toDataURL(),d!==e}return!1}function e(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i,j=b.createElement("canvas"),k=j.getContext&&j.getContext("2d");for(i=Array("flag","emoji4"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='cookie-law-info-css' href='http://blog.martin-graesslin.com/blog/wp-content/plugins/cookie-law-info/public/css/cookie-law-info-public.css?ver=2.0.1' type='text/css' media='all' /> <link rel='stylesheet' id='cookie-law-info-gdpr-css' href='http://blog.martin-graesslin.com/blog/wp-content/plugins/cookie-law-info/public/css/cookie-law-info-gdpr.css?ver=2.0.1' type='text/css' media='all' /> <link rel='stylesheet' id='twentyseventeen-fonts-css' href='https://fonts.googleapis.com/css?family=Libre+Franklin%3A300%2C300i%2C400%2C400i%2C600%2C600i%2C800%2C800i&#038;subset=latin%2Clatin-ext&#038;display=fallback' type='text/css' media='all' /> <link rel='stylesheet' id='twentyseventeen-style-css' href='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/style.css?ver=20201208' type='text/css' media='all' /> <link rel='stylesheet' id='twentyseventeen-block-style-css' href='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/css/blocks.css?ver=20190105' type='text/css' media='all' /> <!--[if lt IE 9]> <link rel='stylesheet' id='twentyseventeen-ie8-css' href='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/css/ie8.css?ver=20161202' type='text/css' media='all' /> <![endif]--> <link rel='stylesheet' id='wpgdprc.css-css' href='http://blog.martin-graesslin.com/blog/wp-content/plugins/wp-gdpr-compliance/assets/css/front.min.css?ver=1616701124' type='text/css' media='all' /> <style id='wpgdprc.css-inline-css' type='text/css'> div.wpgdprc .wpgdprc-switch .wpgdprc-switch-inner:before { content: 'Yes'; } div.wpgdprc .wpgdprc-switch .wpgdprc-switch-inner:after { content: 'No'; } </style> <link rel='stylesheet' id='jetpack_css-css' href='http://blog.martin-graesslin.com/blog/wp-content/plugins/jetpack/css/jetpack.css?ver=6.9.4' type='text/css' media='all' /> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script> <script type='text/javascript'> /* <![CDATA[ */ var Cli_Data = {"nn_cookie_ids":[],"cookielist":[],"non_necessary_cookies":[],"ccpaEnabled":"","ccpaRegionBased":"","ccpaBarEnabled":"","ccpaType":"gdpr","js_blocking":"","custom_integration":"","triggerDomRefresh":"","secure_cookies":""}; var cli_cookiebar_settings = {"animate_speed_hide":"500","animate_speed_show":"500","background":"#fff","border":"#444","border_on":"","button_1_button_colour":"#000","button_1_button_hover":"#000000","button_1_link_colour":"#fff","button_1_as_button":"1","button_1_new_win":"","button_2_button_colour":"#333","button_2_button_hover":"#292929","button_2_link_colour":"#444","button_2_as_button":"","button_2_hidebar":"","button_3_button_colour":"#000","button_3_button_hover":"#000000","button_3_link_colour":"#fff","button_3_as_button":"1","button_3_new_win":"","button_4_button_colour":"#000","button_4_button_hover":"#000000","button_4_link_colour":"#fff","button_4_as_button":"1","button_7_button_colour":"#61a229","button_7_button_hover":"#4e8221","button_7_link_colour":"#fff","button_7_as_button":"1","button_7_new_win":"","font_family":"inherit","header_fix":"","notify_animate_hide":"1","notify_animate_show":"","notify_div_id":"#cookie-law-info-bar","notify_position_horizontal":"right","notify_position_vertical":"bottom","scroll_close":"","scroll_close_reload":"","accept_close_reload":"","reject_close_reload":"","showagain_tab":"1","showagain_background":"#fff","showagain_border":"#000","showagain_div_id":"#cookie-law-info-again","showagain_x_position":"100px","text":"#000","show_once_yn":"","show_once":"10000","logging_on":"","as_popup":"","popup_overlay":"1","bar_heading_text":"","cookie_bar_as":"banner","popup_showagain_position":"bottom-right","widget_position":"left"}; var log_object = {"ajax_url":"https:\/\/blog.martin-graesslin.com\/blog\/wp-admin\/admin-ajax.php"}; /* ]]> */ </script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/plugins/cookie-law-info/public/js/cookie-law-info-public.js?ver=2.0.1'></script> <!--[if lt IE 9]> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/js/html5.js?ver=20161020'></script> <![endif]--> <link rel='https://api.w.org/' href='https://blog.martin-graesslin.com/blog/wp-json/' /> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.martin-graesslin.com/blog/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://blog.martin-graesslin.com/blog/wp-includes/wlwmanifest.xml" /> <link rel='prev' title='Never forget your users or extending the User Actions Menu by KWin Scripts' href='https://blog.martin-graesslin.com/blog/2012/09/never-forget-your-users-or-extending-the-user-actions-menu-by-kwin-scripts/' /> <link rel='next' title='Why I don&#8217;t like game rendering performance benchmarks' href='https://blog.martin-graesslin.com/blog/2012/09/why-i-dont-like-game-rendering-performance-benchmarks/' /> <meta name="generator" content="WordPress 4.8.2" /> <link rel="canonical" href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/" /> <link rel='shortlink' href='https://blog.martin-graesslin.com/blog/?p=1004' /> <link rel="alternate" type="application/json+oembed" href="https://blog.martin-graesslin.com/blog/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.martin-graesslin.com%2Fblog%2F2012%2F09%2Fperformance-improvements-in-kwin-4-9-2-and-4-10%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://blog.martin-graesslin.com/blog/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.martin-graesslin.com%2Fblog%2F2012%2F09%2Fperformance-improvements-in-kwin-4-9-2-and-4-10%2F&#038;format=xml" /> <link rel='dns-prefetch' href='//v0.wordpress.com'/> <link rel='dns-prefetch' href='//i0.wp.com'/> <link rel='dns-prefetch' href='//i1.wp.com'/> <link rel='dns-prefetch' href='//i2.wp.com'/> <!-- Jetpack Open Graph Tags --> <meta property="og:type" content="article" /> <meta property="og:title" content="Performance Improvements in KWin 4.9.2 and 4.10" /> <meta property="og:url" content="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/" /> <meta property="og:description" content="Recently I did some refactoring around the Compositor and there was one change where Thomas was afraid that this would cause a performance regression. So I used Valgrind&#8217;s callgrind tool to v…" /> <meta property="article:published_time" content="2012-09-07T09:16:12+00:00" /> <meta property="article:modified_time" content="2012-09-07T09:17:06+00:00" /> <meta property="og:site_name" content="Martin&#039;s Blog" /> <meta property="og:image" content="https://s0.wp.com/i/blank.jpg" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:text:title" content="Performance Improvements in KWin 4.9.2 and 4.10" /> <meta name="twitter:card" content="summary" /> <!-- End Jetpack Open Graph Tags --> </head> <body class="post-template-default single single-post postid-1004 single-format-standard has-header-image has-sidebar colors-light"> <div id="page" class="site"> <a class="skip-link screen-reader-text" href="#content">Skip to content</a> <header id="masthead" class="site-header" role="banner"> <div class="custom-header"> <div class="custom-header-media"> <div id="wp-custom-header" class="wp-custom-header"><img src="http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/images/header.jpg" width="2000" height="1200" alt="Martin&#039;s Blog" /></div> </div> <div class="site-branding"> <div class="wrap"> <div class="site-branding-text"> <p class="site-title"><a href="https://blog.martin-graesslin.com/blog/" rel="home">Martin&#039;s Blog</a></p> <p class="site-description">From the land of wobbly windows</p> </div><!-- .site-branding-text --> </div><!-- .wrap --> </div><!-- .site-branding --> </div><!-- .custom-header --> </header><!-- #masthead --> <div class="site-content-contain"> <div id="content" class="site-content"> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <article id="post-1004" class="post-1004 post type-post status-publish format-standard hentry category-kde category-planetkde tag-kwin tag-optimization"> <header class="entry-header"> <div class="entry-meta"><span class="posted-on"><span class="screen-reader-text">Posted on</span> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/" rel="bookmark"><time class="entry-date published" datetime="2012-09-07T11:16:12+00:00">7. September 2012</time><time class="updated" datetime="2012-09-07T11:17:06+00:00">7. September 2012</time></a></span><span class="byline"> by <span class="author vcard"><a class="url fn n" href="https://blog.martin-graesslin.com/blog/author/admin/">Martin Flöser</a></span></span></div><!-- .entry-meta --><h1 class="entry-title">Performance Improvements in KWin 4.9.2 and 4.10</h1> </header><!-- .entry-header --> <div class="entry-content"> <p>Recently I did some refactoring around the Compositor and there was one change where Thomas was afraid that this would cause a performance regression. So I used Valgrind&#8217;s callgrind tool to verify if this is true. And yes the code had a slight performance drop, though it is luckily not in the hot code path and even if the overhead would be rather small.</p> <p>But having the callgrind log I looked a little bit closer into it, which I haven&#8217;t done since the last optimization for I think 4.8. Since that is quite some time ago and I had basically forgotten how it looked like back then, I was shocked about a few results. So I knew that in the last optimization I adjusted all effects to be not active by default except the translucency (and blur) effect.</p> <p>Now looking at the results I saw that the translucency effect is rather expensive and that by default the effect is not doing anything unless you are moving windows. This is of course a rather unpleasant behavior to have an expensive effect doing nothing. So I looked at the implementation and found a way to better track when the effect should be active. Unless you have enabled the effect to set decorations or inactive windows to translucent the effect is now disabled by default. Just when you start moving a window the effect gets active. And even then the effect performs better.</p> <p>But there was more into it. So I noticed that there is supposed to be an animation when a window starts to move, but personally I have never seen it. Looking closer at the code I noticed that this could have never worked. I decided that an animation added to 4.1 which has never worked can be dropped which again improves a little bit the performance. We might add a better translucency effect for 4.10 which adds the animation again, but for 4.9.x there is no user visible change by removing the animation.</p> <p>But still I could not fully understand why the effect is so expensive, all it does is checking the type of the window multiple times: is it a desktop? is it a dialog? and so on. That cannot be that expensive, but it is. I tracked down the expensive call in <a href="http://kcachegrind.sourceforge.net/html/Home.html">KCacheGrind</a> and found that the check for the windowType() is expensive.</p> <p>The code had quite some surprises. It gets the window type, calls the window rules to have user specific overwrites and some hacks to fix some special windows. One of the hacks was to make menus with a certain size being a top menu. This hack must have been for the time when the top menu had not yet been implemented as a kicker applet. Not only is it unlikely that anybody is using such a combination of KWin and old KDE versions also KWin has not supported the top menu at all in any 4.x release and the code got dropped a few releases ago. Which allowed us to savely remove that part.</p> <p>The second hack is even more intersting. It is a workaround for a dialog in OpenOffice.org 1.x added in 2003. For this hack each time the method was called a complete string comparison had to be done in case the window is a dialog. Again the hack was quite outdated given that on a modern system you don&#8217;t have any windows with the name openoffice, but only libreoffice. Also I searched through the LibreOffice help to find the dialog in question and verified the window type: the hack is no longer required. Both hacks are removed for 4.9.2. The lesson to be learnt from that: never add hacks to your application, they stay. In general I would not accept workarounds for applications inside KWin anymore. This clearly belongs to the area of window specific rules and scripts.</p> <p>But the main optimization of this method will be available in 4.10. The output of callgrind showed that this method was causing quite some expensive dynamic casts. In fact each call caused two dynamic casts to check whether it is a specific sub class and basically the method contained two interwoven implementations for the two specific sub classes. The logical step was to make the method pure virtual and implement it in the sub classes. According to the callgrind logs after the change this improves the performance quite a lot (I cannot say whether this can be noticed by a user, for this it might be too small, but it should be noticable on the battery). Given that this is not just dropping of hacks but a refactoring it cannot go into 4.9.2 as there is still the risk of a regression.</p> <p>Interestingly when the method got implemented the approach was correct and also not expensive. From within the window manager code path it gets only called very few times, in my dataset it&#8217;s about 10 % of the calls coming from the window manager and it seems like most often to be called when a window gets added, so on a longer running session the amount would be even smaller. The code got expensive when it became to be used from within the effects system which is compared to the window manager a rather hot code path. Which is also something important to remember when optimizing: check whether the expected methods are in the hot path. This is now the case for KWin: the most expensive call is the one to render a window, the second most expensive the one which starts the rendering of a frame. And for those I&#8217;m already working on further optimizations for 4.10.</p> <p><img src="http://vg09.met.vgwort.de/na/fceaedcb29ce4589a66d658685a389c9" width="1" height="1" alt=""/></p> </div><!-- .entry-content --> <footer class="entry-footer"><span class="cat-tags-links"><span class="cat-links"><svg class="icon icon-folder-open" aria-hidden="true" role="img"> <use href="#icon-folder-open" xlink:href="#icon-folder-open"></use> </svg><span class="screen-reader-text">Categories</span><a href="https://blog.martin-graesslin.com/blog/kategorien/kde/" rel="category tag">KDE</a>, <a href="https://blog.martin-graesslin.com/blog/kategorien/kde/planetkde/" rel="category tag">planetkde</a></span><span class="tags-links"><svg class="icon icon-hashtag" aria-hidden="true" role="img"> <use href="#icon-hashtag" xlink:href="#icon-hashtag"></use> </svg><span class="screen-reader-text">Tags</span><a href="https://blog.martin-graesslin.com/blog/tag/kwin/" rel="tag">KWin</a>, <a href="https://blog.martin-graesslin.com/blog/tag/optimization/" rel="tag">Optimization</a></span></span></footer> <!-- .entry-footer --> </article><!-- #post-1004 --> <div id="comments" class="comments-area"> <h2 class="comments-title"> 36 Replies to &ldquo;Performance Improvements in KWin 4.9.2 and 4.10&rdquo; </h2> <ol class="comment-list"> <li id="comment-50528" class="comment even thread-even depth-1"> <article id="div-comment-50528" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://0.gravatar.com/avatar/3bbf05e83d79ed984a39d76339c37289?s=100&#038;d=identicon&#038;r=g' srcset='http://0.gravatar.com/avatar/3bbf05e83d79ed984a39d76339c37289?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn"><a href='http://friesoft.wordpress.com' rel='external nofollow' class='url'>Bernhard Friedreich</a></b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50528"> <time datetime="2012-09-07T11:45:39+00:00"> 7. September 2012 at 11:45 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Thanks very much for your ongoing effort! Those posts are also great! Please keep them coming 🙂</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50529" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50529" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://0.gravatar.com/avatar/391f4eea1002054903fb6ca60c6b5d04?s=100&#038;d=identicon&#038;r=g' srcset='http://0.gravatar.com/avatar/391f4eea1002054903fb6ca60c6b5d04?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Lilian</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50529"> <time datetime="2012-09-07T11:52:51+00:00"> 7. September 2012 at 11:52 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Very good work, love reading your blog posts&#8230;<br /> When I read about this kind of things I can&#8217;t wait for the next release to test them out.<br /> Actually, there is always something great in the next KDE release that makes you wait impatiently for the next version.<br /> When KDE 4.8 was coming I had to compile myself Dolphin 2, couldn&#8217;t wait a few months for it&#8230;</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50531" class="comment even thread-even depth-1"> <article id="div-comment-50531" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/8a8020978def468640d53d519af68af1?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/8a8020978def468640d53d519af68af1?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Andrea</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50531"> <time datetime="2012-09-07T12:42:48+00:00"> 7. September 2012 at 12:42 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>+ 1<br /> even if i&#8217;m not a developer i enjoy reading these posts. Thanks for all your efforts!</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50534" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50534" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/711a876513da240a65d1b0b30bfab9dd?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/711a876513da240a65d1b0b30bfab9dd?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Richard</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50534"> <time datetime="2012-09-07T13:25:07+00:00"> 7. September 2012 at 1:25 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>That&#8217;s some good engineering you did! Super.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50535" class="comment even thread-even depth-1"> <article id="div-comment-50535" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/b11a5690632227bcd847b41a0b5821de?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/b11a5690632227bcd847b41a0b5821de?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Svempa</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50535"> <time datetime="2012-09-07T13:34:29+00:00"> 7. September 2012 at 1:34 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Sweet! Looking forward to trying these things out. 🙂</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50536" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50536" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/de10c1095d14e53ea703d70616e077b5?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/de10c1095d14e53ea703d70616e077b5?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">fasd</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50536"> <time datetime="2012-09-07T13:44:52+00:00"> 7. September 2012 at 1:44 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Great news! Good job Martin &amp; kwin devs. Performance improvements news are like honey to my ears. Keep rocking! Make kwin uber window manager!</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50537" class="comment even thread-even depth-1 parent"> <article id="div-comment-50537" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/d20f86db9a6f03cb070e9fbaaf0b7228?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/d20f86db9a6f03cb070e9fbaaf0b7228?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">moltonel</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50537"> <time datetime="2012-09-07T14:02:37+00:00"> 7. September 2012 at 2:02 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Nice 🙂 I&#8217;m still waiting for kwin to not show up in `top` on an idle system; it&#8217;s not there yet when compositing is on, but it&#8217;s getting closer with every release 🙂</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50538" class="comment byuser comment-author-admin bypostauthor odd alt depth-2 parent"> <article id="div-comment-50538" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50538"> <time datetime="2012-09-07T14:08:40+00:00"> 7. September 2012 at 2:08 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>you can never have KWin not show up on top. Someone has to bring the numbers of top to that screen, that someone is KWin.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50648" class="comment even depth-3 parent"> <article id="div-comment-50648" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/d20f86db9a6f03cb070e9fbaaf0b7228?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/d20f86db9a6f03cb070e9fbaaf0b7228?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">moltonel</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50648"> <time datetime="2012-09-09T21:24:09+00:00"> 9. September 2012 at 9:24 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Yes, but should it really, on a completely static screen (no animation, `top` running in a deteched `screen` terminal) and on modern-ish hardware (core2 <a href="mailto:duo@2.5GHz">duo@2.5GHz</a>, intel graphic card using i915 driver) take an average of 2% of the cpu ? Be the second biggest aggregate cpu user after X but before virtuoso, plasma, emacs, konsole, and krunner (ignoring programs that aren&#8217;t running for the whole session) ? If running with compositing disabled, kwin stays at the bottom of the list, rather than the top.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50649" class="comment byuser comment-author-admin bypostauthor odd alt depth-4 parent"> <article id="div-comment-50649" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50649"> <time datetime="2012-09-09T21:45:07+00:00"> 9. September 2012 at 9:45 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>then something is happening. on a completely idle system KWin is not doing anything. You can use the show paint effect to see whether something is going wrong. <strong>WARNING: do not use show paint effect in case you suffer from epilepsy</strong></p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50650" class="comment even depth-5"> <article id="div-comment-50650" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/17cdec129681527853ad1a92fbfe5ebd?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/17cdec129681527853ad1a92fbfe5ebd?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">genstorm</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50650"> <time datetime="2012-09-09T21:51:17+00:00"> 9. September 2012 at 9:51 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>here, on another i915 sys, kwin is usually to be found using well below &lt;1% but periodically spikes up to 2% when doing nothing.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> <li id="comment-50539" class="comment odd alt thread-odd thread-alt depth-1 parent"> <article id="div-comment-50539" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/a31c7e98f1f48d8236d3697988ac64c0?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/a31c7e98f1f48d8236d3697988ac64c0?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">uniq</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50539"> <time datetime="2012-09-07T14:10:50+00:00"> 7. September 2012 at 2:10 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>I read so many blog posts and comments about KDE or free software in general that developers are only interested in new features and do neither fix bugs nor track performance bottlenecks. KDE and especially you are a great counter-example. Thanks for your afford and I am again looking forward to the next, even more polished KDE SC release.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50541" class="comment byuser comment-author-admin bypostauthor even depth-2 parent"> <article id="div-comment-50541" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50541"> <time datetime="2012-09-07T14:17:57+00:00"> 7. September 2012 at 2:17 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>there are a quite simple reasons for that wrong perspective. First of all blogging about performance improvements or fixed bugs is not something everybody likes. It means admitting that there have been bugs or that the application is slow. When I did the major performance improvment last year I got many comments in the area of &#8220;your so stupid, why didn&#8217;t you run valgrind earlier&#8221; &#8211; that makes one wonder whether it&#8217;s worth to blog about performance improvments.</p> <p>And it&#8217;s much easier to blog about awesome new stuff, showing a screenshot or a video than blogging about boring internal details.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50545" class="comment byuser comment-author-admin bypostauthor odd alt depth-3"> <article id="div-comment-50545" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50545"> <time datetime="2012-09-07T16:28:32+00:00"> 7. September 2012 at 4:28 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p><a href="http://phoronix.com/forums/showthread.php?73494-KDE-s-KWin-To-Receive-Performance-Improvements&#038;p=285301#post285301" rel="nofollow">An example</a> for what I explained. You cannot write about bugs without others thinking they are smarter.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> <li id="comment-50543" class="comment even thread-even depth-1 parent"> <article id="div-comment-50543" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/5b3f1eba221433eb26111e2f75070ef3?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/5b3f1eba221433eb26111e2f75070ef3?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Paulo Narciso</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50543"> <time datetime="2012-09-07T16:08:17+00:00"> 7. September 2012 at 4:08 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Last time I&#8217;ve tried kde 4.9, kwin showed tearing in the upper portion of the screen, using nvidia proprietary, just like mutter or compiz.</p> <p>Mutter and compiz fixed that, and I would like to see that fixed in Kwin, because it&#8217;s a very good compositor, and the only one that shutsdown effects completely while running fullscreen apps. </p> <p>And, by the way, nice photo of that portuguese tram :), I see you visited my nice country.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50544" class="comment byuser comment-author-admin bypostauthor odd alt depth-2"> <article id="div-comment-50544" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50544"> <time datetime="2012-09-07T16:23:27+00:00"> 7. September 2012 at 4:23 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <blockquote><p>And, by the way, nice photo of that portuguese tram , I see you visited my nice country.</p></blockquote> <p>No, it&#8217;s a default wordpress background. I&#8217;ve never been to Portugal so far.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50548" class="comment even depth-2 parent"> <article id="div-comment-50548" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://0.gravatar.com/avatar/96bdd84844cb565f83ff6f0180dcf373?s=100&#038;d=identicon&#038;r=g' srcset='http://0.gravatar.com/avatar/96bdd84844cb565f83ff6f0180dcf373?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Thomas</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50548"> <time datetime="2012-09-07T16:49:55+00:00"> 7. September 2012 at 4:49 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Unfortunately the &#8220;fix&#8221; means to use fullscreen repaints, so this should be fixed by nvidia (they seem to sync to the end of the vertical retrace instead of the beginning when using glXWaitVideoSync)</p> <p>That said: kwin doesn&#8217;t actually enter the buffer swapping path whenever it actually could (because it repaints the entire screen but the compositor is not aware of that in the relevant location)<br /> That&#8217;s sth. that could get fixed and by that avoid that tearing for fullscreen (or maximized) applications.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50567" class="comment odd alt depth-3"> <article id="div-comment-50567" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/de10c1095d14e53ea703d70616e077b5?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/de10c1095d14e53ea703d70616e077b5?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">fasd</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50567"> <time datetime="2012-09-08T12:10:10+00:00"> 8. September 2012 at 12:10 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>You guys are amazing! I don&#8217;t know if it&#8217;s nvidia or kwin (I think both) but since 4.9 there is no more tearing on upper part of the screen for me, moving windows around is pure joy 🙂 I call, best release ever! (yeah, no surprise, every new release is better then earlier one 😉 But this is on decent PC. Still waiting for more improvements! Kwin lately has gained a lot of good PR, don&#8217;t waste it 🙂</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> <li id="comment-50546" class="comment even thread-odd thread-alt depth-1 parent"> <article id="div-comment-50546" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/2adea968fa257e1cff1c5c5efd1c367b?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/2adea968fa257e1cff1c5c5efd1c367b?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">promeneur</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50546"> <time datetime="2012-09-07T16:30:11+00:00"> 7. September 2012 at 4:30 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>thanks for your job.</p> <p>is libkwinnvidiahack still needed with &gt;=4.8.4 ?</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50547" class="comment byuser comment-author-admin bypostauthor odd alt depth-2"> <article id="div-comment-50547" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50547"> <time datetime="2012-09-07T16:35:23+00:00"> 7. September 2012 at 4:35 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>it&#8217;s still used, so I think yes.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> <li id="comment-50549" class="comment even thread-even depth-1"> <article id="div-comment-50549" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://0.gravatar.com/avatar/0eb178cec364c022a189c3814e5f7483?s=100&#038;d=identicon&#038;r=g' srcset='http://0.gravatar.com/avatar/0eb178cec364c022a189c3814e5f7483?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">David</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50549"> <time datetime="2012-09-07T18:55:47+00:00"> 7. September 2012 at 6:55 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>You rock!<br /> I always enjoy reading about performance improvements, and I think many people does aswell. The critics represent maybe 1% of the readers.<br /> For me, KDE 4.x is feature complete. But it always can be improved with more performance &amp; bug fixes.<br /> Another thing you can do to improve KDE is to look at responsiveness (real and perceived), although that can get tricky to measure (I have no idea).</p> <p>Keep your hard work.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50550" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50550" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/ea91073da90e9207bd720f505d095d80?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/ea91073da90e9207bd720f505d095d80?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn"><a href='http://kdepepo.wordpress.com/' rel='external nofollow' class='url'>christoph</a></b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50550"> <time datetime="2012-09-07T20:33:42+00:00"> 7. September 2012 at 8:33 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Call me stupid, but I don&#8217;t like tabs in my browser. Instead, I open each page in a separate window. Right now, I have 41 Konqueror windows open, not counting some Konsole windows and other stuff.</p> <p>I remember that one year ago, KWin got unusably slow with that many windows. Opening a new window needed ages, even simply scrolling in the front-most window was slow.</p> <p>Today, I don&#8217;t even notice a difference between an empty desktop, and desktop with lots of open windows, and I am amazed that you still find ways to improve performance.</p> <p>Keep rocking!</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50551" class="comment even thread-even depth-1"> <article id="div-comment-50551" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/76da48e77a3fd65c9d13f36a6d7770c9?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/76da48e77a3fd65c9d13f36a6d7770c9?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Enrico</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50551"> <time datetime="2012-09-07T20:58:09+00:00"> 7. September 2012 at 8:58 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>awesome work! Martin</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50553" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50553" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://0.gravatar.com/avatar/f5e86b6f1314d34437f8509c4ad17e4d?s=100&#038;d=identicon&#038;r=g' srcset='http://0.gravatar.com/avatar/f5e86b6f1314d34437f8509c4ad17e4d?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">orangotango</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50553"> <time datetime="2012-09-07T21:40:03+00:00"> 7. September 2012 at 9:40 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Your bugfixing/cleanup job is great and makes KDE even better, thank you.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50598" class="comment even thread-even depth-1"> <article id="div-comment-50598" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/78c2860ad1a8265f392e732d67b99f1f?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/78c2860ad1a8265f392e732d67b99f1f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Tsiolkovsky</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50598"> <time datetime="2012-09-08T19:17:29+00:00"> 8. September 2012 at 7:17 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Performance improvements are currently the best news for me when it comes to KDE, especially KWin, Akonadi and Nepomuk. All the features are just awesome and I currently don&#8217;t miss anything so performance improvements absolutely rock.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50605" class="comment odd alt thread-odd thread-alt depth-1 parent"> <article id="div-comment-50605" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/17cdec129681527853ad1a92fbfe5ebd?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/17cdec129681527853ad1a92fbfe5ebd?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">genstorm</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50605"> <time datetime="2012-09-09T00:05:51+00:00"> 9. September 2012 at 12:05 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>How evil to announce such improvements right after release and one month from the next. 🙂 But then I remember that in Gentoo it&#8217;s just a matter of cherry-copying your patches into /etc/portage/patches/ and there I am, already enjoying your latest work. 😀</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50621" class="comment byuser comment-author-admin bypostauthor even depth-2 parent"> <article id="div-comment-50621" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/e76424052fd111de1eb2d1f91bddb64f?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Martin Gräßlin</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50621"> <time datetime="2012-09-09T07:56:45+00:00"> 9. September 2012 at 7:56 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>sorry, my development model is pretty much decoupled from release schedule</p> </div><!-- .comment-content --> </article><!-- .comment-body --> <ol class="children"> <li id="comment-50651" class="comment odd alt depth-3"> <article id="div-comment-50651" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/17cdec129681527853ad1a92fbfe5ebd?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/17cdec129681527853ad1a92fbfe5ebd?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">genstorm</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50651"> <time datetime="2012-09-09T21:56:20+00:00"> 9. September 2012 at 9:56 pm </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Nothing&#8217;s wrong with that. 😉 I just wish sometimes kde had a less stiff release schedule. For a long time I was simply pulling from stable-dev trunk because of that so I could get improvements and fixes for specific packages earlier.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> </ol><!-- .children --> </li><!-- #comment-## --> <li id="comment-50607" class="comment even thread-even depth-1"> <article id="div-comment-50607" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/128c2d95875f59f7569978683b6829dc?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/128c2d95875f59f7569978683b6829dc?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Bártfai Tamás</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50607"> <time datetime="2012-09-09T00:58:58+00:00"> 9. September 2012 at 12:58 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>I want to let you know, that I was a KDE user in the 3.x days, but after KDE4 came out, I switched to gnome with tiling WMs like awesome and Xmonad. I was happy and more productive with these WMs, and that they are very customizable, especially Xmonad.<br /> I tried every major release of KDE4, but I always felt that something missing, that it could be a good thing but still slow, buggy, and I have to touch my rat too many times. Because of the slowness and bugs I purged KDE again and again after every install. Now I tried 4.9 and I am really amazed. It&#8217;s fast, slick, good looking, and I already started customizing it to my needs.<br /> Awesome job, keep it up 🙂</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50614" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50614" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/b5c0c62b4f595a277cd8ba9d03eb0a01?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/b5c0c62b4f595a277cd8ba9d03eb0a01?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Diego Viola</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50614"> <time datetime="2012-09-09T04:01:26+00:00"> 9. September 2012 at 4:01 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Sweet. You rock man.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50615" class="comment even thread-even depth-1"> <article id="div-comment-50615" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://2.gravatar.com/avatar/b5c0c62b4f595a277cd8ba9d03eb0a01?s=100&#038;d=identicon&#038;r=g' srcset='http://2.gravatar.com/avatar/b5c0c62b4f595a277cd8ba9d03eb0a01?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Diego Viola</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50615"> <time datetime="2012-09-09T04:03:31+00:00"> 9. September 2012 at 4:03 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Thank you.</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50737" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-50737" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://0.gravatar.com/avatar/ce3dd0ac7d4a8f3c19f829ac4c274824?s=100&#038;d=identicon&#038;r=g' srcset='http://0.gravatar.com/avatar/ce3dd0ac7d4a8f3c19f829ac4c274824?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Seleko</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-50737"> <time datetime="2012-09-11T09:03:53+00:00"> 11. September 2012 at 9:03 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Thank you guys!</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> <li id="comment-50945" class="pingback even thread-even depth-1"> <div class="comment-body"> Pingback: <a href='http://techviewpodcast.wordpress.com/2012/09/16/techview-podcast-12-36folge172/' rel='external nofollow' class='url'>Techview-Podcast-12-36(Folge172) &laquo; Techview-Podcast</a> </div> </li><!-- #comment-## --> <li id="comment-51244" class="pingback odd alt thread-odd thread-alt depth-1"> <div class="comment-body"> Pingback: <a href='http://kdefamily.pl/2012/09/optymalizacja-kwin-w-kde-sc-4-9-2-i-4-10/' rel='external nofollow' class='url'>Optymalizacja KWin w KDE SC 4.9.2 i 4.10 | KDEFamily</a> </div> </li><!-- #comment-## --> <li id="comment-51327" class="pingback even thread-even depth-1"> <div class="comment-body"> Pingback: <a href='http://nextrack.frozenbox.org/kde-sc-4-9-2-e-4-10-kwin-sara-ancora-piu-performante/' rel='external nofollow' class='url'>KDE SC 4.9.2 e 4.10: KWin sarà ancora più performante</a> </div> </li><!-- #comment-## --> <li id="comment-51426" class="comment odd alt thread-odd thread-alt depth-1"> <article id="div-comment-51426" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> <img alt='' src='http://1.gravatar.com/avatar/471204a0e329313449221de7587673c5?s=100&#038;d=identicon&#038;r=g' srcset='http://1.gravatar.com/avatar/471204a0e329313449221de7587673c5?s=200&amp;d=identicon&amp;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' /> <b class="fn">Thomas</b> <span class="says">says:</span> </div><!-- .comment-author --> <div class="comment-metadata"> <a href="https://blog.martin-graesslin.com/blog/2012/09/performance-improvements-in-kwin-4-9-2-and-4-10/#comment-51426"> <time datetime="2012-09-29T08:38:39+00:00"> 29. September 2012 at 8:38 am </time> </a> </div><!-- .comment-metadata --> </footer><!-- .comment-meta --> <div class="comment-content"> <p>Great, can&#8217;t wait to put it on my Gentoo</p> </div><!-- .comment-content --> </article><!-- .comment-body --> </li><!-- #comment-## --> </ol> <p class="no-comments">Comments are closed.</p> </div><!-- #comments --> <nav class="navigation post-navigation" role="navigation"> <h2 class="screen-reader-text">Post navigation</h2> <div class="nav-links"><div class="nav-previous"><a href="https://blog.martin-graesslin.com/blog/2012/09/never-forget-your-users-or-extending-the-user-actions-menu-by-kwin-scripts/" rel="prev"><span class="screen-reader-text">Previous Post</span><span aria-hidden="true" class="nav-subtitle">Previous</span> <span class="nav-title"><span class="nav-title-icon-wrapper"><svg class="icon icon-arrow-left" aria-hidden="true" role="img"> <use href="#icon-arrow-left" xlink:href="#icon-arrow-left"></use> </svg></span>Never forget your users or extending the User Actions Menu by KWin Scripts</span></a></div><div class="nav-next"><a href="https://blog.martin-graesslin.com/blog/2012/09/why-i-dont-like-game-rendering-performance-benchmarks/" rel="next"><span class="screen-reader-text">Next Post</span><span aria-hidden="true" class="nav-subtitle">Next</span> <span class="nav-title">Why I don&#8217;t like game rendering performance benchmarks<span class="nav-title-icon-wrapper"><svg class="icon icon-arrow-right" aria-hidden="true" role="img"> <use href="#icon-arrow-right" xlink:href="#icon-arrow-right"></use> </svg></span></span></a></div></div> </nav> </main><!-- #main --> </div><!-- #primary --> <aside id="secondary" class="widget-area" role="complementary" aria-label="Blog Sidebar"> <section id="pages-2" class="widget widget_pages"><h2 class="widget-title">Pages</h2> <ul> <li class="page_item page-item-2"><a href="https://blog.martin-graesslin.com/blog/about/">About</a></li> <li class="page_item page-item-43"><a href="https://blog.martin-graesslin.com/blog/datenschutzerklarung/">Datenschutzerklärung</a></li> <li class="page_item page-item-44"><a href="https://blog.martin-graesslin.com/blog/impressum/">Impressum</a></li> </ul> </section><section id="text-2" class="widget widget_text"><h2 class="widget-title">Support KDE</h2> <div class="textwidget"><a href="http://jointhegame.kde.org/"><img src="wp-content/uploads/2011/12/jtg.png" alt="Join the Game" title="Join the Game"/></a></div> </section><section id="categories-1" class="widget widget_categories"><h2 class="widget-title">Categories</h2> <ul> <li class="cat-item cat-item-1"><a href="https://blog.martin-graesslin.com/blog/kategorien/allgemein/" >Allgemein</a> </li> <li class="cat-item cat-item-3"><a href="https://blog.martin-graesslin.com/blog/kategorien/it/" >Bits und Bytes</a> </li> <li class="cat-item cat-item-35"><a href="https://blog.martin-graesslin.com/blog/kategorien/kde/help-kwin/" >Help KWin</a> </li> <li class="cat-item cat-item-5"><a href="https://blog.martin-graesslin.com/blog/kategorien/kde/" >KDE</a> </li> <li class="cat-item cat-item-7"><a href="https://blog.martin-graesslin.com/blog/kategorien/kde/planetkde/" >planetkde</a> </li> <li class="cat-item cat-item-4"><a href="https://blog.martin-graesslin.com/blog/kategorien/Politik/" >Politik</a> </li> <li class="cat-item cat-item-32"><a href="https://blog.martin-graesslin.com/blog/kategorien/kde/this-week-in-kwin/" >This Week in KWin</a> </li> <li class="cat-item cat-item-6"><a href="https://blog.martin-graesslin.com/blog/kategorien/ubuntuusers/" >ubuntuusers</a> </li> </ul> </section><section id="archives-2" class="widget widget_archive"><h2 class="widget-title">Archives</h2> <ul> <li><a href='https://blog.martin-graesslin.com/blog/2021/11/'>November 2021</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2021/03/'>March 2021</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2020/04/'>April 2020</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2019/11/'>November 2019</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2019/01/'>January 2019</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2018/12/'>December 2018</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2018/06/'>June 2018</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2018/05/'>May 2018</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2018/03/'>March 2018</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2018/02/'>February 2018</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2018/01/'>January 2018</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/12/'>December 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/10/'>October 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/09/'>September 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/08/'>August 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/07/'>July 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/06/'>June 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/05/'>May 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/04/'>April 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/03/'>March 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2017/02/'>February 2017</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/12/'>December 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/11/'>November 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/10/'>October 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/09/'>September 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/08/'>August 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/07/'>July 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/06/'>June 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/05/'>May 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/04/'>April 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2016/03/'>March 2016</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/12/'>December 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/11/'>November 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/10/'>October 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/09/'>September 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/08/'>August 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/07/'>July 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/06/'>June 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/04/'>April 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/03/'>March 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/02/'>February 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2015/01/'>January 2015</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/12/'>December 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/11/'>November 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/10/'>October 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/08/'>August 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/07/'>July 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/06/'>June 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/05/'>May 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/04/'>April 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/03/'>March 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/02/'>February 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2014/01/'>January 2014</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/12/'>December 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/11/'>November 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/10/'>October 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/09/'>September 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/08/'>August 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/07/'>July 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/06/'>June 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/05/'>May 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/04/'>April 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/03/'>March 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/02/'>February 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2013/01/'>January 2013</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/12/'>December 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/11/'>November 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/10/'>October 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/09/'>September 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/08/'>August 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/07/'>July 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/06/'>June 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/05/'>May 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/04/'>April 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/03/'>March 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/02/'>February 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2012/01/'>January 2012</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/12/'>December 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/11/'>November 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/10/'>October 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/09/'>September 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/08/'>August 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/07/'>July 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/06/'>June 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/05/'>May 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/04/'>April 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/03/'>March 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/02/'>February 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2011/01/'>January 2011</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/12/'>December 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/11/'>November 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/10/'>October 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/09/'>September 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/08/'>August 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/07/'>July 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/06/'>June 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/05/'>May 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/04/'>April 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/03/'>March 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/02/'>February 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2010/01/'>January 2010</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/12/'>December 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/11/'>November 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/10/'>October 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/09/'>September 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/08/'>August 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/07/'>July 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/06/'>June 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/05/'>May 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/04/'>April 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/02/'>February 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2009/01/'>January 2009</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/12/'>December 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/11/'>November 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/10/'>October 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/09/'>September 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/08/'>August 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/07/'>July 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/06/'>June 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/05/'>May 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/04/'>April 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/03/'>March 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/02/'>February 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2008/01/'>January 2008</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/12/'>December 2007</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/11/'>November 2007</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/10/'>October 2007</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/09/'>September 2007</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/08/'>August 2007</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/07/'>July 2007</a></li> <li><a href='https://blog.martin-graesslin.com/blog/2007/06/'>June 2007</a></li> </ul> </section><section id="meta-2" class="widget widget_meta"><h2 class="widget-title">Meta</h2> <ul> <li><a href="https://blog.martin-graesslin.com/blog/wp-login.php">Log in</a></li> <li><a href="https://blog.martin-graesslin.com/blog/feed/">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li> <li><a href="https://blog.martin-graesslin.com/blog/comments/feed/">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li> <li><a href="https://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li> </ul> </section></aside><!-- #secondary --> </div><!-- .wrap --> </div><!-- #content --> <footer id="colophon" class="site-footer" role="contentinfo"> <div class="wrap"> <div class="site-info"> <a href="https://wordpress.org/" class="imprint"> Proudly powered by WordPress </a> </div><!-- .site-info --> </div><!-- .wrap --> </footer><!-- #colophon --> </div><!-- .site-content-contain --> </div><!-- #page --> <!--googleoff: all--><div id="cookie-law-info-bar" data-nosnippet="true"><span>This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.<a role='button' tabindex='0' data-cli_action="accept" id="cookie_action_close_header" class="medium cli-plugin-button cli-plugin-main-button cookie_action_close_header cli_action_button" style="display:inline-block; ">Accept</a> <a href='https://blog.martin-graesslin.com/blog' id="CONSTANT_OPEN_URL" target="_blank" class="cli-plugin-main-link" style="display:inline-block;" >Read More</a></span></div><div id="cookie-law-info-again" style="display:none;" data-nosnippet="true"><span id="cookie_hdr_showagain">Privacy & Cookies Policy</span></div><div class="cli-modal" data-nosnippet="true" id="cliSettingsPopup" tabindex="-1" role="dialog" aria-labelledby="cliSettingsPopup" aria-hidden="true"> <div class="cli-modal-dialog" role="document"> <div class="cli-modal-content cli-bar-popup"> <button type="button" class="cli-modal-close" id="cliModalClose"> <svg class="" viewBox="0 0 24 24"><path d="M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z"></path><path d="M0 0h24v24h-24z" fill="none"></path></svg> <span class="wt-cli-sr-only">Close</span> </button> <div class="cli-modal-body"> <div class="cli-container-fluid cli-tab-container"> <div class="cli-row"> <div class="cli-col-12 cli-align-items-stretch cli-px-0"> <div class="cli-privacy-overview"> <h4>Privacy Overview</h4> <div class="cli-privacy-content"> <div class="cli-privacy-content-text">This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.</div> </div> <a class="cli-privacy-readmore" aria-label="Show more" tabindex="0" role="button" data-readmore-text="Show more" data-readless-text="Show less"></a> </div> </div> <div class="cli-col-12 cli-align-items-stretch cli-px-0 cli-tab-section-container"> <div class="cli-tab-section"> <div class="cli-tab-header"> <a role="button" tabindex="0" class="cli-nav-link cli-settings-mobile" data-target="necessary" data-toggle="cli-toggle-tab"> Necessary </a> <div class="wt-cli-necessary-checkbox"> <input type="checkbox" class="cli-user-preference-checkbox" id="wt-cli-checkbox-necessary" data-id="checkbox-necessary" checked="checked" /> <label class="form-check-label" for="wt-cli-checkbox-necessary">Necessary</label> </div> <span class="cli-necessary-caption">Always Enabled</span> </div> <div class="cli-tab-content"> <div class="cli-tab-pane cli-fade" data-id="necessary"> <p>Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.</p> </div> </div> </div> <div class="cli-tab-section"> <div class="cli-tab-header"> <a role="button" tabindex="0" class="cli-nav-link cli-settings-mobile" data-target="non-necessary" data-toggle="cli-toggle-tab"> Non-necessary </a> <div class="cli-switch"> <input type="checkbox" id="wt-cli-checkbox-non-necessary" class="cli-user-preference-checkbox" data-id="checkbox-non-necessary" checked='checked' /> <label for="wt-cli-checkbox-non-necessary" class="cli-slider" data-cli-enable="Enabled" data-cli-disable="Disabled"><span class="wt-cli-sr-only">Non-necessary</span></label> </div> </div> <div class="cli-tab-content"> <div class="cli-tab-pane cli-fade" data-id="non-necessary"> <p>Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.</p> </div> </div> </div> </div> </div> </div> </div> <div class="cli-modal-footer"> <div class="wt-cli-element cli-container-fluid cli-tab-container"> <div class="cli-row"> <div class="cli-col-12 cli-align-items-stretch cli-px-0"> <div class="cli-tab-footer wt-cli-privacy-overview-actions"> <a id="wt-cli-privacy-save-btn" role="button" tabindex="0" data-cli-action="accept" class="wt-cli-privacy-btn cli_setting_save_button wt-cli-privacy-accept-btn cli-btn">SAVE & ACCEPT</a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="cli-modal-backdrop cli-fade cli-settings-overlay"></div> <div class="cli-modal-backdrop cli-fade cli-popupbar-overlay"></div> <!--googleon: all--> <div style="display:none"> <div class="grofile-hash-map-3bbf05e83d79ed984a39d76339c37289"> </div> <div class="grofile-hash-map-391f4eea1002054903fb6ca60c6b5d04"> </div> <div class="grofile-hash-map-8a8020978def468640d53d519af68af1"> </div> <div class="grofile-hash-map-711a876513da240a65d1b0b30bfab9dd"> </div> <div class="grofile-hash-map-b11a5690632227bcd847b41a0b5821de"> </div> <div class="grofile-hash-map-de10c1095d14e53ea703d70616e077b5"> </div> <div class="grofile-hash-map-d20f86db9a6f03cb070e9fbaaf0b7228"> </div> <div class="grofile-hash-map-e76424052fd111de1eb2d1f91bddb64f"> </div> <div class="grofile-hash-map-17cdec129681527853ad1a92fbfe5ebd"> </div> <div class="grofile-hash-map-a31c7e98f1f48d8236d3697988ac64c0"> </div> <div class="grofile-hash-map-5b3f1eba221433eb26111e2f75070ef3"> </div> <div class="grofile-hash-map-96bdd84844cb565f83ff6f0180dcf373"> </div> <div class="grofile-hash-map-2adea968fa257e1cff1c5c5efd1c367b"> </div> <div class="grofile-hash-map-0eb178cec364c022a189c3814e5f7483"> </div> <div class="grofile-hash-map-ea91073da90e9207bd720f505d095d80"> </div> <div class="grofile-hash-map-76da48e77a3fd65c9d13f36a6d7770c9"> </div> <div class="grofile-hash-map-f5e86b6f1314d34437f8509c4ad17e4d"> </div> <div class="grofile-hash-map-78c2860ad1a8265f392e732d67b99f1f"> </div> <div class="grofile-hash-map-128c2d95875f59f7569978683b6829dc"> </div> <div class="grofile-hash-map-b5c0c62b4f595a277cd8ba9d03eb0a01"> </div> <div class="grofile-hash-map-ce3dd0ac7d4a8f3c19f829ac4c274824"> </div> <div class="grofile-hash-map-471204a0e329313449221de7587673c5"> </div> </div> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/plugins/jetpack/_inc/build/photon/photon.min.js?ver=20130122'></script> <script type='text/javascript' src='https://s0.wp.com/wp-content/js/devicepx-jetpack.js?ver=202447'></script> <script type='text/javascript' src='https://secure.gravatar.com/js/gprofiles.js?ver=2024Novaa'></script> <script type='text/javascript'> /* <![CDATA[ */ var WPGroHo = {"my_hash":""}; /* ]]> */ </script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/plugins/jetpack/modules/wpgroho.js?ver=4.8.2'></script> <script type='text/javascript'> /* <![CDATA[ */ var twentyseventeenScreenReaderText = {"quote":"<svg class=\"icon icon-quote-right\" aria-hidden=\"true\" role=\"img\"> <use href=\"#icon-quote-right\" xlink:href=\"#icon-quote-right\"><\/use> <\/svg>"}; /* ]]> */ </script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js?ver=20161114'></script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/js/global.js?ver=20190121'></script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js?ver=2.1.2'></script> <script type='text/javascript'> /* <![CDATA[ */ var wpgdprcData = {"ajaxURL":"https:\/\/blog.martin-graesslin.com\/blog\/wp-admin\/admin-ajax.php","ajaxSecurity":"917314678e","isMultisite":"","path":"\/","blogId":""}; /* ]]> */ </script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-content/plugins/wp-gdpr-compliance/assets/js/front.min.js?ver=1616701124'></script> <script type='text/javascript' src='http://blog.martin-graesslin.com/blog/wp-includes/js/wp-embed.min.js?ver=4.8.2'></script> <script type='text/javascript' src='https://stats.wp.com/e-202447.js' async='async' defer='defer'></script> <script type='text/javascript'> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:6.9.4',blog:'39344064',post:'1004',tz:'1',srv:'blog.martin-graesslin.com'} ]); _stq.push([ 'clickTrackerInit', '39344064', '1004' ]); </script> <svg style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <symbol id="icon-behance" viewBox="0 0 37 32"> <path class="path1" d="M33 6.054h-9.125v2.214h9.125v-2.214zM28.5 13.661q-1.607 0-2.607 0.938t-1.107 2.545h7.286q-0.321-3.482-3.571-3.482zM28.786 24.107q1.125 0 2.179-0.571t1.357-1.554h3.946q-1.786 5.482-7.625 5.482-3.821 0-6.080-2.357t-2.259-6.196q0-3.714 2.33-6.17t6.009-2.455q2.464 0 4.295 1.214t2.732 3.196 0.902 4.429q0 0.304-0.036 0.839h-11.75q0 1.982 1.027 3.063t2.973 1.080zM4.946 23.214h5.286q3.661 0 3.661-2.982 0-3.214-3.554-3.214h-5.393v6.196zM4.946 13.625h5.018q1.393 0 2.205-0.652t0.813-2.027q0-2.571-3.393-2.571h-4.643v5.25zM0 4.536h10.607q1.554 0 2.768 0.25t2.259 0.848 1.607 1.723 0.563 2.75q0 3.232-3.071 4.696 2.036 0.571 3.071 2.054t1.036 3.643q0 1.339-0.438 2.438t-1.179 1.848-1.759 1.268-2.161 0.75-2.393 0.232h-10.911v-22.5z"></path> </symbol> <symbol id="icon-deviantart" viewBox="0 0 18 32"> <path class="path1" d="M18.286 5.411l-5.411 10.393 0.429 0.554h4.982v7.411h-9.054l-0.786 0.536-2.536 4.875-0.536 0.536h-5.375v-5.411l5.411-10.411-0.429-0.536h-4.982v-7.411h9.054l0.786-0.536 2.536-4.875 0.536-0.536h5.375v5.411z"></path> </symbol> <symbol id="icon-medium" viewBox="0 0 32 32"> <path class="path1" d="M10.661 7.518v20.946q0 0.446-0.223 0.759t-0.652 0.313q-0.304 0-0.589-0.143l-8.304-4.161q-0.375-0.179-0.634-0.598t-0.259-0.83v-20.357q0-0.357 0.179-0.607t0.518-0.25q0.25 0 0.786 0.268l9.125 4.571q0.054 0.054 0.054 0.089zM11.804 9.321l9.536 15.464-9.536-4.75v-10.714zM32 9.643v18.821q0 0.446-0.25 0.723t-0.679 0.277-0.839-0.232l-7.875-3.929zM31.946 7.5q0 0.054-4.58 7.491t-5.366 8.705l-6.964-11.321 5.786-9.411q0.304-0.5 0.929-0.5 0.25 0 0.464 0.107l9.661 4.821q0.071 0.036 0.071 0.107z"></path> </symbol> <symbol id="icon-slideshare" viewBox="0 0 32 32"> <path class="path1" d="M15.589 13.214q0 1.482-1.134 2.545t-2.723 1.063-2.723-1.063-1.134-2.545q0-1.5 1.134-2.554t2.723-1.054 2.723 1.054 1.134 2.554zM24.554 13.214q0 1.482-1.125 2.545t-2.732 1.063q-1.589 0-2.723-1.063t-1.134-2.545q0-1.5 1.134-2.554t2.723-1.054q1.607 0 2.732 1.054t1.125 2.554zM28.571 16.429v-11.911q0-1.554-0.571-2.205t-1.982-0.652h-19.857q-1.482 0-2.009 0.607t-0.527 2.25v12.018q0.768 0.411 1.58 0.714t1.446 0.5 1.446 0.33 1.268 0.196 1.25 0.071 1.045 0.009 1.009-0.036 0.795-0.036q1.214-0.018 1.696 0.482 0.107 0.107 0.179 0.161 0.464 0.446 1.089 0.911 0.125-1.625 2.107-1.554 0.089 0 0.652 0.027t0.768 0.036 0.813 0.018 0.946-0.018 0.973-0.080 1.089-0.152 1.107-0.241 1.196-0.348 1.205-0.482 1.286-0.616zM31.482 16.339q-2.161 2.661-6.643 4.5 1.5 5.089-0.411 8.304-1.179 2.018-3.268 2.643-1.857 0.571-3.25-0.268-1.536-0.911-1.464-2.929l-0.018-5.821v-0.018q-0.143-0.036-0.438-0.107t-0.42-0.089l-0.018 6.036q0.071 2.036-1.482 2.929-1.411 0.839-3.268 0.268-2.089-0.643-3.25-2.679-1.875-3.214-0.393-8.268-4.482-1.839-6.643-4.5-0.446-0.661-0.071-1.125t1.071 0.018q0.054 0.036 0.196 0.125t0.196 0.143v-12.393q0-1.286 0.839-2.196t2.036-0.911h22.446q1.196 0 2.036 0.911t0.839 2.196v12.393l0.375-0.268q0.696-0.482 1.071-0.018t-0.071 1.125z"></path> </symbol> <symbol id="icon-snapchat-ghost" viewBox="0 0 30 32"> <path class="path1" d="M15.143 2.286q2.393-0.018 4.295 1.223t2.92 3.438q0.482 1.036 0.482 3.196 0 0.839-0.161 3.411 0.25 0.125 0.5 0.125 0.321 0 0.911-0.241t0.911-0.241q0.518 0 1 0.321t0.482 0.821q0 0.571-0.563 0.964t-1.232 0.563-1.232 0.518-0.563 0.848q0 0.268 0.214 0.768 0.661 1.464 1.83 2.679t2.58 1.804q0.5 0.214 1.429 0.411 0.5 0.107 0.5 0.625 0 1.25-3.911 1.839-0.125 0.196-0.196 0.696t-0.25 0.83-0.589 0.33q-0.357 0-1.107-0.116t-1.143-0.116q-0.661 0-1.107 0.089-0.571 0.089-1.125 0.402t-1.036 0.679-1.036 0.723-1.357 0.598-1.768 0.241q-0.929 0-1.723-0.241t-1.339-0.598-1.027-0.723-1.036-0.679-1.107-0.402q-0.464-0.089-1.125-0.089-0.429 0-1.17 0.134t-1.045 0.134q-0.446 0-0.625-0.33t-0.25-0.848-0.196-0.714q-3.911-0.589-3.911-1.839 0-0.518 0.5-0.625 0.929-0.196 1.429-0.411 1.393-0.571 2.58-1.804t1.83-2.679q0.214-0.5 0.214-0.768 0-0.5-0.563-0.848t-1.241-0.527-1.241-0.563-0.563-0.938q0-0.482 0.464-0.813t0.982-0.33q0.268 0 0.857 0.232t0.946 0.232q0.321 0 0.571-0.125-0.161-2.536-0.161-3.393 0-2.179 0.482-3.214 1.143-2.446 3.071-3.536t4.714-1.125z"></path> </symbol> <symbol id="icon-yelp" viewBox="0 0 27 32"> <path class="path1" d="M13.804 23.554v2.268q-0.018 5.214-0.107 5.446-0.214 0.571-0.911 0.714-0.964 0.161-3.241-0.679t-2.902-1.589q-0.232-0.268-0.304-0.643-0.018-0.214 0.071-0.464 0.071-0.179 0.607-0.839t3.232-3.857q0.018 0 1.071-1.25 0.268-0.339 0.705-0.438t0.884 0.063q0.429 0.179 0.67 0.518t0.223 0.75zM11.143 19.071q-0.054 0.982-0.929 1.25l-2.143 0.696q-4.911 1.571-5.214 1.571-0.625-0.036-0.964-0.643-0.214-0.446-0.304-1.339-0.143-1.357 0.018-2.973t0.536-2.223 1-0.571q0.232 0 3.607 1.375 1.25 0.518 2.054 0.839l1.5 0.607q0.411 0.161 0.634 0.545t0.205 0.866zM25.893 24.375q-0.125 0.964-1.634 2.875t-2.42 2.268q-0.661 0.25-1.125-0.125-0.25-0.179-3.286-5.125l-0.839-1.375q-0.25-0.375-0.205-0.821t0.348-0.821q0.625-0.768 1.482-0.464 0.018 0.018 2.125 0.714 3.625 1.179 4.321 1.42t0.839 0.366q0.5 0.393 0.393 1.089zM13.893 13.089q0.089 1.821-0.964 2.179-1.036 0.304-2.036-1.268l-6.75-10.679q-0.143-0.625 0.339-1.107 0.732-0.768 3.705-1.598t4.009-0.563q0.714 0.179 0.875 0.804 0.054 0.321 0.393 5.455t0.429 6.777zM25.714 15.018q0.054 0.696-0.464 1.054-0.268 0.179-5.875 1.536-1.196 0.268-1.625 0.411l0.018-0.036q-0.411 0.107-0.821-0.071t-0.661-0.571q-0.536-0.839 0-1.554 0.018-0.018 1.339-1.821 2.232-3.054 2.679-3.643t0.607-0.696q0.5-0.339 1.161-0.036 0.857 0.411 2.196 2.384t1.446 2.991v0.054z"></path> </symbol> <symbol id="icon-vine" viewBox="0 0 27 32"> <path class="path1" d="M26.732 14.768v3.536q-1.804 0.411-3.536 0.411-1.161 2.429-2.955 4.839t-3.241 3.848-2.286 1.902q-1.429 0.804-2.893-0.054-0.5-0.304-1.080-0.777t-1.518-1.491-1.83-2.295-1.92-3.286-1.884-4.357-1.634-5.616-1.259-6.964h5.054q0.464 3.893 1.25 7.116t1.866 5.661 2.17 4.205 2.5 3.482q3.018-3.018 5.125-7.25-2.536-1.286-3.982-3.929t-1.446-5.946q0-3.429 1.857-5.616t5.071-2.188q3.179 0 4.875 1.884t1.696 5.313q0 2.839-1.036 5.107-0.125 0.018-0.348 0.054t-0.821 0.036-1.125-0.107-1.107-0.455-0.902-0.92q0.554-1.839 0.554-3.286 0-1.554-0.518-2.357t-1.411-0.804q-0.946 0-1.518 0.884t-0.571 2.509q0 3.321 1.875 5.241t4.768 1.92q1.107 0 2.161-0.25z"></path> </symbol> <symbol id="icon-vk" viewBox="0 0 35 32"> <path class="path1" d="M34.232 9.286q0.411 1.143-2.679 5.25-0.429 0.571-1.161 1.518-1.393 1.786-1.607 2.339-0.304 0.732 0.25 1.446 0.304 0.375 1.446 1.464h0.018l0.071 0.071q2.518 2.339 3.411 3.946 0.054 0.089 0.116 0.223t0.125 0.473-0.009 0.607-0.446 0.491-1.054 0.223l-4.571 0.071q-0.429 0.089-1-0.089t-0.929-0.393l-0.357-0.214q-0.536-0.375-1.25-1.143t-1.223-1.384-1.089-1.036-1.009-0.277q-0.054 0.018-0.143 0.063t-0.304 0.259-0.384 0.527-0.304 0.929-0.116 1.384q0 0.268-0.063 0.491t-0.134 0.33l-0.071 0.089q-0.321 0.339-0.946 0.393h-2.054q-1.268 0.071-2.607-0.295t-2.348-0.946-1.839-1.179-1.259-1.027l-0.446-0.429q-0.179-0.179-0.491-0.536t-1.277-1.625-1.893-2.696-2.188-3.768-2.33-4.857q-0.107-0.286-0.107-0.482t0.054-0.286l0.071-0.107q0.268-0.339 1.018-0.339l4.893-0.036q0.214 0.036 0.411 0.116t0.286 0.152l0.089 0.054q0.286 0.196 0.429 0.571 0.357 0.893 0.821 1.848t0.732 1.455l0.286 0.518q0.518 1.071 1 1.857t0.866 1.223 0.741 0.688 0.607 0.25 0.482-0.089q0.036-0.018 0.089-0.089t0.214-0.393 0.241-0.839 0.17-1.446 0-2.232q-0.036-0.714-0.161-1.304t-0.25-0.821l-0.107-0.214q-0.446-0.607-1.518-0.768-0.232-0.036 0.089-0.429 0.304-0.339 0.679-0.536 0.946-0.464 4.268-0.429 1.464 0.018 2.411 0.232 0.357 0.089 0.598 0.241t0.366 0.429 0.188 0.571 0.063 0.813-0.018 0.982-0.045 1.259-0.027 1.473q0 0.196-0.018 0.75t-0.009 0.857 0.063 0.723 0.205 0.696 0.402 0.438q0.143 0.036 0.304 0.071t0.464-0.196 0.679-0.616 0.929-1.196 1.214-1.92q1.071-1.857 1.911-4.018 0.071-0.179 0.179-0.313t0.196-0.188l0.071-0.054 0.089-0.045t0.232-0.054 0.357-0.009l5.143-0.036q0.696-0.089 1.143 0.045t0.554 0.295z"></path> </symbol> <symbol id="icon-search" viewBox="0 0 30 32"> <path class="path1" d="M20.571 14.857q0-3.304-2.348-5.652t-5.652-2.348-5.652 2.348-2.348 5.652 2.348 5.652 5.652 2.348 5.652-2.348 2.348-5.652zM29.714 29.714q0 0.929-0.679 1.607t-1.607 0.679q-0.964 0-1.607-0.679l-6.125-6.107q-3.196 2.214-7.125 2.214-2.554 0-4.884-0.991t-4.018-2.679-2.679-4.018-0.991-4.884 0.991-4.884 2.679-4.018 4.018-2.679 4.884-0.991 4.884 0.991 4.018 2.679 2.679 4.018 0.991 4.884q0 3.929-2.214 7.125l6.125 6.125q0.661 0.661 0.661 1.607z"></path> </symbol> <symbol id="icon-envelope-o" viewBox="0 0 32 32"> <path class="path1" d="M29.714 26.857v-13.714q-0.571 0.643-1.232 1.179-4.786 3.679-7.607 6.036-0.911 0.768-1.482 1.196t-1.545 0.866-1.83 0.438h-0.036q-0.857 0-1.83-0.438t-1.545-0.866-1.482-1.196q-2.821-2.357-7.607-6.036-0.661-0.536-1.232-1.179v13.714q0 0.232 0.17 0.402t0.402 0.17h26.286q0.232 0 0.402-0.17t0.17-0.402zM29.714 8.089v-0.438t-0.009-0.232-0.054-0.223-0.098-0.161-0.161-0.134-0.25-0.045h-26.286q-0.232 0-0.402 0.17t-0.17 0.402q0 3 2.625 5.071 3.446 2.714 7.161 5.661 0.107 0.089 0.625 0.527t0.821 0.67 0.795 0.563 0.902 0.491 0.768 0.161h0.036q0.357 0 0.768-0.161t0.902-0.491 0.795-0.563 0.821-0.67 0.625-0.527q3.714-2.946 7.161-5.661 0.964-0.768 1.795-2.063t0.83-2.348zM32 7.429v19.429q0 1.179-0.839 2.018t-2.018 0.839h-26.286q-1.179 0-2.018-0.839t-0.839-2.018v-19.429q0-1.179 0.839-2.018t2.018-0.839h26.286q1.179 0 2.018 0.839t0.839 2.018z"></path> </symbol> <symbol id="icon-close" viewBox="0 0 25 32"> <path class="path1" d="M23.179 23.607q0 0.714-0.5 1.214l-2.429 2.429q-0.5 0.5-1.214 0.5t-1.214-0.5l-5.25-5.25-5.25 5.25q-0.5 0.5-1.214 0.5t-1.214-0.5l-2.429-2.429q-0.5-0.5-0.5-1.214t0.5-1.214l5.25-5.25-5.25-5.25q-0.5-0.5-0.5-1.214t0.5-1.214l2.429-2.429q0.5-0.5 1.214-0.5t1.214 0.5l5.25 5.25 5.25-5.25q0.5-0.5 1.214-0.5t1.214 0.5l2.429 2.429q0.5 0.5 0.5 1.214t-0.5 1.214l-5.25 5.25 5.25 5.25q0.5 0.5 0.5 1.214z"></path> </symbol> <symbol id="icon-angle-down" viewBox="0 0 21 32"> <path class="path1" d="M19.196 13.143q0 0.232-0.179 0.411l-8.321 8.321q-0.179 0.179-0.411 0.179t-0.411-0.179l-8.321-8.321q-0.179-0.179-0.179-0.411t0.179-0.411l0.893-0.893q0.179-0.179 0.411-0.179t0.411 0.179l7.018 7.018 7.018-7.018q0.179-0.179 0.411-0.179t0.411 0.179l0.893 0.893q0.179 0.179 0.179 0.411z"></path> </symbol> <symbol id="icon-folder-open" viewBox="0 0 34 32"> <path class="path1" d="M33.554 17q0 0.554-0.554 1.179l-6 7.071q-0.768 0.911-2.152 1.545t-2.563 0.634h-19.429q-0.607 0-1.080-0.232t-0.473-0.768q0-0.554 0.554-1.179l6-7.071q0.768-0.911 2.152-1.545t2.563-0.634h19.429q0.607 0 1.080 0.232t0.473 0.768zM27.429 10.857v2.857h-14.857q-1.679 0-3.518 0.848t-2.929 2.134l-6.107 7.179q0-0.071-0.009-0.223t-0.009-0.223v-17.143q0-1.643 1.179-2.821t2.821-1.179h5.714q1.643 0 2.821 1.179t1.179 2.821v0.571h9.714q1.643 0 2.821 1.179t1.179 2.821z"></path> </symbol> <symbol id="icon-twitter" viewBox="0 0 30 32"> <path class="path1" d="M28.929 7.286q-1.196 1.75-2.893 2.982 0.018 0.25 0.018 0.75 0 2.321-0.679 4.634t-2.063 4.437-3.295 3.759-4.607 2.607-5.768 0.973q-4.839 0-8.857-2.589 0.625 0.071 1.393 0.071 4.018 0 7.161-2.464-1.875-0.036-3.357-1.152t-2.036-2.848q0.589 0.089 1.089 0.089 0.768 0 1.518-0.196-2-0.411-3.313-1.991t-1.313-3.67v-0.071q1.214 0.679 2.607 0.732-1.179-0.786-1.875-2.054t-0.696-2.75q0-1.571 0.786-2.911 2.161 2.661 5.259 4.259t6.634 1.777q-0.143-0.679-0.143-1.321 0-2.393 1.688-4.080t4.080-1.688q2.5 0 4.214 1.821 1.946-0.375 3.661-1.393-0.661 2.054-2.536 3.179 1.661-0.179 3.321-0.893z"></path> </symbol> <symbol id="icon-facebook" viewBox="0 0 19 32"> <path class="path1" d="M17.125 0.214v4.714h-2.804q-1.536 0-2.071 0.643t-0.536 1.929v3.375h5.232l-0.696 5.286h-4.536v13.554h-5.464v-13.554h-4.554v-5.286h4.554v-3.893q0-3.321 1.857-5.152t4.946-1.83q2.625 0 4.071 0.214z"></path> </symbol> <symbol id="icon-github" viewBox="0 0 27 32"> <path class="path1" d="M13.714 2.286q3.732 0 6.884 1.839t4.991 4.991 1.839 6.884q0 4.482-2.616 8.063t-6.759 4.955q-0.482 0.089-0.714-0.125t-0.232-0.536q0-0.054 0.009-1.366t0.009-2.402q0-1.732-0.929-2.536 1.018-0.107 1.83-0.321t1.679-0.696 1.446-1.188 0.946-1.875 0.366-2.688q0-2.125-1.411-3.679 0.661-1.625-0.143-3.643-0.5-0.161-1.446 0.196t-1.643 0.786l-0.679 0.429q-1.661-0.464-3.429-0.464t-3.429 0.464q-0.286-0.196-0.759-0.482t-1.491-0.688-1.518-0.241q-0.804 2.018-0.143 3.643-1.411 1.554-1.411 3.679 0 1.518 0.366 2.679t0.938 1.875 1.438 1.196 1.679 0.696 1.83 0.321q-0.696 0.643-0.875 1.839-0.375 0.179-0.804 0.268t-1.018 0.089-1.17-0.384-0.991-1.116q-0.339-0.571-0.866-0.929t-0.884-0.429l-0.357-0.054q-0.375 0-0.518 0.080t-0.089 0.205 0.161 0.25 0.232 0.214l0.125 0.089q0.393 0.179 0.777 0.679t0.563 0.911l0.179 0.411q0.232 0.679 0.786 1.098t1.196 0.536 1.241 0.125 0.991-0.063l0.411-0.071q0 0.679 0.009 1.58t0.009 0.973q0 0.321-0.232 0.536t-0.714 0.125q-4.143-1.375-6.759-4.955t-2.616-8.063q0-3.732 1.839-6.884t4.991-4.991 6.884-1.839zM5.196 21.982q0.054-0.125-0.125-0.214-0.179-0.054-0.232 0.036-0.054 0.125 0.125 0.214 0.161 0.107 0.232-0.036zM5.75 22.589q0.125-0.089-0.036-0.286-0.179-0.161-0.286-0.054-0.125 0.089 0.036 0.286 0.179 0.179 0.286 0.054zM6.286 23.393q0.161-0.125 0-0.339-0.143-0.232-0.304-0.107-0.161 0.089 0 0.321t0.304 0.125zM7.036 24.143q0.143-0.143-0.071-0.339-0.214-0.214-0.357-0.054-0.161 0.143 0.071 0.339 0.214 0.214 0.357 0.054zM8.054 24.589q0.054-0.196-0.232-0.286-0.268-0.071-0.339 0.125t0.232 0.268q0.268 0.107 0.339-0.107zM9.179 24.679q0-0.232-0.304-0.196-0.286 0-0.286 0.196 0 0.232 0.304 0.196 0.286 0 0.286-0.196zM10.214 24.5q-0.036-0.196-0.321-0.161-0.286 0.054-0.25 0.268t0.321 0.143 0.25-0.25z"></path> </symbol> <symbol id="icon-bars" viewBox="0 0 27 32"> <path class="path1" d="M27.429 24v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 14.857v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 5.714v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804z"></path> </symbol> <symbol id="icon-google-plus" viewBox="0 0 41 32"> <path class="path1" d="M25.661 16.304q0 3.714-1.554 6.616t-4.429 4.536-6.589 1.634q-2.661 0-5.089-1.036t-4.179-2.786-2.786-4.179-1.036-5.089 1.036-5.089 2.786-4.179 4.179-2.786 5.089-1.036q5.107 0 8.768 3.429l-3.554 3.411q-2.089-2.018-5.214-2.018-2.196 0-4.063 1.107t-2.955 3.009-1.089 4.152 1.089 4.152 2.955 3.009 4.063 1.107q1.482 0 2.723-0.411t2.045-1.027 1.402-1.402 0.875-1.482 0.384-1.321h-7.429v-4.5h12.357q0.214 1.125 0.214 2.179zM41.143 14.125v3.75h-3.732v3.732h-3.75v-3.732h-3.732v-3.75h3.732v-3.732h3.75v3.732h3.732z"></path> </symbol> <symbol id="icon-linkedin" viewBox="0 0 27 32"> <path class="path1" d="M6.232 11.161v17.696h-5.893v-17.696h5.893zM6.607 5.696q0.018 1.304-0.902 2.179t-2.42 0.875h-0.036q-1.464 0-2.357-0.875t-0.893-2.179q0-1.321 0.92-2.188t2.402-0.866 2.375 0.866 0.911 2.188zM27.429 18.714v10.143h-5.875v-9.464q0-1.875-0.723-2.938t-2.259-1.063q-1.125 0-1.884 0.616t-1.134 1.527q-0.196 0.536-0.196 1.446v9.875h-5.875q0.036-7.125 0.036-11.554t-0.018-5.286l-0.018-0.857h5.875v2.571h-0.036q0.357-0.571 0.732-1t1.009-0.929 1.554-0.777 2.045-0.277q3.054 0 4.911 2.027t1.857 5.938z"></path> </symbol> <symbol id="icon-quote-right" viewBox="0 0 30 32"> <path class="path1" d="M13.714 5.714v12.571q0 1.857-0.723 3.545t-1.955 2.92-2.92 1.955-3.545 0.723h-1.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h1.143q1.893 0 3.232-1.339t1.339-3.232v-0.571q0-0.714-0.5-1.214t-1.214-0.5h-4q-1.429 0-2.429-1t-1-2.429v-6.857q0-1.429 1-2.429t2.429-1h6.857q1.429 0 2.429 1t1 2.429zM29.714 5.714v12.571q0 1.857-0.723 3.545t-1.955 2.92-2.92 1.955-3.545 0.723h-1.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h1.143q1.893 0 3.232-1.339t1.339-3.232v-0.571q0-0.714-0.5-1.214t-1.214-0.5h-4q-1.429 0-2.429-1t-1-2.429v-6.857q0-1.429 1-2.429t2.429-1h6.857q1.429 0 2.429 1t1 2.429z"></path> </symbol> <symbol id="icon-mail-reply" viewBox="0 0 32 32"> <path class="path1" d="M32 20q0 2.964-2.268 8.054-0.054 0.125-0.188 0.429t-0.241 0.536-0.232 0.393q-0.214 0.304-0.5 0.304-0.268 0-0.42-0.179t-0.152-0.446q0-0.161 0.045-0.473t0.045-0.42q0.089-1.214 0.089-2.196 0-1.804-0.313-3.232t-0.866-2.473-1.429-1.804-1.884-1.241-2.375-0.759-2.75-0.384-3.134-0.107h-4v4.571q0 0.464-0.339 0.804t-0.804 0.339-0.804-0.339l-9.143-9.143q-0.339-0.339-0.339-0.804t0.339-0.804l9.143-9.143q0.339-0.339 0.804-0.339t0.804 0.339 0.339 0.804v4.571h4q12.732 0 15.625 7.196 0.946 2.393 0.946 5.946z"></path> </symbol> <symbol id="icon-youtube" viewBox="0 0 27 32"> <path class="path1" d="M17.339 22.214v3.768q0 1.196-0.696 1.196-0.411 0-0.804-0.393v-5.375q0.393-0.393 0.804-0.393 0.696 0 0.696 1.196zM23.375 22.232v0.821h-1.607v-0.821q0-1.214 0.804-1.214t0.804 1.214zM6.125 18.339h1.911v-1.679h-5.571v1.679h1.875v10.161h1.786v-10.161zM11.268 28.5h1.589v-8.821h-1.589v6.75q-0.536 0.75-1.018 0.75-0.321 0-0.375-0.375-0.018-0.054-0.018-0.625v-6.5h-1.589v6.982q0 0.875 0.143 1.304 0.214 0.661 1.036 0.661 0.857 0 1.821-1.089v0.964zM18.929 25.857v-3.518q0-1.304-0.161-1.768-0.304-1-1.268-1-0.893 0-1.661 0.964v-3.875h-1.589v11.839h1.589v-0.857q0.804 0.982 1.661 0.982 0.964 0 1.268-0.982 0.161-0.482 0.161-1.786zM24.964 25.679v-0.232h-1.625q0 0.911-0.036 1.089-0.125 0.643-0.714 0.643-0.821 0-0.821-1.232v-1.554h3.196v-1.839q0-1.411-0.482-2.071-0.696-0.911-1.893-0.911-1.214 0-1.911 0.911-0.5 0.661-0.5 2.071v3.089q0 1.411 0.518 2.071 0.696 0.911 1.929 0.911 1.286 0 1.929-0.946 0.321-0.482 0.375-0.964 0.036-0.161 0.036-1.036zM14.107 9.375v-3.75q0-1.232-0.768-1.232t-0.768 1.232v3.75q0 1.25 0.768 1.25t0.768-1.25zM26.946 22.786q0 4.179-0.464 6.25-0.25 1.054-1.036 1.768t-1.821 0.821q-3.286 0.375-9.911 0.375t-9.911-0.375q-1.036-0.107-1.83-0.821t-1.027-1.768q-0.464-2-0.464-6.25 0-4.179 0.464-6.25 0.25-1.054 1.036-1.768t1.839-0.839q3.268-0.357 9.893-0.357t9.911 0.357q1.036 0.125 1.83 0.839t1.027 1.768q0.464 2 0.464 6.25zM9.125 0h1.821l-2.161 7.125v4.839h-1.786v-4.839q-0.25-1.321-1.089-3.786-0.661-1.839-1.161-3.339h1.893l1.268 4.696zM15.732 5.946v3.125q0 1.446-0.5 2.107-0.661 0.911-1.893 0.911-1.196 0-1.875-0.911-0.5-0.679-0.5-2.107v-3.125q0-1.429 0.5-2.089 0.679-0.911 1.875-0.911 1.232 0 1.893 0.911 0.5 0.661 0.5 2.089zM21.714 3.054v8.911h-1.625v-0.982q-0.946 1.107-1.839 1.107-0.821 0-1.054-0.661-0.143-0.429-0.143-1.339v-7.036h1.625v6.554q0 0.589 0.018 0.625 0.054 0.393 0.375 0.393 0.482 0 1.018-0.768v-6.804h1.625z"></path> </symbol> <symbol id="icon-dropbox" viewBox="0 0 32 32"> <path class="path1" d="M7.179 12.625l8.821 5.446-6.107 5.089-8.75-5.696zM24.786 22.536v1.929l-8.75 5.232v0.018l-0.018-0.018-0.018 0.018v-0.018l-8.732-5.232v-1.929l2.625 1.714 6.107-5.071v-0.036l0.018 0.018 0.018-0.018v0.036l6.125 5.071zM9.893 2.107l6.107 5.089-8.821 5.429-6.036-4.821zM24.821 12.625l6.036 4.839-8.732 5.696-6.125-5.089zM22.125 2.107l8.732 5.696-6.036 4.821-8.821-5.429z"></path> </symbol> <symbol id="icon-instagram" viewBox="0 0 27 32"> <path class="path1" d="M18.286 16q0-1.893-1.339-3.232t-3.232-1.339-3.232 1.339-1.339 3.232 1.339 3.232 3.232 1.339 3.232-1.339 1.339-3.232zM20.75 16q0 2.929-2.054 4.982t-4.982 2.054-4.982-2.054-2.054-4.982 2.054-4.982 4.982-2.054 4.982 2.054 2.054 4.982zM22.679 8.679q0 0.679-0.482 1.161t-1.161 0.482-1.161-0.482-0.482-1.161 0.482-1.161 1.161-0.482 1.161 0.482 0.482 1.161zM13.714 4.75q-0.125 0-1.366-0.009t-1.884 0-1.723 0.054-1.839 0.179-1.277 0.33q-0.893 0.357-1.571 1.036t-1.036 1.571q-0.196 0.518-0.33 1.277t-0.179 1.839-0.054 1.723 0 1.884 0.009 1.366-0.009 1.366 0 1.884 0.054 1.723 0.179 1.839 0.33 1.277q0.357 0.893 1.036 1.571t1.571 1.036q0.518 0.196 1.277 0.33t1.839 0.179 1.723 0.054 1.884 0 1.366-0.009 1.366 0.009 1.884 0 1.723-0.054 1.839-0.179 1.277-0.33q0.893-0.357 1.571-1.036t1.036-1.571q0.196-0.518 0.33-1.277t0.179-1.839 0.054-1.723 0-1.884-0.009-1.366 0.009-1.366 0-1.884-0.054-1.723-0.179-1.839-0.33-1.277q-0.357-0.893-1.036-1.571t-1.571-1.036q-0.518-0.196-1.277-0.33t-1.839-0.179-1.723-0.054-1.884 0-1.366 0.009zM27.429 16q0 4.089-0.089 5.661-0.179 3.714-2.214 5.75t-5.75 2.214q-1.571 0.089-5.661 0.089t-5.661-0.089q-3.714-0.179-5.75-2.214t-2.214-5.75q-0.089-1.571-0.089-5.661t0.089-5.661q0.179-3.714 2.214-5.75t5.75-2.214q1.571-0.089 5.661-0.089t5.661 0.089q3.714 0.179 5.75 2.214t2.214 5.75q0.089 1.571 0.089 5.661z"></path> </symbol> <symbol id="icon-flickr" viewBox="0 0 27 32"> <path class="path1" d="M22.286 2.286q2.125 0 3.634 1.509t1.509 3.634v17.143q0 2.125-1.509 3.634t-3.634 1.509h-17.143q-2.125 0-3.634-1.509t-1.509-3.634v-17.143q0-2.125 1.509-3.634t3.634-1.509h17.143zM12.464 16q0-1.571-1.107-2.679t-2.679-1.107-2.679 1.107-1.107 2.679 1.107 2.679 2.679 1.107 2.679-1.107 1.107-2.679zM22.536 16q0-1.571-1.107-2.679t-2.679-1.107-2.679 1.107-1.107 2.679 1.107 2.679 2.679 1.107 2.679-1.107 1.107-2.679z"></path> </symbol> <symbol id="icon-tumblr" viewBox="0 0 19 32"> <path class="path1" d="M16.857 23.732l1.429 4.232q-0.411 0.625-1.982 1.179t-3.161 0.571q-1.857 0.036-3.402-0.464t-2.545-1.321-1.696-1.893-0.991-2.143-0.295-2.107v-9.714h-3v-3.839q1.286-0.464 2.304-1.241t1.625-1.607 1.036-1.821 0.607-1.768 0.268-1.58q0.018-0.089 0.080-0.152t0.134-0.063h4.357v7.571h5.946v4.5h-5.964v9.25q0 0.536 0.116 1t0.402 0.938 0.884 0.741 1.455 0.25q1.393-0.036 2.393-0.518z"></path> </symbol> <symbol id="icon-dockerhub" viewBox="0 0 24 28"> <path class="path1" d="M1.597 10.257h2.911v2.83H1.597v-2.83zm3.573 0h2.91v2.83H5.17v-2.83zm0-3.627h2.91v2.829H5.17V6.63zm3.57 3.627h2.912v2.83H8.74v-2.83zm0-3.627h2.912v2.829H8.74V6.63zm3.573 3.627h2.911v2.83h-2.911v-2.83zm0-3.627h2.911v2.829h-2.911V6.63zm3.572 3.627h2.911v2.83h-2.911v-2.83zM12.313 3h2.911v2.83h-2.911V3zm-6.65 14.173c-.449 0-.812.354-.812.788 0 .435.364.788.812.788.447 0 .811-.353.811-.788 0-.434-.363-.788-.811-.788"></path> <path class="path2" d="M28.172 11.721c-.978-.549-2.278-.624-3.388-.306-.136-1.146-.91-2.149-1.83-2.869l-.366-.286-.307.345c-.618.692-.8 1.845-.718 2.73.063.651.273 1.312.685 1.834-.313.183-.668.328-.985.434-.646.212-1.347.33-2.028.33H.083l-.042.429c-.137 1.432.065 2.866.674 4.173l.262.519.03.048c1.8 2.973 4.963 4.225 8.41 4.225 6.672 0 12.174-2.896 14.702-9.015 1.689.085 3.417-.4 4.243-1.968l.211-.4-.401-.223zM5.664 19.458c-.85 0-1.542-.671-1.542-1.497 0-.825.691-1.498 1.541-1.498.849 0 1.54.672 1.54 1.497s-.69 1.498-1.539 1.498z"></path> </symbol> <symbol id="icon-dribbble" viewBox="0 0 27 32"> <path class="path1" d="M18.286 26.786q-0.75-4.304-2.5-8.893h-0.036l-0.036 0.018q-0.286 0.107-0.768 0.295t-1.804 0.875-2.446 1.464-2.339 2.045-1.839 2.643l-0.268-0.196q3.286 2.679 7.464 2.679 2.357 0 4.571-0.929zM14.982 15.946q-0.375-0.875-0.946-1.982-5.554 1.661-12.018 1.661-0.018 0.125-0.018 0.375 0 2.214 0.786 4.223t2.214 3.598q0.893-1.589 2.205-2.973t2.545-2.223 2.33-1.446 1.777-0.857l0.661-0.232q0.071-0.018 0.232-0.063t0.232-0.080zM13.071 12.161q-2.143-3.804-4.357-6.75-2.464 1.161-4.179 3.321t-2.286 4.857q5.393 0 10.821-1.429zM25.286 17.857q-3.75-1.071-7.304-0.518 1.554 4.268 2.286 8.375 1.982-1.339 3.304-3.384t1.714-4.473zM10.911 4.625q-0.018 0-0.036 0.018 0.018-0.018 0.036-0.018zM21.446 7.214q-3.304-2.929-7.732-2.929-1.357 0-2.768 0.339 2.339 3.036 4.393 6.821 1.232-0.464 2.321-1.080t1.723-1.098 1.17-1.018 0.67-0.723zM25.429 15.875q-0.054-4.143-2.661-7.321l-0.018 0.018q-0.161 0.214-0.339 0.438t-0.777 0.795-1.268 1.080-1.786 1.161-2.348 1.152q0.446 0.946 0.786 1.696 0.036 0.107 0.116 0.313t0.134 0.295q0.643-0.089 1.33-0.125t1.313-0.036 1.232 0.027 1.143 0.071 1.009 0.098 0.857 0.116 0.652 0.107 0.446 0.080zM27.429 16q0 3.732-1.839 6.884t-4.991 4.991-6.884 1.839-6.884-1.839-4.991-4.991-1.839-6.884 1.839-6.884 4.991-4.991 6.884-1.839 6.884 1.839 4.991 4.991 1.839 6.884z"></path> </symbol> <symbol id="icon-skype" viewBox="0 0 27 32"> <path class="path1" d="M20.946 18.982q0-0.893-0.348-1.634t-0.866-1.223-1.304-0.875-1.473-0.607-1.563-0.411l-1.857-0.429q-0.536-0.125-0.786-0.188t-0.625-0.205-0.536-0.286-0.295-0.375-0.134-0.536q0-1.375 2.571-1.375 0.768 0 1.375 0.214t0.964 0.509 0.679 0.598 0.714 0.518 0.857 0.214q0.839 0 1.348-0.571t0.509-1.375q0-0.982-1-1.777t-2.536-1.205-3.25-0.411q-1.214 0-2.357 0.277t-2.134 0.839-1.589 1.554-0.598 2.295q0 1.089 0.339 1.902t1 1.348 1.429 0.866 1.839 0.58l2.607 0.643q1.607 0.393 2 0.643 0.571 0.357 0.571 1.071 0 0.696-0.714 1.152t-1.875 0.455q-0.911 0-1.634-0.286t-1.161-0.688-0.813-0.804-0.821-0.688-0.964-0.286q-0.893 0-1.348 0.536t-0.455 1.339q0 1.643 2.179 2.813t5.196 1.17q1.304 0 2.5-0.33t2.188-0.955 1.58-1.67 0.589-2.348zM27.429 22.857q0 2.839-2.009 4.848t-4.848 2.009q-2.321 0-4.179-1.429-1.375 0.286-2.679 0.286-2.554 0-4.884-0.991t-4.018-2.679-2.679-4.018-0.991-4.884q0-1.304 0.286-2.679-1.429-1.857-1.429-4.179 0-2.839 2.009-4.848t4.848-2.009q2.321 0 4.179 1.429 1.375-0.286 2.679-0.286 2.554 0 4.884 0.991t4.018 2.679 2.679 4.018 0.991 4.884q0 1.304-0.286 2.679 1.429 1.857 1.429 4.179z"></path> </symbol> <symbol id="icon-foursquare" viewBox="0 0 23 32"> <path class="path1" d="M17.857 7.75l0.661-3.464q0.089-0.411-0.161-0.714t-0.625-0.304h-12.714q-0.411 0-0.688 0.304t-0.277 0.661v19.661q0 0.125 0.107 0.018l5.196-6.286q0.411-0.464 0.679-0.598t0.857-0.134h4.268q0.393 0 0.661-0.259t0.321-0.527q0.429-2.321 0.661-3.411 0.071-0.375-0.205-0.714t-0.652-0.339h-5.25q-0.518 0-0.857-0.339t-0.339-0.857v-0.75q0-0.518 0.339-0.848t0.857-0.33h6.179q0.321 0 0.625-0.241t0.357-0.527zM21.911 3.786q-0.268 1.304-0.955 4.759t-1.241 6.25-0.625 3.098q-0.107 0.393-0.161 0.58t-0.25 0.58-0.438 0.589-0.688 0.375-1.036 0.179h-4.839q-0.232 0-0.393 0.179-0.143 0.161-7.607 8.821-0.393 0.446-1.045 0.509t-0.866-0.098q-0.982-0.393-0.982-1.75v-25.179q0-0.982 0.679-1.83t2.143-0.848h15.857q1.696 0 2.268 0.946t0.179 2.839zM21.911 3.786l-2.821 14.107q0.071-0.304 0.625-3.098t1.241-6.25 0.955-4.759z"></path> </symbol> <symbol id="icon-wordpress" viewBox="0 0 32 32"> <path class="path1" d="M2.268 16q0-2.911 1.196-5.589l6.554 17.946q-3.5-1.696-5.625-5.018t-2.125-7.339zM25.268 15.304q0 0.339-0.045 0.688t-0.179 0.884-0.205 0.786-0.313 1.054-0.313 1.036l-1.357 4.571-4.964-14.75q0.821-0.054 1.571-0.143 0.339-0.036 0.464-0.33t-0.045-0.554-0.509-0.241l-3.661 0.179q-1.339-0.018-3.607-0.179-0.214-0.018-0.366 0.089t-0.205 0.268-0.027 0.33 0.161 0.295 0.348 0.143l1.429 0.143 2.143 5.857-3 9-5-14.857q0.821-0.054 1.571-0.143 0.339-0.036 0.464-0.33t-0.045-0.554-0.509-0.241l-3.661 0.179q-0.125 0-0.411-0.009t-0.464-0.009q1.875-2.857 4.902-4.527t6.563-1.67q2.625 0 5.009 0.946t4.259 2.661h-0.179q-0.982 0-1.643 0.723t-0.661 1.705q0 0.214 0.036 0.429t0.071 0.384 0.143 0.411 0.161 0.375 0.214 0.402 0.223 0.375 0.259 0.429 0.25 0.411q1.125 1.911 1.125 3.786zM16.232 17.196l4.232 11.554q0.018 0.107 0.089 0.196-2.25 0.786-4.554 0.786-2 0-3.875-0.571zM28.036 9.411q1.696 3.107 1.696 6.589 0 3.732-1.857 6.884t-4.982 4.973l4.196-12.107q1.054-3.018 1.054-4.929 0-0.75-0.107-1.411zM16 0q3.25 0 6.214 1.268t5.107 3.411 3.411 5.107 1.268 6.214-1.268 6.214-3.411 5.107-5.107 3.411-6.214 1.268-6.214-1.268-5.107-3.411-3.411-5.107-1.268-6.214 1.268-6.214 3.411-5.107 5.107-3.411 6.214-1.268zM16 31.268q3.089 0 5.92-1.214t4.875-3.259 3.259-4.875 1.214-5.92-1.214-5.92-3.259-4.875-4.875-3.259-5.92-1.214-5.92 1.214-4.875 3.259-3.259 4.875-1.214 5.92 1.214 5.92 3.259 4.875 4.875 3.259 5.92 1.214z"></path> </symbol> <symbol id="icon-stumbleupon" viewBox="0 0 34 32"> <path class="path1" d="M18.964 12.714v-2.107q0-0.75-0.536-1.286t-1.286-0.536-1.286 0.536-0.536 1.286v10.929q0 3.125-2.25 5.339t-5.411 2.214q-3.179 0-5.42-2.241t-2.241-5.42v-4.75h5.857v4.679q0 0.768 0.536 1.295t1.286 0.527 1.286-0.527 0.536-1.295v-11.071q0-3.054 2.259-5.214t5.384-2.161q3.143 0 5.393 2.179t2.25 5.25v2.429l-3.482 1.036zM28.429 16.679h5.857v4.75q0 3.179-2.241 5.42t-5.42 2.241q-3.161 0-5.411-2.223t-2.25-5.366v-4.786l2.339 1.089 3.482-1.036v4.821q0 0.75 0.536 1.277t1.286 0.527 1.286-0.527 0.536-1.277v-4.911z"></path> </symbol> <symbol id="icon-digg" viewBox="0 0 37 32"> <path class="path1" d="M5.857 5.036h3.643v17.554h-9.5v-12.446h5.857v-5.107zM5.857 19.661v-6.589h-2.196v6.589h2.196zM10.964 10.143v12.446h3.661v-12.446h-3.661zM10.964 5.036v3.643h3.661v-3.643h-3.661zM16.089 10.143h9.518v16.821h-9.518v-2.911h5.857v-1.464h-5.857v-12.446zM21.946 19.661v-6.589h-2.196v6.589h2.196zM27.071 10.143h9.5v16.821h-9.5v-2.911h5.839v-1.464h-5.839v-12.446zM32.911 19.661v-6.589h-2.196v6.589h2.196z"></path> </symbol> <symbol id="icon-spotify" viewBox="0 0 27 32"> <path class="path1" d="M20.125 21.607q0-0.571-0.536-0.911-3.446-2.054-7.982-2.054-2.375 0-5.125 0.607-0.75 0.161-0.75 0.929 0 0.357 0.241 0.616t0.634 0.259q0.089 0 0.661-0.143 2.357-0.482 4.339-0.482 4.036 0 7.089 1.839 0.339 0.196 0.589 0.196 0.339 0 0.589-0.241t0.25-0.616zM21.839 17.768q0-0.714-0.625-1.089-4.232-2.518-9.786-2.518-2.732 0-5.411 0.75-0.857 0.232-0.857 1.143 0 0.446 0.313 0.759t0.759 0.313q0.125 0 0.661-0.143 2.179-0.589 4.482-0.589 4.982 0 8.714 2.214 0.429 0.232 0.679 0.232 0.446 0 0.759-0.313t0.313-0.759zM23.768 13.339q0-0.839-0.714-1.25-2.25-1.304-5.232-1.973t-6.125-0.67q-3.643 0-6.5 0.839-0.411 0.125-0.688 0.455t-0.277 0.866q0 0.554 0.366 0.929t0.92 0.375q0.196 0 0.714-0.143 2.375-0.661 5.482-0.661 2.839 0 5.527 0.607t4.527 1.696q0.375 0.214 0.714 0.214 0.518 0 0.902-0.366t0.384-0.92zM27.429 16q0 3.732-1.839 6.884t-4.991 4.991-6.884 1.839-6.884-1.839-4.991-4.991-1.839-6.884 1.839-6.884 4.991-4.991 6.884-1.839 6.884 1.839 4.991 4.991 1.839 6.884z"></path> </symbol> <symbol id="icon-soundcloud" viewBox="0 0 41 32"> <path class="path1" d="M14 24.5l0.286-4.304-0.286-9.339q-0.018-0.179-0.134-0.304t-0.295-0.125q-0.161 0-0.286 0.125t-0.125 0.304l-0.25 9.339 0.25 4.304q0.018 0.179 0.134 0.295t0.277 0.116q0.393 0 0.429-0.411zM19.286 23.982l0.196-3.768-0.214-10.464q0-0.286-0.232-0.429-0.143-0.089-0.286-0.089t-0.286 0.089q-0.232 0.143-0.232 0.429l-0.018 0.107-0.179 10.339q0 0.018 0.196 4.214v0.018q0 0.179 0.107 0.304 0.161 0.196 0.411 0.196 0.196 0 0.357-0.161 0.161-0.125 0.161-0.357zM0.625 17.911l0.357 2.286-0.357 2.25q-0.036 0.161-0.161 0.161t-0.161-0.161l-0.304-2.25 0.304-2.286q0.036-0.161 0.161-0.161t0.161 0.161zM2.161 16.5l0.464 3.696-0.464 3.625q-0.036 0.161-0.179 0.161-0.161 0-0.161-0.179l-0.411-3.607 0.411-3.696q0-0.161 0.161-0.161 0.143 0 0.179 0.161zM3.804 15.821l0.446 4.375-0.446 4.232q0 0.196-0.196 0.196-0.179 0-0.214-0.196l-0.375-4.232 0.375-4.375q0.036-0.214 0.214-0.214 0.196 0 0.196 0.214zM5.482 15.696l0.411 4.5-0.411 4.357q-0.036 0.232-0.25 0.232-0.232 0-0.232-0.232l-0.375-4.357 0.375-4.5q0-0.232 0.232-0.232 0.214 0 0.25 0.232zM7.161 16.018l0.375 4.179-0.375 4.393q-0.036 0.286-0.286 0.286-0.107 0-0.188-0.080t-0.080-0.205l-0.357-4.393 0.357-4.179q0-0.107 0.080-0.188t0.188-0.080q0.25 0 0.286 0.268zM8.839 13.411l0.375 6.786-0.375 4.393q0 0.125-0.089 0.223t-0.214 0.098q-0.286 0-0.321-0.321l-0.321-4.393 0.321-6.786q0.036-0.321 0.321-0.321 0.125 0 0.214 0.098t0.089 0.223zM10.518 11.875l0.339 8.357-0.339 4.357q0 0.143-0.098 0.241t-0.241 0.098q-0.321 0-0.357-0.339l-0.286-4.357 0.286-8.357q0.036-0.339 0.357-0.339 0.143 0 0.241 0.098t0.098 0.241zM12.268 11.161l0.321 9.036-0.321 4.321q-0.036 0.375-0.393 0.375-0.339 0-0.375-0.375l-0.286-4.321 0.286-9.036q0-0.161 0.116-0.277t0.259-0.116q0.161 0 0.268 0.116t0.125 0.277zM19.268 24.411v0 0zM15.732 11.089l0.268 9.107-0.268 4.268q0 0.179-0.134 0.313t-0.313 0.134-0.304-0.125-0.143-0.321l-0.25-4.268 0.25-9.107q0-0.196 0.134-0.321t0.313-0.125 0.313 0.125 0.134 0.321zM17.5 11.429l0.25 8.786-0.25 4.214q0 0.196-0.143 0.339t-0.339 0.143-0.339-0.143-0.161-0.339l-0.214-4.214 0.214-8.786q0.018-0.214 0.161-0.357t0.339-0.143 0.33 0.143 0.152 0.357zM21.286 20.214l-0.25 4.125q0 0.232-0.161 0.393t-0.393 0.161-0.393-0.161-0.179-0.393l-0.107-2.036-0.107-2.089 0.214-11.357v-0.054q0.036-0.268 0.214-0.429 0.161-0.125 0.357-0.125 0.143 0 0.268 0.089 0.25 0.143 0.286 0.464zM41.143 19.875q0 2.089-1.482 3.563t-3.571 1.473h-14.036q-0.232-0.036-0.393-0.196t-0.161-0.393v-16.054q0-0.411 0.5-0.589 1.518-0.607 3.232-0.607 3.482 0 6.036 2.348t2.857 5.777q0.946-0.393 1.964-0.393 2.089 0 3.571 1.482t1.482 3.589z"></path> </symbol> <symbol id="icon-codepen" viewBox="0 0 32 32"> <path class="path1" d="M3.857 20.875l10.768 7.179v-6.411l-5.964-3.982zM2.75 18.304l3.446-2.304-3.446-2.304v4.607zM17.375 28.054l10.768-7.179-4.804-3.214-5.964 3.982v6.411zM16 19.25l4.857-3.25-4.857-3.25-4.857 3.25zM8.661 14.339l5.964-3.982v-6.411l-10.768 7.179zM25.804 16l3.446 2.304v-4.607zM23.339 14.339l4.804-3.214-10.768-7.179v6.411zM32 11.125v9.75q0 0.732-0.607 1.143l-14.625 9.75q-0.375 0.232-0.768 0.232t-0.768-0.232l-14.625-9.75q-0.607-0.411-0.607-1.143v-9.75q0-0.732 0.607-1.143l14.625-9.75q0.375-0.232 0.768-0.232t0.768 0.232l14.625 9.75q0.607 0.411 0.607 1.143z"></path> </symbol> <symbol id="icon-twitch" viewBox="0 0 32 32"> <path class="path1" d="M16 7.75v7.75h-2.589v-7.75h2.589zM23.107 7.75v7.75h-2.589v-7.75h2.589zM23.107 21.321l4.518-4.536v-14.196h-21.321v18.732h5.821v3.875l3.875-3.875h7.107zM30.214 0v18.089l-7.75 7.75h-5.821l-3.875 3.875h-3.875v-3.875h-7.107v-20.679l1.946-5.161h26.482z"></path> </symbol> <symbol id="icon-meanpath" viewBox="0 0 27 32"> <path class="path1" d="M23.411 15.036v2.036q0 0.429-0.241 0.679t-0.67 0.25h-3.607q-0.429 0-0.679-0.25t-0.25-0.679v-2.036q0-0.429 0.25-0.679t0.679-0.25h3.607q0.429 0 0.67 0.25t0.241 0.679zM14.661 19.143v-4.464q0-0.946-0.58-1.527t-1.527-0.58h-2.375q-1.214 0-1.714 0.929-0.5-0.929-1.714-0.929h-2.321q-0.946 0-1.527 0.58t-0.58 1.527v4.464q0 0.393 0.375 0.393h0.982q0.393 0 0.393-0.393v-4.107q0-0.429 0.241-0.679t0.688-0.25h1.679q0.429 0 0.679 0.25t0.25 0.679v4.107q0 0.393 0.375 0.393h0.964q0.393 0 0.393-0.393v-4.107q0-0.429 0.25-0.679t0.679-0.25h1.732q0.429 0 0.67 0.25t0.241 0.679v4.107q0 0.393 0.393 0.393h0.982q0.375 0 0.375-0.393zM25.179 17.429v-2.75q0-0.946-0.589-1.527t-1.536-0.58h-4.714q-0.946 0-1.536 0.58t-0.589 1.527v7.321q0 0.375 0.393 0.375h0.982q0.375 0 0.375-0.375v-3.214q0.554 0.75 1.679 0.75h3.411q0.946 0 1.536-0.58t0.589-1.527zM27.429 6.429v19.143q0 1.714-1.214 2.929t-2.929 1.214h-19.143q-1.714 0-2.929-1.214t-1.214-2.929v-19.143q0-1.714 1.214-2.929t2.929-1.214h19.143q1.714 0 2.929 1.214t1.214 2.929z"></path> </symbol> <symbol id="icon-pinterest-p" viewBox="0 0 23 32"> <path class="path1" d="M0 10.661q0-1.929 0.67-3.634t1.848-2.973 2.714-2.196 3.304-1.393 3.607-0.464q2.821 0 5.25 1.188t3.946 3.455 1.518 5.125q0 1.714-0.339 3.357t-1.071 3.161-1.786 2.67-2.589 1.839-3.375 0.688q-1.214 0-2.411-0.571t-1.714-1.571q-0.179 0.696-0.5 2.009t-0.42 1.696-0.366 1.268-0.464 1.268-0.571 1.116-0.821 1.384-1.107 1.545l-0.25 0.089-0.161-0.179q-0.268-2.804-0.268-3.357 0-1.643 0.384-3.688t1.188-5.134 0.929-3.625q-0.571-1.161-0.571-3.018 0-1.482 0.929-2.786t2.357-1.304q1.089 0 1.696 0.723t0.607 1.83q0 1.179-0.786 3.411t-0.786 3.339q0 1.125 0.804 1.866t1.946 0.741q0.982 0 1.821-0.446t1.402-1.214 1-1.696 0.679-1.973 0.357-1.982 0.116-1.777q0-3.089-1.955-4.813t-5.098-1.723q-3.571 0-5.964 2.313t-2.393 5.866q0 0.786 0.223 1.518t0.482 1.161 0.482 0.813 0.223 0.545q0 0.5-0.268 1.304t-0.661 0.804q-0.036 0-0.304-0.054-0.911-0.268-1.616-1t-1.089-1.688-0.58-1.929-0.196-1.902z"></path> </symbol> <symbol id="icon-periscope" viewBox="0 0 24 28"> <path class="path1" d="M12.285,1C6.696,1,2.277,5.643,2.277,11.243c0,5.851,7.77,14.578,10.007,14.578c1.959,0,9.729-8.728,9.729-14.578 C22.015,5.643,17.596,1,12.285,1z M12.317,16.551c-3.473,0-6.152-2.611-6.152-5.664c0-1.292,0.39-2.472,1.065-3.438 c0.206,1.084,1.18,1.906,2.352,1.906c1.322,0,2.393-1.043,2.393-2.333c0-0.832-0.447-1.561-1.119-1.975 c0.467-0.105,0.955-0.161,1.46-0.161c3.133,0,5.81,2.611,5.81,5.998C18.126,13.94,15.449,16.551,12.317,16.551z"></path> </symbol> <symbol id="icon-get-pocket" viewBox="0 0 31 32"> <path class="path1" d="M27.946 2.286q1.161 0 1.964 0.813t0.804 1.973v9.268q0 3.143-1.214 6t-3.259 4.911-4.893 3.259-5.973 1.205q-3.143 0-5.991-1.205t-4.902-3.259-3.268-4.911-1.214-6v-9.268q0-1.143 0.821-1.964t1.964-0.821h25.161zM15.375 21.286q0.839 0 1.464-0.589l7.214-6.929q0.661-0.625 0.661-1.518 0-0.875-0.616-1.491t-1.491-0.616q-0.839 0-1.464 0.589l-5.768 5.536-5.768-5.536q-0.625-0.589-1.446-0.589-0.875 0-1.491 0.616t-0.616 1.491q0 0.911 0.643 1.518l7.232 6.929q0.589 0.589 1.446 0.589z"></path> </symbol> <symbol id="icon-vimeo" viewBox="0 0 32 32"> <path class="path1" d="M30.518 9.25q-0.179 4.214-5.929 11.625-5.946 7.696-10.036 7.696-2.536 0-4.286-4.696-0.786-2.857-2.357-8.607-1.286-4.679-2.804-4.679-0.321 0-2.268 1.357l-1.375-1.75q0.429-0.375 1.929-1.723t2.321-2.063q2.786-2.464 4.304-2.607 1.696-0.161 2.732 0.991t1.446 3.634q0.786 5.125 1.179 6.661 0.982 4.446 2.143 4.446 0.911 0 2.75-2.875 1.804-2.875 1.946-4.393 0.232-2.482-1.946-2.482-1.018 0-2.161 0.464 2.143-7.018 8.196-6.821 4.482 0.143 4.214 5.821z"></path> </symbol> <symbol id="icon-reddit-alien" viewBox="0 0 32 32"> <path class="path1" d="M32 15.107q0 1.036-0.527 1.884t-1.42 1.295q0.214 0.821 0.214 1.714 0 2.768-1.902 5.125t-5.188 3.723-7.143 1.366-7.134-1.366-5.179-3.723-1.902-5.125q0-0.839 0.196-1.679-0.911-0.446-1.464-1.313t-0.554-1.902q0-1.464 1.036-2.509t2.518-1.045q1.518 0 2.589 1.125 3.893-2.714 9.196-2.893l2.071-9.304q0.054-0.232 0.268-0.375t0.464-0.089l6.589 1.446q0.321-0.661 0.964-1.063t1.411-0.402q1.107 0 1.893 0.777t0.786 1.884-0.786 1.893-1.893 0.786-1.884-0.777-0.777-1.884l-5.964-1.321-1.857 8.429q5.357 0.161 9.268 2.857 1.036-1.089 2.554-1.089 1.482 0 2.518 1.045t1.036 2.509zM7.464 18.661q0 1.107 0.777 1.893t1.884 0.786 1.893-0.786 0.786-1.893-0.786-1.884-1.893-0.777q-1.089 0-1.875 0.786t-0.786 1.875zM21.929 25q0.196-0.196 0.196-0.464t-0.196-0.464q-0.179-0.179-0.446-0.179t-0.464 0.179q-0.732 0.75-2.161 1.107t-2.857 0.357-2.857-0.357-2.161-1.107q-0.196-0.179-0.464-0.179t-0.446 0.179q-0.196 0.179-0.196 0.455t0.196 0.473q0.768 0.768 2.116 1.214t2.188 0.527 1.625 0.080 1.625-0.080 2.188-0.527 2.116-1.214zM21.875 21.339q1.107 0 1.884-0.786t0.777-1.893q0-1.089-0.786-1.875t-1.875-0.786q-1.107 0-1.893 0.777t-0.786 1.884 0.786 1.893 1.893 0.786z"></path> </symbol> <symbol id="icon-whatsapp" viewBox="0 0 32 32"> <path d="M15.968 2.003a14.03 13.978 0 0 0-14.03 13.978 14.03 13.978 0 0 0 2.132 7.391L1.938 29.96l6.745-2.052a14.03 13.978 0 0 0 7.285 2.052 14.03 13.978 0 0 0 14.03-13.978 14.03 13.978 0 0 0-14.03-13.978z" stroke-width=".2000562"/> <path d="M10.454 8.236a2.57 3.401 51.533 0 0-1.475 3.184v.015c.01 2.04 4.045 10.076 10.017 12.688l.017-.013a2.57 3.401 51.533 0 0 3.454-.706 2.57 3.401 51.533 0 0 1.064-4.129 2.57 3.401 51.533 0 0-4.262.103 2.57 3.401 51.533 0 0-.505.473c-1.346-.639-2.952-1.463-4.168-2.98-.771-.962-1.257-2.732-1.549-4.206a2.57 3.401 51.533 0 0 .605-.403 2.57 3.401 51.533 0 0 1.064-4.129 2.57 3.401 51.533 0 0-4.262.103z" stroke-width=".372"/> </symbol> <symbol id="icon-telegram" viewBox="0 0 32 32"> <path d="M30.8,2.2L0.6,13.9c-0.8,0.3-0.7,1.3,0,1.6l7.4,2.8l2.9,9.2c0.2,0.6,0.9,0.8,1.4,0.4l4.1-3.4 c0.4-0.4,1-0.4,1.5,0l7.4,5.4c0.5,0.4,1.2,0.1,1.4-0.5L32,3.2C32.1,2.5,31.4,1.9,30.8,2.2z M25,8.3l-11.9,11 c-0.4,0.4-0.7,0.9-0.8,1.5l-0.4,3c-0.1,0.4-0.6,0.4-0.7,0.1l-1.6-5.5c-0.2-0.6,0.1-1.3,0.6-1.6l14.4-8.9C25,7.7,25.3,8.1,25,8.3z"/> </symbol> <symbol id="icon-hashtag" viewBox="0 0 32 32"> <path class="path1" d="M17.696 18.286l1.143-4.571h-4.536l-1.143 4.571h4.536zM31.411 9.286l-1 4q-0.125 0.429-0.554 0.429h-5.839l-1.143 4.571h5.554q0.268 0 0.446 0.214 0.179 0.25 0.107 0.5l-1 4q-0.089 0.429-0.554 0.429h-5.839l-1.446 5.857q-0.125 0.429-0.554 0.429h-4q-0.286 0-0.464-0.214-0.161-0.214-0.107-0.5l1.393-5.571h-4.536l-1.446 5.857q-0.125 0.429-0.554 0.429h-4.018q-0.268 0-0.446-0.214-0.161-0.214-0.107-0.5l1.393-5.571h-5.554q-0.268 0-0.446-0.214-0.161-0.214-0.107-0.5l1-4q0.125-0.429 0.554-0.429h5.839l1.143-4.571h-5.554q-0.268 0-0.446-0.214-0.179-0.25-0.107-0.5l1-4q0.089-0.429 0.554-0.429h5.839l1.446-5.857q0.125-0.429 0.571-0.429h4q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5l-1.393 5.571h4.536l1.446-5.857q0.125-0.429 0.571-0.429h4q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5l-1.393 5.571h5.554q0.268 0 0.446 0.214 0.161 0.214 0.107 0.5z"></path> </symbol> <symbol id="icon-chain" viewBox="0 0 30 32"> <path class="path1" d="M26 21.714q0-0.714-0.5-1.214l-3.714-3.714q-0.5-0.5-1.214-0.5-0.75 0-1.286 0.571 0.054 0.054 0.339 0.33t0.384 0.384 0.268 0.339 0.232 0.455 0.063 0.491q0 0.714-0.5 1.214t-1.214 0.5q-0.268 0-0.491-0.063t-0.455-0.232-0.339-0.268-0.384-0.384-0.33-0.339q-0.589 0.554-0.589 1.304 0 0.714 0.5 1.214l3.679 3.696q0.482 0.482 1.214 0.482 0.714 0 1.214-0.464l2.625-2.607q0.5-0.5 0.5-1.196zM13.446 9.125q0-0.714-0.5-1.214l-3.679-3.696q-0.5-0.5-1.214-0.5-0.696 0-1.214 0.482l-2.625 2.607q-0.5 0.5-0.5 1.196 0 0.714 0.5 1.214l3.714 3.714q0.482 0.482 1.214 0.482 0.75 0 1.286-0.554-0.054-0.054-0.339-0.33t-0.384-0.384-0.268-0.339-0.232-0.455-0.063-0.491q0-0.714 0.5-1.214t1.214-0.5q0.268 0 0.491 0.063t0.455 0.232 0.339 0.268 0.384 0.384 0.33 0.339q0.589-0.554 0.589-1.304zM29.429 21.714q0 2.143-1.518 3.625l-2.625 2.607q-1.482 1.482-3.625 1.482-2.161 0-3.643-1.518l-3.679-3.696q-1.482-1.482-1.482-3.625 0-2.196 1.571-3.732l-1.571-1.571q-1.536 1.571-3.714 1.571-2.143 0-3.643-1.5l-3.714-3.714q-1.5-1.5-1.5-3.643t1.518-3.625l2.625-2.607q1.482-1.482 3.625-1.482 2.161 0 3.643 1.518l3.679 3.696q1.482 1.482 1.482 3.625 0 2.196-1.571 3.732l1.571 1.571q1.536-1.571 3.714-1.571 2.143 0 3.643 1.5l3.714 3.714q1.5 1.5 1.5 3.643z"></path> </symbol> <symbol id="icon-thumb-tack" viewBox="0 0 21 32"> <path class="path1" d="M8.571 15.429v-8q0-0.25-0.161-0.411t-0.411-0.161-0.411 0.161-0.161 0.411v8q0 0.25 0.161 0.411t0.411 0.161 0.411-0.161 0.161-0.411zM20.571 21.714q0 0.464-0.339 0.804t-0.804 0.339h-7.661l-0.911 8.625q-0.036 0.214-0.188 0.366t-0.366 0.152h-0.018q-0.482 0-0.571-0.482l-1.357-8.661h-7.214q-0.464 0-0.804-0.339t-0.339-0.804q0-2.196 1.402-3.955t3.17-1.759v-9.143q-0.929 0-1.607-0.679t-0.679-1.607 0.679-1.607 1.607-0.679h11.429q0.929 0 1.607 0.679t0.679 1.607-0.679 1.607-1.607 0.679v9.143q1.768 0 3.17 1.759t1.402 3.955z"></path> </symbol> <symbol id="icon-arrow-left" viewBox="0 0 43 32"> <path class="path1" d="M42.311 14.044c-0.178-0.178-0.533-0.356-0.711-0.356h-33.778l10.311-10.489c0.178-0.178 0.356-0.533 0.356-0.711 0-0.356-0.178-0.533-0.356-0.711l-1.6-1.422c-0.356-0.178-0.533-0.356-0.889-0.356s-0.533 0.178-0.711 0.356l-14.578 14.933c-0.178 0.178-0.356 0.533-0.356 0.711s0.178 0.533 0.356 0.711l14.756 14.933c0 0.178 0.356 0.356 0.533 0.356s0.533-0.178 0.711-0.356l1.6-1.6c0.178-0.178 0.356-0.533 0.356-0.711s-0.178-0.533-0.356-0.711l-10.311-10.489h33.778c0.178 0 0.533-0.178 0.711-0.356 0.356-0.178 0.533-0.356 0.533-0.711v-2.133c0-0.356-0.178-0.711-0.356-0.889z"></path> </symbol> <symbol id="icon-arrow-right" viewBox="0 0 43 32"> <path class="path1" d="M0.356 17.956c0.178 0.178 0.533 0.356 0.711 0.356h33.778l-10.311 10.489c-0.178 0.178-0.356 0.533-0.356 0.711 0 0.356 0.178 0.533 0.356 0.711l1.6 1.6c0.178 0.178 0.533 0.356 0.711 0.356s0.533-0.178 0.711-0.356l14.756-14.933c0.178-0.356 0.356-0.711 0.356-0.889s-0.178-0.533-0.356-0.711l-14.756-14.933c0-0.178-0.356-0.356-0.533-0.356s-0.533 0.178-0.711 0.356l-1.6 1.6c-0.178 0.178-0.356 0.533-0.356 0.711s0.178 0.533 0.356 0.711l10.311 10.489h-33.778c-0.178 0-0.533 0.178-0.711 0.356-0.356 0.178-0.533 0.356-0.533 0.711v2.311c0 0.178 0.178 0.533 0.356 0.711z"></path> </symbol> <symbol id="icon-play" viewBox="0 0 22 28"> <path d="M21.625 14.484l-20.75 11.531c-0.484 0.266-0.875 0.031-0.875-0.516v-23c0-0.547 0.391-0.781 0.875-0.516l20.75 11.531c0.484 0.266 0.484 0.703 0 0.969z"></path> </symbol> <symbol id="icon-pause" viewBox="0 0 24 28"> <path d="M24 3v22c0 0.547-0.453 1-1 1h-8c-0.547 0-1-0.453-1-1v-22c0-0.547 0.453-1 1-1h8c0.547 0 1 0.453 1 1zM10 3v22c0 0.547-0.453 1-1 1h-8c-0.547 0-1-0.453-1-1v-22c0-0.547 0.453-1 1-1h8c0.547 0 1 0.453 1 1z"></path> </symbol> </defs> </svg> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10