<body class="logged-in  env-production linux">
    <div class="pjax-loader-bar" id="js-pjax-loader-bar"><div class="progress"></div></div>
    <a class="accessibility-aid js-skip-to-content" tabindex="1" href="#start-of-content">Skip to content</a>

    
    
    



        <div role="banner" class="header gist-header header-logged-in">
  <div class="container clearfix">

    <a data-hotkey="g d" class="header-logo-wordmark" aria-label="Gist Homepage" href="/">
      <svg width="78" viewBox="0 0 45 16" version="1.1" height="28" class="octicon octicon-logo-github" aria-hidden="true"><path d="M18.53 12.03h-.02c.009 0 .015.01.024.011h.006l-.01-.01zm.004.011c-.093.001-.327.05-.574.05-.78 0-1.05-.36-1.05-.83V8.13h1.59c.09 0 .16-.08.16-.19v-1.7c0-.09-.08-.17-.16-.17h-1.59V3.96c0-.08-.05-.13-.14-.13h-2.16c-.09 0-.14.05-.14.13v2.17s-1.09.27-1.16.28c-.08.02-.13.09-.13.17v1.36c0 .11.08.19.17.19h1.11v3.28c0 2.44 1.7 2.69 2.86 2.69.53 0 1.17-.17 1.27-.22.06-.02.09-.09.09-.16v-1.5a.177.177 0 0 0-.146-.18zm23.696-2.2c0-1.81-.73-2.05-1.5-1.97-.6.04-1.08.34-1.08.34v3.52s.49.34 1.22.36c1.03.03 1.36-.34 1.36-2.25zm2.43-.16c0 3.43-1.11 4.41-3.05 4.41-1.64 0-2.52-.83-2.52-.83s-.04.46-.09.52c-.03.06-.08.08-.14.08h-1.48c-.1 0-.19-.08-.19-.17l.02-11.11c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v3.77s.82-.53 2.02-.53l-.01-.02c1.2 0 2.97.45 2.97 3.88zm-8.72-3.61H33.84c-.11 0-.17.08-.17.19v5.44s-.55.39-1.3.39-.97-.34-.97-1.09V6.25c0-.09-.08-.17-.17-.17h-2.14c-.09 0-.17.08-.17.17v5.11c0 2.2 1.23 2.75 2.92 2.75 1.39 0 2.52-.77 2.52-.77s.05.39.08.45c.02.05.09.09.16.09h1.34c.11 0 .17-.08.17-.17l.02-7.47c0-.09-.08-.17-.19-.17zm-23.7-.01h-2.13c-.09 0-.17.09-.17.2v7.34c0 .2.13.27.3.27h1.92c.2 0 .25-.09.25-.27V6.23c0-.09-.08-.17-.17-.17zm-1.05-3.38c-.77 0-1.38.61-1.38 1.38 0 .77.61 1.38 1.38 1.38.75 0 1.36-.61 1.36-1.38 0-.77-.61-1.38-1.36-1.38zm16.49-.25h-2.11c-.09 0-.17.08-.17.17v4.09h-3.31V2.6c0-.09-.08-.17-.17-.17h-2.13c-.09 0-.17.08-.17.17v11.11c0 .09.09.17.17.17h2.13c.09 0 .17-.08.17-.17V8.96h3.31l-.02 4.75c0 .09.08.17.17.17h2.13c.09 0 .17-.08.17-.17V2.6c0-.09-.08-.17-.17-.17zM8.81 7.35v5.74c0 .04-.01.11-.06.13 0 0-1.25.89-3.31.89-2.49 0-5.44-.78-5.44-5.92S2.58 1.99 5.1 2c2.18 0 3.06.49 3.2.58.04.05.06.09.06.14L7.94 4.5c0 .09-.09.2-.2.17-.36-.11-.9-.33-2.17-.33-1.47 0-3.05.42-3.05 3.73s1.5 3.7 2.58 3.7c.92 0 1.25-.11 1.25-.11v-2.3H4.88c-.11 0-.19-.08-.19-.17V7.35c0-.09.08-.17.19-.17h3.74c.11 0 .19.08.19.17z" fill-rule="evenodd"/></svg>
      <svg width="40" viewBox="0 0 25 16" version="1.1" height="28" class="octicon octicon-logo-gist" aria-hidden="true"><path d="M4.7 8.73h2.45v4.02c-.55.27-1.64.34-2.53.34-2.56 0-3.47-2.2-3.47-5.05 0-2.85.91-5.06 3.48-5.06 1.28 0 2.06.23 3.28.73V2.66C7.27 2.33 6.25 2 4.63 2 1.13 2 0 4.69 0 8.03c0 3.34 1.11 6.03 4.63 6.03 1.64 0 2.81-.27 3.59-.64V7.73H4.7v1zm6.39 3.72V6.06h-1.05v6.28c0 1.25.58 1.72 1.72 1.72v-.89c-.48 0-.67-.16-.67-.7v-.02zm.25-8.72c0-.44-.33-.78-.78-.78s-.77.34-.77.78.33.78.77.78.78-.34.78-.78zm4.34 5.69c-1.5-.13-1.78-.48-1.78-1.17 0-.77.33-1.34 1.88-1.34 1.05 0 1.66.16 2.27.36v-.94c-.69-.3-1.52-.39-2.25-.39-2.2 0-2.92 1.2-2.92 2.31 0 1.08.47 1.88 2.73 2.08 1.55.13 1.77.63 1.77 1.34 0 .73-.44 1.42-2.06 1.42-1.11 0-1.86-.19-2.33-.36v.94c.5.2 1.58.39 2.33.39 2.38 0 3.14-1.2 3.14-2.41 0-1.28-.53-2.03-2.75-2.23h-.03zm8.58-2.47v-.86h-2.42v-2.5l-1.08.31v2.11l-1.56.44v.48h1.56v5c0 1.53 1.19 2.13 2.5 2.13.19 0 .52-.02.69-.05v-.89c-.19.03-.41.03-.61.03-.97 0-1.5-.39-1.5-1.34V6.94h2.42v.02-.01z" fill-rule="evenodd"/></svg>
</a>
    <div role="search" class="site-search js-site-search">
        <div role="search" class="header-search">

<!-- '"` --><!-- </textarea></xmp> --><form method="get" class="position-relative" action="/search" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"></div>
  <label class="header-search-wrapper form-control js-chromeless-input-container">
    <input type="text" autocapitalize="off" autocomplete="off" autocorrect="off" tabindex="1" placeholder="Search…" name="q" data-hotkey="s" class="form-control js-site-search-focus header-search-input js-navigation-enable js-quicksearch-field">
  </label>

    <div data-quicksearch-url="/search/quick" class="gist-quicksearch-results js-quicksearch-results js-navigation-container"></div>
