article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.highlight{background:#ffffff}.highlight .c{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .gd .x{color:#000000;background-color:#ffaaaa}.highlight .ge{font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#999999}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .gi .x{color:#000000;background-color:#aaffaa}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaaaaa}.highlight .gt{color:#aa0000}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .m{color:#009999}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbbbbb}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999999}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .il{color:#009999}.link-button,#user-nav .subscription,#jobs a,#subscription a,#mc-embedded-subscribe{background:#7000e3;border-radius:2px;color:white;font-weight:bold;display:block;padding:10px}.collapse-next{padding:10px;border-radius:5px;background:#f3a500;cursor:pointer}.collapse-next+*{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}html{height:100%}body{font-family:"San Francisco","Helvetica Neue",Roboto,Helvetica,sans-serif;line-height:1.4em;font-size:110%;color:#333}h1,h2,h3,h4{font-family:"San Francisco","Helvetica Neue",Roboto,Helvetica,sans-serif;font-weight:normal}h1{font-size:2.5em;line-height:1em}h1 a,h1 a:hover{text-decoration:none}h2{font-size:1.4em;line-height:.98em;font-weight:bold;margin:1.5em 0 1em}@media all and (max-width:768px){h2{font-size:1.2em}}h3{font-size:1.2em;line-height:1.4em;margin:0 0 .5em}h3+p{margin-top:0}h4{font-size:1em}p{font-size:1em;line-height:1.4em}a{color:#7000e3;text-decoration:none}a:hover{color:#369;text-decoration:underline}h1 a,h2 a,h3 a,h4 a,h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover{color:#333}img+em{display:block;text-align:center;font-size:.8em}blockquote{padding:.5em 1em;margin-left:0;margin-right:0;padding-left:2em;background-color:#EFEFEF;border-left:5px solid #F3A500}blockquote p{margin:0}code{font-family:Consolas,monospace}li ul{padding-top:1em}p+ul{padding-top:0}ol ul{list-style-type:disc}ul ul{list-style-type:none}ul ul>li{text-indent:-1em}ul ul>li:before{content:"+ ";font-weight:bold}table{margin:10px auto;border:1px solid #888;border-radius:5px}table th,table td{padding:5px;border:1px solid #999}body,#container{background-color:#FAFAF6}#container{margin:0 auto;position:relative}#container:after{content:" ";visibility:hidden;display:block;height:0;clear:both}.sticky{position:static;float:left}#page-header{position:relative;top:0;left:0;width:100%;padding:.5em 1em;line-height:2em;z-index:10;font-size:1em;background-color:#333;color:#e4e7ea}#page-header h1{padding:0;margin:0;display:inline-block;line-height:1.2em}#page-header h1 a{display:inline-block;background:transparent url(/techblog/images/badoo-logo.png) center center no-repeat;background-size:contain;text-indent:-9999px;width:4em;vertical-align:middle}#page-header h1 strong{display:inline;line-height:1em;vertical-align:middle;font-size:.6em;letter-spacing:-1px}@media all and (max-width:480px){#page-header{padding:5px}}#user-nav{padding-left:0;text-align:center;right:1em;top:0;line-height:3.9em}#user-nav strong,#user-nav a{line-height:2em;vertical-align:middle;margin-right:.5em;font-size:.8em}#user-nav strong{margin-right:1em;display:none}#user-nav .icon{display:inline-block;border:2px solid white;border-radius:100%;width:36px;height:0;padding-top:32px;background-size:32px 32px;background-position:center center;background-repeat:no-repeat;background-color:white;overflow:hidden}#user-nav .icon:hover{-webkit-filter:invert(1);-moz-filter:invert(1);filter:invert(1)}#user-nav .icon.github{background-image:url(/techblog/images/icon-github.png)}#user-nav .icon.facebook{background-image:url(/techblog/images/icon-facebook.png)}#user-nav .icon.email{background-image:url(/techblog/images/icon-email.png)}#user-nav .icon.twitter{background-image:url(/techblog/images/icon-twitter.png)}@media all and (min-width:480px){#user-nav{position:absolute}}@media all and (min-width:768px){#user-nav strong,#user-nav .subscription{display:inline-block}}@media all and (max-width:768px){#user-nav .subscription{display:inline-block}}@media all and (max-width:480px){#user-nav{line-height:2.1em}#user-nav a+strong{display:inline}}#post-container{padding:2em;background:#fff}@media all and (max-width:768px){#post-container{padding:0}}@media all and (min-width:1024px){#post-container{width:700px;float:left;box-shadow:1px 0 1px #f1f1e6,-1px 0 1px #f1f1e6}}#page-content{word-wrap:break-word;padding:10px;position:relative}#page-content::after{content:'';display:table;clear:both}#page-content .summaries{display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:-ms-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-items:stretch;-moz-align-items:stretch;-ms-align-items:stretch;align-items:stretch;-webkit-align-content:stretch;-moz-align-content:stretch;-ms-align-content:stretch;align-content:stretch;-webkit-justify-content:space-around;-moz-justify-content:space-around;-ms-justify-content:space-around;justify-content:space-around;padding-top:10px}@media all and (max-width:768px){#page-content .summaries{padding:0}}.legal #page-content{padding:1em}@media all and (min-width:768px){#page-content{min-height:900px;margin:0 auto;width:100%;max-width:1024px}}.normal-height #page-content{min-height:0}#related-content{padding:10px 0}.no-related-content #related-content{display:none}@media all and (min-width:1024px){.posts #related-content{width:300px;padding:0 10px;float:right}}#related-content.fixed{position:fixed;top:0;margin-left:4px}#related-content.stuck{position:absolute;top:initial;bottom:0;margin-left:4px}#jobs,#subscription{padding:10px 0;text-align:center}#recent-posts{display:none}#recent-posts li{list-style-type:square;line-height:1.2em;padding-bottom:10px;color:#7000e3}#recent-posts ul{margin-top:0;padding-left:1em}@media all and (min-width:1024px){.posts #recent-posts{display:block}}#categories{max-width:900px;margin:0 auto}#categories h3{text-align:center}#categories a{color:white;background:#7000e3;min-width:3em}#categories a{border-radius:2px;display:inline-block;font-size:.9em;min-width:3em;margin:.2em .1em;padding:.2em .5em}#categories li{list-style-type:none;text-align:center;display:inline-block}#categories ul{padding-left:0;text-align:center}@media all and (min-width:1024px){.posts #categories{background:transparent;margin:0}.posts #categories h3,.posts #categories ul{text-align:left}}.legal #categories{display:none}#page-footer{background:#333;clear:both;padding-top:1em}.normal-height #page-footer{width:100%}#page-footer p{text-align:center;color:white;padding-bottom:1em;margin:0}#page-footer p.legal{padding-bottom:.5em}#page-footer p.legal a{display:inline-block;color:white;padding:0 1em}.highlight{padding:.5em;background-color:#EFEFEF}@media all and (max-width:480px){.highlight{font-size:.9em}}pre{white-space:pre;overflow:scroll;margin:0;line-height:1em;word-wrap:normal}.post-summary{-webkit-flex-grow:1;-moz-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-webkit-flex-shrink:1;-moz-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;-webkit-flex-basis:40%;-moz-flex-basis:40%;-ms-flex-basis:40%;flex-basis:40%;position:relative;background:#fff;padding:1em;outline:1em solid white;outline-offset:-1em;box-shadow:0 1px 2px #dfdfdf;border-radius:2px;overflow:hidden;margin-bottom:20px}.flexbox .summaries .post-summary{height:14em}.summaries .post-summary:nth-child(2n - 1){margin-right:20px}.post-summary:hover{box-shadow:0 3px 4px 2px #d2d2d2}.post-summary:last-child{max-width:50%}@media all and (max-width:768px){.post-summary{-webkit-flex-grow:1;-moz-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-webkit-flex-shrink:1;-moz-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;-webkit-flex-basis:100%;-moz-flex-basis:100%;-ms-flex-basis:100%;flex-basis:100%}.summaries .post-summary:nth-child(2n - 1){margin-right:0}.post-summary:last-child{max-width:100%}}.post-summary .post-header{margin-bottom:1em}.post-summary a{color:#333}.post-summary a:hover{color:#369;text-decoration:none}.post-summary:last-of-type{border-bottom:0}.post-summary img{display:none}.post-header{position:relative}.post-header h2{margin:0;padding-right:60px}@media all and (max-width:768px){.post-header h2{margin-top:1em}}.post-header .post-meta{padding-right:60px}.post-title{margin-bottom:0}.post-meta{margin:.25em 0;font-size:.9em;color:#737373}.post-tags{padding-left:0;margin:1em 0 0 0}.post-tags li{display:inline-block}.post-tags li a{-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;border-radius:5px;font-size:.9em;padding:.2em .5em;margin-bottom:5px;display:inline-block;background-color:#7000e3;color:white}.post-networks{clear:both;overflow:hidden}.post-networks>*{float:left;margin-right:10px}.post-author-image{-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%;position:absolute;top:0;right:0;width:60px;height:60px;background:transparent none center center no-repeat;background-size:contain}@media all and (max-width:480px){.post-author-image{width:50px;height:50px}}.post-content img{margin:0 auto;display:block;-webkit-box-shadow:0 0 15px 3px #ddd;-moz-box-shadow:0 0 15px 3px #ddd;-ms-box-shadow:0 0 15px 3px #ddd;-o-box-shadow:0 0 15px 3px #ddd;-transition-box-shadow:0 0 15px 3px #ddd;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;max-width:90%}.post-content img.no-box-shadow{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;-transition-box-shadow:none}.post-content pre code{font-size:.8em;line-height:1em}.post-content li{padding-bottom:.5em}.post-content li+li{padding-top:.5em}.post-content p{word-spacing:2px}.post-content p code{background:#eee;padding:0 3px}.post-footer{padding:1em 0}.fb-like{min-height:30px}.twitter-share-button{display:block;margin:.3em 0;min-height:20px}a.button{display:block;text-align:center;background:#7000e3;color:#FAFAF6;line-height:2em}.video{width:100%}#mc_embed_signup{margin-bottom:20px}#mc_embed_signup label{display:block;padding:10px 0}#mce-EMAIL,#mce-FNAME{display:block;width:100%;margin-bottom:10px;padding:10px}#mc-embedded-subscribe{border:0;width:100%;margin-top:30px}