</form></div>

    </div>
    <ul role="navigation" class="header-nav float-left">
      <li class="header-nav-item">
        <a data-ga-click="Header, go to all gists, text:all gists" class="header-nav-link" href="/discover">All gists</a>
      </li>

      <li class="header-nav-item">
        <a data-ga-click="Header, go to GitHub, text:GitHub" class="header-nav-link" href="https://github.com">GitHub</a>
      </li>
    </ul>

      <ul id="user-links" class="header-nav user-nav float-right">
        <li class="header-nav-item">
          <a data-ga-click="Header, go to new gist, text:new gist" class="btn btn-sm" href="/">New gist</a>
        </li>

        <li class="header-nav-item dropdown js-menu-container">
          <button data-ga-click="Header, show menu, icon:avatar" aria-label="View profile and more" type="button" class="btn-link header-nav-link name tooltipped tooltipped-sw js-menu-target">
            <img width="20" height="20" src="https://avatars3.githubusercontent.com/u/3126480?v=3&amp;s=40" class="avatar" alt="@mche">
            <span class="dropdown-caret"></span>
          </button>

          <div class="dropdown-menu-content js-menu-content">
            <div class="dropdown-menu dropdown-menu-sw">
              <div class="dropdown-header header-nav-current-user css-truncate">
                Signed in as <strong class="css-truncate-target">mche</strong>
              </div>
              <div class="dropdown-divider"></div>

              <a data-ga-click="Header, go to your gists, text:your gists" href="/mche" class="dropdown-item">
                Your gists
              </a>

              <a data-ga-click="Header, go to starred gists, text:starred gists" href="/mche/starred" class="dropdown-item">
                Starred gists
              </a>

              <a data-ga-click="Header, go to help, text:help" href="https://help.github.com" class="dropdown-item">
                Help
              </a>

              <div class="dropdown-divider"></div>

              <a data-ga-click="Header, go to profile, text:your profile" href="https://github.com/mche" class="dropdown-item">
                Your GitHub profile
              </a>

              <!-- '"` --><!-- </textarea></xmp> --><form method="post" class="logout-form" action="https://gist.github.com/auth/github/logout" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="I9rPDOHzHMa/9GPjGoWkhsUQu0AMQRwWMB+V9hN2nQcC8Ggw8yxD4xbEwPVXg/V+kGa8dmeH5lurXwAVyiImzw==" name="authenticity_token"></div>
                <button data-ga-click="Header, sign out, icon:logout" class="dropdown-item dropdown-signout" type="submit">
                  Sign out
                </button>
</form>            </div>
          </div>
        </li>
      </ul>

  </div>
</div>



      


    <div class="accessibility-aid" id="start-of-content"></div>

      <div id="js-flash-container">
</div>


    <div role="main">
      
  <div itemtype="http://schema.org/Code" itemscope="">
    <div data-pjax-container="" class="gist-content-wrapper" id="gist-pjax-container">
      

  <div class="gisthead pagehead repohead instapaper_ignore readability-menu experiment-repo-nav">
    <div class="container">
        

<div class="container repohead-details-container">

  <ul class="pagehead-actions">


    <li>
          <div class="js-toggler-container js-social-container starring-container on">
    <!-- '"` --><!-- </textarea></xmp> --><form method="post" data-remote="true" class="starred" action="/kraih/4194858/unstar" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="nFbgPrf61qeQ/DK73kYim1UaYRls7kpgVSfyHu3gKhX5s7sHsh6MO5ctnyoKDjmpewbnVXwaAfzlrh8IYIqVeA==" name="authenticity_token"></div>
      <button data-ga-click="Repository, click unstar button, action:gists/gists#show; text:Unstar" title="Unstar kraih/4194858" aria-label="Unstar this gist" class="btn btn-sm btn-with-count js-toggler-target" type="submit">
        <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-star" aria-hidden="true"><path d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z" fill-rule="evenodd"/></svg>
        Unstar
      </button>
        <a aria-label="1 user starred this repository" href="/kraih/4194858/stargazers" class="social-count js-social-count">
          1
        </a>
</form>
    <!-- '"` --><!-- </textarea></xmp> --><form method="post" data-remote="true" class="unstarred" action="/kraih/4194858/star" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="cFXv2R7bJRuOyyD9CVdsrV29HJiSrlnpw7wLfxlnPqg+c+IrsP6e7tV4OuA7SGOQJ3VKsQxqJJFYuBUIbAvHNQ==" name="authenticity_token"></div>
      <button data-ga-click="Repository, click star button, action:gists/gists#show; text:Star" title="Star kraih/4194858" aria-label="Star this gist" class="btn btn-sm btn-with-count js-toggler-target" type="submit">
        <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-star" aria-hidden="true"><path d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z" fill-rule="evenodd"/></svg>
        Star
      </button>
        <a aria-label="1 user starred this repository" href="/kraih/4194858/stargazers" class="social-count js-social-count">
          1
        </a>
</form>  </div>


    </li>

      <li>
          <!-- '"` --><!-- </textarea></xmp> --><form method="post" action="/kraih/4194858/fork" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="kunEOWjz4M9NDgGTNcg36iYoGUyJi+1vtlVdiVVt2N0KN9Zt44/sWvJR6olv7lCjJeJW/KJWaSSQhfelEu1NPw==" name="authenticity_token"></div>
    <button type="submit" class="btn btn-sm btn-with-count">
      <svg width="10" viewBox="0 0 10 16" version="1.1" height="16" class="octicon octicon-repo-forked" aria-hidden="true"><path d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z" fill-rule="evenodd"/></svg>
      Fork
    </button>
      <span class="social-count">0</span>
</form>
      </li>

      <li>
        <div class="select-menu js-menu-container js-select-menu gist-user-actions">
          <button aria-label="Report user" aria-haspopup="true" type="button" class="btn btn-sm select-menu-button icon-only js-menu-target">
            <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-stop" aria-hidden="true"><path d="M10 1H4L0 5v6l4 4h6l4-4V5l-4-4zm3 9.5L9.5 14h-5L1 10.5v-5L4.5 2h5L13 5.5v5zM6 4h2v5H6V4zm0 6h2v2H6v-2z" fill-rule="evenodd"/></svg>
          </button>

          <div class="select-menu-modal-holder js-menu-content js-navigation-container">
            <div class="select-menu-modal">
              <div class="select-menu-header">
                <svg width="12" viewBox="0 0 12 16" version="1.1" role="img" height="16" class="octicon octicon-x js-menu-close" aria-label="Close"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z" fill-rule="evenodd"/></svg>
                <span class="select-menu-title">User actions</span>
              </div>
              <div class="select-menu-list">
                <div class="select-menu-item js-navigation-item">
                  <!-- '"` --><!-- </textarea></xmp> --><form method="post" class="inline-form" action="/kraih/4194858/report"><div><input type="submit" value="Report abuse" data-confirm="Do you want to report the contents of this gist as abuse?" class="btn-plain select-menu-item-text js-navigation-open"><input type="hidden" value="JhXVAfCoj2ek64B157UX5a0DCeDuIpyf83rlI0MokPJQ4i3IWSsBpFiwTFZs5noOViB0xT5T3XYOi3ZwwB93uA==" name="authenticity_token"></div></form>
                </div>
              </div>
            </div>
          </div>
        </div>
      </li>
  </ul>

  <h1 class="public css-truncate">
    <img width="26" height="26" src="https://avatars3.githubusercontent.com/u/30094?v=3&amp;s=52" class="avatar gist-avatar" alt="@kraih">
    <span class="author"><a rel="author" class="url fn" href="/kraih"><span itemprop="author">kraih</span></a></span><!--
        --><span class="path-divider">/</span><!--
        --><strong class="gist-header-title css-truncate-target" itemprop="name"><a href="/kraih/4194858">GZip.pm</a></strong>

    <div class="gist-timestamp">Created <time-ago datetime="2012-12-03T12:53:54Z" title="3 дек. 2012 г., 18:53 GMT+6">4 years ago</time-ago></div>
  </h1>
</div>

<div class="container gist-file-navigation">
  <div data-multiple="" class="float-right file-navigation-options">

    <div class="file-navigation-option">
  <input type="hidden" value="clone" name="protocol_type">

  <div class="select-menu js-menu-container js-select-menu">
    <div class="input-group js-select-button js-zeroclipboard-container">
      <div class="input-group-button">
  <button data-ga-click="Repository, clone Embed, location:repo overview" class="btn btn-sm select-menu-button js-menu-target" type="button">
    Embed
  </button>
</div>
<input type="text" readonly="" aria-label="Clone this repository at &lt;script src=&quot;https://gist.github.com/kraih/4194858.js&quot;&gt;&lt;/script&gt;" value="&lt;script src=&quot;https://gist.github.com/kraih/4194858.js&quot;&gt;&lt;/script&gt;" class="form-control input-monospace input-sm js-zeroclipboard-target js-url-field">
<div class="input-group-button">
  <button type="button" data-copied-hint="Copied!" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" aria-label="Copy to clipboard"><svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-clippy" aria-hidden="true"><path d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z" fill-rule="evenodd"/></svg></button>
</div>

    </div>

    <div class="select-menu-modal-holder">
      <div aria-hidden="true" class="select-menu-modal js-menu-content">
        <div class="select-menu-header">
          <svg width="12" viewBox="0 0 12 16" version="1.1" role="img" height="16" class="octicon octicon-x js-menu-close" aria-label="Close"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z" fill-rule="evenodd"/></svg>
          <span class="select-menu-title">What would you like to do?</span>
        </div>

        <div role="menu" class="select-menu-list js-navigation-container">
            <div tabindex="0" role="menuitem" class="select-menu-item js-navigation-item selected">
              <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-check select-menu-item-icon" aria-hidden="true"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z" fill-rule="evenodd"/></svg>
              <div class="select-menu-item-text">
                <input type="radio" checked="" value="embed" name="protocol_selector">
                <span class="select-menu-item-heading">
                  
                  Embed
                </span>
                  <span class="description">
                    Embed this gist in your website.
                  </span>
                <span class="js-select-button-text hidden-select-button-text">
                  <div class="input-group-button">
  <button data-ga-click="Repository, clone Embed, location:repo overview" class="btn btn-sm select-menu-button js-menu-target" type="button">
    Embed
  </button>
</div>
<input type="text" readonly="" aria-label="Clone this repository at &lt;script src=&quot;https://gist.github.com/kraih/4194858.js&quot;&gt;&lt;/script&gt;" value="&lt;script src=&quot;https://gist.github.com/kraih/4194858.js&quot;&gt;&lt;/script&gt;" class="form-control input-monospace input-sm js-zeroclipboard-target js-url-field">
<div class="input-group-button">
  <button type="button" data-copied-hint="Copied!" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" aria-label="Copy to clipboard"><svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-clippy" aria-hidden="true"><path d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z" fill-rule="evenodd"/></svg></button>
</div>

                </span>
              </div>
            </div>
            <div tabindex="0" role="menuitem" class="select-menu-item js-navigation-item ">
              <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-check select-menu-item-icon" aria-hidden="true"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z" fill-rule="evenodd"/></svg>
              <div class="select-menu-item-text">
                <input type="radio" value="share" name="protocol_selector">
                <span class="select-menu-item-heading">
                  
                  Share
                </span>
                  <span class="description">
                    Copy sharable URL for this gist.
                  </span>
                <span class="js-select-button-text hidden-select-button-text">
                  <div class="input-group-button">
  <button data-ga-click="Repository, clone Share, location:repo overview" class="btn btn-sm select-menu-button js-menu-target" type="button">
    Share
  </button>
</div>
<input type="text" readonly="" aria-label="Clone this repository at https://gist.github.com/kraih/4194858" value="https://gist.github.com/kraih/4194858" class="form-control input-monospace input-sm js-zeroclipboard-target js-url-field">
<div class="input-group-button">
  <button type="button" data-copied-hint="Copied!" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" aria-label="Copy to clipboard"><svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-clippy" aria-hidden="true"><path d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z" fill-rule="evenodd"/></svg></button>
</div>

                </span>
              </div>
            </div>
            <div tabindex="0" role="menuitem" class="select-menu-item js-navigation-item ">
              <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-check select-menu-item-icon" aria-hidden="true"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z" fill-rule="evenodd"/></svg>
              <div class="select-menu-item-text">
                <input type="radio" value="http" name="protocol_selector">
                <span class="select-menu-item-heading">
                  Clone via
                  HTTPS
                </span>
                  <span class="description">
                    Clone with Git or checkout with SVN using the repository's web address.
                  </span>
                <span class="js-select-button-text hidden-select-button-text">
                  <div class="input-group-button">
  <button data-ga-click="Repository, clone HTTPS, location:repo overview" class="btn btn-sm select-menu-button js-menu-target" type="button">
    HTTPS
  </button>
</div>
<input type="text" readonly="" aria-label="Clone this repository at https://gist.github.com/4194858.git" value="https://gist.github.com/4194858.git" class="form-control input-monospace input-sm js-zeroclipboard-target js-url-field">
<div class="input-group-button">
  <button type="button" data-copied-hint="Copied!" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" aria-label="Copy to clipboard"><svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-clippy" aria-hidden="true"><path d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z" fill-rule="evenodd"/></svg></button>
</div>

                </span>
              </div>
            </div>
            <div tabindex="0" role="menuitem" class="select-menu-item js-navigation-item ">
              <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-check select-menu-item-icon" aria-hidden="true"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z" fill-rule="evenodd"/></svg>
              <div class="select-menu-item-text">
                <input type="radio" value="ssh" name="protocol_selector">
                <span class="select-menu-item-heading">
                  Clone via
                  SSH
                </span>
                  <span class="description">
                    Clone with an SSH key and passphrase from your GitHub settings.
                  </span>
                <span class="js-select-button-text hidden-select-button-text">
                  <div class="input-group-button">
  <button data-ga-click="Repository, clone SSH, location:repo overview" class="btn btn-sm select-menu-button js-menu-target" type="button">
    SSH
  </button>
</div>
<input type="text" readonly="" aria-label="Clone this repository at git@gist.github.com:4194858.git" value="git@gist.github.com:4194858.git" class="form-control input-monospace input-sm js-zeroclipboard-target js-url-field">
<div class="input-group-button">
  <button type="button" data-copied-hint="Copied!" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" aria-label="Copy to clipboard"><svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-clippy" aria-hidden="true"><path d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z" fill-rule="evenodd"/></svg></button>
</div>

                </span>
              </div>
            </div>
        </div>
        <div role="menu" class="select-menu-list">
          <a target="_blank" href="https://help.github.com/articles/which-remote-url-should-i-use" class="select-menu-item select-menu-action">
            <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-question select-menu-item-icon" aria-hidden="true"><path d="M6 10h2v2H6v-2zm4-3.5C10 8.64 8 9 8 9H6c0-.55.45-1 1-1h.5c.28 0 .5-.22.5-.5v-1c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7H4c0-1.5 1.5-3 3-3s3 1 3 2.5zM7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7z" fill-rule="evenodd"/></svg>
            <div class="select-menu-item-text">
              Learn more about clone URLs
            </div>
          </a>
        </div>
      </div>
    </div>
  </div>
</div>


    <div class="file-navigation-option">
</div>


    <div class="file-navigation-option">
      <a data-ga-click="Gist, download zip, location:gist overview" rel="nofollow" class="btn btn-sm" href="/kraih/4194858/archive/5b462efff1d5c57aff657594f92f85fa778169d8.zip">
        Download ZIP
      </a>
    </div>
  </div>

  <div class="float-left">
    <nav data-pjax="#gist-pjax-container" role="navigation" class="reponav js-repo-nav js-sidenav-container-pjax">

  <a data-selected-links="gist_code /kraih/4194858" data-pjax="true" data-hotkey="g c" class="js-selected-navigation-item selected reponav-item" aria-label="Code" href="/kraih/4194858">
    <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-code" aria-hidden="true"><path d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z" fill-rule="evenodd"/></svg>
    Code
</a>
    <a data-selected-links="gist_revisions /kraih/4194858/revisions" data-pjax="true" data-hotkey="g r" class="js-selected-navigation-item reponav-item" aria-label="Revisions" href="/kraih/4194858/revisions">
      <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-git-commit" aria-hidden="true"><path d="M10.86 7c-.45-1.72-2-3-3.86-3-1.86 0-3.41 1.28-3.86 3H0v2h3.14c.45 1.72 2 3 3.86 3 1.86 0 3.41-1.28 3.86-3H14V7h-3.14zM7 10.2c-1.22 0-2.2-.98-2.2-2.2 0-1.22.98-2.2 2.2-2.2 1.22 0 2.2.98 2.2 2.2 0 1.22-.98 2.2-2.2 2.2z" fill-rule="evenodd"/></svg>
      Revisions
      <span class="counter">6</span>
</a>
    <a data-selected-links="gist_stars /kraih/4194858/stargazers" data-pjax="true" data-hotkey="g s" class="js-selected-navigation-item reponav-item" aria-label="Stars" href="/kraih/4194858/stargazers">
      <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-star" aria-hidden="true"><path d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z" fill-rule="evenodd"/></svg>
      Stars
      <span class="counter">1</span>
</a>
</nav>

  </div>
</div>


    </div><!-- /.container -->
  </div><!-- /.repohead -->

<div class="container new-discussion-timeline experiment-repo-nav">
  <div class="repository-content gist-content">
    



<div>
  <div class="repository-meta js-details-container Details">
</div>


      <div class="js-gist-file-update-container js-task-list-container file-box">
  <div class="file" id="file-gzip-pm">
      <div class="file-header">
        <div class="file-actions">

          <a class="btn btn-sm " href="/kraih/4194858/raw/5b462efff1d5c57aff657594f92f85fa778169d8/GZip.pm">Raw</a>
        </div>
        <div class="file-info">
          <span class="icon">
            <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-gist" aria-hidden="true"><path d="M7.5 5L10 7.5 7.5 10l-.75-.75L8.5 7.5 6.75 5.75 7.5 5zm-3 0L2 7.5 4.5 10l.75-.75L3.5 7.5l1.75-1.75L4.5 5zM0 13V2c0-.55.45-1 1-1h10c.55 0 1 .45 1 1v11c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1zm1 0h10V2H1v11z" fill-rule="evenodd"/></svg>
          </span>
          <a href="#file-gzip-pm" aria-label="Permalink" class="tooltipped tooltipped-s css-truncate">
            <strong class="user-select-contain gist-blob-name css-truncate-target">
              GZip.pm
            </strong>
          </a>
        </div>
      </div>
    

  <div class="blob-wrapper data type-perl" itemprop="text">
      <table data-tab-size="8" class="highlight tab-size js-file-line-container">
      <tbody><tr>
        <td data-line-number="1" class="blob-num js-line-number" id="file-gzip-pm-L1"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC1"><span class="pl-k">package</span> <span class="pl-en">Mojolicious::Plugin::GZip</span>;</td>
      </tr>
      <tr>
        <td data-line-number="2" class="blob-num js-line-number" id="file-gzip-pm-L2"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC2"><span class="pl-k">use</span> Mojo::Base <span class="pl-s"><span class="pl-pds">'</span>Mojolicious::Plugin<span class="pl-pds">'</span></span>;</td>
      </tr>
      <tr>
        <td data-line-number="3" class="blob-num js-line-number" id="file-gzip-pm-L3"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC3">
</td>
      </tr>
      <tr>
        <td data-line-number="4" class="blob-num js-line-number" id="file-gzip-pm-L4"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC4"><span class="pl-k">use</span> IO::Compress::Gzip <span class="pl-s"><span class="pl-pds">'</span>gzip<span class="pl-pds">'</span></span>;</td>
      </tr>
      <tr>
        <td data-line-number="5" class="blob-num js-line-number" id="file-gzip-pm-L5"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC5">
</td>
      </tr>
      <tr>
        <td data-line-number="6" class="blob-num js-line-number" id="file-gzip-pm-L6"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC6"><span class="pl-c"><span class="pl-c">#</span> Just set "gzip =&gt; 1" in the stash and it will try to compress your content</span></td>
      </tr>
      <tr>
        <td data-line-number="7" class="blob-num js-line-number" id="file-gzip-pm-L7"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC7"><span class="pl-k">sub</span> <span class="pl-en">register</span> {</td>
      </tr>
      <tr>
        <td data-line-number="8" class="blob-num js-line-number" id="file-gzip-pm-L8"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC8">  <span class="pl-k">my</span> (<span class="pl-smi">$self</span>, <span class="pl-smi">$app</span>) = <span class="pl-smi">@_</span>;</td>
      </tr>
      <tr>
        <td data-line-number="9" class="blob-num js-line-number" id="file-gzip-pm-L9"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC9">  <span class="pl-smi">$app</span><span class="pl-k">-&gt;</span>hook(</td>
      </tr>
      <tr>
        <td data-line-number="10" class="blob-num js-line-number" id="file-gzip-pm-L10"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC10">    <span class="pl-c1">after_dispatch</span> <span class="pl-k">=&gt;</span> <span class="pl-k">sub</span> {</td>
      </tr>
      <tr>
        <td data-line-number="11" class="blob-num js-line-number" id="file-gzip-pm-L11"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC11">      <span class="pl-k">my</span> <span class="pl-smi">$self</span> = <span class="pl-c1">shift</span>;</td>
      </tr>
      <tr>
        <td data-line-number="12" class="blob-num js-line-number" id="file-gzip-pm-L12"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC12">
</td>
      </tr>
      <tr>
        <td data-line-number="13" class="blob-num js-line-number" id="file-gzip-pm-L13"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC13">      <span class="pl-c"><span class="pl-c">#</span> Check if GZip compression is desirable</span></td>
      </tr>
      <tr>
        <td data-line-number="14" class="blob-num js-line-number" id="file-gzip-pm-L14"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC14">      <span class="pl-k">return</span> <span class="pl-k">unless</span> <span class="pl-smi">$self</span><span class="pl-k">-&gt;</span>stash<span class="pl-k">-&gt;</span>{<span class="pl-c1">gzip</span>};</td>
      </tr>
      <tr>
        <td data-line-number="15" class="blob-num js-line-number" id="file-gzip-pm-L15"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC15">      <span class="pl-k">return</span> <span class="pl-k">unless</span> (<span class="pl-smi">$self</span><span class="pl-k">-&gt;</span>req<span class="pl-k">-&gt;</span>headers<span class="pl-k">-&gt;</span>accept_encoding // <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) =~ <span class="pl-sr"><span class="pl-pds">/</span>gzip<span class="pl-pds">/<span class="pl-k">i</span></span></span>;</td>
      </tr>
      <tr>
        <td data-line-number="16" class="blob-num js-line-number" id="file-gzip-pm-L16"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC16">      <span class="pl-k">my</span> <span class="pl-smi">$res</span>   = <span class="pl-smi">$self</span><span class="pl-k">-&gt;</span>res;</td>
      </tr>
      <tr>
        <td data-line-number="17" class="blob-num js-line-number" id="file-gzip-pm-L17"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC17">      <span class="pl-k">my</span> <span class="pl-smi">$asset</span> = <span class="pl-smi">$res</span><span class="pl-k">-&gt;</span>content<span class="pl-k">-&gt;</span>asset;</td>
      </tr>
      <tr>
        <td data-line-number="18" class="blob-num js-line-number" id="file-gzip-pm-L18"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC18">      <span class="pl-k">return</span> <span class="pl-k">if</span> <span class="pl-smi">$asset</span><span class="pl-k">-&gt;</span>is_file     || !<span class="pl-smi">$asset</span><span class="pl-k">-&gt;</span>size;</td>
      </tr>
      <tr>
        <td data-line-number="19" class="blob-num js-line-number" id="file-gzip-pm-L19"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC19">      <span class="pl-k">return</span> <span class="pl-k">if</span> <span class="pl-smi">$asset</span><span class="pl-k">-&gt;</span>start_range || <span class="pl-smi">$asset</span><span class="pl-k">-&gt;</span>end_range;</td>
      </tr>
      <tr>
        <td data-line-number="20" class="blob-num js-line-number" id="file-gzip-pm-L20"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC20">
</td>
      </tr>
      <tr>
        <td data-line-number="21" class="blob-num js-line-number" id="file-gzip-pm-L21"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC21">      <span class="pl-c"><span class="pl-c">#</span> Compress content</span></td>
      </tr>
      <tr>
        <td data-line-number="22" class="blob-num js-line-number" id="file-gzip-pm-L22"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC22">      gzip \(<span class="pl-k">my</span> <span class="pl-smi">$dummy</span> = <span class="pl-smi">$asset</span><span class="pl-k">-&gt;</span>slurp), \<span class="pl-k">my</span> <span class="pl-smi">$compressed</span>;</td>
      </tr>
      <tr>
        <td data-line-number="23" class="blob-num js-line-number" id="file-gzip-pm-L23"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC23">      <span class="pl-smi">$res</span><span class="pl-k">-&gt;</span>body(<span class="pl-smi">$compressed</span>);</td>
      </tr>
      <tr>
        <td data-line-number="24" class="blob-num js-line-number" id="file-gzip-pm-L24"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC24">      <span class="pl-smi">$res</span><span class="pl-k">-&gt;</span>headers<span class="pl-k">-&gt;</span>content_encoding(<span class="pl-s"><span class="pl-pds">'</span>gzip<span class="pl-pds">'</span></span>);</td>
      </tr>
      <tr>
        <td data-line-number="25" class="blob-num js-line-number" id="file-gzip-pm-L25"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC25">    }</td>
      </tr>
      <tr>
        <td data-line-number="26" class="blob-num js-line-number" id="file-gzip-pm-L26"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC26">  );</td>
      </tr>
      <tr>
        <td data-line-number="27" class="blob-num js-line-number" id="file-gzip-pm-L27"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC27">}</td>
      </tr>
      <tr>
        <td data-line-number="28" class="blob-num js-line-number" id="file-gzip-pm-L28"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC28">
</td>
      </tr>
      <tr>
        <td data-line-number="29" class="blob-num js-line-number" id="file-gzip-pm-L29"></td>
        <td class="blob-code blob-code-inner js-file-line" id="file-gzip-pm-LC29">1;</td>
      </tr>
</tbody></table>

  </div>

  </div>
  
</div>


  <a name="comments"></a>
  <div class="discussion-timeline gist-discussion-timeline js-quote-selection-container ">
    <div data-channel="tenant:1:marked-as-read:gist:4194858" class="js-discussion js-socket-channel">
      

  <div class="timeline-comment-wrapper js-comment-container">
    <a href="/augensalat"><img width="44" height="44" src="https://avatars3.githubusercontent.com/u/92883?v=3&amp;s=88" class="timeline-comment-avatar" alt="@augensalat"></a>
    

<div data-body-version="f6540102f4cf181c5762bbe3149373cf" class="comment previewable-edit timeline-comment js-comment js-task-list-container
                    
                      js-reorderable-task-lists reorderable-task-lists" id="gistcomment-614372">

  
<div class="timeline-comment-header ">

  <div class="timeline-comment-actions">


  </div>

    



  <div class="timeline-comment-header-text">

    <strong>
      <a class="author" href="/augensalat">augensalat</a> 
    </strong>

    commented

      <a class="timestamp" href="#gistcomment-614372"><relative-time datetime="2012-12-03T14:02:36Z" title="3 дек. 2012 г., 20:02 GMT+6">on 3 Dec 2012</relative-time></a>

  </div>
</div>


  <div class="edit-comment-hide">
    <table class="d-block">
      <tbody class="d-block">
        <tr class="d-block">
          <td class="d-block comment-body markdown-body markdown-format js-comment-body">
              <p>Bad for big files, because both, original and compressed file are loaded into RAM.</p>
          </td>
        </tr>
      </tbody>
    </table>

  </div>

</div>

  </div>
  <div class="timeline-comment-wrapper js-comment-container">
    <a href="/augensalat"><img width="44" height="44" src="https://avatars3.githubusercontent.com/u/92883?v=3&amp;s=88" class="timeline-comment-avatar" alt="@augensalat"></a>
    

<div data-body-version="d81454a0ac76d1b40ca849b65636e624" class="comment previewable-edit timeline-comment js-comment js-task-list-container
                    
                      js-reorderable-task-lists reorderable-task-lists" id="gistcomment-614376">

  
<div class="timeline-comment-header ">

  <div class="timeline-comment-actions">


  </div>

    



  <div class="timeline-comment-header-text">

    <strong>
      <a class="author" href="/augensalat">augensalat</a> 
    </strong>

    commented

      <a class="timestamp" href="#gistcomment-614376"><relative-time datetime="2012-12-03T14:07:56Z" title="3 дек. 2012 г., 20:07 GMT+6">on 3 Dec 2012</relative-time></a>

  </div>
</div>


  <div class="edit-comment-hide">
    <table class="d-block">
      <tbody class="d-block">
        <tr class="d-block">
          <td class="d-block comment-body markdown-body markdown-format js-comment-body">
              <p>oh, didn't spot the<br>
return unless !$asset-&gt;is_file<br>
so it's probably only for small files anyway</p>
<p>nm</p>
          </td>
        </tr>
      </tbody>
    </table>

  </div>

</div>

  </div>
  <div class="timeline-comment-wrapper js-comment-container">
    <a href="/augensalat"><img width="44" height="44" src="https://avatars3.githubusercontent.com/u/92883?v=3&amp;s=88" class="timeline-comment-avatar" alt="@augensalat"></a>
    

<div data-body-version="650fbf93c51738a66b73e8075349403c" class="comment previewable-edit timeline-comment js-comment js-task-list-container
                    
                      js-reorderable-task-lists reorderable-task-lists" id="gistcomment-614381">

  
<div class="timeline-comment-header ">

  <div class="timeline-comment-actions">


  </div>

    



  <div class="timeline-comment-header-text">

    <strong>
      <a class="author" href="/augensalat">augensalat</a> 
    </strong>

    commented

      <a class="timestamp" href="#gistcomment-614381"><relative-time datetime="2012-12-03T14:21:43Z" title="3 дек. 2012 г., 20:21 GMT+6">on 3 Dec 2012</relative-time></a>

  </div>
</div>


  <div class="edit-comment-hide">
    <table class="d-block">
      <tbody class="d-block">
        <tr class="d-block">
          <td class="d-block comment-body markdown-body markdown-format js-comment-body">
              <p>...much better... ;-)</p>
          </td>
        </tr>
      </tbody>
    </table>

  </div>

</div>

  </div>



<!-- Rendered timeline since 2017-01-22 22:54:58 -->
<div data-last-modified="Mon, 23 Jan 2017 06:54:58 GMT" data-url="/kraih/4194858/show_partial?partial=gist%2Ftimeline_marker&amp;since=1485154498" class="js-timeline-marker js-updatable-content" id="partial-timeline-marker">
</div>


      <div class="discussion-timeline-actions">
          <div class="timeline-comment-wrapper timeline-new-comment js-comment-container">
  <a href="/mche"><img width="44" height="44" src="https://avatars1.githubusercontent.com/u/3126480?v=3&amp;s=88" class="timeline-comment-avatar" alt="@mche"></a>

  <!-- '"` --><!-- </textarea></xmp> --><form method="post" data-type="json" data-remote="true" class="js-new-comment-form" action="/kraih/4194858/comments" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="+uyGDylIY9j2b8C4ldToq36UiafKvVtSwgRe6UaudAtpg90BtRPbW1Xu3tSKDZNcnYFaOegr40w39pJv+8HVaw==" name="authenticity_token"></div>
    <div class="timeline-comment">
      <div data-preview-authenticity-token="2tJWtxyYbvzY7lRx9ZzEUF4JVBCxbl3/B8xTdf3uMsrGQ5qIANwaprz/ho0+3R9180kdH+uNBQ1xjmRFfHmSAQ==" data-preview-url="/preview?markdown_unsupported=false&amp;subject=4194858&amp;subject_type=Gist" class="js-suggester-container  js-previewable-comment-form previewable-comment-form write-selected">
  <div class="comment-form-head tabnav">
      <div class="js-toolbar toolbar-commenting">
        <div class="toolbar-group">
          <div class="toolbar-item dropdown js-menu-container">
            <button aria-label="Add header text" class="js-menu-target menu-target tooltipped tooltipped-n" tabindex="-1" type="button">
              <svg width="18" viewBox="0 0 18 16" version="1.1" height="16" class="octicon octicon-text-size" aria-hidden="true"><path d="M13.62 9.08L12.1 3.66h-.06l-1.5 5.42h3.08zM5.7 10.13S4.68 6.52 4.53 6.02h-.08l-1.13 4.11H5.7zM17.31 14h-2.25l-.95-3.25h-4.07L9.09 14H6.84l-.69-2.33H2.87L2.17 14H0l3.3-9.59h2.5l2.17 6.34L10.86 2h2.52l3.94 12h-.01z" fill-rule="evenodd"/></svg>
              <span class="dropdown-caret"></span>
            </button>

            <div class="dropdown-menu-content js-menu-content">
              <ul class="dropdown-menu dropdown-menu-s">
                <button data-ga-click="Markdown Toolbar, click, header1" data-prefix="# " class="js-toolbar-item dropdown-item dropdown-header1" type="button">
                  Header
                </button>
                <button data-ga-click="Markdown Toolbar, click, header2" data-prefix="## " class="js-toolbar-item dropdown-item dropdown-header2" type="button">
                  Header
                </button>
                <button data-ga-click="Markdown Toolbar, click, header3" data-prefix="### " class="js-toolbar-item dropdown-item dropdown-header3" type="button">
                  Header
                </button>
              </ul>
            </div>
          </div>

          <button data-trim-first="" data-ga-click="Markdown Toolbar, click, bold" data-toolbar-hotkey="b" data-suffix="**" data-prefix="**" aria-label="Add bold text &lt;ctrl+b&gt;" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="10" viewBox="0 0 10 16" version="1.1" height="16" class="octicon octicon-bold" aria-hidden="true"><path d="M1 2h3.83c2.48 0 4.3.75 4.3 2.95 0 1.14-.63 2.23-1.67 2.61v.06c1.33.3 2.3 1.23 2.3 2.86 0 2.39-1.97 3.52-4.61 3.52H1V2zm3.66 4.95c1.67 0 2.38-.66 2.38-1.69 0-1.17-.78-1.61-2.34-1.61H3.13v3.3h1.53zm.27 5.39c1.77 0 2.75-.64 2.75-1.98 0-1.27-.95-1.81-2.75-1.81h-1.8v3.8h1.8v-.01z" fill-rule="evenodd"/></svg>
          </button>

          <button data-trim-first="" data-ga-click="Markdown Toolbar, click, italic" data-toolbar-hotkey="i" data-suffix="_" data-prefix="_" aria-label="Add italic text &lt;ctrl+i&gt;" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="6" viewBox="0 0 6 16" version="1.1" height="16" class="octicon octicon-italic" aria-hidden="true"><path d="M2.81 5h1.98L3 14H1l1.81-9zm.36-2.7c0-.7.58-1.3 1.33-1.3.56 0 1.13.38 1.13 1.03 0 .75-.59 1.3-1.33 1.3-.58 0-1.13-.38-1.13-1.03z" fill-rule="evenodd"/></svg>
          </button>
        </div>

        <div class="toolbar-group">
          <button data-surround-with-newlines="" data-ga-click="Markdown Toolbar, click, quote" data-multiline="true" data-prefix="&gt; " aria-label="Insert a quote" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-quote" aria-hidden="true"><path d="M6.16 3.5C3.73 5.06 2.55 6.67 2.55 9.36c.16-.05.3-.05.44-.05 1.27 0 2.5.86 2.5 2.41 0 1.61-1.03 2.61-2.5 2.61-1.9 0-2.99-1.52-2.99-4.25 0-3.8 1.75-6.53 5.02-8.42L6.16 3.5zm7 0c-2.43 1.56-3.61 3.17-3.61 5.86.16-.05.3-.05.44-.05 1.27 0 2.5.86 2.5 2.41 0 1.61-1.03 2.61-2.5 2.61-1.89 0-2.98-1.52-2.98-4.25 0-3.8 1.75-6.53 5.02-8.42l1.14 1.84h-.01z" fill-rule="evenodd"/></svg>
          </button>

          <button data-ga-click="Markdown Toolbar, click, code" data-block-suffix="```" data-block-prefix="```" data-suffix="`" data-prefix="`" aria-label="Insert code" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="14" viewBox="0 0 14 16" version="1.1" height="16" class="octicon octicon-code" aria-hidden="true"><path d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z" fill-rule="evenodd"/></svg>
          </button>

          <button data-ga-click="Markdown Toolbar, click, link" data-scan-for="https?://" data-toolbar-hotkey="k" data-replace-next="url" data-suffix="](url)" data-prefix="[" aria-label="Add a link &lt;ctrl+k&gt;" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="16" viewBox="0 0 16 16" version="1.1" height="16" class="octicon octicon-link" aria-hidden="true"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z" fill-rule="evenodd"/></svg>
          </button>
        </div>

        <div class="toolbar-group">
          <button data-surround-with-newlines="" data-ga-click="Markdown Toolbar, click, unordered list" data-prefix="- " data-multiline="true" aria-label="Add a bulleted list" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-list-unordered" aria-hidden="true"><path d="M2 13c0 .59 0 1-.59 1H.59C0 14 0 13.59 0 13c0-.59 0-1 .59-1h.81c.59 0 .59.41.59 1H2zm2.59-9h6.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1H4.59C4 2 4 2.41 4 3c0 .59 0 1 .59 1zM1.41 7H.59C0 7 0 7.41 0 8c0 .59 0 1 .59 1h.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1h.01zm0-5H.59C0 2 0 2.41 0 3c0 .59 0 1 .59 1h.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1h.01zm10 5H4.59C4 7 4 7.41 4 8c0 .59 0 1 .59 1h6.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1h.01zm0 5H4.59C4 12 4 12.41 4 13c0 .59 0 1 .59 1h6.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1h.01z" fill-rule="evenodd"/></svg>
          </button>
          <button data-ordered-list="" data-ga-click="Markdown Toolbar, click, ordered list" data-multiline="true" data-prefix="1. " aria-label="Add a numbered list" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
            <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-list-ordered" aria-hidden="true"><path d="M12 13c0 .59 0 1-.59 1H4.59C4 14 4 13.59 4 13c0-.59 0-1 .59-1h6.81c.59 0 .59.41.59 1H12zM4.59 4h6.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1H4.59C4 2 4 2.41 4 3c0 .59 0 1 .59 1zm6.81 3H4.59C4 7 4 7.41 4 8c0 .59 0 1 .59 1h6.81c.59 0 .59-.41.59-1 0-.59 0-1-.59-1zM2 1h-.72c-.3.19-.58.25-1.03.34V2H1v2.14H.16V5H3v-.86H2V1zm.25 8.13c-.17 0-.45.03-.66.06.53-.56 1.14-1.25 1.14-1.89C2.71 6.52 2.17 6 1.37 6c-.59 0-.97.2-1.38.64l.58.58c.19-.19.38-.38.64-.38.28 0 .48.16.48.52 0 .53-.77 1.2-1.7 2.06V10h3l-.09-.88h-.66l.01.01zm-.08 3.78v-.03c.44-.19.64-.47.64-.86 0-.7-.56-1.11-1.44-1.11-.48 0-.89.19-1.28.52l.55.64c.25-.2.44-.31.69-.31.27 0 .42.13.42.36 0 .27-.2.44-.86.44v.75c.83 0 .98.17.98.47 0 .25-.23.38-.58.38-.28 0-.56-.14-.81-.38l-.48.66c.3.36.77.56 1.41.56.83 0 1.53-.41 1.53-1.16 0-.5-.31-.81-.77-.94v.01z" fill-rule="evenodd"/></svg>
          </button>

            <button data-surround-with-newlines="" data-ga-click="Markdown Toolbar, click, task list" data-multiline="" data-toolbar-hotkey="L" data-prefix="- [ ] " aria-label="Add a task list" class="js-toolbar-item toolbar-item tooltipped tooltipped-n" tabindex="-1" type="button">
              <svg width="16" viewBox="0 0 16 16" version="1.1" height="16" class="octicon octicon-tasklist" aria-hidden="true"><path d="M15.41 9H7.59C7 9 7 8.59 7 8c0-.59 0-1 .59-1h7.81c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM9.59 4C9 4 9 3.59 9 3c0-.59 0-1 .59-1h5.81c.59 0 .59.41.59 1 0 .59 0 1-.59 1H9.59zM0 3.91l1.41-1.3L3 4.2 7.09 0 8.5 1.41 3 6.91l-3-3zM7.59 12h7.81c.59 0 .59.41.59 1 0 .59 0 1-.59 1H7.59C7 14 7 13.59 7 13c0-.59 0-1 .59-1z" fill-rule="evenodd"/></svg>
            </button>
        </div>

      </div>
      <nav role="tablist" class="tabnav-tabs">
        <button aria-selected="true" role="tab" class="btn-link tabnav-tab write-tab js-write-tab selected " type="button">Write</button>
        <button role="tab" class="btn-link tabnav-tab preview-tab js-preview-tab " type="button">Preview</button>
      </nav>
  </div>


  <div style="display:none" class="comment-form-error js-comment-form-error">    There was an error creating your Gist.
</div>
  <div data-upload-policy-authenticity-token="2C4rJpmsWcJif/PrR1PBd63k9ZZNUb9Rj7Gn7BkffQgW/HqAeQpWos28RP36945jGuaY9E6APsrR0I7sy8KM4A==" data-upload-policy-url="/upload/policies/assets" class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image is-default upload-enabled">

    <input type="hidden" data-reset-value="" value="" class="js-saved-reply-id js-resettable-field" name="saved_reply_id">

    <textarea class="form-control input-contrast comment-form-textarea js-comment-field js-improved-comment-field js-task-list-field js-quick-submit js-size-to-fit js-suggester-field js-quote-selection-target js-session-resumable" aria-label="Comment body" placeholder="Leave a comment" id="new_comment_field" name="comment[body]"></textarea>

          <p class="drag-and-drop">
    <span class="default">
        Attach files by dragging &amp; dropping,
        <input type="file" aria-label="Attach files to your comment" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
        <span class="btn-link manual-file-chooser-text">selecting them</span>, or pasting
        from the clipboard.
    </span>
    <span class="loading">
      <img width="16" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" alt=""> Uploading your files…
    </span>
    <span class="error bad-file">
      We don’t support that file type.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again</button> with a
        PNG, GIF, JPG, DOCX, PPTX, XLSX, TXT, PDF, or ZIP.
      </span>
    </span>
    <span class="error bad-permissions">
      Attaching documents requires write permission to this repository.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again</button> with a PNG, GIF, or JPG.
      </span>
    </span>
    <span class="error repository-required">
      We don’t support that file type.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again</button> with a PNG, GIF, or JPG.
      </span>
    </span>
    <span class="error too-big">
      Yowza, that’s a big file.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again</button> with a file smaller than 10MB.
      </span>
    </span>
    <span class="error empty">
      This file is empty.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again</button> with a file that’s not empty.
      </span>
    </span>
    <span class="error hidden-file">
      This file is hidden.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again</button> with another file.
      </span>
    </span>
    <span class="error failed-request">
      Something went really wrong, and we can’t process that file.
      <input type="file" class="manual-file-chooser js-manual-file-chooser" multiple="multiple">
      <span class="drag-and-drop-error-info">
        <button class="btn-link manual-file-chooser-text" type="button">Try again.</button>
      </span>
    </span>
  </p>


    <div class="suggester-container">
      <div data-url="/kraih/4194858/suggestions" class="suggester js-suggester js-navigation-container">
      </div>
    </div>
  </div>

  <div class="preview-content">
    <div class="comment">
  <div class="comment-body markdown-body js-preview-body">
    <p>Nothing to preview</p>
  </div>
</div>

  </div>

  <div class="float-left">
      <a data-ga-click="Markdown Toolbar, click, help" target="_blank" href="https://guides.github.com/features/mastering-markdown/" class="tabnav-extra">
        <svg width="16" viewBox="0 0 16 16" version="1.1" height="16" class="octicon octicon-markdown v-align-bottom" aria-hidden="true"><path d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z" fill-rule="evenodd"/></svg>
        Styling with Markdown is supported
      </a>
  </div>


  <div class="comment-form-error comment-form-bottom js-comment-update-error"></div>
</div>


      <div class="form-actions">
        <div id="partial-new-comment-form-actions">
  <button data-disable-invalid="" data-disable-with="" class="btn btn-primary" type="submit">
    Comment
  </button>
</div>

      </div>
    </div>
</form></div>

      </div>
    </div>
  </div>
</div>
  </div>

  <div class="modal-backdrop js-touch-events"></div>
</div><!-- /.container -->

    </div><!-- /.gist-pjax-container -->
  </div>

    </div>

        <div class="container site-footer-container">
  <div role="contentinfo" class="site-footer">
    <ul class="site-footer-links float-right">
        <li><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
      <li><a data-ga-click="Footer, go to api, text:api" href="https://developer.github.com">API</a></li>
      <li><a data-ga-click="Footer, go to training, text:training" href="https://training.github.com">Training</a></li>
      <li><a data-ga-click="Footer, go to shop, text:shop" href="https://shop.github.com">Shop</a></li>
        <li><a data-ga-click="Footer, go to blog, text:blog" href="https://github.com/blog">Blog</a></li>
        <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>

    </ul>

    <a title="GitHub" class="site-footer-mark" aria-label="Homepage" href="https://github.com">
      <svg width="24" viewBox="0 0 16 16" version="1.1" height="24" class="octicon octicon-mark-github" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z" fill-rule="evenodd"/></svg>
</a>
    <ul class="site-footer-links">
      <li>&copy; 2017 <span title="0.14612s from github-fe120-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
        <li><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
        <li><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
        <li><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
        <li><a data-ga-click="Footer, go to status, text:status" href="https://status.github.com/">Status</a></li>
        <li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
    </ul>
  </div>
</div>



    

    <div class="ajax-error-message flash flash-error" id="ajax-error-message">
      <svg width="16" viewBox="0 0 16 16" version="1.1" height="16" class="octicon octicon-alert" aria-hidden="true"><path d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z" fill-rule="evenodd"/></svg>
      <button aria-label="Dismiss error" class="flash-close js-flash-close js-ajax-error-dismiss" type="button">
        <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-x" aria-hidden="true"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z" fill-rule="evenodd"/></svg>
      </button>
      You can't perform that action at this time.
    </div>


      
      <script src="https://assets-cdn.github.com/assets/frameworks-d23e32e482112ba5e3ea9bd8dc7e555680116a74e002746ac91f41a4e5875a9b.js" integrity="sha256-0j4y5IIRK6Xj6pvY3H5VVoARanTgAnRqyR9BpOWHWps=" crossorigin="anonymous"></script>
      <script src="https://assets-cdn.github.com/assets/github-87fd84eac5bf2ddcaececdb975eea7a652df436e24aeca76ceb055ba82aba68f.js" integrity="sha256-h/2E6sW/Ldyuzs25de6nplLfQ24krsp2zrBVuoKrpo8=" crossorigin="anonymous" async="async"></script>
      
      
      
      
    <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
      <svg width="16" viewBox="0 0 16 16" version="1.1" height="16" class="octicon octicon-alert" aria-hidden="true"><path d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z" fill-rule="evenodd"/></svg>
      <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
      <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
    </div>
    <div style="display:none;" id="facebox" class="facebox">
  <div class="facebox-popup">
    <div aria-describedby="facebox-description" aria-labelledby="facebox-header" role="dialog" class="facebox-content">
    </div>
    <button aria-label="Close modal" class="facebox-close js-facebox-close" type="button">
      <svg width="12" viewBox="0 0 12 16" version="1.1" height="16" class="octicon octicon-x" aria-hidden="true"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z" fill-rule="evenodd"/></svg>
    </button>
  </div>
</div>

  


</body>