Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
zoom / opt / zoom / qtwebengine_resources_100p.pak
Size: Mime:
ئ1§1&¨1!©1?%ª1º7«1R¬1[­15Œ®1‰¯1а1±1²1´³1} ´1h#µ1ì*¶164·18¸1«V¹1æeº1Þp»1§v¼1'€½1˜‰¾1Ǎ¿1¢À1(³Á1á¸Â1ǻÃ1ª¾Ä1ÑÅÅ1bÉÆ11ØÇ1íëÈ1êüÉ1ÉÿÊ1Ë1ŠÌ1×Í1TÎ1š%Ï1¡-Ð1Õ4Ñ1{7Ò1Ç<ö1ŽI÷1'J²>K³>ƒM´>vPµ>%Q¶>xSº>ñU»> V¼>OW½>þW¾>­X¿>\YÀ>ZÁ>ºZÂ>i[Ã>m\Ç>s]É>t^Ê>`Ë>aÌ>zjÔbSlÕbnÖb o×bwqØbÚuÙbÚzÚb}Ûb6ÜbêÝb†…Þb¨†ßbµ‡àb–Œáb’âb™ãb`äb¢­åbJ²æb.·çbˆ¹èb½éb‰ÀêbqÃëbjÆìbÆÆíb]ÈègõÉég+Óêg(ÕëgcØìgÝígýæîg¡çïgÜêðgîñgóòggúógýôgõgúögÙ	÷gùøgùgúgéûg5"ügp&ýg)þgx-ÿg˜0hw4h²7hZ:hIChLhñRhjXhoZhW[	hÇ\
h°^hÖah;b
h«chehýfhsih|jhúkhŽmh"ohŸphrh®sh@uh²xhAzh¾{hP}hÍ~ha€h6‘ h¦’!hz“"hŒ•#h¡—$hҙ%hx›&hT¦'hF©(hª)h¯*hµ+hqµ,híµ-hm¶.h.·/h¸0h¸1h
¹2ho¹3hö¹4hº5hW»6h,¼7hû¼8hà½9hӾ:h$Â;hÂ<h
Ã=h¶Ã>h‹Ä?h`Å@h5ÆAh
ÇBhßÇCh´ÈDh”ÊEhrÌFhQÎGh&ÏHhûÏIhÐÐJh‹KhRLhMhàNhEShÃTh+oh¾ph-	qh 	rh
wh†
xh;yhzhÏ{h™
|hM}h~hÊh€hNh‚h9ƒh/‰h&£<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <script>
        function setMessage(msg) {
          document.getElementById('message').textContent = msg;
        }
        function notifyDidFinishLoading() {
          if (plugin.didFinishLoading)
            plugin.didFinishLoading();

          if (plugin.didFinishIconRepositionForTesting)
            plugin.didFinishIconRepositionForTesting();
        }
      </script>
    
    <style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  display: none;
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#t {
  background-color: #f7f7f7;
  color: #646464;
}

#outer {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
  flex-direction: column;
}

.icon {
  max-height: 100%;
  max-width: 100%;
  opacity: .3;
}

@media (orientation: landscape) and (min-height: 2em) and (min-width: 14em) {
  #outer {
    flex-direction: row;
  }
  .icon {
    max-height: 100%;
    max-width: 50%;
  }
  h1 {
    display: block;
  }
}

@media (min-height: 7em) and (min-width: 6em) {
  #outer {
    flex-direction: column;
  }
  .icon {
    max-height: 50%;
    max-width: 100%;
  }
  h1 {
    display: block;
  }
}
</style>
  </head>
  <body id="t" onload="notifyDidFinishLoading();">
    <div i18n-values="title:name" id="outer">
      <img class="icon"
           src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OHB4IiBoZWlnaHQ9IjQ4cHgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0iIzYyNjI2MiI+CiAgICA8cGF0aCBkPSJNMCAwaDQ4djQ4SDB6IiBmaWxsPSJub25lIi8+CiAgICA8cGF0aCBkPSJNNDEgMjJoLTN2LThjMC0yLjIxLTEuNzktNC00LTRoLThWN2MwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNXYzSDhjLTIuMjEgMC0zLjk4IDEuNzktMy45OCA0bC0uMDEgNy42SDdjMi45OCAwIDUuNCAyLjQyIDUuNCA1LjRTOS45OCAzMi40IDcgMzIuNEg0LjAxTDQgNDBjMCAyLjIxIDEuNzkgNCA0IDRoNy42di0zYzAtMi45OCAyLjQyLTUuNCA1LjQtNS40IDIuOTggMCA1LjQgMi40MiA1LjQgNS40djNIMzRjMi4yMSAwIDQtMS43OSA0LTR2LThoM2MyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXoiLz4KPC9zdmc+Cg==">
      <h1 id="message" i18n-content="message"></h1>
    </div>
  </body>
</html>
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <script>
      function insertLink() {
        // Replace the chrome://plugins text with a working link (i18n_template
        // doesn't allow raw HTML in template data).
        var link = document.getElementById("enable_link");
        var link_html = link.innerHTML;
        link.parentNode.removeChild(link);
        var message = document.getElementById("message");
        var message_html = message.innerHTML;
        message.innerHTML = message_html.replace('chrome://plugins', link_html);
      }
    </script>
    <style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  display: none;
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#t {
  background-color: #f7f7f7;
  color: #646464;
}

#outer {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
  flex-direction: column;
}

.icon {
  max-height: 100%;
  max-width: 100%;
  opacity: .3;
}

@media (orientation: landscape) and (min-height: 2em) and (min-width: 14em) {
  #outer {
    flex-direction: row;
  }
  .icon {
    max-height: 100%;
    max-width: 50%;
  }
  h1 {
    display: block;
  }
}

@media (min-height: 7em) and (min-width: 6em) {
  #outer {
    flex-direction: column;
  }
  .icon {
    max-height: 50%;
    max-width: 100%;
  }
  h1 {
    display: block;
  }
}
</style>
  </head>
  <body id="t" onLoad="insertLink()">
    <div i18n-values="title:name" id="outer">
      <img class="icon"
           src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OHB4IiBoZWlnaHQ9IjQ4cHgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0iIzYyNjI2MiI+CiAgICA8cGF0aCBkPSJNMCAwaDQ4djQ4SDB6IiBmaWxsPSJub25lIi8+CiAgICA8cGF0aCBkPSJNNDEgMjJoLTN2LThjMC0yLjIxLTEuNzktNC00LTRoLThWN2MwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNXYzSDhjLTIuMjEgMC0zLjk4IDEuNzktMy45OCA0bC0uMDEgNy42SDdjMi45OCAwIDUuNCAyLjQyIDUuNCA1LjRTOS45OCAzMi40IDcgMzIuNEg0LjAxTDQgNDBjMCAyLjIxIDEuNzkgNCA0IDRoNy42di0zYzAtMi45OCAyLjQyLTUuNCA1LjQtNS40IDIuOTggMCA1LjQgMi40MiA1LjQgNS40djNIMzRjMi4yMSAwIDQtMS43OSA0LTR2LThoM2MyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXoiLz4KPC9zdmc+Cg==">
      <h1 id="message" i18n-content="message"></h1>
      <div id="enable_link">
        <a href="#" onclick="plugin.openAboutPlugins();">chrome://plugins</a>
      </div>
    </div>
  </body>
</html>
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, user-scalable=no">
  <script>
    function setMessage(msg) {
      document.getElementById('message').textContent = msg;
    }
    function notifyDidFinishLoading() {
      if (plugin.didFinishLoading)
        plugin.didFinishLoading();

      if (plugin.didFinishIconRepositionForTesting)
        plugin.didFinishIconRepositionForTesting();
    }
  </script>
  <style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  display: none;
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#t {
  background-color: #f7f7f7;
  color: #646464;
}

#outer {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
  flex-direction: column;
}

.icon {
  max-height: 100%;
  max-width: 100%;
  opacity: .3;
}

@media (orientation: landscape) and (min-height: 2em) and (min-width: 14em) {
  #outer {
    flex-direction: row;
  }
  .icon {
    max-height: 100%;
    max-width: 50%;
  }
  h1 {
    display: block;
  }
}

@media (min-height: 7em) and (min-width: 6em) {
  #outer {
    flex-direction: column;
  }
  .icon {
    max-height: 50%;
    max-width: 100%;
  }
  h1 {
    display: block;
  }
}
</style>
  <style>
  #outer {
    cursor: pointer;
  }
  </style>
</head>
<body id="t" onload="notifyDidFinishLoading();">
  <div i18n-values="title:name" id="outer">
    <img class="icon"
         src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OHB4IiBoZWlnaHQ9IjQ4cHgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0iIzYyNjI2MiI+CiAgICA8cGF0aCBkPSJNMCAwaDQ4djQ4SDB6IiBmaWxsPSJub25lIi8+CiAgICA8cGF0aCBkPSJNNDEgMjJoLTN2LThjMC0yLjIxLTEuNzktNC00LTRoLThWN2MwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNXYzSDhjLTIuMjEgMC0zLjk4IDEuNzktMy45OCA0bC0uMDEgNy42SDdjMi45OCAwIDUuNCAyLjQyIDUuNCA1LjRTOS45OCAzMi40IDcgMzIuNEg0LjAxTDQgNDBjMCAyLjIxIDEuNzkgNCA0IDRoNy42di0zYzAtMi45OCAyLjQyLTUuNCA1LjQtNS40IDIuOTggMCA1LjQgMi40MiA1LjQgNS40djNIMzRjMi4yMSAwIDQtMS43OSA0LTR2LThoM2MyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNXoiLz4KPC9zdmc+Cg==">
    <h1 id="message" i18n-content="message"></h1>
  </div>
  <script>
    window.onkeydown = function(e) {
      if (e.key == 'Enter' || e.key == ' ') {
        plugin.showPermissionBubble();
        e.preventDefault();
      }
    };

    document.getElementById('outer').onclick = function() {
      plugin.showPermissionBubble();
    };
  </script>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<script>
  window.onload = function() {
    if (plugin.didFinishLoading)
      plugin.didFinishLoading();
  };

  window.onkeydown = function(e) {
    if (e.key == 'Enter' || e.key == ' ') {
      plugin.load();
      e.preventDefault();
    }
  };
</script>
<style>/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */

html, body {
  -webkit-user-select: none;
  font-family: sans-serif;
  height: 100%;
  margin: 0;
  overflow: hidden;
  text-align: center;
  width: 100%;
}

h1 {
  display: none;
  font-size: 10pt;
  font-weight: normal;
  padding: 0pt 10pt;
}

p {
  font-size: 8pt;
  padding: 0pt 14pt;
}

#t {
  background-color: #f7f7f7;
  color: #646464;
}

#outer {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  height: 100%;
  justify-content: center;
  position: absolute;
  width: 100%;
  flex-direction: column;
}

.icon {
  max-height: 100%;
  max-width: 100%;
  opacity: .3;
}

@media (orientation: landscape) and (min-height: 2em) and (min-width: 14em) {
  #outer {
    flex-direction: row;
  }
  .icon {
    max-height: 100%;
    max-width: 50%;
  }
  h1 {
    display: block;
  }
}

@media (min-height: 7em) and (min-width: 6em) {
  #outer {
    flex-direction: column;
  }
  .icon {
    max-height: 50%;
    max-width: 100%;
  }
  h1 {
    display: block;
  }
}
</style>
<style>
#outer {
  border: none;
  flex-direction: row;
  cursor: pointer;
}

#shielding {
  background-color: rgba(0, 0, 0, 0.5);
  height: 100%;
  left: 0px;
  position: absolute;
  top: 0px;
  width: 100%;
  z-index: 2;
}

#plugin-icon {
  opacity: 0.8;
  max-height: 100%;
  max-width: 100%;
  min-width: 0;
  min-height: 0;
}

#plugin-icon:hover {
  opacity: 0.95;
}

#poster {
  height: 100%;
  object-fit: contain;
  width: 100%;
  z-index: 1;
}

#inner-container {
  align-items: center;
  display: flex;
  height: 100%;
  justify-content: center;
  left: 0px;
  max-height: 100%;
  max-width: 100%;
  position: absolute;
  top: 0px;
  width: 100%;
  z-index: 2;
}
</style>
<base i18n-values="href:baseurl">
</head>

<body>
  <div i18n-values="title:name" id="outer">
    <img id="poster" i18n-values="srcset:poster">
    <div id="shielding"></div>
    <div id="inner-container"
         i18n-values=".style.width:visibleWidth;.style.height:visibleHeight">
      <img id="plugin-icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAA8dJREFUaAXdWs9vEkEUZkvZQloNxJoY40kxJsDNo9GDif+Bf4CHpjEmJPoPeMce1F408dYjQePBgycv3vRG4GBMPREPLSlpCUWggN+3ncVl6PJrZ5a6k0x2Z2fnve/befPmzcwaIbVpGeLCyEsiG5L4Pso9kbu4nkj1CysSaAQ5trm5uV6pVB4eHx+/brVan3u93s9+v19Fbolc5TPW8R2+yzZsK2TIpPFYf6LS6Pb29rX9/f0NgPsIsA3kWVODbSmDsigT2TdCZjabvVyv158D9eGsyMe8f0iZlA0yJrK2FE4mkxer1eoTmMjvMYA8VVE2dVAXmHC8KU1mPp9Pdjqd755QztCYuqgTLJT1TrRYLN7T2Qtu/KiTukGGY8dTiu3t7T2CoqabMh+eN4kBLOjd5kpRQcIHrJNVCDIz94zJLoX4RfaEzK4pzGzqMRPmIFvEmJCRy2ViEg5gsjej2/PTO8lgJ5WJTbjmsePFpA+fJGzR9cQIFq4mZnBWPY8mJX84YhQRwJnhTFSEHXK7mcrNZvMdGjBQ1JqIFb0y4sUMBm3Q7Dl2KpVKd5jx1Xa1MgFWEWgO9UqEEagKxSSBL7WSy+WuIrJ9r0Kmmwxihi4uIwYpJkJxtzZTPxdE7IXVaq1We4bGWkyNmMHAmvGpMIQFzqppmg8GtNTccCXYSCQSb8rl8n2Q+aVG7D8pxEzs9pNlrtam/uQTXnT0iC2f14guUyN2yOcSO7TCpecEfFNXuxChHvY+Te0phCkzNWInB8uWw+HwLWrSnGxTe6vS1AT2JYtIJBK5oZmEU/yfTCbzbWtr62673f7grJjnXmC3xvoaupq7HUrSGNOScaoytSoEr1lMcHNB1uJDWZWpWdhtIj7g1qvCcltQUUe+pFfViHR+xBi82EY8Hn+Be9dodqTl8ANit1wix0ZtuE57ifPKFczMOyDxCtrmJRES2PvskR4WK7uYJZPa4Z8qiMIh3E6lUjuGYVz3qpPYyYHd2+t2uz+8CpyiPXVxQnycTqe/qCBBnQK7RaR7cHDwdQogXl5xmtJLCJrblGQQAjt39q2gcR22Ns8mNMfXUDpjHqEp6VqfNMSO/oCfzjBeaWzl/GojYTzonBwdHX0a0PJ+o82UnNAE5qHDosAsdUk0EJsPJBKY7SCSCcQGHYmEgrJlSi7B2MQmE6RAHCucUoEXC8JBj00mEEdvNplAHIbaZMxCoXDTzwMg6lJ9PG2TCcQPAzYZXv/7XzicZALxU41M6Fz85jR02uNEOOc9NzN4dMz1ObMsX9uPZ38BvwZw6z92PI4AAAAASUVORK5CYII=" />
    </div>
  </div>
  <script>
    document.getElementById('poster').onerror = function() {
      this.hidden = true;
    };

    document.getElementById('outer').onclick = function() {
      plugin.load();
    };

    window.resizePoster = function(marginLeft, marginTop, width, height) {
      var container = document.getElementById('inner-container');
      container.style.marginLeft = marginLeft;
      container.style.marginTop = marginTop;
      container.style.width = width;
      container.style.height = height;

      if (plugin.didFinishIconRepositionForTesting) {
        // Defer until reflow complete.
        window.setTimeout(function() {
          plugin.didFinishIconRepositionForTesting();
        });
      }
    };
  </script>
</body>
</html>
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var chrome;
if (!chrome)
  chrome = {};

if (!chrome.embeddedSearch) {
  chrome.embeddedSearch = new function() {
    this.searchBox = new function() {

      // =======================================================================
      //                            Private functions
      // =======================================================================
      native function GetMostVisitedItemData();
      native function GetQuery();
      native function GetSearchRequestParams();
      native function GetRightToLeft();
      native function GetSuggestionToPrefetch();
      native function IsFocused();
      native function IsKeyCaptureEnabled();
      native function Paste();
      native function StartCapturingKeyStrokes();
      native function StopCapturingKeyStrokes();

      // =======================================================================
      //                           Exported functions
      // =======================================================================
      this.__defineGetter__('isFocused', IsFocused);
      this.__defineGetter__('isKeyCaptureEnabled', IsKeyCaptureEnabled);
      this.__defineGetter__('rtl', GetRightToLeft);
      this.__defineGetter__('suggestion', GetSuggestionToPrefetch);
      this.__defineGetter__('value', GetQuery);
      Object.defineProperty(this, 'requestParams',
                            { get: GetSearchRequestParams });

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      // TODO(treib): Why is this in searchBox rather than newTabPage?
      this.getMostVisitedItemData = function(restrictedId) {
        var item = GetMostVisitedItemData(restrictedId);
        if (item) {
          var sizeInPx = Math.floor(48 * window.devicePixelRatio + 0.5);
          // Populate large icon and fallback icon data, if they exist. We'll
          // render everything here, once these become available by default.
          if (item.largeIconUrl) {
            item.largeIconUrl +=
                sizeInPx + "/" + item.renderViewId + "/" + item.rid;
          }
          if (item.fallbackIconUrl) {
            item.fallbackIconUrl +=
                sizeInPx + ",,,,/" + item.renderViewId + "/" + item.rid;
          }
        }
        return item;
      };

      this.paste = function(value) {
        Paste(value);
      };

      this.startCapturingKeyStrokes = function() {
        StartCapturingKeyStrokes();
      };

      this.stopCapturingKeyStrokes = function() {
        StopCapturingKeyStrokes();
      };

      this.onfocuschange = null;
      this.onkeycapturechange = null;
      this.onsubmit = null;
      this.onsuggestionchange = null;
    };

    this.newTabPage = new function() {

      // =======================================================================
      //                            Private functions
      // =======================================================================
      native function CheckIsUserSignedInToChromeAs();
      native function CheckIsUserSyncingHistory();
      native function DeleteMostVisitedItem();
      native function GetMostVisitedItems();
      native function GetThemeBackgroundInfo();
      native function IsInputInProgress();
      native function LogEvent();
      native function LogMostVisitedImpression();
      native function LogMostVisitedNavigation();
      native function UndoAllMostVisitedDeletions();
      native function UndoMostVisitedDeletion();

      function GetMostVisitedItemsWrapper() {
        var mostVisitedItems = GetMostVisitedItems();
        for (var i = 0, item; item = mostVisitedItems[i]; ++i) {
          item.faviconUrl = GenerateFaviconURL(item.renderViewId, item.rid);

          // These properties are private data and should not be returned to
          // the page. They are only accessible via getMostVisitedItemData().
          delete item.url;
          delete item.title;
          delete item.domain;
          delete item.direction;
          delete item.renderViewId;
          delete item.largeIconUrl;
          delete item.fallbackIconUrl;
        }
        return mostVisitedItems;
      }

      function GenerateFaviconURL(renderViewId, rid) {
        return "chrome-search://favicon/size/16@" +
            window.devicePixelRatio + "x/" +
            renderViewId + "/" + rid;
      }

      // =======================================================================
      //                           Exported functions
      // =======================================================================
      this.__defineGetter__('isInputInProgress', IsInputInProgress);
      this.__defineGetter__('mostVisited', GetMostVisitedItemsWrapper);
      this.__defineGetter__('themeBackgroundInfo', GetThemeBackgroundInfo);

      this.deleteMostVisitedItem = function(restrictedId) {
        DeleteMostVisitedItem(restrictedId);
      };

      this.checkIsUserSignedIntoChromeAs = function(identity) {
        CheckIsUserSignedInToChromeAs(identity);
      };

      this.checkIsUserSyncingHistory = function() {
        CheckIsUserSyncingHistory();
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.logEvent = function(histogram_name) {
        LogEvent(histogram_name);
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.logMostVisitedImpression = function(position, provider) {
        LogMostVisitedImpression(position, provider);
      };

      // This method is restricted to chrome-search://most-visited pages by
      // checking the invoking context's origin in searchbox_extension.cc.
      this.logMostVisitedNavigation = function(position, provider) {
        LogMostVisitedNavigation(position, provider);
      };

      this.undoAllMostVisitedDeletions = function() {
        UndoAllMostVisitedDeletions();
      };

      this.undoMostVisitedDeletion = function(restrictedId) {
        UndoMostVisitedDeletion(restrictedId);
      };

      this.onsignedincheckdone = null;
      this.onhistorysynccheckdone = null;
      this.oninputcancel = null;
      this.oninputstart = null;
      this.onmostvisitedchange = null;
      this.onthemechange = null;
    };

    // TODO(jered): Remove when google no longer expects this object.
    chrome.searchBox = this.searchBox;
  };
}
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the app API.

var GetAvailability = requireNative('v8_context').GetAvailability;
if (!GetAvailability('app').is_available) {
  exports.$set('binding', {});
  exports.$set('onInstallStateResponse', function(){});
  return;
}

var appNatives = requireNative('app');
var process = requireNative('process');
var extensionId = process.GetExtensionId();
var logActivity = requireNative('activityLogger');

function wrapForLogging(fun) {
  if (!extensionId)
    return fun;  // nothing interesting to log without an extension

  return function() {
    // TODO(ataly): We need to make sure we use the right prototype for
    // fun.apply. Array slice can either be rewritten or similarly defined.
    logActivity.LogAPICall(extensionId, "app." + fun.name,
        $Array.slice(arguments));
    return $Function.apply(fun, this, arguments);
  };
}

// This becomes chrome.app
var app = {
  getIsInstalled: wrapForLogging(appNatives.GetIsInstalled),
  getDetails: wrapForLogging(appNatives.GetDetails),
  runningState: wrapForLogging(appNatives.GetRunningState)
};

// Tricky; "getIsInstalled" is actually exposed as the getter "isInstalled",
// but we don't have a way to express this in the schema JSON (nor is it
// worth it for this one special case).
//
// So, define it manually, and let the getIsInstalled function act as its
// documentation.
app.__defineGetter__('isInstalled', wrapForLogging(appNatives.GetIsInstalled));

// Called by app_bindings.cc.
function onInstallStateResponse(state, callbackId) {
  var callback = callbacks[callbackId];
  delete callbacks[callbackId];
  if (typeof(callback) == 'function') {
    try {
      callback(state);
    } catch (e) {
      console.error('Exception in chrome.app.installState response handler: ' +
                    e.stack);
    }
  }
}

// TODO(kalman): move this stuff to its own custom bindings.
var callbacks = {};
var nextCallbackId = 1;

app.installState = function getInstallState(callback) {
  var callbackId = nextCallbackId++;
  callbacks[callbackId] = callback;
  appNatives.GetInstallState(callbackId);
};
if (extensionId)
  app.installState = wrapForLogging(app.installState);

exports.$set('binding', app);
exports.$set('onInstallStateResponse', onInstallStateResponse);
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the automation API.
var AutomationNode = require('automationNode').AutomationNode;
var AutomationRootNode = require('automationNode').AutomationRootNode;
var automation = require('binding').Binding.create('automation');
var automationInternal =
    require('binding').Binding.create('automationInternal').generate();
var eventBindings = require('event_bindings');
var Event = eventBindings.Event;
var exceptionHandler = require('uncaught_exception_handler');
var forEach = require('utils').forEach;
var lastError = require('lastError');
var logging = requireNative('logging');
var nativeAutomationInternal = requireNative('automationInternal');
var GetRoutingID = nativeAutomationInternal.GetRoutingID;
var GetSchemaAdditions = nativeAutomationInternal.GetSchemaAdditions;
var DestroyAccessibilityTree =
    nativeAutomationInternal.DestroyAccessibilityTree;
var GetIntAttribute = nativeAutomationInternal.GetIntAttribute;
var StartCachingAccessibilityTrees =
    nativeAutomationInternal.StartCachingAccessibilityTrees;
var AddTreeChangeObserver = nativeAutomationInternal.AddTreeChangeObserver;
var RemoveTreeChangeObserver =
    nativeAutomationInternal.RemoveTreeChangeObserver;
var GetFocusNative = nativeAutomationInternal.GetFocus;
var schema = GetSchemaAdditions();

/**
 * A namespace to export utility functions to other files in automation.
 */
window.automationUtil = function() {};

// TODO(aboxhall): Look into using WeakMap
var idToCallback = {};

var DESKTOP_TREE_ID = 0;

automationUtil.storeTreeCallback = function(id, callback) {
  if (!callback)
    return;

  var targetTree = AutomationRootNode.get(id);
  if (!targetTree) {
    // If we haven't cached the tree, hold the callback until the tree is
    // populated by the initial onAccessibilityEvent call.
    if (id in idToCallback)
      idToCallback[id].push(callback);
    else
      idToCallback[id] = [callback];
  } else {
    callback(targetTree);
  }
};

/**
 * Global list of tree change observers.
 * @type {Object<number, TreeChangeObserver>}
 */
automationUtil.treeChangeObserverMap = {};

/**
 * The id of the next tree change observer.
 * @type {number}
 */
automationUtil.nextTreeChangeObserverId = 1;

/**
 * @type {AutomationNode} The current focused node. This is only updated
 *   when calling automationUtil.updateFocusedNode.
 */
automationUtil.focusedNode = null;

/**
 * Gets the currently focused AutomationNode.
 * @return {AutomationNode}
 */
automationUtil.getFocus = function() {
  var focusedNodeInfo = GetFocusNative(DESKTOP_TREE_ID);
  if (!focusedNodeInfo)
    return null;
  var tree = AutomationRootNode.getOrCreate(focusedNodeInfo.treeId);
  if (tree)
    return privates(tree).impl.get(focusedNodeInfo.nodeId);
};

/**
 * Update automationUtil.focusedNode to be the node that currently has focus.
 */
automationUtil.updateFocusedNode = function() {
  automationUtil.focusedNode = automationUtil.getFocus();
};

automation.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // TODO(aboxhall, dtseng): Make this return the speced AutomationRootNode obj.
  apiFunctions.setHandleRequest('getTree', function getTree(tabID, callback) {
    var routingID = GetRoutingID();
    StartCachingAccessibilityTrees();

    // enableTab() ensures the renderer for the active or specified tab has
    // accessibility enabled, and fetches its ax tree id to use as
    // a key in the idToAutomationRootNode map. The callback to
    // enableTab is bound to the callback passed in to getTree(), so that once
    // the tree is available (either due to having been cached earlier, or after
    // an accessibility event occurs which causes the tree to be populated), the
    // callback can be called.
    var params = { routingID: routingID, tabID: tabID };
    automationInternal.enableTab(params,
        function onEnable(id) {
          if (lastError.hasError(chrome)) {
            callback();
            return;
          }
          automationUtil.storeTreeCallback(id, callback);
        });
  });

  var desktopTree = null;
  apiFunctions.setHandleRequest('getDesktop', function(callback) {
    StartCachingAccessibilityTrees();
    desktopTree = AutomationRootNode.get(DESKTOP_TREE_ID);
    if (!desktopTree) {
      if (DESKTOP_TREE_ID in idToCallback)
        idToCallback[DESKTOP_TREE_ID].push(callback);
      else
        idToCallback[DESKTOP_TREE_ID] = [callback];

      var routingID = GetRoutingID();

      // TODO(dtseng): Disable desktop tree once desktop object goes out of
      // scope.
      automationInternal.enableDesktop(routingID, function() {
        if (lastError.hasError(chrome)) {
          AutomationRootNode.destroy(DESKTOP_TREE_ID);
          callback();
          return;
        }
      });
    } else {
      callback(desktopTree);
    }
  });

  apiFunctions.setHandleRequest('getFocus', function(callback) {
    callback(automationUtil.getFocus());
  });

  function removeTreeChangeObserver(observer) {
    for (var id in automationUtil.treeChangeObserverMap) {
      if (automationUtil.treeChangeObserverMap[id] == observer) {
        RemoveTreeChangeObserver(id);
        delete automationUtil.treeChangeObserverMap[id];
        return;
      }
    }
  }
  apiFunctions.setHandleRequest('removeTreeChangeObserver', function(observer) {
    removeTreeChangeObserver(observer);
  });

  function addTreeChangeObserver(filter, observer) {
    removeTreeChangeObserver(observer);
    var id = automationUtil.nextTreeChangeObserverId++;
    AddTreeChangeObserver(id, filter);
    automationUtil.treeChangeObserverMap[id] = observer;
  }
  apiFunctions.setHandleRequest('addTreeChangeObserver',
      function(filter, observer) {
    addTreeChangeObserver(filter, observer);
  });

  apiFunctions.setHandleRequest('setDocumentSelection', function(params) {
    var anchorNodeImpl = privates(params.anchorObject).impl;
    var focusNodeImpl = privates(params.focusObject).impl;
    if (anchorNodeImpl.treeID !== focusNodeImpl.treeID)
      throw new Error('Selection anchor and focus must be in the same tree.');
    if (anchorNodeImpl.treeID === DESKTOP_TREE_ID) {
      throw new Error('Use AutomationNode.setSelection to set the selection ' +
          'in the desktop tree.');
    }
    automationInternal.performAction({ treeID: anchorNodeImpl.treeID,
                                       automationNodeID: anchorNodeImpl.id,
                                       actionType: 'setSelection'},
                                     { focusNodeID: focusNodeImpl.id,
                                       anchorOffset: params.anchorOffset,
                                       focusOffset: params.focusOffset });
  });

});

automationInternal.onChildTreeID.addListener(function(treeID,
                                                      nodeID) {
  var tree = AutomationRootNode.getOrCreate(treeID);
  if (!tree)
    return;

  var node = privates(tree).impl.get(nodeID);
  if (!node)
    return;

  // A WebView in the desktop tree has a different AX tree as its child.
  // When we encounter a WebView with a child AX tree id that we don't
  // currently have cached, explicitly request that AX tree from the
  // browser process and set up a callback when it loads to attach that
  // tree as a child of this node and fire appropriate events.
  var childTreeID = GetIntAttribute(treeID, nodeID, 'childTreeId');
  if (!childTreeID)
    return;

  var subroot = AutomationRootNode.get(childTreeID);
  if (!subroot || subroot.role == schema.EventType.unknown) {
    automationUtil.storeTreeCallback(childTreeID, function(root) {
      // Return early if the root has already been attached.
      if (root.parent)
        return;

      privates(root).impl.setHostNode(node);

      if (root.docLoaded) {
        privates(root).impl.dispatchEvent(
            schema.EventType.loadComplete, 'page');
      }

      privates(node).impl.dispatchEvent(
          schema.EventType.childrenChanged, 'none');
    });

    automationInternal.enableFrame(childTreeID);
  } else {
    privates(subroot).impl.setHostNode(node);
  }
});

automationInternal.onTreeChange.addListener(function(observerID,
                                                     treeID,
                                                     nodeID,
                                                     changeType) {
  var tree = AutomationRootNode.getOrCreate(treeID);
  if (!tree)
    return;

  var node = privates(tree).impl.get(nodeID);
  if (!node)
    return;

  var observer = automationUtil.treeChangeObserverMap[observerID];
  if (!observer)
    return;

  try {
    observer({target: node, type: changeType});
  } catch (e) {
    exceptionHandler.handle('Error in tree change observer for ' +
        treeChange.type, e);
  }
});

automationInternal.onNodesRemoved.addListener(function(treeID, nodeIDs) {
  var tree = AutomationRootNode.getOrCreate(treeID);
  if (!tree)
    return;

  for (var i = 0; i < nodeIDs.length; i++) {
    privates(tree).impl.remove(nodeIDs[i]);
  }
});

/**
 * Dispatch accessibility events fired on individual nodes to its
 * corresponding AutomationNode. Handle focus events specially
 * (see below).
 */
automationInternal.onAccessibilityEvent.addListener(function(eventParams) {
  var id = eventParams.treeID;
  var targetTree = AutomationRootNode.getOrCreate(id);

  // Work around an issue where Chrome sends us 'blur' events on the
  // root node when nothing has focus, we need to treat those as focus
  // events but otherwise not handle blur events specially.
  var isFocusEvent = false;
  if (eventParams.eventType == schema.EventType.focus) {
    isFocusEvent = true;
  } else if (eventParams.eventType == schema.EventType.blur) {
    var node = privates(targetTree).impl.get(eventParams.targetID);
    if (node == node.root)
      isFocusEvent = true;
  }

  // When we get a focus event, ignore the actual event target, and instead
  // check what node has focus globally. If that represents a focus change,
  // fire a focus event on the correct target.
  if (isFocusEvent) {
    var previousFocusedNode = automationUtil.focusedNode;
    automationUtil.updateFocusedNode();
    if (automationUtil.focusedNode &&
        automationUtil.focusedNode == previousFocusedNode) {
      return;
    }

    if (automationUtil.focusedNode) {
      targetTree = automationUtil.focusedNode.root;
      eventParams.treeID = privates(targetTree).impl.treeID;
      eventParams.targetID = privates(automationUtil.focusedNode).impl.id;
    }
  }

  if (!privates(targetTree).impl.onAccessibilityEvent(eventParams))
    return;

  // If we're not waiting on a callback to getTree(), we can early out here.
  if (!(id in idToCallback))
    return;

  // We usually get a 'placeholder' tree first, which doesn't have any url
  // attribute or child nodes. If we've got that, wait for the full tree before
  // calling the callback.
  // TODO(dmazzoni): Don't send down placeholder (crbug.com/397553)
  if (id != DESKTOP_TREE_ID && !targetTree.url &&
      targetTree.children.length == 0)
    return;

  // If the tree wasn't available when getTree() was called, the callback will
  // have been cached in idToCallback, so call and delete it now that we
  // have the complete tree.
  for (var i = 0; i < idToCallback[id].length; i++) {
    var callback = idToCallback[id][i];
    callback(targetTree);
  }
  delete idToCallback[id];
});

automationInternal.onAccessibilityTreeDestroyed.addListener(function(id) {
  // Destroy the AutomationRootNode.
  var targetTree = AutomationRootNode.get(id);
  if (targetTree) {
    privates(targetTree).impl.destroy();
    AutomationRootNode.destroy(id);
  } else {
    logging.WARNING('no targetTree to destroy');
  }

  // Destroy the native cache of the accessibility tree.
  DestroyAccessibilityTree(id);
});

automationInternal.onAccessibilityTreeSerializationError.addListener(
    function(id) {
  automationInternal.enableFrame(id);
});

var binding = automation.generate();
// Add additional accessibility bindings not specified in the automation IDL.
// Accessibility and automation share some APIs (see
// ui/accessibility/ax_enums.idl).
forEach(schema, function(k, v) {
  binding[k] = v;
});

exports.$set('binding', binding);
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var utils = require('utils');

function AutomationEventImpl(type, target, eventFrom) {
  this.propagationStopped = false;
  this.type = type;
  this.target = target;
  this.eventPhase = Event.NONE;
  this.eventFrom = eventFrom;
}

AutomationEventImpl.prototype = {
  __proto__: null,
  stopPropagation: function() {
    this.propagationStopped = true;
  },
};

function AutomationEvent() {
  privates(AutomationEvent).constructPrivate(this, arguments);
}
utils.expose(AutomationEvent, AutomationEventImpl, {
  functions: [
    'stopPropagation',
  ],
  readonly: [
    'type',
    'target',
    'eventPhase',
    'eventFrom',
  ],
});

exports.$set('AutomationEvent', AutomationEvent);
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var AutomationEvent = require('automationEvent').AutomationEvent;
var automationInternal =
    require('binding').Binding.create('automationInternal').generate();
var exceptionHandler = require('uncaught_exception_handler');
var IsInteractPermitted =
    requireNative('automationInternal').IsInteractPermitted;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?number} The id of the root node.
 */
var GetRootID = requireNative('automationInternal').GetRootID;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?string} The title of the document.
 */
var GetDocTitle = requireNative('automationInternal').GetDocTitle;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?string} The url of the document.
 */
var GetDocURL = requireNative('automationInternal').GetDocURL;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?boolean} True if the document has finished loading.
 */
var GetDocLoaded = requireNative('automationInternal').GetDocLoaded;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?number} The loading progress, from 0.0 to 1.0 (fully loaded).
 */
var GetDocLoadingProgress =
    requireNative('automationInternal').GetDocLoadingProgress;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?number} The ID of the selection anchor object.
 */
var GetAnchorObjectID = requireNative('automationInternal').GetAnchorObjectID;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?number} The selection anchor offset.
 */
var GetAnchorOffset = requireNative('automationInternal').GetAnchorOffset;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?string} The selection anchor affinity.
 */
var GetAnchorAffinity = requireNative('automationInternal').GetAnchorAffinity;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?number} The ID of the selection focus object.
 */
var GetFocusObjectID = requireNative('automationInternal').GetFocusObjectID;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?number} The selection focus offset.
 */
var GetFocusOffset = requireNative('automationInternal').GetFocusOffset;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @return {?string} The selection focus affinity.
 */
var GetFocusAffinity = requireNative('automationInternal').GetFocusAffinity;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?number} The id of the node's parent, or undefined if it's the
 *    root of its tree or if the tree or node wasn't found.
 */
var GetParentID = requireNative('automationInternal').GetParentID;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?number} The number of children of the node, or undefined if
 *     the tree or node wasn't found.
 */
var GetChildCount = requireNative('automationInternal').GetChildCount;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {number} childIndex An index of a child of this node.
 * @return {?number} The id of the child at the given index, or undefined
 *     if the tree or node or child at that index wasn't found.
 */
var GetChildIDAtIndex = requireNative('automationInternal').GetChildIDAtIndex;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?number} The ids of the children of the node, or undefined
 *     if the tree or node wasn't found.
 */
var GetChildIds = requireNative('automationInternal').GetChildIDs;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?Object} An object mapping html attributes to values.
 */
var GetHtmlAttributes = requireNative('automationInternal').GetHtmlAttributes;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?number} The index of this node in its parent, or undefined if
 *     the tree or node or node parent wasn't found.
 */
var GetIndexInParent = requireNative('automationInternal').GetIndexInParent;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?Object} An object with a string key for every state flag set,
 *     or undefined if the tree or node or node parent wasn't found.
 */
var GetState = requireNative('automationInternal').GetState;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {string} The role of the node, or undefined if the tree or
 *     node wasn't found.
 */
var GetRole = requireNative('automationInternal').GetRole;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {?automation.Rect} The location of the node, or undefined if
 *     the tree or node wasn't found.
 */
var GetLocation = requireNative('automationInternal').GetLocation;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {number} startIndex The start index of the range.
 * @param {number} endIndex The end index of the range.
 * @return {?automation.Rect} The bounding box of the subrange of this node,
 *     or the location if there are no subranges, or undefined if
 *     the tree or node wasn't found.
 */
var GetBoundsForRange = requireNative('automationInternal').GetBoundsForRange;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @return {!Array.<number>} The text offset where each line starts, or an empty
 *     array if this node has no text content, or undefined if the tree or node
 *     was not found.
 */
var GetLineStartOffsets = requireNative(
    'automationInternal').GetLineStartOffsets;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {string} attr The name of a string attribute.
 * @return {?string} The value of this attribute, or undefined if the tree,
 *     node, or attribute wasn't found.
 */
var GetStringAttribute = requireNative('automationInternal').GetStringAttribute;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {string} attr The name of an attribute.
 * @return {?boolean} The value of this attribute, or undefined if the tree,
 *     node, or attribute wasn't found.
 */
var GetBoolAttribute = requireNative('automationInternal').GetBoolAttribute;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {string} attr The name of an attribute.
 * @return {?number} The value of this attribute, or undefined if the tree,
 *     node, or attribute wasn't found.
 */
var GetIntAttribute = requireNative('automationInternal').GetIntAttribute;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {string} attr The name of an attribute.
 * @return {?number} The value of this attribute, or undefined if the tree,
 *     node, or attribute wasn't found.
 */
var GetFloatAttribute = requireNative('automationInternal').GetFloatAttribute;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {string} attr The name of an attribute.
 * @return {?Array.<number>} The value of this attribute, or undefined
 *     if the tree, node, or attribute wasn't found.
 */
var GetIntListAttribute =
    requireNative('automationInternal').GetIntListAttribute;

/**
 * @param {number} axTreeID The id of the accessibility tree.
 * @param {number} nodeID The id of a node.
 * @param {string} attr The name of an HTML attribute.
 * @return {?string} The value of this attribute, or undefined if the tree,
 *     node, or attribute wasn't found.
 */
var GetHtmlAttribute = requireNative('automationInternal').GetHtmlAttribute;

var lastError = require('lastError');
var logging = requireNative('logging');
var schema = requireNative('automationInternal').GetSchemaAdditions();
var utils = require('utils');

/**
 * A single node in the Automation tree.
 * @param {AutomationRootNodeImpl} root The root of the tree.
 * @constructor
 */
function AutomationNodeImpl(root) {
  this.rootImpl = root;
  this.hostNode_ = null;
  this.listeners = {__proto__: null};
}

AutomationNodeImpl.prototype = {
  __proto__: null,
  treeID: -1,
  id: -1,
  isRootNode: false,

  detach: function() {
    this.rootImpl = null;
    this.hostNode_ = null;
    this.listeners = {__proto__: null};
  },

  get root() {
    return this.rootImpl && this.rootImpl.wrapper;
  },

  get parent() {
    if (!this.rootImpl)
      return undefined;
    if (this.hostNode_)
      return this.hostNode_;
    var parentID = GetParentID(this.treeID, this.id);
    return this.rootImpl.get(parentID);
  },

  get htmlAttributes() {
    return GetHtmlAttributes(this.treeID, this.id) || {};
  },

  get state() {
    return GetState(this.treeID, this.id) || {};
  },

  get role() {
    return GetRole(this.treeID, this.id);
  },

  get location() {
    return GetLocation(this.treeID, this.id);
  },

  boundsForRange: function(startIndex, endIndex) {
    return GetBoundsForRange(this.treeID, this.id, startIndex, endIndex);
  },

  get indexInParent() {
    return GetIndexInParent(this.treeID, this.id);
  },

  get lineStartOffsets() {
    return GetLineStartOffsets(this.treeID, this.id);
  },

  get childTree() {
    var childTreeID = GetIntAttribute(this.treeID, this.id, 'childTreeId');
    if (childTreeID)
      return AutomationRootNodeImpl.get(childTreeID);
  },

  get firstChild() {
    if (!this.rootImpl)
      return undefined;
    if (this.childTree)
      return this.childTree;
    if (!GetChildCount(this.treeID, this.id))
      return undefined;
    var firstChildID = GetChildIDAtIndex(this.treeID, this.id, 0);
    return this.rootImpl.get(firstChildID);
  },

  get lastChild() {
    if (!this.rootImpl)
      return undefined;
    if (this.childTree)
      return this.childTree;
    var count = GetChildCount(this.treeID, this.id);
    if (!count)
      return undefined;
    var lastChildID = GetChildIDAtIndex(this.treeID, this.id, count - 1);
    return this.rootImpl.get(lastChildID);
  },

  get children() {
    if (!this.rootImpl)
      return [];

    if (this.childTree)
      return [this.childTree];

    var children = [];
    var childIds = GetChildIds(this.treeID, this.id);
    for (var i = 0; i < childIds.length; ++i) {
      var childID = childIds[i];
      var child = this.rootImpl.get(childID);
      $Array.push(children, child);
    }
    return children;
  },

  get previousSibling() {
    var parent = this.parent;
    if (!parent)
      return undefined;
    parent = privates(parent).impl;
    var indexInParent = GetIndexInParent(this.treeID, this.id);
    return this.rootImpl.get(
        GetChildIDAtIndex(parent.treeID, parent.id, indexInParent - 1));
  },

  get nextSibling() {
    var parent = this.parent;
    if (!parent)
      return undefined;
    parent = privates(parent).impl;
    var indexInParent = GetIndexInParent(this.treeID, this.id);
    return this.rootImpl.get(
        GetChildIDAtIndex(parent.treeID, parent.id, indexInParent + 1));
  },

  doDefault: function() {
    this.performAction_('doDefault');
  },

  focus: function() {
    this.performAction_('focus');
  },

  makeVisible: function() {
    this.performAction_('makeVisible');
  },

  setSelection: function(startIndex, endIndex) {
    if (this.role == 'textField' || this.role == 'textBox') {
      this.performAction_('setSelection',
                          { focusNodeID: this.id,
                            anchorOffset: startIndex,
                            focusOffset: endIndex });
    }
  },

  setSequentialFocusNavigationStartingPoint: function() {
    this.performAction_('setSequentialFocusNavigationStartingPoint');
  },

  showContextMenu: function() {
    this.performAction_('showContextMenu');
  },

  domQuerySelector: function(selector, callback) {
    if (!this.rootImpl)
      callback();
    automationInternal.querySelector(
      { treeID: this.rootImpl.treeID,
        automationNodeID: this.id,
        selector: selector },
      $Function.bind(this.domQuerySelectorCallback_, this, callback));
  },

  find: function(params) {
    return this.findInternal_(params);
  },

  findAll: function(params) {
    return this.findInternal_(params, []);
  },

  matches: function(params) {
    return this.matchInternal_(params);
  },

  addEventListener: function(eventType, callback, capture) {
    this.removeEventListener(eventType, callback);
    if (!this.listeners[eventType])
      this.listeners[eventType] = [];
    $Array.push(this.listeners[eventType], {
      __proto__: null,
      callback: callback,
      capture: !!capture,
    });
  },

  // TODO(dtseng/aboxhall): Check this impl against spec.
  removeEventListener: function(eventType, callback) {
    if (this.listeners[eventType]) {
      var listeners = this.listeners[eventType];
      for (var i = 0; i < listeners.length; i++) {
        if (callback === listeners[i].callback)
          $Array.splice(listeners, i, 1);
      }
    }
  },

  toJSON: function() {
    return { treeID: this.treeID,
             id: this.id,
             role: this.role,
             attributes: this.attributes };
  },

  dispatchEvent: function(eventType, eventFrom, mouseX, mouseY) {
    var path = [];
    var parent = this.parent;
    while (parent) {
      $Array.push(path, parent);
      parent = parent.parent;
    }
    var event = new AutomationEvent(eventType, this.wrapper, eventFrom);
    event.mouseX = mouseX;
    event.mouseY = mouseY;

    // Dispatch the event through the propagation path in three phases:
    // - capturing: starting from the root and going down to the target's parent
    // - targeting: dispatching the event on the target itself
    // - bubbling: starting from the target's parent, going back up to the root.
    // At any stage, a listener may call stopPropagation() on the event, which
    // will immediately stop event propagation through this path.
    if (this.dispatchEventAtCapturing_(event, path)) {
      if (this.dispatchEventAtTargeting_(event, path))
        this.dispatchEventAtBubbling_(event, path);
    }
  },

  toString: function() {
    var parentID = GetParentID(this.treeID, this.id);
    var childTreeID = GetIntAttribute(this.treeID, this.id, 'childTreeId');
    var count = GetChildCount(this.treeID, this.id);
    var childIDs = [];
    for (var i = 0; i < count; ++i) {
      var childID = GetChildIDAtIndex(this.treeID, this.id, i);
      $Array.push(childIDs, childID);
    }

    var result = 'node id=' + this.id +
        ' role=' + this.role +
        ' state=' + $JSON.stringify(this.state) +
        ' parentID=' + parentID +
        ' childIds=' + $JSON.stringify(childIDs);
    if (this.hostNode_) {
      var hostNodeImpl = privates(this.hostNode_).impl;
      result += ' host treeID=' + hostNodeImpl.treeID +
          ' host nodeID=' + hostNodeImpl.id;
    }
    if (childTreeID)
      result += ' childTreeID=' + childTreeID;
    return result;
  },

  dispatchEventAtCapturing_: function(event, path) {
    privates(event).impl.eventPhase = Event.CAPTURING_PHASE;
    for (var i = path.length - 1; i >= 0; i--) {
      this.fireEventListeners_(path[i], event);
      if (privates(event).impl.propagationStopped)
        return false;
    }
    return true;
  },

  dispatchEventAtTargeting_: function(event) {
    privates(event).impl.eventPhase = Event.AT_TARGET;
    this.fireEventListeners_(this.wrapper, event);
    return !privates(event).impl.propagationStopped;
  },

  dispatchEventAtBubbling_: function(event, path) {
    privates(event).impl.eventPhase = Event.BUBBLING_PHASE;
    for (var i = 0; i < path.length; i++) {
      this.fireEventListeners_(path[i], event);
      if (privates(event).impl.propagationStopped)
        return false;
    }
    return true;
  },

  fireEventListeners_: function(node, event) {
    var nodeImpl = privates(node).impl;
    if (!nodeImpl.rootImpl)
      return;

    var listeners = nodeImpl.listeners[event.type];
    if (!listeners)
      return;
    var eventPhase = event.eventPhase;
    for (var i = 0; i < listeners.length; i++) {
      if (eventPhase == Event.CAPTURING_PHASE && !listeners[i].capture)
        continue;
      if (eventPhase == Event.BUBBLING_PHASE && listeners[i].capture)
        continue;

      try {
        listeners[i].callback(event);
      } catch (e) {
        exceptionHandler.handle('Error in event handler for ' + event.type +
            ' during phase ' + eventPhase, e);
      }
    }
  },

  performAction_: function(actionType, opt_args) {
    if (!this.rootImpl)
      return;

    // Not yet initialized.
    if (this.rootImpl.treeID === undefined ||
        this.id === undefined) {
      return;
    }

    // Check permissions.
    if (!IsInteractPermitted()) {
      throw new Error(actionType + ' requires {"desktop": true} or' +
          ' {"interact": true} in the "automation" manifest key.');
    }

    automationInternal.performAction({ treeID: this.rootImpl.treeID,
                                       automationNodeID: this.id,
                                       actionType: actionType },
                                     opt_args || {});
  },

  domQuerySelectorCallback_: function(userCallback, resultAutomationNodeID) {
    // resultAutomationNodeID could be zero or undefined or (unlikely) null;
    // they all amount to the same thing here, which is that no node was
    // returned.
    if (!resultAutomationNodeID || !this.rootImpl) {
      userCallback(null);
      return;
    }
    var resultNode = this.rootImpl.get(resultAutomationNodeID);
    if (!resultNode) {
      logging.WARNING('Query selector result not in tree: ' +
                      resultAutomationNodeID);
      userCallback(null);
    }
    userCallback(resultNode);
  },

  findInternal_: function(params, opt_results) {
    var result = null;
    this.forAllDescendants_(function(node) {
      if (privates(node).impl.matchInternal_(params)) {
        if (opt_results)
          $Array.push(opt_results, node);
        else
          result = node;
        return !opt_results;
      }
    });
    if (opt_results)
      return opt_results;
    return result;
  },

  /**
   * Executes a closure for all of this node's descendants, in pre-order.
   * Early-outs if the closure returns true.
   * @param {Function(AutomationNode):boolean} closure Closure to be executed
   *     for each node. Return true to early-out the traversal.
   */
  forAllDescendants_: function(closure) {
    var stack = $Array.reverse(this.wrapper.children);
    while (stack.length > 0) {
      var node = $Array.pop(stack);
      if (closure(node))
        return;

      var children = node.children;
      for (var i = children.length - 1; i >= 0; i--)
        $Array.push(stack, children[i]);
    }
  },

  matchInternal_: function(params) {
    if ($Object.keys(params).length === 0)
      return false;

    if ('role' in params && this.role != params.role)
        return false;

    if ('state' in params) {
      for (var state in params.state) {
        if (params.state[state] != (state in this.state))
          return false;
      }
    }
    if ('attributes' in params) {
      for (var attribute in params.attributes) {
        var attrValue = params.attributes[attribute];
        if (typeof attrValue != 'object') {
          if (this[attribute] !== attrValue)
            return false;
        } else if (attrValue instanceof $RegExp.self) {
          if (typeof this[attribute] != 'string')
            return false;
          if (!attrValue.test(this[attribute]))
            return false;
        } else {
          // TODO(aboxhall): handle intlist case.
          return false;
        }
      }
    }
    return true;
  }
};

var stringAttributes = [
    'accessKey',
    'action',
    'ariaInvalidValue',
    'autoComplete',
    'containerLiveRelevant',
    'containerLiveStatus',
    'description',
    'display',
    'dropeffect',
    'help',
    'htmlTag',
    'language',
    'liveRelevant',
    'liveStatus',
    'name',
    'placeholder',
    'shortcut',
    'textInputType',
    'url',
    'value'];

var boolAttributes = [
    'ariaReadonly',
    'buttonMixed',
    'canSetValue',
    'canvasHasFallback',
    'containerLiveAtomic',
    'containerLiveBusy',
    'grabbed',
    'isAxTreeHost',
    'liveAtomic',
    'liveBusy',
    'updateLocationOnly'];

var intAttributes = [
    'backgroundColor',
    'color',
    'colorValue',
    'descriptionFrom',
    'hierarchicalLevel',
    'invalidState',
    'nameFrom',
    'posInSet',
    'scrollX',
    'scrollXMax',
    'scrollXMin',
    'scrollY',
    'scrollYMax',
    'scrollYMin',
    'setSize',
    'sortDirection',
    'tableCellColumnIndex',
    'tableCellColumnSpan',
    'tableCellRowIndex',
    'tableCellRowSpan',
    'tableColumnCount',
    'tableColumnIndex',
    'tableRowCount',
    'tableRowIndex',
    'textDirection',
    'textSelEnd',
    'textSelStart',
    'textStyle'];

var nodeRefAttributes = [
    ['activedescendantId', 'activeDescendant'],
    ['nextOnLineId', 'nextOnLine'],
    ['previousOnLineId', 'previousOnLine'],
    ['tableColumnHeaderId', 'tableColumnHeader'],
    ['tableHeaderId', 'tableHeader'],
    ['tableRowHeaderId', 'tableRowHeader'],
    ['titleUiElement', 'titleUIElement']];

var intListAttributes = [
    'characterOffsets',
    'lineBreaks',
    'markerEnds',
    'markerStarts',
    'markerTypes',
    'wordEnds',
    'wordStarts'];

var nodeRefListAttributes = [
    ['cellIds', 'cells'],
    ['controlsIds', 'controls'],
    ['describedbyIds', 'describedBy'],
    ['flowtoIds', 'flowTo'],
    ['labelledbyIds', 'labelledBy'],
    ['uniqueCellIds', 'uniqueCells']];

var floatAttributes = [
    'valueForRange',
    'minValueForRange',
    'maxValueForRange',
    'fontSize'];

var htmlAttributes = [
    ['type', 'inputType']];

var publicAttributes = [];

$Array.forEach(stringAttributes, function(attributeName) {
  $Array.push(publicAttributes, attributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, {
    __proto__: null,
    get: function() {
      return GetStringAttribute(this.treeID, this.id, attributeName);
    }
  });
});

$Array.forEach(boolAttributes, function(attributeName) {
  $Array.push(publicAttributes, attributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, {
    __proto__: null,
    get: function() {
      return GetBoolAttribute(this.treeID, this.id, attributeName);
    }
  });
});

$Array.forEach(intAttributes, function(attributeName) {
  $Array.push(publicAttributes, attributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, {
    __proto__: null,
    get: function() {
      return GetIntAttribute(this.treeID, this.id, attributeName);
    }
  });
});

$Array.forEach(nodeRefAttributes, function(params) {
  var srcAttributeName = params[0];
  var dstAttributeName = params[1];
  $Array.push(publicAttributes, dstAttributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, dstAttributeName, {
    __proto__: null,
    get: function() {
      var id = GetIntAttribute(this.treeID, this.id, srcAttributeName);
      if (id && this.rootImpl)
        return this.rootImpl.get(id);
      else
        return undefined;
    }
  });
});

$Array.forEach(intListAttributes, function(attributeName) {
  $Array.push(publicAttributes, attributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, {
    __proto__: null,
    get: function() {
      return GetIntListAttribute(this.treeID, this.id, attributeName);
    }
  });
});

$Array.forEach(nodeRefListAttributes, function(params) {
  var srcAttributeName = params[0];
  var dstAttributeName = params[1];
  $Array.push(publicAttributes, dstAttributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, dstAttributeName, {
    __proto__: null,
    get: function() {
      var ids = GetIntListAttribute(this.treeID, this.id, srcAttributeName);
      if (!ids || !this.rootImpl)
        return undefined;
      var result = [];
      for (var i = 0; i < ids.length; ++i) {
        var node = this.rootImpl.get(ids[i]);
        if (node)
          $Array.push(result, node);
      }
      return result;
    }
  });
});

$Array.forEach(floatAttributes, function(attributeName) {
  $Array.push(publicAttributes, attributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, {
    __proto__: null,
    get: function() {
      return GetFloatAttribute(this.treeID, this.id, attributeName);
    }
  });
});

$Array.forEach(htmlAttributes, function(params) {
  var srcAttributeName = params[0];
  var dstAttributeName = params[1];
  $Array.push(publicAttributes, dstAttributeName);
  $Object.defineProperty(AutomationNodeImpl.prototype, dstAttributeName, {
    __proto__: null,
    get: function() {
      return GetHtmlAttribute(this.treeID, this.id, srcAttributeName);
    }
  });
});

/**
 * AutomationRootNode.
 *
 * An AutomationRootNode is the javascript end of an AXTree living in the
 * browser. AutomationRootNode handles unserializing incremental updates from
 * the source AXTree. Each update contains node data that form a complete tree
 * after applying the update.
 *
 * A brief note about ids used through this class. The source AXTree assigns
 * unique ids per node and we use these ids to build a hash to the actual
 * AutomationNode object.
 * Thus, tree traversals amount to a lookup in our hash.
 *
 * The tree itself is identified by the accessibility tree id of the
 * renderer widget host.
 * @constructor
 */
function AutomationRootNodeImpl(treeID) {
  $Function.call(AutomationNodeImpl, this, this);
  this.treeID = treeID;
  this.axNodeDataCache_ = {__proto__: null};
}

utils.defineProperty(AutomationRootNodeImpl, 'idToAutomationRootNode_',
    {__proto__: null});

utils.defineProperty(AutomationRootNodeImpl, 'get', function(treeID) {
  var result = AutomationRootNodeImpl.idToAutomationRootNode_[treeID];
  return result || undefined;
});

utils.defineProperty(AutomationRootNodeImpl, 'getOrCreate', function(treeID) {
  if (AutomationRootNodeImpl.idToAutomationRootNode_[treeID])
    return AutomationRootNodeImpl.idToAutomationRootNode_[treeID];
  var result = new AutomationRootNode(treeID);
  AutomationRootNodeImpl.idToAutomationRootNode_[treeID] = result;
  return result;
});

utils.defineProperty(AutomationRootNodeImpl, 'destroy', function(treeID) {
  delete AutomationRootNodeImpl.idToAutomationRootNode_[treeID];
});

AutomationRootNodeImpl.prototype = {
  __proto__: AutomationNodeImpl.prototype,

  /**
   * @type {boolean}
   */
  isRootNode: true,

  /**
   * @type {number}
   */
  treeID: -1,

  /**
   * The parent of this node from a different tree.
   * @type {?AutomationNode}
   * @private
   */
  hostNode_: null,

  /**
   * A map from id to AutomationNode.
   * @type {Object.<number, AutomationNode>}
   * @private
   */
  axNodeDataCache_: null,

  get id() {
    var result = GetRootID(this.treeID);

    // Don't return undefined, because the id is often passed directly
    // as an argument to a native binding that expects only a valid number.
    if (result === undefined)
      return -1;

    return result;
  },

  get docUrl() {
    return GetDocURL(this.treeID);
  },

  get docTitle() {
    return GetDocTitle(this.treeID);
  },

  get docLoaded() {
    return GetDocLoaded(this.treeID);
  },

  get docLoadingProgress() {
    return GetDocLoadingProgress(this.treeID);
  },

  get anchorObject() {
    var id = GetAnchorObjectID(this.treeID);
    if (id && id != -1)
      return this.get(id);
    else
      return undefined;
  },

  get anchorOffset() {
    var id = GetAnchorObjectID(this.treeID);
    if (id && id != -1)
      return GetAnchorOffset(this.treeID);
  },

  get anchorAffinity() {
    var id = GetAnchorObjectID(this.treeID);
    if (id && id != -1)
      return GetAnchorAffinity(this.treeID);
  },

  get focusObject() {
    var id = GetFocusObjectID(this.treeID);
    if (id && id != -1)
      return this.get(id);
    else
      return undefined;
  },

  get focusOffset() {
    var id = GetFocusObjectID(this.treeID);
    if (id && id != -1)
      return GetFocusOffset(this.treeID);
  },

  get focusAffinity() {
    var id = GetFocusObjectID(this.treeID);
    if (id && id != -1)
      return GetFocusAffinity(this.treeID);
  },

  get: function(id) {
    if (id == undefined)
      return undefined;

    if (id == this.id)
      return this.wrapper;

    var obj = this.axNodeDataCache_[id];
    if (obj)
      return obj;

    obj = new AutomationNode(this);
    privates(obj).impl.treeID = this.treeID;
    privates(obj).impl.id = id;
    this.axNodeDataCache_[id] = obj;

    return obj;
  },

  remove: function(id) {
    if (this.axNodeDataCache_[id])
      privates(this.axNodeDataCache_[id]).impl.detach();
    delete this.axNodeDataCache_[id];
  },

  destroy: function() {
    this.dispatchEvent(schema.EventType.destroyed, 'none');
    for (var id in this.axNodeDataCache_)
      this.remove(id);
    this.detach();
  },

  setHostNode(hostNode) {
    this.hostNode_ = hostNode;
  },

  onAccessibilityEvent: function(eventParams) {
    var targetNode = this.get(eventParams.targetID);
    if (targetNode) {
      var targetNodeImpl = privates(targetNode).impl;
      targetNodeImpl.dispatchEvent(
          eventParams.eventType, eventParams.eventFrom,
          eventParams.mouseX, eventParams.mouseY);
    } else {
      logging.WARNING('Got ' + eventParams.eventType +
                      ' event on unknown node: ' + eventParams.targetID +
                      '; this: ' + this.id);
    }
    return true;
  },

  toString: function() {
    function toStringInternal(nodeImpl, indent) {
      if (!nodeImpl)
        return '';
      var output = '';
      if (nodeImpl.isRootNode)
        output += indent + 'tree id=' + nodeImpl.treeID + '\n';
      output += indent +
        $Function.call(AutomationNodeImpl.prototype.toString, nodeImpl) + '\n';
      indent += '  ';
      var children = nodeImpl.children;
      for (var i = 0; i < children.length; ++i)
        output += toStringInternal(privates(children[i]).impl, indent);
      return output;
    }
    return toStringInternal(this, '');
  },
};

function AutomationNode() {
  privates(AutomationNode).constructPrivate(this, arguments);
}
utils.expose(AutomationNode, AutomationNodeImpl, {
  functions: [
    'doDefault',
    'find',
    'findAll',
    'focus',
    'makeVisible',
    'matches',
    'setSelection',
    'setSequentialFocusNavigationStartingPoint',
    'showContextMenu',
    'addEventListener',
    'removeEventListener',
    'domQuerySelector',
    'toString',
    'boundsForRange',
  ],
  readonly: $Array.concat(publicAttributes, [
      'parent',
      'firstChild',
      'lastChild',
      'children',
      'previousSibling',
      'nextSibling',
      'isRootNode',
      'role',
      'state',
      'location',
      'indexInParent',
      'lineStartOffsets',
      'root',
      'htmlAttributes',
  ]),
});

function AutomationRootNode() {
  privates(AutomationRootNode).constructPrivate(this, arguments);
}
utils.expose(AutomationRootNode, AutomationRootNodeImpl, {
  superclass: AutomationNode,
  readonly: [
    'docTitle',
    'docUrl',
    'docLoaded',
    'docLoadingProgress',
    'anchorObject',
    'anchorOffset',
    'anchorAffinity',
    'focusObject',
    'focusOffset',
    'focusAffinity',
  ],
});

utils.defineProperty(AutomationRootNode, 'get', function(treeID) {
  return AutomationRootNodeImpl.get(treeID);
});

utils.defineProperty(AutomationRootNode, 'getOrCreate', function(treeID) {
  return AutomationRootNodeImpl.getOrCreate(treeID);
});

utils.defineProperty(AutomationRootNode, 'destroy', function(treeID) {
  AutomationRootNodeImpl.destroy(treeID);
});

exports.$set('AutomationNode', AutomationNode);
exports.$set('AutomationRootNode', AutomationRootNode);
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the browserAction API.

var binding = require('binding').Binding.create('browserAction');

var setIcon = require('setIcon').setIcon;
var getExtensionViews = requireNative('runtime').GetExtensionViews;
var sendRequest = require('sendRequest').sendRequest;
var lastError = require('lastError');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('setIcon', function(details, callback) {
    setIcon(details, function(args) {
      sendRequest(this.name, [args, callback], this.definition.parameters);
    }.bind(this));
  });

  apiFunctions.setCustomCallback('openPopup',
      function(name, request, callback, response) {
    if (!callback)
      return;

    if (lastError.hasError(chrome)) {
      callback();
    } else {
      var views = getExtensionViews(-1, -1, 'POPUP');
      callback(views.length > 0 ? views[0] : null);
    }
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming RtpStream API.

var binding = require('binding').Binding.create('cast.streaming.rtpStream');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('destroy',
      function(transportId) {
        natives.DestroyCastRtpStream(transportId);
  });
  apiFunctions.setHandleRequest('getSupportedParams',
      function(transportId) {
        return natives.GetSupportedParamsCastRtpStream(transportId);
  });
  apiFunctions.setHandleRequest('start',
      function(transportId, params) {
        natives.StartCastRtpStream(transportId, params);
  });
  apiFunctions.setHandleRequest('stop',
      function(transportId) {
        natives.StopCastRtpStream(transportId);
  });
  apiFunctions.setHandleRequest('toggleLogging',
      function(transportId, enable) {
        natives.ToggleLogging(transportId, enable);
  });
  apiFunctions.setHandleRequest('getRawEvents',
      function(transportId, extraData, callback) {
        natives.GetRawEvents(transportId, extraData, callback);
  });
  apiFunctions.setHandleRequest('getStats',
      function(transportId, callback) {
        natives.GetStats(transportId, callback);
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming Session API.

var binding = require('binding').Binding.create('cast.streaming.session');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setHandleRequest('create',
      function(audioTrack, videoTrack, callback) {
        natives.CreateSession(audioTrack, videoTrack, callback);
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming UdpTransport API.

var binding = require('binding').Binding.create('cast.streaming.udpTransport');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('destroy', function(transportId) {
    natives.DestroyCastUdpTransport(transportId);
  });
  apiFunctions.setHandleRequest('setDestination',
    function(transportId, destination) {
      natives.SetDestinationCastUdpTransport(transportId, destination);
  });
  apiFunctions.setHandleRequest('setOptions',
    function(transportId, options) {
      natives.SetOptionsCastUdpTransport(transportId, options);
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Cast Streaming Session API.

var binding = require('binding').Binding.create(
    'cast.streaming.receiverSession');
var natives = requireNative('cast_streaming_natives');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setHandleRequest('createAndBind',
      function(ap, vp, local, weidgth, height, fr, url, cb, op) {
        natives.StartCastRtpReceiver(
            ap, vp, local, weidgth, height, fr, url, cb, op);
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var Event = require('event_bindings').Event;
var sendRequest = require('sendRequest').sendRequest;
var validate = require('schemaUtils').validate;

function extendSchema(schema) {
  var extendedSchema = $Array.slice(schema);
  extendedSchema.unshift({'type': 'string'});
  return extendedSchema;
}

function ChromeDirectSetting(prefKey, valueSchema, schema) {
  var getFunctionParameters = function(name) {
    var f = $Array.filter(
                schema.functions, function(f) { return f.name === name; })[0];
    return f.parameters;
  };
  this.get = function(details, callback) {
    var getSchema = getFunctionParameters('get');
    validate([details, callback], getSchema);
    return sendRequest('types.private.ChromeDirectSetting.get',
                       [prefKey, details, callback],
                       extendSchema(getSchema));
  };
  this.set = function(details, callback) {
    var setSchema = $Array.slice(getFunctionParameters('set'));
    setSchema[0].properties.value = valueSchema;
    validate([details, callback], setSchema);
    return sendRequest('types.private.ChromeDirectSetting.set',
                       [prefKey, details, callback],
                       extendSchema(setSchema));
  };
  this.clear = function(details, callback) {
    var clearSchema = getFunctionParameters('clear');
    validate([details, callback], clearSchema);
    return sendRequest('types.private.ChromeDirectSetting.clear',
                       [prefKey, details, callback],
                       extendSchema(clearSchema));
  };
  this.onChange = new Event('types.private.ChromeDirectSetting.' +
                            prefKey +
                            '.onChange');
};

exports.$set('ChromeDirectSetting', ChromeDirectSetting);

// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var Event = require('event_bindings').Event;
var sendRequest = require('sendRequest').sendRequest;
var validate = require('schemaUtils').validate;

function extendSchema(schema) {
  var extendedSchema = $Array.slice(schema);
  $Array.unshift(extendedSchema, {'type': 'string'});
  return extendedSchema;
}

// TODO(devlin): Maybe find a way to combine this and ContentSetting.
function ChromeSetting(prefKey, valueSchema, schema) {
  var getFunctionParameters = function(name) {
    var f = $Array.filter(
                schema.functions, function(f) { return f.name === name; })[0];
    return f.parameters;
  };
  this.get = function(details, callback) {
    var getSchema = getFunctionParameters('get');
    validate([details, callback], getSchema);
    return sendRequest('types.ChromeSetting.get',
                       [prefKey, details, callback],
                       extendSchema(getSchema));
  };
  this.set = function(details, callback) {
    // The set schema included in the Schema object is generic, since it varies
    // per-setting. However, this is only ever for a single setting, so we can
    // enforce the types more thoroughly.
    var rawSetSchema = getFunctionParameters('set');
    var rawSettingParam = rawSetSchema[0];
    var props = $Object.assign({}, rawSettingParam.properties);
    props.value = valueSchema;
    var modSettingParam = {
      name: rawSettingParam.name,
      type: rawSettingParam.type,
      properties: props,
    };
    var modSetSchema = $Array.slice(rawSetSchema);
    modSetSchema[0] = modSettingParam;
    validate([details, callback], modSetSchema);
    return sendRequest('types.ChromeSetting.set',
                       [prefKey, details, callback],
                       extendSchema(modSetSchema));
  };
  this.clear = function(details, callback) {
    var clearSchema = getFunctionParameters('clear');
    validate([details, callback], clearSchema);
    return sendRequest('types.ChromeSetting.clear',
                       [prefKey, details, callback],
                       extendSchema(clearSchema));
  };
  this.onChange = new Event('types.ChromeSetting.' + prefKey + '.onChange');
};

exports.$set('ChromeSetting', ChromeSetting);
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var binding = require('binding').Binding.create('chromeWebViewInternal');
var contextMenusHandlers = require('contextMenusHandlers');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  var handlers = contextMenusHandlers.create(true /* isWebview */);

  apiFunctions.setHandleRequest('contextMenusCreate',
      handlers.requestHandlers.create);

  apiFunctions.setCustomCallback('contextMenusCreate',
      handlers.callbacks.create);

  apiFunctions.setCustomCallback('contextMenusUpdate',
      handlers.callbacks.update);

  apiFunctions.setCustomCallback('contextMenusRemove',
      handlers.callbacks.remove);

  apiFunctions.setCustomCallback('contextMenusRemoveAll',
      handlers.callbacks.removeAll);

});

exports.$set('ChromeWebView', binding.generate());
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This module implements chrome-specific <webview> API.
// See web_view_api_methods.js for details.

var ChromeWebView = require('chromeWebViewInternal').ChromeWebView;
var ChromeWebViewSchema =
    requireNative('schema_registry').GetSchema('chromeWebViewInternal');
var CreateEvent = require('guestViewEvents').CreateEvent;
var EventBindings = require('event_bindings');
var GuestViewInternalNatives = requireNative('guest_view_internal');
var idGeneratorNatives = requireNative('id_generator');
var utils = require('utils');
var WebViewImpl = require('webView').WebViewImpl;

// This is the only "webViewInternal.onClicked" named event for this renderer.
//
// Since we need an event per <webview>, we define events with suffix
// (subEventName) in each of the <webview>. Behind the scenes, this event is
// registered as a ContextMenusEvent, with filter set to the webview's
// |viewInstanceId|. Any time a ContextMenusEvent is dispatched, we re-dispatch
// it to the subEvent's listeners. This way
// <webview>.contextMenus.onClicked behave as a regular chrome Event type.
var ContextMenusEvent = CreateEvent('chromeWebViewInternal.onClicked');
// See comment above.
var ContextMenusHandlerEvent =
    CreateEvent('chromeWebViewInternal.onContextMenuShow');

// -----------------------------------------------------------------------------
// ContextMenusOnClickedEvent object.

// This event is exposed as <webview>.contextMenus.onClicked.
function ContextMenusOnClickedEvent(webViewInstanceId,
                                    opt_eventName,
                                    opt_argSchemas,
                                    opt_eventOptions) {
  var subEventName = GetUniqueSubEventName(opt_eventName);
  $Function.call(EventBindings.Event,
                 this,
                 subEventName,
                 opt_argSchemas,
                 opt_eventOptions,
                 webViewInstanceId);

  var view = GuestViewInternalNatives.GetViewFromID(webViewInstanceId);
  if (!view) {
    return;
  }
  view.events.addScopedListener(ContextMenusEvent, $Function.bind(function() {
    // Re-dispatch to subEvent's listeners.
    $Function.apply(this.dispatch, this, $Array.slice(arguments));
  }, this), {instanceId: webViewInstanceId});
}
$Object.setPrototypeOf(ContextMenusOnClickedEvent.prototype,
                       EventBindings.Event.prototype);

// This event is exposed as <webview>.contextMenus.onShow.
function ContextMenusOnContextMenuEvent(webViewInstanceId,
                                        opt_eventName,
                                        opt_argSchemas,
                                        opt_eventOptions) {
  var subEventName = GetUniqueSubEventName(opt_eventName);
  $Function.call(EventBindings.Event,
                 this,
                 subEventName,
                 opt_argSchemas,
                 opt_eventOptions,
                 webViewInstanceId);

  var view = GuestViewInternalNatives.GetViewFromID(webViewInstanceId);
  if (!view) {
    return;
  }
  view.events.addScopedListener(
      ContextMenusHandlerEvent, $Function.bind(function(e) {
    var defaultPrevented = false;
    var event = {
      'preventDefault': function() { defaultPrevented = true; }
    };

    // Re-dispatch to subEvent's listeners.
    $Function.apply(this.dispatch, this, [event]);

    if (!defaultPrevented) {
      // TODO(lazyboy): Remove |items| parameter completely from
      // ChromeWebView.showContextMenu as we don't do anything useful with it
      // currently.
      var items = [];
      var guestInstanceId = GuestViewInternalNatives.
          GetViewFromID(webViewInstanceId).guest.getId();
      ChromeWebView.showContextMenu(guestInstanceId, e.requestId, items);
    }
  }, this), {instanceId: webViewInstanceId});
}

$Object.setPrototypeOf(ContextMenusOnContextMenuEvent.prototype,
                       EventBindings.Event.prototype);

// -----------------------------------------------------------------------------
// WebViewContextMenusImpl object.

// An instance of this class is exposed as <webview>.contextMenus.
function WebViewContextMenusImpl(viewInstanceId) {
  this.viewInstanceId_ = viewInstanceId;
}
$Object.setPrototypeOf(WebViewContextMenusImpl.prototype, null);

WebViewContextMenusImpl.prototype.create = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusCreate, null, args);
};

WebViewContextMenusImpl.prototype.remove = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusRemove, null, args);
};

WebViewContextMenusImpl.prototype.removeAll = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusRemoveAll, null, args);
};

WebViewContextMenusImpl.prototype.update = function() {
  var args = $Array.concat([this.viewInstanceId_], $Array.slice(arguments));
  return $Function.apply(ChromeWebView.contextMenusUpdate, null, args);
};

function WebViewContextMenus() {
  privates(WebViewContextMenus).constructPrivate(this, arguments);
}
utils.expose(WebViewContextMenus, WebViewContextMenusImpl, {
  functions: [
    'create',
    'remove',
    'removeAll',
    'update',
  ],
});

// -----------------------------------------------------------------------------

WebViewImpl.prototype.maybeSetupContextMenus = function() {
  if (!this.contextMenusOnContextMenuEvent_) {
    var eventName = 'chromeWebViewInternal.onContextMenuShow';
    var eventSchema =
        utils.lookup(ChromeWebViewSchema.events, 'name', 'onShow');
    var eventOptions = {supportsListeners: true};
    this.contextMenusOnContextMenuEvent_ = new ContextMenusOnContextMenuEvent(
        this.viewInstanceId, eventName, eventSchema, eventOptions);
  }

  var createContextMenus = $Function.bind(function() {
    return this.weakWrapper(function() {
      if (this.contextMenus_) {
        return this.contextMenus_;
      }

      this.contextMenus_ = new WebViewContextMenus(this.viewInstanceId);

      // Define 'onClicked' event property on |this.contextMenus_|.
      var getOnClickedEvent = $Function.bind(function() {
        return this.weakWrapper(function() {
          if (!this.contextMenusOnClickedEvent_) {
            var eventName = 'chromeWebViewInternal.onClicked';
            var eventSchema =
                utils.lookup(ChromeWebViewSchema.events, 'name', 'onClicked');
            var eventOptions = {supportsListeners: true};
            var onClickedEvent = new ContextMenusOnClickedEvent(
                this.viewInstanceId, eventName, eventSchema, eventOptions);
            this.contextMenusOnClickedEvent_ = onClickedEvent;
            return onClickedEvent;
          }
          return this.contextMenusOnClickedEvent_;
        });
      }, this);
      $Object.defineProperty(
          this.contextMenus_,
          'onClicked',
          {get: getOnClickedEvent(), enumerable: true});
      $Object.defineProperty(
          this.contextMenus_,
          'onShow',
          {
            get: this.weakWrapper(function() {
              return this.contextMenusOnContextMenuEvent_;
            }),
            enumerable: true
          });
      return this.contextMenus_;
    });
  }, this);

  // Expose <webview>.contextMenus object.
  $Object.defineProperty(
      this.element,
      'contextMenus',
      {
        get: createContextMenus(),
        enumerable: true
      });
};

function GetUniqueSubEventName(eventName) {
  return eventName + '/' + idGeneratorNatives.GetNextId();
}
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the contentSettings API.

var sendRequest = require('sendRequest').sendRequest;
var validate = require('schemaUtils').validate;

// Some content types have been removed and no longer correspond to a real
// content setting. Instead, these always return a fixed dummy value, and issue
// a warning when accessed. This maps the content type name to the dummy value.
var DEPRECATED_CONTENT_TYPES = {
  __proto__: null,

  fullscreen: 'allow',
  mouselock: 'allow',
};

function extendSchema(schema) {
  var extendedSchema = $Array.slice(schema);
  $Array.unshift(extendedSchema, {'type': 'string'});
  return extendedSchema;
}

function ContentSetting(contentType, settingSchema, schema) {
  var getFunctionParameters = function(name) {
    var f = $Array.filter(
                schema.functions, function(f) { return f.name === name; })[0];
    return f.parameters;
  };
  this.get = function(details, callback) {
    var getSchema = getFunctionParameters('get');
    validate([details, callback], getSchema);

    var dummySetting = DEPRECATED_CONTENT_TYPES[contentType];
    if (dummySetting !== undefined) {
      console.warn('contentSettings.' + contentType + ' is deprecated; it will '
                   + 'always return \'' + dummySetting + '\'.');
      $Function.apply(callback, undefined, [{setting: dummySetting}]);
      return;
    }

    return sendRequest('contentSettings.get',
                       [contentType, details, callback],
                       extendSchema(getSchema));
  };

  this.set = function(details, callback) {
    // The set schema included in the Schema object is generic, since it varies
    // per-setting. However, this is only ever for a single setting, so we can
    // enforce the types more thoroughly.
    var rawSetSchema = getFunctionParameters('set');
    var rawSettingParam = rawSetSchema[0];
    var props = $Object.assign({}, rawSettingParam.properties);
    props.setting = settingSchema;
    var modSettingParam = {
      name: rawSettingParam.name,
      type: rawSettingParam.type,
      properties: props,
    };
    var modSetSchema = $Array.slice(rawSetSchema);
    modSetSchema[0] = modSettingParam;
    validate([details, callback], rawSetSchema);

    if ($Object.hasOwnProperty(DEPRECATED_CONTENT_TYPES, contentType)) {
      console.warn('contentSettings.' + contentType + ' is deprecated; setting '
                   + 'it has no effect.');
      $Function.apply(callback, undefined, []);
      return;
    }

    return sendRequest('contentSettings.set',
                       [contentType, details, callback],
                       extendSchema(modSetSchema));
  };

  this.clear = function(details, callback) {
    var clearSchema = getFunctionParameters('clear');
    validate([details, callback], clearSchema);

    if ($Object.hasOwnProperty(DEPRECATED_CONTENT_TYPES, contentType)) {
      console.warn('contentSettings.' + contentType + ' is deprecated; '
                   + 'clearing it has no effect.');
      $Function.apply(callback, undefined, []);
      return;
    }

    return sendRequest('contentSettings.clear',
                       [contentType, details, callback],
                       extendSchema(clearSchema));
  };

  this.getResourceIdentifiers = function(callback) {
    var schema = getFunctionParameters('getResourceIdentifiers');
    validate([callback], schema);

    if ($Object.hasOwnProperty(DEPRECATED_CONTENT_TYPES, contentType)) {
      $Function.apply(callback, undefined, []);
      return;
    }

    return sendRequest(
        'contentSettings.getResourceIdentifiers',
        [contentType, callback],
        extendSchema(schema));
  };
}

exports.$set('ContentSetting', ContentSetting);
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the declarativeContent API.

var binding = require('binding').Binding.create('declarativeContent');

var utils = require('utils');
var validate = require('schemaUtils').validate;
var canonicalizeCompoundSelector =
    requireNative('css_natives').CanonicalizeCompoundSelector;
var setIcon = require('setIcon').setIcon;

binding.registerCustomHook( function(api) {
  var declarativeContent = api.compiledApi;

  // Returns the schema definition of type |typeId| defined in |namespace|.
  function getSchema(typeId) {
    return utils.lookup(api.schema.types,
                        'id',
                        'declarativeContent.' + typeId);
  }

  // Helper function for the constructor of concrete datatypes of the
  // declarative content API.
  // Makes sure that |this| contains the union of parameters and
  // {'instanceType': 'declarativeContent.' + typeId} and validates the
  // generated union dictionary against the schema for |typeId|.
  function setupInstance(instance, parameters, typeId) {
    for (var key in parameters) {
      if ($Object.hasOwnProperty(parameters, key)) {
        instance[key] = parameters[key];
      }
    }
    instance.instanceType = 'declarativeContent.' + typeId;
    var schema = getSchema(typeId);
    validate([instance], [schema]);
  }

  function canonicalizeCssSelectors(selectors) {
    for (var i = 0; i < selectors.length; i++) {
      var canonicalizedSelector = canonicalizeCompoundSelector(selectors[i]);
      if (canonicalizedSelector == '') {
        throw new Error(
            'Element of \'css\' array must be a ' +
            'list of valid compound selectors: ' +
            selectors[i]);
      }
      selectors[i] = canonicalizedSelector;
    }
  }

  // Setup all data types for the declarative content API.
  declarativeContent.PageStateMatcher = function(parameters) {
    setupInstance(this, parameters, 'PageStateMatcher');
    if ($Object.hasOwnProperty(this, 'css')) {
      canonicalizeCssSelectors(this.css);
    }
  };
  declarativeContent.ShowPageAction = function(parameters) {
    setupInstance(this, parameters, 'ShowPageAction');
  };
  declarativeContent.RequestContentScript = function(parameters) {
    setupInstance(this, parameters, 'RequestContentScript');
  };
  // TODO(rockot): Do not expose this in M39 stable. Making this restriction
  // possible will take some extra work. See http://crbug.com/415315
  declarativeContent.SetIcon = function(parameters) {
    setIcon(parameters, function (data) {
      setupInstance(this, data, 'SetIcon');
    }.bind(this));
  };
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the desktopCapture API.

var binding = require('binding').Binding.create('desktopCapture');
var sendRequest = require('sendRequest').sendRequest;
var idGenerator = requireNative('id_generator');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  var pendingRequests = {};

  function onRequestResult(id, result) {
    if (id in pendingRequests) {
      var callback = pendingRequests[id];
      delete pendingRequests[id];
      callback(result);
    }
  }

  apiFunctions.setHandleRequest('chooseDesktopMedia',
                                function(sources, target_tab, callback) {
    // |target_tab| is an optional parameter.
    if (callback === undefined) {
      callback = target_tab;
      target_tab = undefined;
    }
    var id = idGenerator.GetNextId();
    pendingRequests[id] = callback;
    sendRequest(this.name,
                [id, sources, target_tab, onRequestResult.bind(null, id)],
                this.definition.parameters);
    return id;
  });

  apiFunctions.setHandleRequest('cancelChooseDesktopMedia', function(id) {
    if (id in pendingRequests) {
      delete pendingRequests[id];
      sendRequest(this.name, [id], this.definition.parameters);
    }
  });
});

exports.$set('binding', binding.generate());
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the developerPrivate API.

var binding = require('binding').Binding.create('developerPrivate');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // Converts the argument of |functionName| from DirectoryEntry to URL.
  function bindFileSystemFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(directoryEntry, callback) {
          var fileSystemName = directoryEntry.filesystem.name;
          var relativePath = $String.slice(directoryEntry.fullPath, 1);
          var url = directoryEntry.toURL();
          return [fileSystemName, relativePath, url, callback];
    });
  }

  bindFileSystemFunction('loadDirectory');

  // developerPrivate.enable is the same as chrome.management.setEnabled.
  // TODO(devlin): Migrate callers off developerPrivate.enable.
  bindingsAPI.compiledApi.enable = chrome.management.setEnabled;

  apiFunctions.setHandleRequest('allowFileAccess',
                                function(id, allow, callback) {
    chrome.developerPrivate.updateExtensionConfiguration(
        {extensionId: id, fileAccess: allow}, callback);
  });

  apiFunctions.setHandleRequest('allowIncognito',
                                function(id, allow, callback) {
    chrome.developerPrivate.updateExtensionConfiguration(
        {extensionId: id, incognitoAccess: allow}, callback);
  });

  apiFunctions.setHandleRequest('inspect', function(options, callback) {
    var renderViewId = options.render_view_id;
    if (typeof renderViewId == 'string') {
      renderViewId = parseInt(renderViewId);
      if (isNaN(renderViewId))
        throw new Error('Invalid value for render_view_id');
    }
    var renderProcessId = options.render_process_id;
    if (typeof renderProcessId == 'string') {
      renderProcessId = parseInt(renderProcessId);
      if (isNaN(renderProcessId))
        throw new Error('Invalid value for render_process_id');
    }
    chrome.developerPrivate.openDevTools({
        extensionId: options.extension_id,
        renderProcessId: renderProcessId,
        renderViewId: renderViewId,
        incognito: options.incognito
    }, callback);
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the downloads API.

var binding = require('binding').Binding.create('downloads');
var downloadsInternal = require('binding').Binding.create(
    'downloadsInternal').generate();
var eventBindings = require('event_bindings');

eventBindings.registerArgumentMassager(
    'downloads.onDeterminingFilename',
    function massage_determining_filename(args, dispatch) {
  var downloadItem = args[0];
  // Copy the id so that extensions can't change it.
  var downloadId = downloadItem.id;
  var suggestable = true;
  function isValidResult(result) {
    if (result === undefined)
      return false;
    if (typeof(result) != 'object') {
      console.error('Error: Invocation of form suggest(' + typeof(result) +
                    ') doesn\'t match definition suggest({filename: string, ' +
                    'conflictAction: string})');
      return false;
    } else if ((typeof(result.filename) != 'string') ||
               (result.filename.length == 0)) {
      console.error('Error: "filename" parameter to suggest() must be a ' +
                    'non-empty string');
      return false;
    } else if ([undefined, 'uniquify', 'overwrite', 'prompt'].indexOf(
                 result.conflictAction) < 0) {
      console.error('Error: "conflictAction" parameter to suggest() must be ' +
                    'one of undefined, "uniquify", "overwrite", "prompt"');
      return false;
    }
    return true;
  }
  function suggestCallback(result) {
    if (!suggestable) {
      console.error('suggestCallback may not be called more than once.');
      return;
    }
    suggestable = false;
    if (isValidResult(result)) {
      downloadsInternal.determineFilename(
          downloadId, result.filename, result.conflictAction || "");
    } else {
      downloadsInternal.determineFilename(downloadId, "", "");
    }
  }
  try {
    var results = dispatch([downloadItem, suggestCallback]);
    var async = (results &&
                 results.results &&
                 (results.results.length != 0) &&
                 (results.results[0] === true));
    if (suggestable && !async)
      suggestCallback();
  } catch (e) {
    suggestCallback();
    throw e;
  }
});
exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the feedbackPrivate API.

var binding = require('binding').Binding.create('feedbackPrivate');

var blobNatives = requireNative('blob_natives');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setUpdateArgumentsPostValidate(
      "sendFeedback", function(feedbackInfo, callback) {
    var attachedFileBlobUuid = '';
    var screenshotBlobUuid = '';

    if (feedbackInfo.attachedFile)
      attachedFileBlobUuid =
          blobNatives.GetBlobUuid(feedbackInfo.attachedFile.data);
    if (feedbackInfo.screenshot)
      screenshotBlobUuid =
          blobNatives.GetBlobUuid(feedbackInfo.screenshot);

    feedbackInfo.attachedFileBlobUuid = attachedFileBlobUuid;
    feedbackInfo.screenshotBlobUuid = screenshotBlobUuid;

    return [feedbackInfo, callback];
  });
});

exports.$set('binding', binding.generate());
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var fileSystemNatives = requireNative('file_system_natives');
var GetIsolatedFileSystem = fileSystemNatives.GetIsolatedFileSystem;
var sendRequest = require('sendRequest');
var lastError = require('lastError');
var GetModuleSystem = requireNative('v8_context').GetModuleSystem;
// TODO(sammc): Don't require extension. See http://crbug.com/235689.
var GetExtensionViews = requireNative('runtime').GetExtensionViews;

// For a given |apiName|, generates object with two elements that are used
// in file system relayed APIs:
// * 'bindFileEntryCallback' function that provides mapping between JS objects
//   into actual FileEntry|DirectoryEntry objects.
// * 'entryIdManager' object that implements methods for keeping the tracks of
//   previously saved file entries.
function getFileBindingsForApi(apiName) {
  // Fallback to using the current window if no background page is running.
  var backgroundPage = GetExtensionViews(-1, -1, 'BACKGROUND')[0] || window;
  var backgroundPageModuleSystem = GetModuleSystem(backgroundPage);

  // All windows use the bindFileEntryCallback from the background page so their
  // FileEntry objects have the background page's context as their own. This
  // allows them to be used from other windows (including the background page)
  // after the original window is closed.
  if (window == backgroundPage) {
    var bindFileEntryCallback = function(functionName, apiFunctions) {
      apiFunctions.setCustomCallback(functionName,
          function(name, request, callback, response) {
        if (callback) {
          if (!response) {
            callback();
            return;
          }

          var entries = [];
          var hasError = false;

          var getEntryError = function(fileError) {
            if (!hasError) {
              hasError = true;
              lastError.run(
                  apiName + '.' + functionName,
                  'Error getting fileEntry, code: ' + fileError.code,
                  request.stack,
                  callback);
            }
          }

          // Loop through the response entries and asynchronously get the
          // FileEntry for each. We use hasError to ensure that only the first
          // error is reported. Note that an error can occur either during the
          // loop or in the asynchronous error callback to getFile.
          $Array.forEach(response.entries, function(entry) {
            if (hasError)
              return;
            var fileSystemId = entry.fileSystemId;
            var baseName = entry.baseName;
            var id = entry.id;
            var fs = GetIsolatedFileSystem(fileSystemId);

            try {
              var getEntryCallback = function(fileEntry) {
                if (hasError)
                  return;
                entryIdManager.registerEntry(id, fileEntry);
                entries.push(fileEntry);
                // Once all entries are ready, pass them to the callback. In the
                // event of an error, this condition will never be satisfied so
                // the callback will not be called with any entries.
                if (entries.length == response.entries.length) {
                  if (response.multiple) {
                    sendRequest.safeCallbackApply(
                        apiName + '.' + functionName, request, callback,
                        [entries]);
                  } else {
                    sendRequest.safeCallbackApply(
                        apiName + '.' + functionName, request, callback,
                        [entries[0]]);
                  }
                }
              }
              // TODO(koz): fs.root.getFile() makes a trip to the browser
              // process, but it might be possible avoid that by calling
              // WebDOMFileSystem::createV8Entry().
              if (entry.isDirectory) {
                fs.root.getDirectory(baseName, {}, getEntryCallback,
                                     getEntryError);
              } else {
                fs.root.getFile(baseName, {}, getEntryCallback, getEntryError);
              }
            } catch (e) {
              if (!hasError) {
                hasError = true;
                lastError.run(apiName + '.' + functionName,
                              'Error getting fileEntry: ' + e.stack,
                              request.stack,
                              callback);
              }
            }
          });
        }
      });
    };
    var entryIdManager = require('entryIdManager');
  } else {
    // Force the fileSystem API to be loaded in the background page. Using
    // backgroundPageModuleSystem.require('fileSystem') is insufficient as
    // requireNative is only allowed while lazily loading an API.
    backgroundPage.chrome.fileSystem;
    var bindFileEntryCallback = backgroundPageModuleSystem.require(
        apiName).bindFileEntryCallback;
    var entryIdManager = backgroundPageModuleSystem.require('entryIdManager');
  }
  return {bindFileEntryCallback: bindFileEntryCallback,
          entryIdManager: entryIdManager};
}

exports.$set('getFileBindingsForApi', getFileBindingsForApi);
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the fileSystem API.

var binding = require('binding').Binding.create('fileSystem');
var sendRequest = require('sendRequest');

var getFileBindingsForApi =
    require('fileEntryBindingUtil').getFileBindingsForApi;
var fileBindings = getFileBindingsForApi('fileSystem');
var bindFileEntryCallback = fileBindings.bindFileEntryCallback;
var entryIdManager = fileBindings.entryIdManager;
var fileSystemNatives = requireNative('file_system_natives');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var fileSystem = bindingsAPI.compiledApi;

  function bindFileEntryFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(fileEntry, callback) {
      var fileSystemName = fileEntry.filesystem.name;
      var relativePath = $String.slice(fileEntry.fullPath, 1);
      return [fileSystemName, relativePath, callback];
    });
  }
  $Array.forEach(['getDisplayPath', 'getWritableEntry', 'isWritableEntry'],
                  bindFileEntryFunction);

  $Array.forEach(['getWritableEntry', 'chooseEntry', 'restoreEntry'],
                  function(functionName) {
    bindFileEntryCallback(functionName, apiFunctions);
  });

  apiFunctions.setHandleRequest('retainEntry', function(fileEntry) {
    var id = entryIdManager.getEntryId(fileEntry);
    if (!id)
      return '';
    var fileSystemName = fileEntry.filesystem.name;
    var relativePath = $String.slice(fileEntry.fullPath, 1);

    sendRequest.sendRequest(this.name, [id, fileSystemName, relativePath],
      this.definition.parameters);
    return id;
  });

  apiFunctions.setHandleRequest('isRestorable',
      function(id, callback) {
    var savedEntry = entryIdManager.getEntryById(id);
    if (savedEntry) {
      sendRequest.safeCallbackApply(
          'fileSystem.isRestorable',
          {},
          callback,
          [true]);
    } else {
      sendRequest.sendRequest(
          this.name, [id, callback], this.definition.parameters);
    }
  });

  apiFunctions.setUpdateArgumentsPostValidate('restoreEntry',
      function(id, callback) {
    var savedEntry = entryIdManager.getEntryById(id);
    if (savedEntry) {
      // We already have a file entry for this id so pass it to the callback and
      // send a request to the browser to move it to the back of the LRU.
      sendRequest.safeCallbackApply(
          'fileSystem.restoreEntry',
          {},
          callback,
          [savedEntry]);
      return [id, false, null];
    } else {
      // Ask the browser process for a new file entry for this id, to be passed
      // to |callback|.
      return [id, true, callback];
    }
  });

  apiFunctions.setCustomCallback('requestFileSystem',
      function(name, request, callback, response) {
    var fileSystem;
    if (response && response.file_system_id) {
      fileSystem = fileSystemNatives.GetIsolatedFileSystem(
          response.file_system_id, response.file_system_path);
    }
    sendRequest.safeCallbackApply(
        'fileSystem.requestFileSystem',
        request,
        callback,
        [fileSystem]);
  });

  // TODO(benwells): Remove these deprecated versions of the functions.
  fileSystem.getWritableFileEntry = function() {
    console.log("chrome.fileSystem.getWritableFileEntry is deprecated");
    console.log("Please use chrome.fileSystem.getWritableEntry instead");
    $Function.apply(fileSystem.getWritableEntry, this, arguments);
  };

  fileSystem.isWritableFileEntry = function() {
    console.log("chrome.fileSystem.isWritableFileEntry is deprecated");
    console.log("Please use chrome.fileSystem.isWritableEntry instead");
    $Function.apply(fileSystem.isWritableEntry, this, arguments);
  };

  fileSystem.chooseFile = function() {
    console.log("chrome.fileSystem.chooseFile is deprecated");
    console.log("Please use chrome.fileSystem.chooseEntry instead");
    $Function.apply(fileSystem.chooseEntry, this, arguments);
  };
});

exports.$set('bindFileEntryCallback', bindFileEntryCallback);
exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the GCM API.

var binding = require('binding').Binding.create('gcm');
var forEach = require('utils').forEach;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var gcm = bindingsAPI.compiledApi;

  apiFunctions.setUpdateArgumentsPostValidate(
    'send', function(message, callback) {
      // Validate message.data.
      var payloadSize = 0;
      forEach(message.data, function(property, value) {
        if (property.length == 0)
          throw new Error("One of data keys is empty.");

        var lowerCasedProperty = property.toLowerCase();
        // Issue an error for forbidden prefixes of property names.
        if (lowerCasedProperty.startsWith("goog.") ||
            lowerCasedProperty.startsWith("google") ||
            property.startsWith("collapse_key")) {
          throw new Error("Invalid data key: " + property);
        }

        payloadSize += property.length + value.length;
      });

      if (payloadSize > gcm.MAX_MESSAGE_SIZE)
        throw new Error("Payload exceeded allowed size limit. Payload size is: "
            + payloadSize);

      if (payloadSize == 0)
        throw new Error("No data to send.");

      return arguments;
    });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Identity API.

var binding = require('binding').Binding.create('identity');

binding.registerCustomHook(function(binding, id, contextType) {
  var apiFunctions = binding.apiFunctions;
  var identity = binding.compiledApi;

  apiFunctions.setHandleRequest('getRedirectURL', function(path) {
    if (path === null || path === undefined)
      path = '/';
    else
      path = String(path);
    if (path[0] != '/')
      path = '/' + path;
    return 'https://' + id + '.chromiumapp.org' + path;
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the image writer private API.

var binding = require('binding').Binding.create('imageWriterPrivate');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setUpdateArgumentsPostValidate(
      'writeFromFile', function(device, fileEntry, options, callback) {
    var fileSystemName = fileEntry.filesystem.name;
    var relativePath = $String.slice(fileEntry.fullPath, 1);
    return [device, fileSystemName, relativePath, callback];
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the input ime API. Only injected into the
// v8 contexts for extensions which have permission for the API.

var binding = require('binding').Binding.create('input.ime');

var Event = require('event_bindings').Event;

var appWindowNatives = requireNative('app_window_natives');

binding.registerCustomHook(function(api) {
  var input_ime = api.compiledApi;

  input_ime.onKeyEvent.dispatchToListener = function(callback, args) {
    var engineID = args[0];
    var keyData = args[1];

    var result = false;
    try {
      result = $Function.call(Event.prototype.dispatchToListener,
          this, callback, args);
    } catch (e) {
      console.error('Error in event handler for onKeyEvent: ' + e.stack);
    }
    if (!input_ime.onKeyEvent.async) {
      input_ime.keyEventHandled(keyData.requestId, result);
    }
  };

  input_ime.onKeyEvent.addListener = function(cb, opt_extraInfo) {
    input_ime.onKeyEvent.async = false;
    if (opt_extraInfo instanceof Array) {
      for (var i = 0; i < opt_extraInfo.length; ++i) {
        if (opt_extraInfo[i] == "async") {
          input_ime.onKeyEvent.async = true;
        }
      }
    }
    $Function.call(Event.prototype.addListener, this, cb);
  };

  api.apiFunctions.setCustomCallback('createWindow',
      function(name, request, callback, windowParams) {
    if (!callback) {
      return;
    }
    var view;
    if (windowParams && windowParams.frameId) {
      view = appWindowNatives.GetFrame(
          windowParams.frameId, false /* notifyBrowser */);
      view.id = windowParams.frameId;
    }
    callback(view);
  });
});

exports.$set('binding', binding.generate());
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the logPrivate API.
var binding = require('binding').Binding.create('logPrivate');
var sendRequest = require('sendRequest');

var getFileBindingsForApi =
    require('fileEntryBindingUtil').getFileBindingsForApi;
var fileBindings = getFileBindingsForApi('logPrivate');
var bindFileEntryCallback = fileBindings.bindFileEntryCallback;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var fileSystem = bindingsAPI.compiledApi;

  $Array.forEach(['dumpLogs'],
                  function(functionName) {
    bindFileEntryCallback(functionName, apiFunctions);
  });

});

exports.$set('bindFileEntryCallback', bindFileEntryCallback);
exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Media Gallery API.

var binding = require('binding').Binding.create('mediaGalleries');
var blobNatives = requireNative('blob_natives');
var mediaGalleriesNatives = requireNative('mediaGalleries');

var blobsAwaitingMetadata = {};
var mediaGalleriesMetadata = {};

function createFileSystemObjectsAndUpdateMetadata(response) {
  var result = [];
  mediaGalleriesMetadata = {};  // Clear any previous metadata.
  if (response) {
    for (var i = 0; i < response.length; i++) {
      var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject(
          response[i].fsid);
      $Array.push(result, filesystem);
      var metadata = response[i];
      delete metadata.fsid;
      mediaGalleriesMetadata[filesystem.name] = metadata;
    }
  }
  return result;
}

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // getMediaFileSystems and addUserSelectedFolder use a custom callback so that
  // they can instantiate and return an array of file system objects.
  apiFunctions.setCustomCallback('getMediaFileSystems',
                                 function(name, request, callback, response) {
    var result = createFileSystemObjectsAndUpdateMetadata(response);
    if (callback)
      callback(result);
  });

  apiFunctions.setCustomCallback('addUserSelectedFolder',
      function(name, request, callback, response) {
    var fileSystems = [];
    var selectedFileSystemName = "";
    if (response && 'mediaFileSystems' in response &&
        'selectedFileSystemIndex' in response) {
      fileSystems = createFileSystemObjectsAndUpdateMetadata(
          response['mediaFileSystems']);
      var selectedFileSystemIndex = response['selectedFileSystemIndex'];
      if (selectedFileSystemIndex >= 0) {
        selectedFileSystemName = fileSystems[selectedFileSystemIndex].name;
      }
    }
    if (callback)
      callback(fileSystems, selectedFileSystemName);
  });

  apiFunctions.setHandleRequest('getMediaFileSystemMetadata',
                                function(filesystem) {
    if (filesystem && filesystem.name &&
        filesystem.name in mediaGalleriesMetadata) {
      return mediaGalleriesMetadata[filesystem.name];
    }
    return {
      'name': '',
      'galleryId': '',
      'isRemovable': false,
      'isMediaDevice': false,
      'isAvailable': false,
    };
  });

  apiFunctions.setUpdateArgumentsPostValidate('getMetadata',
      function(mediaFile, options, callback) {
    var blobUuid = blobNatives.GetBlobUuid(mediaFile)
    // Store the blob in a global object to keep its refcount nonzero -- this
    // prevents the object from being garbage collected before any metadata
    // parsing gets to occur (see crbug.com/415792).
    blobsAwaitingMetadata[blobUuid] = mediaFile;
    return [blobUuid, options, callback];
  });

  apiFunctions.setCustomCallback('getMetadata',
      function(name, request, callback, response) {
    if (response && response.attachedImagesBlobInfo) {
      for (var i = 0; i < response.attachedImagesBlobInfo.length; i++) {
        var blobInfo = response.attachedImagesBlobInfo[i];
        var blob = blobNatives.TakeBrowserProcessBlob(
            blobInfo.blobUUID, blobInfo.type, blobInfo.size);
        response.metadata.attachedImages.push(blob);
      }
    }

    if (callback)
      callback(response ? response.metadata : null);

    // The UUID was in position 0 in the setUpdateArgumentsPostValidate
    // function.
    var uuid = request.args[0];
    delete blobsAwaitingMetadata[uuid];
  });
});

exports.$set('binding', binding.generate());
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom bindings for the notifications API.
//
var binding = require('binding').Binding.create('notifications');

var sendRequest = require('sendRequest').sendRequest;
var exceptionHandler = require('uncaught_exception_handler');
var imageUtil = require('imageUtil');
var lastError = require('lastError');
var notificationsPrivate = requireNative('notifications_private');

function imageDataSetter(context, key) {
  var f = function(val) {
    this[key] = val;
  };
  return $Function.bind(f, context);
}

// A URL Spec is an object with the following keys:
//  path: The resource to be downloaded.
//  width: (optional) The maximum width of the image to be downloaded in device
//         pixels.
//  height: (optional) The maximum height of the image to be downloaded in
//          device pixels.
//  callback: A function to be called when the URL is complete. It
//    should accept an ImageData object and set the appropriate
//    field in |notificationDetails|.
function getUrlSpecs(imageSizes, notificationDetails) {
  var urlSpecs = [];

  // |iconUrl| might be optional for notification updates.
  if (notificationDetails.iconUrl) {
    $Array.push(urlSpecs, {
      path: notificationDetails.iconUrl,
      width: imageSizes.icon.width * imageSizes.scaleFactor,
      height: imageSizes.icon.height * imageSizes.scaleFactor,
      callback: imageDataSetter(notificationDetails, 'iconBitmap')
    });
  }

  // |appIconMaskUrl| is optional.
  if (notificationDetails.appIconMaskUrl) {
    $Array.push(urlSpecs, {
      path: notificationDetails.appIconMaskUrl,
      width: imageSizes.appIconMask.width * imageSizes.scaleFactor,
      height: imageSizes.appIconMask.height * imageSizes.scaleFactor,
      callback: imageDataSetter(notificationDetails, 'appIconMaskBitmap')
    });
  }

  // |imageUrl| is optional.
  if (notificationDetails.imageUrl) {
    $Array.push(urlSpecs, {
      path: notificationDetails.imageUrl,
      width: imageSizes.image.width * imageSizes.scaleFactor,
      height: imageSizes.image.height * imageSizes.scaleFactor,
      callback: imageDataSetter(notificationDetails, 'imageBitmap')
    });
  }

  // Each button has an optional icon.
  var buttonList = notificationDetails.buttons;
  if (buttonList && typeof buttonList.length === 'number') {
    var numButtons = buttonList.length;
    for (var i = 0; i < numButtons; i++) {
      if (buttonList[i].iconUrl) {
        $Array.push(urlSpecs, {
          path: buttonList[i].iconUrl,
          width: imageSizes.buttonIcon.width * imageSizes.scaleFactor,
          height: imageSizes.buttonIcon.height * imageSizes.scaleFactor,
          callback: imageDataSetter(buttonList[i], 'iconBitmap')
        });
      }
    }
  }

  return urlSpecs;
}

function replaceNotificationOptionURLs(notification_details, callback) {
  var imageSizes = notificationsPrivate.GetNotificationImageSizes();
  var url_specs = getUrlSpecs(imageSizes, notification_details);
  if (!url_specs.length) {
    callback(true);
    return;
  }

  var errors = 0;

  imageUtil.loadAllImages(url_specs, {
    onerror: function(index) {
      errors++;
    },
    oncomplete: function(imageData) {
      if (errors > 0) {
        callback(false);
        return;
      }
      for (var index = 0; index < url_specs.length; index++) {
        var url_spec = url_specs[index];
        url_spec.callback(imageData[index]);
      }
      callback(true);
    }
  });
}

function genHandle(name, failure_function) {
  return function(id, input_notification_details, callback) {
    // TODO(dewittj): Remove this hack. This is used as a way to deep
    // copy a complex JSON object.
    var notification_details = $JSON.parse(
        $JSON.stringify(input_notification_details));
    var that = this;
    var stack = exceptionHandler.getExtensionStackTrace();
    replaceNotificationOptionURLs(notification_details, function(success) {
      if (success) {
        sendRequest(that.name,
            [id, notification_details, callback],
            that.definition.parameters, {__proto__: null, stack: stack});
        return;
      }
      lastError.run(name,
                    'Unable to download all specified images.',
                    stack,
                    failure_function, [callback || function() {}, id]);
    });
  };
}

var handleCreate = genHandle('notifications.create',
                             function(callback, id) { callback(id); });
var handleUpdate = genHandle('notifications.update',
                             function(callback, id) { callback(false); });

var notificationsCustomHook = function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  apiFunctions.setHandleRequest('create', handleCreate);
  apiFunctions.setHandleRequest('update', handleUpdate);
};

binding.registerCustomHook(notificationsCustomHook);

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the omnibox API. Only injected into the v8 contexts
// for extensions which have permission for the omnibox API.

var binding = require('binding').Binding.create('omnibox');

var eventBindings = require('event_bindings');
var sendRequest = require('sendRequest').sendRequest;

// Remove invalid characters from |text| so that it is suitable to use
// for |AutocompleteMatch::contents|.
function sanitizeString(text, shouldTrim) {
  // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|.
  // 0x2028 = line separator; 0x2029 = paragraph separator.
  var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm;
  if (shouldTrim)
    text = text.trimLeft();
  return text.replace(kRemoveChars, '');
}

// Parses the xml syntax supported by omnibox suggestion results. Returns an
// object with two properties: 'description', which is just the text content,
// and 'descriptionStyles', which is an array of style objects in a format
// understood by the C++ backend.
function parseOmniboxDescription(input) {
  var domParser = new DOMParser();

  // The XML parser requires a single top-level element, but we want to
  // support things like 'hello, <match>world</match>!'. So we wrap the
  // provided text in generated root level element.
  var root = domParser.parseFromString(
      '<fragment>' + input + '</fragment>', 'text/xml');

  // DOMParser has a terrible error reporting facility. Errors come out nested
  // inside the returned document.
  var error = root.querySelector('parsererror div');
  if (error) {
    throw new Error(error.textContent);
  }

  // Otherwise, it's valid, so build up the result.
  var result = {
    description: '',
    descriptionStyles: []
  };

  // Recursively walk the tree.
  function walk(node) {
    for (var i = 0, child; child = node.childNodes[i]; i++) {
      // Append text nodes to our description.
      if (child.nodeType == Node.TEXT_NODE) {
        var shouldTrim = result.description.length == 0;
        result.description += sanitizeString(child.nodeValue, shouldTrim);
        continue;
      }

      // Process and descend into a subset of recognized tags.
      if (child.nodeType == Node.ELEMENT_NODE &&
          (child.nodeName == 'dim' || child.nodeName == 'match' ||
           child.nodeName == 'url')) {
        var style = {
          'type': child.nodeName,
          'offset': result.description.length
        };
        $Array.push(result.descriptionStyles, style);
        walk(child);
        style.length = result.description.length - style.offset;
        continue;
      }

      // Descend into all other nodes, even if they are unrecognized, for
      // forward compat.
      walk(child);
    }
  };
  walk(root);

  return result;
}

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setUpdateArgumentsPreValidate('setDefaultSuggestion',
                                             function(suggestResult) {
    if (suggestResult.content != undefined) {  // null, etc.
      throw new Error(
          'setDefaultSuggestion cannot contain the "content" field');
    }
    return [suggestResult];
  });

  apiFunctions.setHandleRequest('setDefaultSuggestion', function(details) {
    var parseResult = parseOmniboxDescription(details.description);
    sendRequest(this.name, [parseResult], this.definition.parameters);
  });

  apiFunctions.setUpdateArgumentsPostValidate(
      'sendSuggestions', function(requestId, userSuggestions) {
    var suggestions = [];
    for (var i = 0; i < userSuggestions.length; i++) {
      var parseResult = parseOmniboxDescription(
          userSuggestions[i].description);
      parseResult.content = userSuggestions[i].content;
      $Array.push(suggestions, parseResult);
    }
    return [requestId, suggestions];
  });
});

eventBindings.registerArgumentMassager('omnibox.onInputChanged',
    function(args, dispatch) {
  var text = args[0];
  var requestId = args[1];
  var suggestCallback = function(suggestions) {
    chrome.omnibox.sendSuggestions(requestId, suggestions);
  };
  dispatch([text, suggestCallback]);
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the pageAction API.

var binding = require('binding').Binding.create('pageAction');

var setIcon = require('setIcon').setIcon;
var sendRequest = require('sendRequest').sendRequest;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('setIcon', function(details, callback) {
    setIcon(details, function(args) {
      sendRequest(this.name, [args, callback], this.definition.parameters);
    }.bind(this));
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the pageCapture API.

var binding = require('binding').Binding.create('pageCapture');

var handleUncaughtException = require('uncaught_exception_handler').handle;
var pageCaptureNatives = requireNative('page_capture');
var CreateBlob = pageCaptureNatives.CreateBlob;
var SendResponseAck = pageCaptureNatives.SendResponseAck;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setCustomCallback('saveAsMHTML',
      function(name, request, callback, response) {
    if (response)
      response = CreateBlob(response.mhtmlFilePath, response.mhtmlFileLength);

    try {
      callback(response);
    } catch (e) {
      handleUncaughtException(
          'Error in chrome.pageCapture.saveAsMHTML callback', e, request.stack);
    } finally {
      // Notify the browser. Now that the blob is referenced from JavaScript,
      // the browser can drop its reference to it.
      SendResponseAck(request.id);
    }
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the syncFileSystem API.

var binding = require('binding').Binding.create('syncFileSystem');

var eventBindings = require('event_bindings');
var fileSystemNatives = requireNative('file_system_natives');
var syncFileSystemNatives = requireNative('sync_file_system');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  // Functions which take in an [instanceOf=FileEntry].
  function bindFileEntryFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(entry, callback) {
      var fileSystemUrl = entry.toURL();
      return [fileSystemUrl, callback];
    });
  }
  $Array.forEach(['getFileStatus'], bindFileEntryFunction);

  // Functions which take in a FileEntry array.
  function bindFileEntryArrayFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(entries, callback) {
      var fileSystemUrlArray = [];
      for (var i=0; i < entries.length; i++) {
        $Array.push(fileSystemUrlArray, entries[i].toURL());
      }
      return [fileSystemUrlArray, callback];
    });
  }
  $Array.forEach(['getFileStatuses'], bindFileEntryArrayFunction);

  // Functions which take in an [instanceOf=DOMFileSystem].
  function bindFileSystemFunction(functionName) {
    apiFunctions.setUpdateArgumentsPostValidate(
        functionName, function(filesystem, callback) {
      var fileSystemUrl = filesystem.root.toURL();
      return [fileSystemUrl, callback];
    });
  }
  $Array.forEach(['getUsageAndQuota'], bindFileSystemFunction);

  // Functions which return an [instanceOf=DOMFileSystem].
  apiFunctions.setCustomCallback('requestFileSystem',
      function(name, request, callback, response) {
    var result = null;
    if (response) {
      result = syncFileSystemNatives.GetSyncFileSystemObject(
          response.name, response.root);
    }
    if (callback)
      callback(result);
  });

  // Functions which return an array of FileStatusInfo object
  // which has [instanceOf=FileEntry].
  apiFunctions.setCustomCallback('getFileStatuses',
      function(name, request, callback, response) {
    var results = [];
    if (response) {
      for (var i = 0; i < response.length; i++) {
        var result = {};
        var entry = response[i].entry;
        result.fileEntry = fileSystemNatives.GetFileEntry(
            entry.fileSystemType,
            entry.fileSystemName,
            entry.rootUrl,
            entry.filePath,
            entry.isDirectory);
        result.status = response[i].status;
        result.error = response[i].error;
        $Array.push(results, result);
      }
    }
    if (callback)
      callback(results);
  });
});

eventBindings.registerArgumentMassager(
    'syncFileSystem.onFileStatusChanged', function(args, dispatch) {
  // Make FileEntry object using all the base string fields.
  var fileEntry = fileSystemNatives.GetFileEntry(
      args[0].fileSystemType,
      args[0].fileSystemName,
      args[0].rootUrl,
      args[0].filePath,
      args[0].isDirectory);

  // Combine into a single dictionary.
  var fileInfo = new Object();
  fileInfo.fileEntry = fileEntry;
  fileInfo.status = args[1];
  if (fileInfo.status == "synced") {
    fileInfo.action = args[2];
    fileInfo.direction = args[3];
  }
  dispatch([fileInfo]);
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the systemIndicator API.
// TODO(dewittj) Refactor custom binding to reduce redundancy between the
// extension action APIs.

var binding = require('binding').Binding.create('systemIndicator');

var setIcon = require('setIcon').setIcon;
var sendRequest = require('sendRequest').sendRequest;

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  apiFunctions.setHandleRequest('setIcon', function(details, callback) {
    setIcon(details, function(args) {
      sendRequest(this.name, [args, callback], this.definition.parameters);
    }.bind(this));
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the Tab Capture API.

var binding = require('binding').Binding.create('tabCapture');
var lastError = require('lastError');

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;

  function proxyToGetUserMedia(name, request, callback, response) {
    if (!callback)
      return;

    if (!response) {
      // When the response is missing, runtime.lastError has already been set.
      // See chrome/browser/extensions/api/tab_capture/tab_capture_api.cc.
      callback(null);
      return;
    }

    // Convenience function for processing webkitGetUserMedia() error objects to
    // provide runtime.lastError messages for the tab capture API.
    function getErrorMessage(error, fallbackMessage) {
      if (!error || (typeof error.message != 'string'))
        return fallbackMessage;
      return error.message.replace(/(navigator\.)?(webkit)?GetUserMedia/gi,
                                   name);
    }

    var options = {};
    if (response.audioConstraints)
      options.audio = response.audioConstraints;
    if (response.videoConstraints)
      options.video = response.videoConstraints;
    try {
      navigator.webkitGetUserMedia(
          options,
          function onSuccess(media_stream) {
            callback(media_stream);
          },
          function onError(error) {
            lastError.run(
                name,
                getErrorMessage(error, "Failed to start MediaStream."),
                request.stack,
                function() { callback(null); });
          });
    } catch (error) {
      lastError.run(name,
                    getErrorMessage(error, "Invalid argument(s)."),
                    request.stack,
                    function() { callback(null); });
    }
  }

  apiFunctions.setCustomCallback('capture', proxyToGetUserMedia);
  apiFunctions.setCustomCallback('captureOffscreenTab', proxyToGetUserMedia);
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the tabs API.

var binding = require('binding').Binding.create('tabs');

var messaging = require('messaging');
var OpenChannelToTab = requireNative('messaging_natives').OpenChannelToTab;
var sendRequestIsDisabled = requireNative('process').IsSendRequestDisabled();
var forEach = require('utils').forEach;

binding.registerCustomHook(function(bindingsAPI, extensionId) {
  var apiFunctions = bindingsAPI.apiFunctions;
  var tabs = bindingsAPI.compiledApi;

  apiFunctions.setHandleRequest('connect', function(tabId, connectInfo) {
    var name = '';
    var frameId = -1;
    if (connectInfo) {
      name = connectInfo.name || name;
      frameId = connectInfo.frameId;
      if (typeof frameId == 'undefined' || frameId < 0)
        frameId = -1;
    }
    var portId = OpenChannelToTab(tabId, frameId, extensionId, name);
    return messaging.createPort(portId, name);
  });

  apiFunctions.setHandleRequest('sendRequest',
                                function(tabId, request, responseCallback) {
    if (sendRequestIsDisabled)
      throw new Error(sendRequestIsDisabled);
    var port = tabs.connect(tabId, {name: messaging.kRequestChannel});
    messaging.sendMessageImpl(port, request, responseCallback);
  });

  apiFunctions.setHandleRequest('sendMessage',
      function(tabId, message, options, responseCallback) {
    var connectInfo = {
      name: messaging.kMessageChannel
    };
    if (options) {
      forEach(options, function(k, v) {
        connectInfo[k] = v;
      });
    }

    var port = tabs.connect(tabId, connectInfo);
    messaging.sendMessageImpl(port, message, responseCallback);
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function watchForTag(tagName, cb) {
  if (!document.body)
    return;

  function findChildTags(queryNode) {
    $Array.forEach(queryNode.querySelectorAll(tagName), function(node) {
      cb(node);
    });
  }
  // Query tags already in the document.
  findChildTags(document.body);

  // Observe the tags added later.
  var documentObserver = new MutationObserver(function(mutations) {
    $Array.forEach(mutations, function(mutation) {
      $Array.forEach(mutation.addedNodes, function(addedNode) {
        if (addedNode.nodeType == Node.ELEMENT_NODE) {
          if (addedNode.tagName == tagName)
            cb(addedNode);
          findChildTags(addedNode);
        }
      });
    });
  });
  documentObserver.observe(document, {subtree: true, childList: true});
}

// Expose a function to watch the |tagName| introduction via mutation observer.
//
// We employee mutation observer to watch on any introduction of |tagName|
// within document so that we may handle it accordingly (either creating it or
// reporting error due to lack of permission).
// Think carefully about when to call this. On one hand, mutation observer
// functions on document, so we need to make sure document is finished
// parsing. To satisfy this, document.readyState has to be "interactive" or
// after. On the other hand, we intend to do this as early as possible so that
// developer would have no chance to bring in any conflicted property. To meet
// this requirement, we choose "readystatechange" event of window and use
// capturing way.
function addTagWatcher(tagName, cb) {
  var useCapture = true;
  window.addEventListener('readystatechange', function listener(event) {
    if (document.readyState == 'loading')
      return;

    watchForTag(tagName, cb);
    window.removeEventListener(event.type, listener, useCapture);
  }, useCapture);
}

exports.$set('addTagWatcher', addTagWatcher);
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the tts API.

var binding = require('binding').Binding.create('tts');

var idGenerator = requireNative('id_generator');
var sendRequest = require('sendRequest').sendRequest;
var lazyBG = requireNative('lazy_background_page');

binding.registerCustomHook(function(api) {
  var apiFunctions = api.apiFunctions;
  var tts = api.compiledApi;
  var handlers = {};

  function ttsEventListener(event) {
    var eventHandler = handlers[event.srcId];
    if (eventHandler) {
      eventHandler({
                     type: event.type,
                     charIndex: event.charIndex,
                     errorMessage: event.errorMessage
                   });
      if (event.isFinalEvent) {
        delete handlers[event.srcId];
        // Balanced in 'speak' handler.
        lazyBG.DecrementKeepaliveCount();
      }
    }
  }

  // This file will get run if an extension needs the ttsEngine permission, but
  // it doesn't necessarily have the tts permission. If it doesn't, trying to
  // add a listener to chrome.tts.onEvent will fail.
  // See http://crbug.com/122474.
  try {
    tts.onEvent.addListener(ttsEventListener);
  } catch (e) {}

  apiFunctions.setHandleRequest('speak', function() {
    var args = arguments;
    if (args.length > 1 && args[1] && args[1].onEvent) {
      var id = idGenerator.GetNextId();
      args[1].srcId = id;
      handlers[id] = args[1].onEvent;
      // Keep the page alive until the event finishes.
      // Balanced in eventHandler.
      lazyBG.IncrementKeepaliveCount();
    }
    sendRequest(this.name, args, this.definition.parameters);
    return id;
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the ttsEngine API.

var binding = require('binding').Binding.create('ttsEngine');

var eventBindings = require('event_bindings');

eventBindings.registerArgumentMassager('ttsEngine.onSpeak',
    function(args, dispatch) {
  var text = args[0];
  var options = args[1];
  var requestId = args[2];
  var sendTtsEvent = function(event) {
    chrome.ttsEngine.sendTtsEvent(requestId, event);
  };
  dispatch([text, options, sendTtsEvent]);
});

exports.$set('binding', binding.generate());
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the webrtcDesktopCapturePrivate API.

var binding = require('binding').Binding.create('webrtcDesktopCapturePrivate');
var sendRequest = require('sendRequest').sendRequest;
var idGenerator = requireNative('id_generator');

binding.registerCustomHook(function(bindingsAPI) {
  var apiFunctions = bindingsAPI.apiFunctions;

  var pendingRequests = {};

  function onRequestResult(id, result) {
    if (id in pendingRequests) {
      var callback = pendingRequests[id];
      delete pendingRequests[id];
      callback(result);
    }
  }

  apiFunctions.setHandleRequest('chooseDesktopMedia',
                                function(sources, request, callback) {
    var id = idGenerator.GetNextId();
    pendingRequests[id] = callback;
    sendRequest(this.name,
                [id, sources, request, onRequestResult.bind(null, id)],
                this.definition.parameters);
    return id;
  });

  apiFunctions.setHandleRequest('cancelChooseDesktopMedia', function(id) {
    if (id in pendingRequests) {
      delete pendingRequests[id];
      sendRequest(this.name, [id], this.definition.parameters);
    }
  });
});

exports.$set('binding', binding.generate());
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Custom binding for the webstore API.

var webstoreNatives = requireNative('webstore');
var Event = require('event_bindings').Event;

function Installer() {
  this._pendingInstall = null;
  this.onInstallStageChanged =
      new Event(null, [{name: 'stage', type: 'string'}], {unmanaged: true});
  this.onDownloadProgress =
      new Event(null, [{name: 'progress', type: 'number'}], {unmanaged: true});
}

Installer.prototype.install = function(url, onSuccess, onFailure) {
  if (this._pendingInstall)
    throw new Error('A Chrome Web Store installation is already pending.');
  if (url !== undefined && typeof(url) !== 'string') {
    throw new Error(
        'The Chrome Web Store item link URL parameter must be a string.');
  }
  if (onSuccess !== undefined && typeof(onSuccess) !== 'function')
    throw new Error('The success callback parameter must be a function.');
  if (onFailure !== undefined && typeof(onFailure) !== 'function')
    throw new Error('The failure callback parameter must be a function.');

  // Since we call Install() with a bool for if we have listeners, listeners
  // must be set prior to the inline installation starting (this is also
  // noted in the Event documentation in
  // chrome/common/extensions/api/webstore.json).
  var installId = webstoreNatives.Install(
      this.onInstallStageChanged.hasListeners(),
      this.onDownloadProgress.hasListeners(),
      url,
      onSuccess,
      onFailure);
  if (installId !== undefined) {
    this._pendingInstall = {
      installId: installId,
      onSuccess: onSuccess,
      onFailure: onFailure
    };
  }
};

Installer.prototype.onInstallResponse =
    function(installId, success, error, resultCode) {
  var pendingInstall = this._pendingInstall;
  if (!pendingInstall || pendingInstall.installId != installId) {
    // TODO(kalman): should this be an error?
    return;
  }

  try {
    if (success && pendingInstall.onSuccess)
      pendingInstall.onSuccess();
    else if (!success && pendingInstall.onFailure)
      pendingInstall.onFailure(error, resultCode);
  } catch (e) {
    console.error('Exception in chrome.webstore.install response handler: ' +
                  e.stack);
  } finally {
    this._pendingInstall = null;
  }
};

Installer.prototype.onInstallStageChanged = function(installStage) {
  this.onInstallStageChanged.dispatch(installStage);
};

Installer.prototype.onDownloadProgress = function(progress) {
  this.onDownloadProgress.dispatch(progress);
};

var installer = new Installer();

var chromeWebstore = {
  install: function (url, onSuccess, onFailure) {
    installer.install(url, onSuccess, onFailure);
  },
  onInstallStageChanged: installer.onInstallStageChanged,
  onDownloadProgress: installer.onDownloadProgress
};

exports.$set('binding', chromeWebstore);

// Called by webstore_bindings.cc.
exports.onInstallResponse =
    Installer.prototype.onInstallResponse.bind(installer);
exports.onInstallStageChanged =
    Installer.prototype.onInstallStageChanged.bind(installer);
exports.onDownloadProgress =
    Installer.prototype.onDownloadProgress.bind(installer);
‰PNG


IHDR**oÊÐ`IDATx^í×1
 CÑÜÿÒ
nò‡.…´3(¥¼Aé $ހìÉC;—‚Ëߎ DŽ,`ºíN3QlÃyJ 	ÝÿúAõg
uJŒ!îC™7 £'*膟”.Ms€ß*IEND®B`‚‰PNG


IHDRJAÌuϵIDATx^µÓQj1@QÁ¸•î-º!áý
·¯#©#¥ÓK¾($y ˜,;Ùltó¿YvÓÙBz¦«ÀOó(#DQ6«&«}úŒɝE'¥Ú̲Œ®¦°Ú,”9VF|۲á&ÓÑòï&Ýä~Ÿ¯«½!jY͑›…Èa¶›¼­RoFZ7'•”Ê!€fg¿7m¼>wÓ%Zëá§Ùa-Ÿ-Ÿ4…­çȿõޤ‘I]ÏIEND®B`‚‰PNG


IHDR có¨5IDATxՕËjA†ϩK§3Ã\’˜‹†`†€‚.²qe\Ü	¾„o'¾…{‚
b,‚1—I撮ªsq¦@IYôHþ‡ê¢ûÿ8ç‡.TU¸K¸c9¸ENâွAMIõ2Ií'>‹"Ä&/ËlI^=ê>ïuë‡ü­ÏÅqê+'‘‡$_ñ`œRH.&’OäBÚêø¨3"XXl83oq‚)'{‹ªÚrØ-¬8+ÖN񓊀3g ×?Ç,P½þJ~®›AR¬S/À(Z±"€fõI³É'³†Œ½Žõý 
I±»̀ÜÓEO‰<{â³Ëj–-–æ`DÎÂFËŽ8‰vÜ’¨žT´³\
âýy»Ñò+¥‘ÚL¬֛æ4ÈZÃ>[ñW¤÷Jóbµ„Õ9<¦µùÓ˰ý 	!­Ÿg~|÷}<1}ÜöÝ9ŒY€ˆP"–‚ùýÞY¼Ùk×ÑqÅûWio˜æ|<……¶‡ãQª¢\ˆžcÓâjÓ_Œ¢™!d&¦@Çd@aw¹`E\ZpK…Y._~Ž[[âǯñë'KÄõGd‰mˆàíçØpæŠIJX )T¼ŠËS‚*–"ov7k³!BøsbYK"6<幘óXféÀÇt)†øoµ†5»Ï—;Ðl0YS’ˆO	Eÿéwý²×^)MÞb®Š¢&òõ
÷퇸Eÿÿökui`bóóJIEND®B`‚‰PNG


IHDR có¨ºIDATxìAÄ0Äöÿÿ
“5dR¢¾¡§–“%3òo?|_à=ۀB«VsfVUD4´•4Æðދ¿g˜	$GH$ÝÏ
½½4łwïÞõtuådf-Y´øÄñsfϞ7gNVFƶ­[oݺOKM»ùüý¦¨G©:O›‚·”Mš8hV[k묙3s³²ê–.YÛÝÙyôÈÑϟ?£XðôɓæƦCfe¤·67×TT¦¥¤̙3çÐÁC
µõûöî}ñêÍÕö”¡¢CEÞĊÈ1¯®mX³zumUõÔÉSª+*:´pB¼윆ں+—/£ÑÓÇOښ›?zÔÞÚZ]YYUQ	4´²¼",(¸º²êѣG@5罹=‹}™(þ.[àýtŸ…ÚXYoݺe͚5±QQ“ú'̙9ÓÔÈ('+\è¼x񢬤$9!±¡®nýÚuõ
Í
@¥%EÅ;·ïHIJÊË+ؽpʻ«|_gý¼÷ì¹˱QÑ<ؾ}{Bl\o߂yó+ËʁpíÚ5t€ñs÷ΝǏmúòåËãǏ¯\¾Êׯ^ýþõëÔɓGyöòõŸ—7þ><òï-Pÿ?`Ä>{ö
ï߿?wöÜÙ3g€z_¾|ùìéS`ŒÒ%™þùñûôbšXðïǧ?·÷}ŸôµE•ÊFyóçqKã¾6+}mûڤÀ@5£ßÜûse㏕é_[”¿ÖK† JÍ}÷è÷¹e?Öæ~Ÿl÷µ^òkä×Fy ¹”Zðïë»?׷ÿÜPø}¦ç×Nݯµâ_륿6A&ׂ¿¿ÿ>¿üûø¬Ë¾M¶ûÖmøµAèd 	7Žt~~ùóðô¯£Ó®Îø6Ñêk§ö×VUP 4È|mÅ!AwO‰ŸËo²¯IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR có¨IDATxcøOc@‘£|=wîavö5SÓËjj7žµ¶þ~ý$ñýÍÿs­ÿ79ü_¡ö­ÉÿÃÙÿ_Ÿ#͂¿?ÊË;ÃÈx†ççÿº¡ëÿ<¾ÿ3Pãÿ#¹ÿÿþ&ւÑ-à½gÎô¹l(&:”A”Ÿ†‡‰¹ò>ócxæÏðw
;ž&lÁý„„}¡ÉG´O&çM>ÍÊzÓÍáu}jf=¿¤ìõRdÓ̴þs(°ÇõLîÜyypñŽK‡.­®Ÿ}rÆò­.è:¾fÿ¾9›NN\phùžµ³7nŸZ¿¾.ôЦ-W7O¾wjûÉ={ïÜ|øo³+aVšûž:xåøŽ3ÇVîZsv穵ӷní[¾:·íË˧ÙxlÃÂíÿW¨oÚxpÇÑSûnœ5íÚæ¾ó'.þ_­O؂åEóÂË憖Ì/Yݶxy~ÏúžåÓ‹ÖǗ­hZ°:«~Stö‚ݫ7Ìm¨^?oÉæ}gÛ6.X¶cVçÿƒ)„-ø¸{7Ö>ËÁñ<Œ÷YÃëXX¸c¢ǻ‰J¦��Úq]_õu,ãÏv¦ïú÷û+Qüýñã^l,Opr¾nMú?‡›é1ÿÿü ­¨ø´o߽¨¨Ë**DE¯êë?.)ùñà8§<ü¼ŸEÿ/W:üÿÓ}ƒ·4µ±+8¸rY IEND®B`‚‰PNG


IHDR có¨@IDATxcøOc0¢,µàϟ¿ë7ŸmëÙÒ޻õÄé»ÁkN¹¿mëÙÚֻ(òýǯUëÏַo©oÛzìä=ˆ²ۯNšuäԹDŽ}°{ßUuꐘi@öçÏß
¬êíÜÛ߽û¢mZ7óï߿á	³t-›ý£fx…NŸ»ø8PٍÛ/Í\'YzL­mßETY;·êš×þþýgùêFU“gì9sþЂŠúu7o¿Ð6kð	›úë× J  Y߱ÃÆsŠoÔüàø%DYPR½Rèò굧¡±SuÌj_½ú(-ÓÚ9ÃÇ+d²®E³w贃Go¿}÷ÕÚcRyÃÖƮÝVžӁ\¬ÛtVð²¹s0¬Š*WEZº6}pàðM ûý‡¯ÀÈ0´m7²ë¸}÷լÇ̜'ì=t{ùÚ֞Ó¿O؂W¯?Ö6©†ÏÙó€"‰™s>xüôݍ[ρi(’ž¿Ì&ãÛîÁ3€˜»N²pŸ
ôÁÌ'‰J¦~a¦FN†pmÝڍm›ÿýûçäÝcb×jéܥoݝº`֋&N½¥u›7l½¼aëG¿Yy•›‰²à䙻+VŸ¼rí)„»iëù}¯ûݘ·øÈü%Ç»´ïȉ{«7œùêDٮý·¶í¾I”_¿ýüðáۏ¿!ÜOŸ¾ùò”p¿üx÷þËû߾|ý	´àë·_?}‡Xöç§Ï?F^Y4j×8ާóŠIEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR Éú`“vIDATW­Ê=@@P—–؝™«¸…+HÆO« ²7P°	�D‚W¿äxü¼T֫°äÖʝ
3Ë„'Êzu9ë@†€¡8¤‹YŁeÂqèп	†á"4+hxRÁÖ*œ
^ª@çU¸õ=œú9ûéÉ4IEND®B`‚‰PNG


IHDR ì‘?OËIDATx^í–!ƒ@E9µáÔ"h.íÀq4`
8‚ ¡­ùåy¨i`+ ù™ÙýÉΙ٬S–e°ª_¥“EÍÀ!išF]ם*j†Q¥ijCÿpØlÂcú¶՘皣HOß×Ûu‰¬ÙÇßøùãŒ0”îw©ª¤qÄ ²f_C]$RQ|eğãø c¤e!S–e›ÿåyÖÿÀI=0Mč8c
Œa
ˆ{S`ÿ¸l?Hn$М¬µ?fuQVqXÈIEND®B`‚‰PNG


IHDR ì‘?OÍIDATx^í–=
ƒP„=‘•xã,<‡½¥­±··ÕJmòžE ! ä§ÙøÕIŸ ÃìÛ˜AߊVY–þ=ACãmQ´m+J)£ÀoÐØxï/€î{¹湌a(Oϓ·mÜé3_/ÀPUò¹DZ\ŠB†º¦s¦ÏÝ:Æ(’[–-i˜£['ÀËqDwµ¤iú™£Ûç˜߁¦¡Ï-p]¶þmŽQ’$ü_
ÀûxG€­Hœ(Hcg¼?™›ÓK„ˆq¢IEND®B`‚‰PNG


IHDRóÿasRGB®Îé»IDAT8c` 0‚ôGFF¶022–™¬ þÿÿÿ÷=þÜý@||€	*Y¤ZA| aN“ rx)°¢¢¢þãU…)ùí߿V¬XQ
s¦ü"\LLL %äÒ˅Ӏe˖½RØÄ@r”¸l6¹ÖrÅ.`……@÷3®¨ÆjH3ºlb {©4ÿ‹/ð
Áô€ÈéªþWª$Hmª™<P=ÌFæIEND®B`‚‰PNG


IHDRóÿabKGDÿÿÿ ½§“	pHYs
×
×B(›x­IDAT8˕“½‹QÅ÷%QYVX°-„4ÖBÄ/ÔÂZd„÷BÂ$Bì,m3‚X§Ø?@0ÉDE­±,ƒUš%é…`§Á@&̵a“ˆ§zλ÷œÃ{B
çÜM४ލ¢è
+Ai±X/Êår;ÃÄXkÏï€myÖjµ­Çñ}àðh<ï|ß÷Œ1DäDªۉãx:†ÙËõz}'I’×@)¥ÎW*•¡)‹·Ed7+VÕÇÍfs+Ë-—ˇ1œ©'FD+ÜNçóù‘,!"?Vè΁Ë92QÕ;QM«Õê-U=©ª½^¯×vÎ]®gÅ&“é7¾DQt`­½§ªoŽˆ|L]ôòŠÀé\Ó?Óã^†Þ
‚ äyÞ`6›}ú#kܻ¼Ïûý~ƒÿE­V;ž¾‘µ‹69)ð¸˜$ÉÓÁ`ðuUÁZ{hg¹B¡°ÔòZ“'Â04"ÒÉóªZuÎíýsÀd2©g×Äíäc›üvU}°¡×ÖÚ+Kô}Û󼆪ÞHÞQù¦ªCc̫n·û9«ÿj“©ӖJáIEND®B`‚‰PNG


IHDRHHo#!PLTESSS¨i'ÿtRNS@æØfCIDATx^íͱ	!Dс-à°³kiKltFØA00ñG/ûØïE2rj‘²–˵~
vEßPrëB_®RMÔX4›uIEND®B`‚‰PNG


IHDR« mŸˆ	%IDATxÚìœkl×ÇϝÇڻ^¯½kÁ&Ä18Rá… ¥
ÍÒ¨0mTUª]Ú´¤jã¥J[µêîÚ%J£¨š6¾+UWI«¶ˆ6l҄–ŠW<,
¶ƒ»ó¸=3¾cî¬gö^¯q戻³;sçΙ;¿ùßsό!”Rð̳ÛÁ$ë!¤è>ö•ӍŠNtȺ(Èê@G®éÿKõ¬-¶ïFñ¬#0…`ݒ8³«|k=–QèUÇý&ÿM'‹Ä ÷®;4–џÿ˳+/{°z6k°nNœ^.‰ä9E…GU
õÓԂ”±FxüzY"¢H^V¿†j;æÁêYYaÝÒy계²	Lª(‚uŠUê«µ¨–ÉYMƒ¯¸÷mVÏÊë֧N~7«	ûuÀõD0jLÁ:	Zq°ë|FMÞþ§­|­¬‰ýO—â¿Õ™Ç×(Œ%Ž%‰%Uîƒu}ïÛs¶#Ç	ԓo}ãÒý:û@¡_¿¥ƒd=„MürÃÞw×xúP² v±ò¶i°nKœܬ©ô›Žݦ’êVªsŠX¼äY¦h4$‰ð‹èžÕzü•di¶Ly°r¶³û²¿©¥ùçTS%ƒHªë“d"°:¥6©‘ÓbRûPŸUhK­_üŽÇ_Iv„…9‰zGH¶à¨Þÿcâ“ýáp®Ž‚ bœ*èf_ap‹Àêfüº¤Q€÷ ­Ù‘ ½6’õõõk'N
OŒ«ˆ°@èd”‹Ÿ‚€ñ0P‚KA©(;ï?pú¥g÷­x§Èx-Ê)Lº@ýVV,%*²¬ý†\ìfÛ5,–ÇþüJmw&cbWp1uîÏ&猲ʲ´ÝX.lY‚–3Ð'C#~ÃOoÀó{›!º*ç®áÏç5—²aù¡šªŸŽ·Õ?¸:^P'G5VGš"K›k#-KëŒrWs¨qishQÛÝáÝü2:¯Ë [¥•Ö<õû¸úƒ,Î;ÀcÈ}ÛÆïw¨{¡ÝÃ.~XmÇYû¹þ÷²c¥'gû K\jµٛ³¾—­¹ôa'ÛÞ鲾•}·ù€pv1H£Xl}Š¿íñŠ+뮃×6PBªŒÓ ¢‹Øg/Tû
]E¬)ìÞ‚GÖ5À3 ðæyj{ ðò1ŒwÛØ[¿?>ýCÔ܏d2Ó@L…5K1nŠ/5Ìîô#Üú¨ƒ:¥Y}Cºٲ•c]¨„Ëq:Y]k¿tÎĦ‡Š-Åí`ŀd­‹ÚÇYûIV¬}ŒfÇ}‘íÏû›fëËm‡™Ó|@ Ãìù>±҃ۓ¨²éŠJíà'Nõw,‚«ï]±±@û² lÝÐßú
…_âŸ\M~W1B8ú€ˆZ½¥½ŽÃu‚	§K¤U &¼Kz^iÀ
NÙv1NÜSän€´)g; ît5Î.Ò2‡á7̩ܞxºÄ̛\n„«kًL¥bìx›rBŽ4;fÇ,Áe7ïCŠ;7³OJ«oº™ÒƘÝ¡{§žN1›—·ÕPAßPÇþÓ@åg\Æϣ8hŽ«Čg}U2È>Ù\ZE®ò™Åï÷-tȱF¹‹¹§„óèv.ɩ^Ì%VÛé'ÆÙö¤8	Nmœ!‡‹™fíYà¦&RgX/ÇÄ-×ÛMɁZ)]`%А;“¯ª	BãaÐ1n½oYNœ£Ó@ÍÍ
(*…·Î,®@â@•d,’¢h©-„òLF’7ÑñùÒ>N–̳½µ€CÜ6§W(͔*Ñ×rX!“sÀGgX‘G?uÈF-¼ëN¨­‘ Æ/Á(]yÞ0là:‚îÃØTqølOÇè㉷Бå¶Ö"üHq
]ª
Á7U;yV]×Çyµ´Š€ŠX·h¡©˜õ~;pN Ÿá€¬fWé\Ó4MÏ<»Xqî>45aÊ)õë©scÐÞBn¨)§®<¨"Š蚥(×É4PmÌR.üWÒÒEø»]TrÞJqé?íšÊ€ãçdúÐ=8u^`ÕøØÖ¬ҵ‹ïÛGyÛ\̈$ñ½<qR¬Âý’*àŸH¯T¢|('dɵŽy+R÷['Uµʻ—}äí8
~`U³õ–™àÇÖ5ŸXOàogT1£	ÎïL>‚íÿ̇«â¤Sµ0—㬄áfûñ<éµd'©<PÆçÀè4ã6•gýÉ޺?î:8’EÅó¹U~å8µ_àd?w.R™h¬%ðàr\ÖPøõ_qVSç>ü›¿é¡<>é¤^®Ãù‡<‘YR-#uv˜Ý4œ‚v0_JM¯•ã†êd}Òǥ¢ÌÇÔ|Öön€¢(¿$ñãn•Í•»fý2
W¨Â®SøÇY^?9¬
»ÜâTÐtª	‚øBÅØÄÔ+–ÓáéY†a-çG,g[¢©œ4»YºX(ÐÅÝh	æcß|‚Õöòõ?¨­®–DY’‹ÙÙRO-›%“MîF<ë´ªšֳkcàs|¼Ë[ÎËץ¾ÈRÎTÖ;È2åRh·CÏ嗯§ý¥'ž¹úTu¿;ßæñêÆZ>º®t;ª¨Z¿$‰«1^}ß
VÏ<+<Ábö³/5~?;‘y͘±»M¶ìt]ƒµmþ¼ jº>Ž7@‡ªgžÝ2¬†½üÅÈ#ì›%¥¦%³¬\+Õ!äÓ öuúõq]§Ûvmô÷ºܳ…Õv_$šŸø•®ëàD¬õUSTh¿'uHQ™“6õ<.Þý‘+^w{VX
ûé“
Û'FÇ>©f•a>§Ê?h®ӠÊ/ÛՔšjªªŠrP’¥¡¢þÝëjÏf|‚åfOüàʗ%YÞ'ˆB“ ŠÄü[TՇW˔ÿ»ê iúE¬~!}ãÓù³	Þ˳2Àjٶo¤eIö­W•ì}1»¢­I~#
ü·&è¿ú/9=™ò`õlFaõ̳Û:fõ̳¹dÿ`´Ï#Õ?¼ڳIEND®B`‚‰PNG


IHDRóÿasRGB®Îé“IDAT8ÅR=KÃPM^:XA€„:ÙÁA'‹tÉP¨MºDñüupqr¯n’„Št‰sI~‚uUZ:”ÄsӼÚBœzá½ûqî¹ïÞ÷ž LZÄ1
ˆº®hS<ˆ¢èÒqœøÑ0g¤@¡P˜K¥RW ¯‚Pƒ~¤dØY؛0›Ýnw«^¯ð"27 E"Cσ°lÛöë&”Ëå3øn’³;îDâIh{—1¶?ÇɈ«ª*Aðîûþg&“i¢“SÄZðŸ‰Ëx&µÍÉ1È؊$I<‡°d4ºŸXà©|æ«’~¹3£‚HƒqŽYïòùü±qZê T*-’?N˜eY'‚pßn·7<Ïû"-!VÅ78d;ÉÉBd“žfv:Z£ÑøîC¿»¦iӸý)Y–gÑéS†ûøՑ<#öz½[×u_xŒ4âKP.
¼¡ëìøPR±XL+Šr
s
ËÅzÀúó# dȿ¾rŸ2Éý°ü¥ãgúfIEND®B`‚‰PNG


IHDR&”N:‡IDAT(SI/CQ†¿µ_„¥„Ÿ 6XX³°·"$jèÀ5Tç•HŒMìÄXAՐâVU¥† ¸´h¯×ù·Q¹¢oò,Î9ϳ9P
DTF?ç÷ e?ð˜1ç)£CQ°Wû|~œßé8NçLI޼ːÇn!öz½8¹Ö9}“3Îjêµòؗ±ÛíAüJÇvâ¿ÇwG"´ÙlEpC.—[†fۊg‰k¸¸Ëá^ËKø?¸!§sñKÇ/¦„O2ØOfqpöEêV74:êD,GH}.	v¹¡áá¨â°v¨•»¢!R”!¨y¬DµËÑGÌD¢îĊîárC48¨àH„‹{Ohµã娛¬4Ï5b6¬ï$\nˆŽž籰ûےWȕ…Ƞ~²
›	W6d·;dèZ
šFßPÃT5ͅ‚²ZíXO¤Ñ8]ógdÐlB4õn¨¿ߊ¶…Ö#ã®w­½Ö>PggÚÛ;̠½u[,ø*eŽ;5 ¶‹IEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœ­IDATxÚíÓÁ
 1tLdM˜hhÿGð¢ñú™¹Næ«jü¼ÿ¶éz€@ €@ €@ €@ €@ €@ €@ §
(pÐIEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœ÷IDATxÚíÜ!¯OÀáËÌfŒ±	Š"P(EÓ4Âo£Ñ4Q"™D£‰¢DA!I’¢llw³Ùlw÷r¤|Åû<ÛûÞó+÷ßs66þêYuÜ&æ°T?ª[Õ™À:ï«s¶27€¥úU=ªÛÎÌÖùZ]­vÙÒÌÖyU²©¹,ÕVu·Úgc3XçcuÑÖæ°ÎÓê˜íÍ
`©¾W7«ݶ83€uÞUgmrnKµS=¬ÙèÌÖùR]±չ¬ó¢:a»sXªŸÕíj¯-Ï`Õ›žÀRý®žTGm|fëlV7üv07€uÞVglnKµ]ݯx
3XçSuɓ˜À:ŽS‡à8U§ž÷tæ°þvð¸:â)Í`oÕ5ǩsXçµãÔÙ8N@[ÕÌàeuÒ›€7”†àÅá?yKÙOÁL
À?ƒ†àßÁCخîUû=…y¼©NÛþ¼6«ëþ¦Ÿ€³ðÁx1dh^
Às/‡ÎàsuÙVç°S=¨Úè¼|"fh>58Ÿ‰€E
À5îàc
À1æÐcÀ1æÐcÀ1&ðßù”ýv!«:kÍIEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœIDATxÚíϋVU‡Õ13q“©¦ø´Ò$ÁDðOðq)ji‹ĕF¨­Ú%º‘péN"šm‹7“Š2î’’À
ŒsÝ܁wӼßsç¾Ü{î}¸ËùžŸ‡yß÷žsÏ]°@DDDDDDDDDDDDDDDDDDDDDDDDDDD¤CcÎB¿ø¸ìÞrFú'@1p½®;לþ	0x=¾–9Kù†{|Ì^SÀA`±3šYø@Qƒ³×]àg6£ðk ¦o€םå³×-`³ÝòðG(@ü	|謷8ü »€Ë3
<pö[~D€«¯Ëoý)¼ö˜BÃO` Þrà$ð$Q‚ݦѲð«0P{ð}‚πí¦Ңðç#À@;ŸOƒü
l0–„_‡e{GÁ6'€%¦Ԃðë`à#á×`»§Lªá×)@ÙþàA Ý`‹‰5~Ý”ýxø-¸và’r“áB€²?ïÿÚ?lz
†¼¸¨b¿>
´ÿ0nŠ
…`Ø\¡o+>5ɆÂOXš¾MÝô¬þ
l(yÃD¿Âjà‰}ý*ЏOLµð+.O+ú;X@ú©Omº*ö÷fʮàËÀ}· 
àl˜Wö|¦y	P;Æ}aH­ ?&£Ž•“ÌUëI/Cë˜Et˰¢Ü"6W­÷ ?®'ŒýƐZû ?
`}p짆Ô9£y
p(8ö‡Թ¦y
p>8ö­Öˆ OîǾ~HG
§S	¿æªóä)Àtp싛ؠ¢
 ~(À(¸í—À~pρý`¯7‚¼ì­`ƒ†ֺîbP÷Ø·ËÁ`2ºUÜ
!ÝÀ-a=ໄ1G6…T€¼¶…/MóQ·…×'Љ†˜V&ôw™†´X‚D~N}g€†µ\‚ 3ÀéÔ|84	müRõÈ×àãáÇL²A	õÇ*öë€Dd Hú³)𯿎˜^ÃŒ ÑC¢îyHT$¨¹ýÕÀ}‰ËH‚Û}7á ÈÓ&Õ	jjo#ð»GÅf(A
íxXtỊ̂¶ÇÅwA‚
õÆ˚¾0¢$~Ã?á+c:&Aàïv—>ç}iTNþ¦êmæ)`›³Þr	F$Àm_™‰5à«cs“ Fîy{7C	jÀ×Çw\’ÿþ!pØõü~	0
\>r)·?<.–;|V9#ý`ÌY‘¶ð
à€úÙz–IEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœ IDATxÚíÉkA‡Š;‚h·xôâI\@…ñ/%‚"¸õ '=¸ zqCÆíæM/Š‚=(ŠFA9	ŠHâ¾_A!Ó��»*ù>øݦ_½ž÷aƞꞆÚÛÛ7KNIío8SÊwøÿ$}’Ó!J =}\’l’Lajù¿/T	úõ÷Kr]²J2‚)ú~ÔèÑäµd‡d,õ7üB%5ö×!@%=’­|Vп靊75w	ÌðÍ:¨ä©d1¶¿¡’3eJP¾gLþHŽHF2é@%¨~TòD2›I&Aÿáç(€É{ÉR&ˆ
_)€áªäg	Ì1k˜tÉÔ¾F€ª͒ƒɧ~×ϘtI¤
ßE€ªz$$_%Xˤ–@^3WòէUµçHn:þ9heÒÅKК&‡ž·K~({0éâ%h«%§žHÞ){~Äu‚€$ðسù“ðJÙó1¦ˆž{ž&éVôûW²„) A=ϐ¼QôÛÅWÊHSÏ%ßýî`Â%K xݰŒ=w(/³Ÿ L	¯y,Y”±ßkŠ^w3Ý®¦¬ٗl`9.ir<v–íBTriy4Ó
T‚~õîJ&;¿WÑç:&¨5¾ëŸèpü8ÅHw‡ÒðúJHf	jÔ{ åPcâºÀ4P‚”z5¦(ölA€%°Ô[áP粥ÖMPK­—ÚíàÉÍ$iµ>‰­åà$¼Öe‰ɝEiµæ#@`ÈkVZ$¸çpî÷-=mF€8%hQžû	K?' N	¶)Ï}½¥—§•ç¾ÌÒLjS‚gÊso±ôð┠ÇáiëA€8%ø­<÷¶õ N	¾y:ÿ¿§ݞþô"@œÌSžû\>Æ%€×ç$ûSŸ+€ƒX‚ä6²´u®!@ñ)r{™m­£P|ŠÜ^öÜR#œ¤§"R1]ñx<¾.C€"$Hž%˜VóBJ o	{®4B /	ä5ã7ˆt @ä(A[ŠæBÍ
 è@Þ” Á-&[’–uŠ’`S-IÅ:¾pÝO‚·®7‚G	”ëä)ÁN&Y¢ëä!ÁrɦX¢Žëx—J– Ã:H0˜$ȸ	êX	ƒu®ƒ±KPçM’Cel/OÔQ{žäa™{CêMJîòýÂFS¨S‡S%‡%CÛmuH 8nµ٬¡xºÄ(☬Ãý…H“w$3% p	<`>î«lîL® AÈx k _I$8¯¬qŠÉ,Ì3ÿ·¥mêH$8g©óoÈ<-42Ij
ÌìäÙe­¬“&ÏDóPçÛæW@³üô["ÁY†—Ÿ“_þ0ÿÌO÷P¯z£)Ï@€¦jV¾EdøàĶ.ÆXÚNoÅIEND®B`‚‰PNG


IHDR00Wù‡bKGDÿÿÿ ½§“	pHYsšœÎIDAThÞåšMNÂ@†»P/`±ºÕáWèڄ˜àB×.•…zá4µK
W~$JúŽùÆ4Òv:ýêâÙ4ÎûÐæ›ëèflÅ@”A´À聢GÇZtN™ÚDî;JãmP0_k2§¶uºVb;àŒC„^Æ;¸ŽN
Уƒ«Œ¨͸ö§1¸Ê38ŒKà¼¥¨ç`f ¼dFB	T
W©®+P4üË/ºſ
4i¢¼…Uâóå§0¼ÄW?±ª@#Åá%—Ëœ”>:‹%g‘Àƒð’GUÀFÊü+Pc^R
¸:R r<o‘Ù†á%§•x\šթ\ž„@—±@W-Æáà.ðÉýzËÄKÌþ3ÊþŒóPâL乿¸§]îÍE¦JJ‹
e¶E}&¦UØOlɩE/Åá½US‹r5fƱ?8øÓë™XàÈÄ“¤dp‘ï„ë2«ç2«d\irˆk_S_ڶì‚;
[
ÄúÄ^’›=lڨáFØìáÒ5l»U‚䩲åi¼‚>˜}:֦s*Ô&rßß>ãLKWÁéIEND®B`‚‰PNG


IHDR00Wù‡bKGDÿÿÿ ½§“	pHYsšœÎIDAThÞåšMNÂ@†»P/`±ºÕáWèڄ˜àB×.•…zá4µK
W~$JúŽùÆ4Òv:ýêâÙ4ÎûÐæ›ëèflÅ@”A´À聢GÇZtN™ÚDî;JãmP0_k2§¶uºVb;àŒC„^Æ;¸ŽN
Уƒ«Œ¨͸ö§1¸Ê38ŒKà¼¥¨ç`f ¼dFB	T
W©®+P4üË/ºſ
4i¢¼…Uâóå§0¼ÄW?±ª@#Åá%—Ëœ”>:‹%g‘Àƒð’GUÀFÊü+Pc^R
¸:R r<o‘Ù†á%§•x\šթ\ž„@—±@W-Æáà.ðÉýzËÄKÌþ3ÊþŒóPâL乿¸§]îÍE¦JJ‹
e¶E}&¦UØOlɩE/Åá½US‹r5fƱ?8øÓë™XàÈÄ“¤dp‘ï„ë2«ç2«d\irˆk_S_ڶì‚;
[
ÄúÄ^’›=lڨáFØìáÒ5l»U‚䩲åi¼‚>˜}:֦s*Ô&rßß>ãLKWÁéIEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœTIDATxÚíÝAjaÇá¡ÒcH[Q ݔãхŠx³´;=CW­×P7½A  Š­BÜÌ*T’L3æ˗çwÙ~“¼?²H§IÓ,d˜äC’¯I®“Ìvt®Ûç`”d¸‹?Hr¾Ã_4çIj]þ ÉĒÎ$ɠ¶å&[îÒ3®ê• Ʌ¥®<µ,ÿÄ2;ÏI
|´ÈÎsVCWÙy®jàEvži
Xä=F€ @€ @€ @¨6€ßIÞ&y’d¿ÃÙûIž&yŸäfÎÀÜž¯ñ:Ž—ü„M+€¹yÕõ¼+ø\ÌÍîåqÁç
 ïžäA©ç
à?=ðRÏ|‰ŸýÑG}Ÿ+€õ-bº¡¦(#€ن˜	 úxãÅ;€ @€ x#ÈAåp»¡nàAðç`ûÀݲEôtkÖQÁç
`n^ôp-o
>Wwܞýl×1lg©ç
àŽù•äeûº×áì½$’¼^ñÞüM+#####@€ @€ lQ?-r·¿6î»EîöG~²ÈÎó¹†N-²óœ65HòÅ2Wž˦í½ucK]zÆIŽšš$$™Xî™$45Jr˜äҒÿý²Ÿ䰩]ûê£$ßîûyú[>7ís0JrÜ,ððâßä[ÃûdIEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœ<IDATxÚíÜËjSA€񦥠®|¯x©+A(Xº)>ƷõÄ.TİUñV¾}
A»©+A+‚(õbÜTˆ͹dNNæÿ}0˞“™ùQš“IgfÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̊\nW#ææÿúÀÄÝü¾Ü|¸ù"ˆ`cÄæ‹ sàQA¯€Ó®¹xVðšÓ4¾¯5`)*‚÷Áü=žGrB°‘ÁóÌì‹"ˆ —Ûo‚·"(=º¹X)9qü+9¸_aâD@x€­Š“låà{ˆŽàGê.BhŽ@Á 8G €à‚#@p/‚ýӆ@Á <‚…œ 8GÀ.p
8	ÌŽ—=,ø³·Š|ïà?þ¹o…9ϧ€À7TßüóC®—ÁÐû֘ÿòàü¿JŽÕ=®™Áj‚5¸.€òãЈë¦Bp0Áœ@‚‰§@h
æhâ,ä¸a4õ±Â}?	`:TBP÷¯Ú 4‚º›%€ö(…`ROþÑr™ÇÆ]ä l·šûp©•Ð짋Û%žv€>°Þ&h@«`2Zƒ@“} S
‚Úàç˜_Oah€ʬ×ýQ-™xê¿	Ðâ‰×9˜QB	«øZŽ5õî`\÷àR‚×rµɷˆã¸od»91¾Ž¥Á5ûM#ž Úø\ü
­pïYà8p¥ÎÙü=ÆZwˆª>,Š`Æ6p&G €à‚#@pŽ@Á 8G €à‚#@p9øì†‹ È&›ð؍Œ¸à&‹ज़ÁàL_ÏMŽ`Øq“GŽwÀ\®Ž/Üä‘ãæ¤þ­mS–GªßÔýú"°iÃßî‰@wE ‚"z)¾(kӁ œu¥b"pó#pó#póƒ#8ìJ˜™™™™™™™™™™™™™™™™™™™Yá~"yE¶4NõIEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœÂIDATxÚíܱ
 ÁÌéý÷ +PP äN¢wñeD$ç囶G€ @€ €MØ/û`¿ì€ý°_öÀ~Ø/û`¿ìø‹ƒ@€ @€ @€ý»ðQ¤ @€ @À0
ʩ4y‚@¸7IEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœ­IDATxÚíڱ	 EÁ̙ý÷Ð
,á£w6y¥Ut÷XMú~€@ €€ƒžÍkï€ @€  ™!€ @€ °{ ôý €@ àKʩ4yß{ðîIEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœIDATxÚí[ˆMQLJaf눔Kry3¢&OžI!š„ID.o(ƹ4…e4‘"÷‡ñìn¹5%“"&—rd܆|+ë I³¾½ÏÅ^{ÿ~õÒúNß^¿Ùö^{}òòþ¢²²²D²KÒ$ù"ùAºŒ9F÷ì1+ñyâ${%Ljè˜cW'éåãäŸg3–æ˜ú$@-“–ñìõeò'Hڙ°ŒÇÓ	>PÃde-5>ÐÄDe-M>ÐÆDe-m>Ðe¬ŒÄüø!          Çb#€ÝÚ"y(i”\‘•l•,”Jò™êø
 ÙÝúÞ~ulƒd²¤SŸ,:çd“d$S€T¾K®JIz @òè|VXæշb £¤òD²DÒ’)@*·%å\L¾I¶Kz"@´›è+fïùçHÖIJ2ôî€[’Ñàgƒ$³%{$ÏҐ୑ün6_2ݮ~)Âæ8-$%öY€47ÄN滎ËòrâI“ƒ$;C¼hâtÖxøç@Œ“\!A>ÄG‚n’•’$8âó5üû ˜WÏÝ A5ü¿¾JÞØý×ìÚZɔtNÏ2¶Ÿäl€‡Jó z
˜+üz»1¤0Dí’CJ	>øø²å$-¿¶·}Å!®ö+?£1ŒhRiµÛÅz\@:¥¬¿¢-@*͒Y>§>E[óŽÝrˆ¾¿ߊ-)R~VåÝAƒ/û	àW‰ÊÏ+Q®,E0y$¯üÌUŠzÏ|øå8Ph×óË$fQFr=äOǼŒUÞ\RÔ[ƒÿ¯±’*»Ç/èÅápEý2»c¨«ZϣþÀ(	B
ì)ûuÀk‚"E흊Z‹ –œ Á>ÉŠý7 Z
¯PœºS™«¨·QQg"D«é™Ê[9s%ßOqfùäëê`’·„ÍVž	ªµ\ŒGuÏ@¢÷Hƒ˕Ï;êLUԙ„Ùi ÕþrØ{Û7:àøãŠÉۢXhvԨB€Ü4Ða'u¤r¼YDzé8-®ÛBù÷ݎç ·
˜3ÃÂþW0ßQcšâ%ùÛÌV­Պ=§ðzGÞv{ZW5J Ç
X	æ+êT).5n8jTf Ÿ\¦5¤&o¤£ÎpŤ©ŽuŽñÛ<àn\09¡¨uÝQc­c¼ë1ñ1ÏØ'Ì_÷(G­jGŽñ3ã/{$@{¯YÒ=`ëµ*ã/9Ɨ:Æß÷H€Z_Vó‚4u&Í	lvŒêÿÊ.xóÅ׀=uÔ*v}ùÃ1¾k- âtØÙ^y¾°Á6G­‚t=>1ßhºkW2Kóþâ'ð:ðÅñú°IEND®B`‚‰PNG


IHDR€€Ã>aËbKGDÿÿÿ ½§“	pHYsšœ"IDATxÚí[ˆUU€µÑqœJ%̐Ôhœ‰©ìµ%†„õ=DхJ({+†®hXTvóÁ„È
{È
K
É$#¥¦¨´¤±rtF{YA¹þ½ÏeÎ>~¬Çõï³ÖúÎ>kýkí}ƌ9 xØŽ[NZ_¦>ë©òÀw«€µtÖ«8ø8€u+›€Î*	°ÚA«{YU•_;`u/Ã<*°ÂÁjXYQv9P
+»ª հ2TNÚ3#mÞ
 
 
 
 
 
 
 ÐîÉPPPçP
 
 ÿÑ€#
p
/£)À]Àv8Åó(Àå:v9g¨åE8xµê"(@í"ôï*€"\|¥­70CÀà`ð1ðð(p#ÐtÔéZ'€£
P­uüïéѱ‡€‹±5^óR`T7‘³x8¯†ëv§ՂT8“wø¸Wòú÷¶òJAŠÝn/óT,p5pPÚ#—ÿp+pZÁÏÑü¨�³˜_ð³Ìö*@ûìæM˾ñ>ÏL`Ÿ4W‚ÉÀô´æ_<¼l«Óm+0«Àç™Ý*?§|&8X<ÔЙ¿‹
Î	*@kÉÐ\™2…•ìÔåÑDRJ+@kÊpVÌ2ßÒW¢éeàhm¦O•xÑÄÛќð–´¾s€KHЈÝ
|­­/ÁØt4쏝¼62'.ù€”a°»@G÷ã>®õ¬#/é<'i‚¶4}ã:jˆÛ
¼W`Sé†@̮‚b)@
8¬OC&”ˆ=x9Øه"/[NKC…Tðþ´ì›Zb^ðBð;"¢ï(Àèí¦ãb“
&¢‡?žĻ YBøÿ²¸®Àu:Ó[´#ï؝ˆ·VZc7pмÖéÁIܶÜy`n3î
+_Ӄ×ë	æ	nÄZ§­!Àqà[`nðšwâ
äþy¸Lj`BÊç÷‹~`KɿŽù	˜\lĻ?k«4FŒs€eéŒ_ÑÉáŒ@ü¾À"?ä6ŒRêY(Bgºeï/8'è
Ä~:ë–LŒi|?{ÿîè"۲Ïbž8Oðy Îhžwx¶ïú@¼å8Vuݮ»}×—r@wàÎòg­ÙAh~ÃïýX¹
£½µ>ªiü}ƒi™8q.R€Æ4`0ýsØƴì›U°þÁ{$È=²LšӀ‘4¨3ƒõ§?g:â@nY¬ÌÄx_šۀAà¦:þ,Éĸ"ð’ŠhnŽ÷bŒÜÂ×gbL
$tz É
H,	ÄY˜NÈÄø,ƒ:´§™e°øgðffâÌl -ÈÄx>Sÿ±Š	°³]8¼ˆµ%ci¦~î1°×+&ÀÊv`87«?ãÅLýk2õ7WH€áVœ³ÔÚafb-ÎÔÿ(S¿/Sw…X]•l^‘FmÌÄê͝ÈÔ?;Sÿ—а©Ì˲ª À÷™XSsdêOÎåZ\€`Mî([•ÊÄêíýõQôCÀΔÉì#"""""""""""""""""""""""""""rt…ÀÅ[©!IEND®B`‚‰PNG


IHDRÀÀRÜlsRGB®Îé¥IDATxÚíÝËkWÀqÿNÅ÷|`\((_ˆàc¡(º"Š7nT\(.ܨµÆTK҄&&›6&mL“øhû[Ütι¹ÆÌã³ø,ïæÎ7wΙ33ËæççAS-³€@ €@ €@ €@ €@ €@ €ì€@ @…õõõõž={v¬££cf͚5ï—/_þÿ/öQì«Øg±ïPQo߾}|æ̙×+V¬øèÀ^˜Øw±c_
 bgg甃øëˆ}Y×j@ü×rà~]±OP‘s~§=‹s:TÇ1Aíˆ[vqľ@ÉÅ†ƒuqľ@əê\Ü)R”\êKtñÇþöŸ°ÿ€|Àˆ|À(ø _ à€|ÀÒZ¹rå‡
6¼۲eËìΝ;göîÝûûñãÇÇ/_¾üòîݻ?õ÷÷÷ÎÍÍ9ØÐÌ+Áaýúõï<ø¦»»{¨	€€
mݺuöâŋ£ƒƒƒÏ €Æð¥={öüqë֭ÁÙÙY y|ù«pãƍŸëühp ióæÍs7oÞ€?b6©	f ðá.\xUçÓ"T\œãããO†‡‡{^¼xñý{÷ú¯\¹òòĉã»víšþçKlûÝ»wí@•311ñ$¢ˆ7žÄùýB#X·nݻ¸°&TVLu>xð ïرc¿®ZµêÃBBèêê€*ollìûóçϿZÈûNŸ>ýº.Ë+Ðp1~ˆWµúž±£GþV‡qø$ÐqU¸ÕªþK þs,˜‹¦­œ	@µÒÛÛû<–F4a`,€ÝWoOž<9~õêÕឞžçí,p‹éÓ}ûöe¿}¾ªS¤¨ñ níڵï><çB¬ÓÓӏ92‘{`hh¨G(åRˆø•¸téÒÈÔÔÔw­ŽN:õKÎ߈+ÏU›@ÃÖÅÕàXöÜÊéQDûK× €Ò/†۱cÇÌýû÷û[9ÊÄõ„*­"@ÃWƒÆjÏܹüçÌÅ`\¨Ìrè¼™œœÌÄiÎu‚ªÜT#|ÒÑÑ1“;‹ËrÆU ââ?÷ÀÀ3‡þxûöíÁsç΍m۶mv!lܸq>'‚8eÊY6ƒm`IÄ@´««k4êV	rN‡bíPj]ŒÊþ´	Ô\Ìñ իW¿oeL30ŽU¤©mÅ#W €R¬ÿ?tèÐD+³C9K©S÷ĩ’Pš՞ñk{ŸpÎu‚¸ð•ÚN™Ÿ@'€ºsçÎ@Î-‘q±,u¿,©mEt@é"Èùșɉ{ŒSƒa t>Ÿ%çóSèâFûÔvʺ<BƒÐí۷ÿ¹ÿþÉëׯŒŒ<meL30ŽU¤©§Mlڴ©pºµ»»{XXô/0ææã¡X£££Osg‡RS¤±”:uU7ž;T´x?ð;ÀøeȽK+çT(µ­xøVꆙ2Þ@/€z¯úxíڵä©G\,K]1Ž;ËR+ESӫñº&à[/†û˜óKË&R·W¦¦D??‹´­û†óa¿­Š_QÔ`5h|‘©1AÌҤ¶7Úm#ÆEŸ÷U)€X%€š,‡Žƒ3µ­Ô*ÒxÚDÑçã©ÔEŸ·WV)€Xë$€š³C©)ÒXJ]´xäJ;áœ;ÅÊrðWíÖNdˆëEۊû	Ú9€c‰tÑçã=ÆU	 ¦uëxñ³ÑÄŲ¢mÅM5EŸ‡o}>^¢ÑÎçË@ggçT]ߊÓèâŠqѶâβÔ±Ôòèv>¿ÔÄiOüç¯ó+¡@jZ/®}>n†/ú|8í|~)ˆ}³=1àmÂK-†£Ñ€@ €@ €@ €@ €@ €@ €@ `' @­ý
Oæ½Ýù¿IEND®B`‚‰PNG


IHDRÀÀRÜlsRGB®ÎéxIDATxÚíÝÛoMYÀñù;‰û5TÔA¢‰{Dâ–©R/^ăDܫƒÑÑL«v:Sí(ZŒ¿¤ãÅ8kíszznÉ÷qïÊÚë{öú]ÖÚ?}üøñЪüd@€ @€ @€ @€ @€ @€ @€@ƒ @€
̋/zŽ?>ÜÞÞþ~ñâşç͛÷~LŒQŒUŒYŒ”wïÞÝ?vìØÈüùó¿˜ØåcccI€›ü&ñìc٬4¥ñ«eâÎ.1¦h5¿eOu–CÍ4¼™°Õ!ƖuNd0LÖêcK€:Gª³º)RÔ9©‡¨øcüãG?€ à‚ à€­û›½˜E€ @ü@€¶oß>þõA!Z–ÁÁÁÇgΜZ½zõ4вLOO߻}ûö‹={öŒ5Ë[(‹gϞý¼cǎq ¥ùúïùæ͛߀-Í͛7{ÛÚÚ>€ułþ^¾|ù§5kÖLmذáý֭[ÿ:pàÀè¹sç^ݸqã×ÞÞޞXÛÏÆߚ˜˜xpäȑß	@€†Êã/[¶ìӮ]»ÞtuuõÏÆaO·nÝê]±bÅG !Yk׮:}úôP__ߓrÿîÈÈȣ;w¾!º’»e˖·W¯^훚š*ëïŸ?þU=§L	@€ì·Âå˗+çTäëׯ¿ŒX„hø^žU«VM_¹r¥¯èÿãΝ;¿,Y²ä3ÐÍl‘M*0Gñ,"š¢›3Ž?uêÔë"ˢîz’€M.@LÎÑÑч1ñâ8
V˜<xptãƍ“³ nڴi2î_äMP/Ë!´x%xllìaH_<©ä—yéҥŸ¢°V$&¨‡Z!¾©Îèöܿÿ.,krvvvÉÕ:EJü/ÃÃÏNž<ùºœï=zt$·½b¦N@Ô'?ħ€Š~gl߾}æǵ¬€فkT…‹Jó&ˆ¶‰Zõ€…v„EÃ\‘à5–C¹
t @CÐÓÓó4Z#f;0®E+5Zh?@To:4zᅁîîî§å6¸ý—>ݶm[ö×çsR¤±Ÿ`®7Õ …+ÁQŒŠ
î19Ëir›œœ¼¿wïޱÜ:A²X5	`Î[!â-qöìÙÁø.>|8ké•çÑær1ð]·g´=Y…¹o‚¨-äl´'jÚ·~ýú÷‘™)²ʉ	¢žÓE:WG®€%‰nÏܪnÆ9١ÆsêsÑ&A$‰JíøøøƒÜiN gSÍÌ	t @í÷´··¿ÏÉâQ,ˉ5Rq4怿Ü/_¾|r÷îÝç׮]ë;qâÄp[[ÛT9“%Úr$ˆ%SNÛD۩ûTû@^´h%8ÑÎÎΡ¢=8ñ&ÈYÅ>Õ@ñB*Û§R€U}CÄ@‹-ú\$&È	Œ£‹4u¯8r%u4{5ƒaèúÖÿ¿{÷î±"١œVêÔ~‚X*¥î3ó‘ úݞñ6ÈýÅͩDá+uŸJN «uMHlUÌÙŲÔ>Þ,©{…t @ÝIóHer‚Øcœ
†	@€ºcf9”Ìç§èròù³q*5ð„®[·îC’—.]ꏬJ‘˜ '0Ž.ÒÔi+W®,™níêê ªþ#7‡b


=ÎÍ¥R¤ÑJªêƹC¥îß' æìƛ!÷ «œ¥Pê^©.±af¶¾TCä>À//^L.=¢X–ªGãZªS4•^Ï5€sÝ÷%çMm©합”èÌY¤í®§“¥ã-J€&荙Š	"K“ºOl´/uˆ=J]îk$¢/ŠMÒ“3u¯Tiœ6QÉ1ˆñõÊF zÐ$Dv(•"VêR÷ˆ#W*	„svŠÕËäÏÝÚI€Úu‚R÷Šý•Là™mŽ?¼>¾cÜ(DZ·‹Ÿ--@ËJÝ+6Քº>ß*u}|D£’ëëE€ŽŽŽ‰rÎQ"@ãR÷Še©‚Xª=º’ëk-@,{◿Y'ːJëE= Ôõ±¾Ôõ1q*¹¾ĘD¶'Þf\ók† ` @€ @€ @€ @€ @€ @€ @€ €A´
ÿ$Í‹qe¿µIEND®B`‚‰PNG


IHDRÀÀRÜl¨IDATxÚí[LUWÇÏDÓjmMhÅľÚ؉I­¶ÓMZjM&“`ëÃL/0‚
ÞbŒF5F4Šɀ
ã%BQ$V¼Œ8ÕĈ‚ÁpQ£Ä(Á=(Q”׬5|»sÀsç²/kíõ7ù½4V8ß÷ÿÁÙë¬o-Ÿa>`	r¾à$q–q¶pŠ8'9—9
œœ.£ÿÏ#^Ð뢿Ó@ÿÏIú7¶п™D_ãCÔÛP„ÈYÌIåìäü‹Óêf§h¥¯-¾‡4úžF ?Àj8?qr9Uœ>Â.}ô=î¤ï9ýƒ‘ò'‘³S'qØåŽ^K"½6ô¼ÃhN
§ŒÓãÐ£‡^c
½f ñ‹Éù™4{=ú`ôÒkÿ™j4a§€ӭaèƒÑM5™¼ûÓ>Sƒ°‰¨Q†.¿¼þ?¡5ôN;b:©vŸ@õG¿Ò{dKž
¨¦@5ûݾ-¼¦Ú&@ùˆ£µî—ª�ZÇA÷ÎÉÂ{|מ²¨À¾¥Mc£»4R/ €CÄsJ<é=ù؋øÿ)Â&-O©G՝
LD¯ÆBkHÂO}e$A€èù€³ARž½ÔKã9õ§VŠ>ƒá1“ó¡ñϩ· ÃhóÕ[„ų¼¥ƒE“J‰œ¢žCZ⼎PhÇ
6ֹþÏ9Mƒ¶4Q´`ŠÑ‚ 7]”­˜Š•0h…hª.Ì>}€—”
OðM¡á oœ–ÀÉðOÃO~æo‚i^à+çð€ÈÎ)úÚ+LÄjˆruh¢êˆ	¡h&ˆ’f»§ÌìÞÎ\…&‚©²s;µÛÊÑ<`åvm ³K€Íh°˜­ª0[šM[©ÿ,»ã±Ü	lD\ð1AVă
ªvsÛʇb+؃æí¥ 	M“$‹â$œÛÜ8œw¬àÄ6àæ	t®
‚&—IqK€xçò9Þ
Ż!@)Š$¡Ôi¾Cсd$:%€ؔ„s;lˆLwB€LHJ¦ÝÄáÁH>Eg§;Pd 9;ì Á)@~^œ9‰ù(.P„|«ÇéEa"¼¦ÌZ&ÀßQT V	O﫴,ä³gÏ&uŸâ­ [çBfgg³††JM²c`$§]ç"&''³9sæ°°ööv„J-:(ÃQ®{…&K—.e—/_F°Ô"#ª!@ò;l۶=xðáRƒêhøÅ,€ --?~œuuu!dò3)
Q¸à˜¬^½šÕÔÔ drS©âÜp†‚””VPPÀ?~Œ°ɉÈò¨HHFÑÂÀdѢEìܹsøì@NfG"À/(Xä˜lܸ‘ݹs��pøˆӇ‚E/€`îܹ¬¤¤„utt Žr ö²G€ù(Vì˜,_¾œ]½zµ”ƒ9áP†BY'€Inn.knnFMÝåÔP¼oôAbY,€`B¬¬¬ÉîÑC*À÷(’}˜¬]»–ݺuõu‡é¡ÈEìÀÜ`WTTÄZ[[QggÉ
%.¸pH“ÌÌLVYY‰Z;Gc0Ơ8Î`²yófvïÞ=ÔÜÆ`
㞂ùóç³#GްÎÎNÔÞ^f`'
ã®&+W®dׯ_Gýícg p«»$˜ìvïÞÍ=z„>XOÕ`ÄØØFLÒÓÓÙéӧñفµˆ¬ð`2Š"§&b8¿¾¾=±ŽÉþ¤¢ r`~v°ÿ~ÖÖֆÞÄNª¿xV@“%K–`8ߢaS€JDL¶n݊áüè©ô QOçÇD«)ÀHC]0œ#…PõÀp~TLü…ð†&.dgϞÅgCó'!ÀÂ[˜lذÃù¡Y"ÈA!¼)€9œøðaç&GPŒBxW燤Xp…ð¾ÎÈ	!?Q}0‡óOž<‰ÏãWˆ!ì	€áü߸-hAÐõÀüì`߾}ìɓ':ö·Eð]_ü‡ó/^¼¨[;„¸ýè:œßíCÈ!€ÆÃù=„ίªªòt!ɦM›<ý€ @ÐÛnΟ?¯Å[ <C€ˢ………º,‹þï!—áA€߆jn޼©Ý2(>Ó\1VyâÄ	·F´`+„æl߾555i½âW]?–-[Ʈ\¹‚ÍpØ­—b@æàC¬½½ý¥íЈÑD€õë׳††ôuÐ@F"=.€’?sæ†䃌Db(ޣˆ5ýüü|±>ÄP<ŽEñ «V­bÕÕÕèaǢà`,	 vr=z×,…Çç8ÑCäää°û÷ï£oˆÃq ++W­Æp8.ŽGWT\¶ŽGÏCAÔ`ݺu¬®®=Šž<W$©'€8ӧ¼¼kú±3àŠ$\’§€yyyìáÇè‹5¸$פJ,
+صk×ÐëxC™pQöuF.æ͛ÇJKKq²³õ¼sQ6nŠ”L1Œ~÷î]ôÀv`
㾋/f.\@ííeV Ơ0î	 6®íٳG×3:&!tI€5kְÚÚZÔÛý3?X€\È94Fw“ÜPLGœ@óat7ù!”ï‹ӲP$ûÀ0º»'ÁQƃ
 8…BY/€F?tèÖôݥ|pÞ	€}A †ÑQO÷™ŽqúP¬ØÃèظ&¯9£Ã@ð
½F—’²@Y&@2
F—–ّ0ŠóE_€ÔÔTvìØ1£ËÉÊtØŠP8ÃèÞàÁrJ€? pƐÃè—.]BÀäç›hÔB€ÀÃèÅÅŬ­­
ᒟÚPJ€€atÅɈE16Ö0Œ®(OÍÑÇhdë..]»XKK¥ÙCå;â9¯t-"†ѕåe7f((PŒÂp²®ãh/
TÙ÷ó©•òQX ùáæ:t~J½÷k‡‚(0œ‘d:Râ8](2”.šg±MA&

$%+Ò<G#ÀpN=Š
$£ž²i»‚DHÆôh²­‚RHÂ?£Íq,ˆ™;Q|à2†áw֧“RÐà2i±d8Vhp‰sœ߹-ÀX|6\Zók~­@„†‡™iEv­@°M±ϪÜZ)ÀœÛh°‘±Q2
 ˜`àxu`=”1Ÿ¬þÂy‹f‹yKÙòÉ.€`,f›YµK€aFÿeh°‚rʔ2˜ÅUhˆ‘*ʒO5s¢‰ JQ†|ª
 ˜Èy†f‚yFÙñ©.€àkN7š
¤›2ãóŠ‚iœ—h.‚—”Ÿ×ˆKŠqÀÆÎ'3é´>zøMýäŸátÝ@0•óMÄs'ßöÈ €`
V‡eà+·r覂ßsšmi¦øtÀ<sô 7bf÷’æ½Äe…6œ²rO¿07ÐmÁVjÏoiÞbׯ6Õ0™‰"Ϯôü([Þd@0žӈÐxÑËÏd̚¬˜۩÷"<ÊSdçvf/àÿ–G0ªG§ŒoyTÀ<|'ЩÃYÂC« ;Ì1úoÿFÈää)õH™L©&€9eV‚°IG‰ÝÓ[` ßb¥HšžïT͑ʘ×5eá!ٵ‡Ü,#Šk‰ €õˆÛ+·¸ÇØ	^Q­㼐¯à¿Z´Sg¶ jš¯Êꎮ˜|Ê)Àä™e“ZTSÏeūøßcö7N‚1T»x/gÄ똌à¤sjì!5ʠšy>ºàϗœBç
>‡§j£UtÀ³ÝlÄéÕ0ô½4˜2[æÍjÀFsæ’^¾ࣇ^ã\zÍÚ÷á—÷8‰´Ö]çÐ×ÑkI¤׆C€ˆ‡öâäýGu÷Iö>úóè{N@ÿ €+JâL£¿RÐ.rÚ]{;}í<ú^¦è²rä}Žø’†@–ýWúâœá\ãÜá4ÿÿórЇMæŸ&Ú`v…ޯsrèßü‘¾޿[ÄëV‹âÚ-~IEND®B`‚‰PNG


IHDR€€Ã>aËsRGB®ÎébKGDÿÿÿ ½§“	pHYs
×
×B(›x;IDATxÚ횿oe‡?o°¯A
”=[AQ;K„D™Â@¥j"!w·x2e‚H©4EªÔÐH,ü˜²Ä'‘Z1%B¤HgeDü–Šlœ—%C¨JIrçûõ>Ïhç.§{ž÷ë;Ÿ%85¾ï_‚àFÖÿ÷N}þApÃsGÒ[Ífs*Žã]pgåeŒùúØKo6—z½Þ¸!ÿÖӯc2‹€
&ÿxÍfóå8ŽwÀ1ùǸØl6ÏÇq¼Mչà»yBù™D@˗´z†M/6Wz½Þ6””0W$Ý>ëöƘ7æææ&ã8þ=Íãš@M6+ßZ{7ánìáááŸi›AÏØå¯Jº™T¾µöÃ(Š~$ä@Iäߑt½Èò	Àqùà¸|Iª¡,=|߿+i¥,ò™)Ë7ƔJ>8.Ÿ—/ñUp"Â0¼W¶Ï|&@Š򭵟•Y>8.Ÿ—O§$‚û’>­Š|p\>8.Ÿ—OŽ˗xôŸø¾ÿ¤Oª,Ÿ	ðùƘÊË'Çå€ãò¥­®®NÌÌÌÔööö‹t"Â0¼%é‹Ä+ʘϻÝîwe‰>Ó	°°°P›žžް֞÷<oy}}ý¯‚\í+éšK+?ó	ÐétêžçE’Z’^F¯ÏÏÏ?ÜßßÿùŸN§Þï÷#Iï?õÖvž“Àuù™L€ÅÅÅsµZmKÒÒ3ÞÎmAðÀuùcŸív{r0ü"éÿùÓÏ󖲚Gò¯º.¬Éߒ´xÂM2‰ùÿfb\ò‡Ãᯧ/I—ƒÁãv»=‰ü_´Z-ÏZû³¤wϰù«£Ѩ9;;»upp0JYþm%ÿgéîó3Ÿõz=2Æ\N°‹¥Z­¶Ùjµ¼”噂üë÷T!RÀZûƒ¤'	Oôåz½þ[«Õz1éñø¾¿–‚|k­½R5ùc	 Š¢]kíRÒ$]ª×ëD`|ß_3Æ|Ìg~w¾ï¿mŒy,)é*Þ‡˛››ON)ÿòsºÈy¤&_ҕ*ËëÈi˜ Ö$}”†ün·û“*N&Ï2Šaø½µöä,€"@~ÑH9‚Ýáp¸tòË@ÚLMM-÷ûý5Iä—$I
Ãð=kíCIçîêI’µv%Š¢ûrÜ~šâ$`å—1€Dà¼üÜÈ1ä%€"@~ÑÈ0ä5€"@~ÑcÈ/Kcˆùe Ő_ÖRˆùe AȯJgˆùUà ¿ªœ äW=€çD€|WxFÈw-€c<’tùŽÁθÁ?êL¶‰yí*wIEND®B`‚‰PNG


IHDR€€Ã>aËsRGB®ÎébKGDÿÿÿ ½§“	pHYs
×
×B(›xwIDATxÚíÝOheÇñߣ“u1‰Ôú¿
z°‚,ŠŠ^
bÀ)¦g6‹!B¼xo҃ž
C2˜ ±‚Bæ`A1Dð`ъmÚĒÔÔÌâAL6;ûç|?ÛÎγÏûËûλìÎJ h¬•ƒ«Õj£Ñ–tÜ9÷ˆ¤ÛÍì6IeZÛלs—%ýjf_KZHÓt1I’͎ ûÌì
I/Kêg\ºjCÒ{’NÆq¼Öö„axØÌæ% ÷=弤‘8ŽÏ6sÐ
M~hfK~Oº_ҙ(ŠžoËEÑӒ>•Ð랖JŽãx)·ŒŽŽîïëëûNÒô×—Ò4}8I’+¹,¥Ré-ß+÷Aðf.3@µZ½³Ñhü$é&úêז1‚û¦§§/·4Ôëõ¾—Êõz}¤å%À̎ÒKoËãàAú譃y€=¿¿îÍ#ôÑ[ƒ¹lQ\€€€€€€€€€€€€€ ¨ºù'é#I§Ò4ýRÒF’$[y<ñäääÍëë냒5³$Iê+X}¹ØöSÁQ¹6œwÍÌ^œ]ìċ;”eق¤
RߎÅql½¶ԝsÏuª¹’433óM–eGô×)}¯Ïûk€SµZíL§O:77��[€úü@–eïwí¢ùyßëó>FãÛn5¸\.Ÿó½>ï$ÉF·<55µî{}EÚþ§J¥r‹sîÆ®z»¾…ۓõùp¸Ý:ø™¤ÕÝþEQ´o/×ç}@@°g/s°Eõ1€€€€€€€€€€€€€ìeEü<Àþÿûù´6}ÕÍÛú˜XÀÐCœsëf¶¶ÛãK¥’ÛËõy€Z­v¤—ÿcz½>–ôv&&&»õbÇÇÇ÷ù^Ÿ÷ØÜÜ<ԭomm=î{}ÞÀÌƻ8ã½ê{}E¸x)ç:}ÒJ¥rBÒHêó>™®T*Ïtê„QM:çfR_¾3òŠk׾õŸ۰•ËåÏó¾9ÂèèèݥRiØ9÷š¤'
Xߎlw—°nЋ·‰Ã^~=€
Úä­õ<p>úÉÌ~Î#çh¥Ÿœs߷ç܇´Ò[´€ NKúƒ^zçZo÷ mýjyyùêÐÐР™=IO½òöÌÌÌ'¹lëõúII¿ÐSo\JÓôÜÞH’d5˲g%ýNo{ÞÕ,ˎ&Ire'Þñ ®¬¬\úÁ̎©˜÷*ĺ/©Z«Ֆv¼Ulöa6³yIèwO9/i$Žã³ÍÔô[uZ틁ƒ’^—t‰¾wÝEI¯¤iúP³ƒ¿«àߪÕj£Ñ–t\Òc×g…[“¶ZsÎ]0³¯$-¤iº˜$É&mû,…¿:“~=µIEND®B`‚‰PNG


IHDR€€Ã>aËsBIT|dˆIDATxœíÚ=j[QÐ¥5¼lÁàmL²/@¤I©ÚËpmHuZ€7¼CŠ`p¶ HãtÓȅm]'Ÿ~æœöqaÄûx‚¹_°‹rÛŒm6›-—ˋÖÚykí$""3ï2óz†˫««_۞qL¥0NÏ"bÞZ;Þô<3ï#âób±¸s®m*€étz¶Z­¾e櫿93Wñ±J&Û`³Ùì("æÿzù­µIDÌ×g^‰¬ÿó7~ö7i­/—ˋ·œiW”@kí|Œ3û¨JNÆ8³J€¾È̻1Îì£*¸ãÌ>*€a.×Kžÿ’™÷Ã0\¾åL»Â"è‹ µX,n&“ɇ׾ëge^~DĻm0¦ÛÛ۟§§§_þDÄûÖÚQDüÎÌï™ùe†OóùüǶç€7RføH)ô©RP
}©LÜlVâ.@)´¯D”BûJ@)´¯J”B;J€¾P
í«¥ЎP
í³zÆ"è@)…n¦ª
@e6”BŸ*¥ЗÊÀ]Àf%î”BûJ@)´¯D”Bûª@)´£Dè+¥о*P
í(¥Ð>‹ g,‚”RèfJ¡J¡Àú/i@æôÞ6òIEND®B`‚‰PNG


IHDR€€Ã>aËsRGB®ÎéNIDATxíÝ=nQ†a&q„T°’¬ Óe”A¦qãÎeäXJ‡DË
Ò%{`'TüQ„ï´Hã×ç;羖R$š™{æ9¯"¹ÀîõøB@@@@@@@@@@@@@@1»M9ŸÏ?m·Û?ݮλj4}[,ÿòîֻëFo¤ü‰úýþ‡À×ü'œ¿³=ãüU~®õ2~Øu&%]˜LB&ì:‡€Î.L&!vC	@g&“€	»Ρ ³“I]çPÐمÉ$`®s(èìÂd0a×9”tva2	˜°ëJ:»0™„LØu%]˜LB&ì:‡€Î.L&!vC	@g&“È}.`:þlšæK¦ÆÇãñø=óÞN·¥Ù~§ÿwºøä¢4ÛzµZ=ü³é_å>0~‡¿I%7‚¢ ¶Nïö£èp—û }‡Ùl6VŽ ù]þír¹ÜdÜ[ôÉÚ7ìò[gقD ½|ùœG ¿|8ÀÅòÝà,7Ëw€“\-ß]â¸[¾ËD#p¹|·ˆEàvù®‰ÀõòÝ`ûå‡À(‚ËÀ;Gfù¡x§B-?\…#·üŠ äòÃpåÂ.?tWŠ ôòÃpaá—_E™T±üjxcÕ,¿ª:FPÕò«àLÕ-¿Ê^‰ ÊåWÀI=Õm´sòUP ýðIû§à<@@@%©Ÿ~÷ïçÝn÷¬tíY†ÃáCúÝÃûk?7÷yR?#(ýÞß~z‘»ܗñp_zÇÇ4§Lü˜8Õœ‘
âzx4xØRÁ	  ®‡G€‡-œ‘
âzx´Է“Éd¿Ùlî=ÀåÎ8e¾Ì}îC@@@@@@@@@@@@@0x¤&"jËcIEND®B`‚‰PNG


IHDR€€Ã>aËsRGB®ÎébKGDÿÿÿ ½§“	pHYs
×
×B(›xIDATxÚíÝÁKa‡ñï»;3»‚IQ‡ ˆ¤ìØ%é†B&b½xê,u ÿ£$Td$…Š%‚¢CtX:Ø!(QY¡ôP3«o—N]vtGw_}>çwwõ7óî®/(€ÃÀìõccc=’†­µ7%]–Ô+餤<cÝWےÖ$­Kúh­­vuu½˜œœÜ<Â0Ìû¾Wңí·f­}Øh4GQ´½o„axÊ÷ý9Iƒ̼óXkßJ
gffV3 Ã^ß÷ßI:Ϩ;ڒçyƒ•J¥žfq.͢¡¡¡B\|'\H’d>à ³J¥Ò}kí5fëÈ;{c®A0‘ÉP.—K’¾J:Îh²‘$ɹ(Š~¶t0ƌrñt"‚[-oÖÚfé짂‘–t‘Q:ëRœfŽÎ:“EÝÌÑYÇ2ùˆË€@ €@ €@ €@p‚—õNOO›ýüËå²mçë·[³ߟ;€@ €ÿ¤ù!–1¹«ÙßF¸°€@ GŠsgۭÝg9¶€@ v‰3‡\g·£³6³Ø~0GGoïÆ,·€µö3£tÓÎÎΧ–ÈårsŒÒÑwø)®]Ó
…ÂsIëŒÓ9«q¿l¶(ßlA­V‹ûûûc†™©S&fggßgò=ÀÊÊÊIo˜©3^'Iò4Õ6‘fÑââbÃó¼ے¾0ێ·”$ɝ(ж3@’*•J½X,HZ`ÆëY±X¼EÑFÚäwóìµZ-îëë›ó<oYÒI=̼#|7ÆÜK’äÁÔÔÔï]}W°×W/Æq|ÃZ;jŒtVR7×â@lIú&éC.—›¯×믪ÕêÆÀÑõµ”·\æ`ֹIEND®B`‚‰PNG


IHDRr
ߔ¯IDATx^•ÓQgäPÇáw3Weo‡!ÃÊÐ/0„Ñ|‚¥,ý"ÛS–~‰ÚzWÊ0��«a˜Û6çœýɾœLŽé^<BþoßÿœÖw¹¬ïþôýäݤõËGî!hwÜBú¢oÎI˶nñ¸ـp£®Àw¯;EQH‘ºс	¦Zº
ËWxÄTwÝã¦+ñ˜@Ô9V/Z!Ç¢&xÐ
»>)3)r\B@Č_6Rz<c+Ž`„.(p‰±\4+Nʜg‹g
í‘0ðCSähK}6Ñl
	xA†c¤Á
$`®×&• ÀÌŸi½`CN‡-ìJ³a©ó´¥•;gg0ïc~‹G(ôÈH¶€r{%^i»cƒº,r}à€[È	ӊ٨-2ò¤C9ÓÈ)³G†4;Oïa?2£'·Ç;/saÖÚ6؃¬OOh)ëJ_! ó9¨Wk›
öˆó|6ïrƾCÎ`æã2Jçô„MÈOÌÌ!g´³˜C0:鑦>#ˆQ8cæýnœ‡Yý{}ÌDÆ|ÄzÞc<aa̻w¬ÏϘÅbÍ<c…1
, oJ(³hp×1
,!P
”iސª7ÍÆ,uWÜÛÓûÇ'@Ž¥#(‘¢V)e°Ô4Käˆÿuè7Ä9H@‰5jˆª-ïPBäÚўpî»I %RÔ#§¨5+!	
Ì"Ž9á'Þ7sž
©>É}Î5‚
©>Êt,‘5&øQaÍLiÙөàÏoˆ®H¯†«úHQATï]#_T!Õççž
)j2‰ôȰÒöim5JWþ?J¤¨uO
v۶‡BB(E‰T•sX4¦Ě‚%DÔ_@ëqo°¾˜FIEND®B`‚‰PNG


IHDRr
ߔÀIDATx^•ÔAg\QÆñÿÛ{7!«RB(a(eh•î†a4Ÿ ”ÒU¿V颺(ýá2dJ¡”B	e¶mç>5¯‡ã^s2ͳ™ÅÜûþÎûÞsNûüý@”ðâ8@b•<#˜Ÿ(¡
)A›À/àØè0€uNŒì
Š7ÆàQ¾‚‹ÿ€©ß}„À5_D	¾F|NÌ1Ú%ŠÑ ±Îïb°¬½¾¶¬õŠÐgT0TP"Ñ9pi‘Jž&Æ
XPXµHgHçÀK¶EY`YPհ¥ÇXËÆ8kéûqGñ¢2¶2Þp§ғÁƒmùi¬ZzA°ÊbF+«<0:¾›{âάAËڱ" E=Îʫ8AîÐ
×`'cFÍsŽ;sëe²œ¿Îg©Þi†Á¢˜‰-\“­ú5Î=٠bC޶ŸÑìLÆ	þeˆ[£`
‚±PÀqÍ¿{+‰	öµ+cƒ.hJI”âÂc¼Ýò¯Gªu
£ ¥Ï¢šK۾‰<Ò~ý§
:{ }vg_ÄÀvƒ¹iT§þÝ?Ë¸®M£Åà|àÈ2N}i	ÄcÊ9½ÞÚá:w©ŠqèΎ¸ŽŒÎnšr¤þ†qg;°&w¢ÁŒp
@¨`“êæWbs­¡"<^£’oš2ÆΫ¦^¡jçºkôЉk."QmŽÅ__ÊÑùö§^3dH8˜QE×씝êç¦Ã`©*†1w6Š0¿ë»ÍñnîÒ¢Q9÷\ƒr›$BùŒÑљ}€ƒDjZõ}®PDK¬äJ¤á³FÇß^þöޥ܈²Bƒ¹Äj	-ã5êry‹(‹Ɲ]±3ª}ïSð¢e½ìD£±ûsÆuø{ªSG/]IEND®B`‚‰PNG


IHDRnv#IDATx^UDZC0ÿÐkuÆÒ,%X‚%³t– Ø9¤8!¬—‘3IEND®B`‚‰PNG


IHDRJ~õs^IDATx^•ӽKBQ‡ñ›EXQD&H[CK´¸õ²4µE†€¶D‹ÔÐØ´õ2Dc9ÅCÑP$Dm‘´HP’ö¢aAŠz‚Ãá@ÞS(Ïö½÷3ü†c‰&³ÐÑK;N	ЇeLƒ¶xEPd7RÄþ䨑$A	Á)NƸ&üè'KŽq9,!œ3Lœ3ˆ#ª!‚2H†°\ ˜VGß+Pe„ŽŒ@þôÉÛdxY¡B›	œ l•	±I™(]v5€~Ž%}&BÇoà¢`y¼¬iþÄN
°˜£Z
øhá‹4
eX¤S,fy«#¹·²Jž[…²ø%ud;
鑱I½¢€nˆš&èW< xÑ@çb†	*xÑS|“ÀÖB–ÄQÿÍæYV$dÆxǍíÅÓÇï6
F¹” fæÔ?û¤)ڀh²òdsˆÃ(>IEND®B`‚‰PNG


IHDRJ~õs_IDATx^•ӻK‚Q‡ñ7‹°¢ˆL†Z¢ŭËÒÔ!AþbØ-jPCcSÐÖeˆÆjŠ(Š„¨-’	JÒ.¤¨'8ä{
åپœÏðŽ%ÌBG7­8ñ2M–1
úØàAUÜxHûŒ’¥J‚CŠNq2Ì5á¿@/²ŒÈaàœâ$ñ˜AAP
„l/iÂfp`B}¯@…A¶80ùè“=6É 4ð±D™8AØ*bQ:ì jEIúL„¶ßÀEÞrøXÑü‰9œ`1C¥äñÓÄ)>J3O»XLñVC¦åÞÌ29nʐ@ÖIî4x¤K~Æôz¬€®Ÿª&kèW< xÑ@çb’	ÊøÐã|s(­3„,C̲¨HÈŒ)ðŽۏ3¦߮q)AÕ̩;êvIQ°Ñ`?iˆO¢öi#’IEND®B`‚‰PNG


IHDR@@`¹UýIDATx^í™kpUÕý†ß@’sr;¹‡„B\$$@¡*X­…ÑÚiíX¬X‹Š"¥8t°ढ़*„QükۿŽ¢ã࠶Öb¬ ƒB©w¢E”p“[ˆ„ÜHÈ9'çifÍɚ=ŒÄÙ'ú¥óÌ0¾¬g޽æ]¿u–ø/ó?s}ÎOL?ÃÃ
æoó¿r‰;»ôpÅ)^yûI0ÿz¯8źÐp/`—öÌó™۵6°½ïa >Üuæ©ã?½/CřD¬ÄPœ¡›ÅÿYÜQno#ÜֹöµÑòD’²€ÅÄ«ø»2Úÿî€vêyˆEÌç6îe#'$Z›oW‚É!f¨ÎåãäÝQü L=sˆCNˆa›ÀÐõì…>Å…¡
Øåö\nØE-:/WҌQX¯$«0»ü3Â3
J!û8ºHIŠ3{aˆ±òÞ72t`ún(§èk»¯P	f;F/`v¾G)­ëþŒœpki`/°ž9È}œø£|ò˜Ï­€‰?±n\ø"Y¦³œ°™+Ìi Ô<3O‰æ3D'`ŠÇ#ßá‘åçtnøìå¦7më‘eMwÚ¢ˆU¢2ºނéV Š6<Q0[iºfTý°ý„cüô½_¤d)Q±Q
˜¬œP3|Œ,¯ð×û5U“U©‰š¤šWV¬C–gøè:“íE·ù”G¼†,­@G“jU¡ñ*Ò«<³¦ç8t:ršÊ0D)àUšüo"Ë pzTµŠåW޲•§B•ïZ°Y6P?K)Šװhҕß{!ËC¼
”-ŸR”¡<×LuÂ1GE_@ÛËJ7}µÀÉz€J+0’^ 竄QÊP²’”ªuo]Úú	ÀîgeÑh6룕J6ÕH•ëçn°õ¼{ƒ²•öñ%íÿ:çrU, åq¥Ék
ɵ@¼|ÊÍ+ë9]dX
<ØôrˆÝ ËJ„0¥Üqcaä\pÝqJR¶Š>¬ûÖ
f—y…”cÇr3[Áòõ½Jµ¸,¢e¨`zM¨Žo¾†÷YLúV&ñ΀âÉrm.š Wã¾|à&dÙ
-hbX
†ƒ˕jKم€ùÊRá‚Yá |†,óØK”µ`ö²L®†˫TTɑMWZ8Žp2c
·°œE|XdƧ‘l)»†E6â˜Õ?؂,¿`b*Ñ–#\‹,—<ªLSÊîL¦Uzê=€*+FÁ_ ‹i(6ΐϔ²+{&ª襅Ï!Ë#؅ƒGßýÛ—ÌÕŵsßþÀ	¼VàzZ7(#RÊnL	JW~|yç>ï@ƒ@¨ûµ3çhšjT­MՌž€Žýò5îý}™-e¦•¢*~k%@²làñŪQ¥ÊUªrUÞzu_/Àd¹“Ê[ʮl!Vm6ÇôWÀ7ï©R%2³AÝÜîý`pŒª©t}­W²…äBÀQH»X‚,ÛhÝþáÝۮÿ|ië¦pà
¶!Ë,³…äF 2fjôœé}ÝpÐq=Ç1pB‡NS¬Àh‚@ïþ9&·‘£9Oã›6üY²yÄJìãQJâG<,øt¾-$ҰR^|y8GICNÁh|ÎäK H¨ û_vJt#à,å½Ïl!
Êí¬F–·xóvJt!àÈ`ô¤Î&€ŒDÀÃýt8r™@û&[HnlywͬPÀi–Œ΅DnÅ8–:Žç/BÏLQ²É€½)*S*߼´³L£\Š˜Éíl¤mMá vœŽ7Ðò¤Ò#…äBÀޕ5BEIUÝGÂ4ÂyéØÿUÞÙ{ëæY/'p÷ⱑBr%`ú r6–ì\ë˜É:šÀI¸óО—[¤iýL_r=ÀGç^Ý9xÏ@!¹°[qRu°½‹t„ðQËrà›ƻL¸\ÓT­*UôS©êæwf["º¶G¦wö3˜Jú÷S8'e!¼ðZUk¢JU¤Â~ƪü酯"KÐצ™“ѥ€³’n¸40W1b™H¿ö¿¨TdîŒYÊÖH©âÌAèA–”gѽ€³’¿w0Bxh¦¯g^üÊTŠ’”¢L_hÓȲÓÌò›£ٽ€sN|ðøYVûV®R• •ž|ÀSÈr8{XùJRÀ9'¶4ÀeV “nB§~S®4%*AÉïÎîÞ	ÐLžãºpâUåG€sN|áxYV_-zaÂ]þ¿W·=ð5åI¶ß)¿™¢°s¢Ê:¿;àwtƒåëÈ@–‰ôgå•)×ÌÈQ	8çı[—A=rÉ|êx‚¸šäÀÇç4¬T‘²e“(ìœ8*yB[#܆¾“vpr{|¹ق	.šp°–Î	´…X€e{èüêҋT¤œ™ J›Aºü*©»îl<wދz6kÐúÉU—j¼üöw£¡˜’•¥•Ýteó.èæ/\F<²¤rÏrÂ{6ä֪T£”©$3E>åh´Ê4ùÅe­Aö°×ÙÁú BëîoT•JÍok)v4^À>äxBJ4Qտ¾¶aݡ-m_vŸœî>~ªq_ýæÕ?ûñGÿ¿v¦¨B㔯,¥ȫX÷3áyg£%¿ŠTª
MRj5Õp¡¹/NV¥&¨D…ÊS†’í£ÖÐl
%)MÙò«PÅ*Q™.è§\e*ÕxkŒ
4RÙJ<äØå‡*à|MLP²Ҕ©åɯ|ƒ_#•k~ÎÍ0‹{#¯i..§nrˆ—W‰J–O©JSºҔ*_?ÉJR¹OšÑþ¤;ð¨kðDžtͣ®]ü¼ÿ+è=D¦,âIEND®B`‚‰PNG


IHDR@@`¹UÄIDATx^íÙQ‹‚@Fá“eIȀPŠèMEA ±ÐÿÿO-x±6}ÂÔ.Lïeˆύãy|xà´@ÏoĈ€€qgAû½“{Œ˜1cþ»!“á ·‰/-BŽ"b1qY`ÚÛuÖB·€ˆ%+°bIä0fFB¦2fŒÝærc˜¿P(€bÀ<À<À<ÀNM}SbRJP’3e¬OòUvjê‹1¬©@ÍC¬\kå«ÔÔÔgôéù*IMçÉWX©éfv¾
@RÓù$_`¥¦›Ùù*IMç“|}o¯¿ñÈÐ}
Üì§@Î*öœ¹ÒèãÆ7÷×î|s£ÑǕ3{*9:'!*¶ìùRwàąF4\8qЯgϖŠœ„w†9…º’šGpdGMI¡.'c…‘wAçmȂ%	F)kJv
`Gɚ£„%y~´>\Dÿ:J=À<À<Àr=5Ýô|uÿ½%_ŸSÓ!ÀÎW;5ú‡’¯ϩ	½
°óÕNM‡€á_NuÀÓMÏLÈyIEND®B`‚‰PNG


IHDR@@`¹UIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹UôIDATx^͘mˆUÇgæޛö!$-X-´¢’`/ë–”R¹õ¡Óò¥¨ úPFŸLÒÕòmWWñK`-ÅÊE`A,T¢D¡Q°‚©»¾ìû:sçt8ïäNw{.ØüØOsï>¿}þóœsv<ÍõŃëÊÿH@a¸êª5”Á3øÿŠgP^ªŠW[‰‡uVq–¾!o(d’7ø…jŠÀêx…ƒWž!‡‡qœxy]×U]ÑåL*æ3u¯©¼ñǿ©w¤Ë:NLÁ3ä¡eòx†T|r€?uߙ•TP†…֞
äš;€í@ÿ¶=NLÁ}»e
øx¤BÀ&ðg‚J"¤e|¼tܯx7¥@
i}MÒàAJÿ¬٫GZH€‚ädÈtš‰ír•&C@¢ @¬ @® @® @® @® @® @® @® ®…P@„P ­Ð%P8…OÒ
h—}&蔀XAӀ–i£€XAF@ÍVsÔýj¾Z4.óÍý9jv" €XbêԨP" 8.%*Ԩ[T!‡GLH™c†+ãaï–(S'r+œî²14¨Sn¡ej„Įr…YŸ^‰DԩRɤšÐÈè€@¡a%²
Iyð }
fuôÝ@f´éº ^	å
¡Bz›ÁK*ùNÙþ–¢Çå°
gžÂGYÚ#Ðޝø²°ïFžtñÊ^ç0 AÓ
\lLéRËÔµ8ÙdªªSݧîUw«™ªcÚg¨6E°‘€
à8Àenö·?NH•’Á-±v•‹h Û6†ëÙZ³‚éÐ<¼̮üÅÔVPv{\à%¶¢t_ßð¥kÀÑM̭SߚMÝö hÚh*®Z(ð";Pº÷sG¿„Õ á4x¬~MHjz«!$9pV±Å7;Ÿø”`C1º¥i¶ÓçΚĄ©Í&)/Šàyv£ø~ے>JQñÄϰƒüFÞ;²ŽŠ˜X7®"¶H"x–½øíXØK¡øþ¾yt¦†qÖ
&S°í<–?Í|~ÜõÀnƒ²?ΜkÆƸqÊÁÅäÉáµK@ÂçøÞy;)JöÇ0pD³‚HØ,}Èã)¯Èq²gn·-_qOxùÍ//†ւã#4ÓîéšNޅ Ðħzælu]'ĞóJI!x¡iQ꽍I”T@0Üs×fʮ|d©S£úa_™Ž¦a<ܾ|Úd|<„ڍ왱	W>9¿E„˜(ú>kóGègŸ´‘PÀ)4ïx;I½†]N´¹ÐDԨP8Ñɣ¼ʯe9èáSÛ×?v¬=chÿҠš,§!¦¼»Q¥´yp$„¶p'åú·Ç:×Îذîb À-ªMå±wìƒxvôäwøktǡ©kê¦H‰*F<Cd±ÍOÇC…àЁ¡¯W½ѱîåϫç9Ï—(R%$wÀ'h­ÓŠè=þà¦ޟ¸€)ÏF¹L@Eځ´‚F+N€*E.sÁpΕ/R±Ãê¾ãhó+š8	aŒKŒ2’/Ùò
ƒ4‚l\5ÊM/¢֊ËH–¤:Õäð鎒ëoÒ¹¸ÎZ>WIEND®B`‚‰PNG


IHDR@@ªiqÞ	4IDATx^í[}lVWçýì[úñBûÒõ»S*Z¶“¡Ø1†ÃA‰‚K±¢Ý©Ä"$$‚’…„¿œؒj•Ď™!I#! F‚eP *ý²¾Jéñù%¿ӜÜÜ֛޼7Ñ'ùårï9ç9<¿óô<Ï}îy'(¥þ§álø?–ìã]Æ$ ä†ј´Œ¼=Á	§ÑALd2ø<Æ~aÏÿ_gƒsÒGÕâj²ì3Nã0níڵɛ7o¾vï޽]?þxxxx@‰àŠ{<G;ú‘Œ¨I„gǤmh``à{Z)ÉùE€cÅã˖-Ëéééùá“'Oº”A?é߀qoz„7h<Ýj"õ‰ҕrŸi(
3Nò§Nš)«û‘¢œû×Gê§m›Õ+ïÎW•¿)WٿãŠ{<G»҂q§OŸž=¦7x% ã¹¹C7nÜX-mYn$؈éyœ;qþüùâÞ}˜øjÿõÝ÷kUôí	*2Ў~èÁxè!	1M‚°úp¡”¢CW¯^}Íq®|[[ÛâÊ=˜°µ³U6N‚žþÇ?‰^èszÂXDØ9)(T”m۶I‚54~á…ùƒƒƒç1ÑŸR?w7Ò×vŒÃxˆèûz5	^ÈL”p4øCWŸz²oݺõ&¸ÜwI¥~Eƒ¼`ã?éíPè…~ÎC/›€<A™A€_$èÕÏ\¼xq‘¸l7”¿þçe0Šz CCCÝÐOۢ^	(7ð‹½ú9/^|JÿÑõ!°'€€>ôcí^¨0ð®>ÿäúúúöB!BÚx}þþþ÷0éŸŽ{Lb7åáÇ¡q}<	˜ßR­ ¢ÿŸ˜‡óÅì°'Átÿ\A¡„¬;P„äF`#ZGqS¾‚@?æÁ|z3´#s$͈c†>qõÌÃù2,	°'$rKe§¾X1?<ú1çKØ`O‚I@Ùýû÷;0øå–}Ù<xЁy¬	°'ÁݺººÞÇù±/Qú}ð{1cÇ~„Avµ+Ð9~üøöQ ªªêY)nôú‘	B/ôû,Hpä‚Ϟ={ö€Þö] oGæȻ€èýôÛä~63AAYii錻wï^ϷAèƒ^è·É}!ˆ3GJ0uë֭¯‰Ëþþré€öÏ@Œ£ë@ôB¿ͻÀx’ð¦&A×õœŒÓ_hllü>þóÐÙ•Oƣúkã¡ú —ú'êÕ÷—ï$d€^³¹T¦o޼ùõ;wît8k‚ˆëEy0WÜ;k‚JÆ]Âx衾)f=H8o.]õiŸŸÿ¥#GŽüLÊó=ʃ úcšúr]+BöؓI$$IBÝwfyyù¼}ûömíììü@V÷²¸÷=(À÷xŽvôCŽ« ž¤Y´!Àzݶ”Øt6[€՝«ÁûÙlŸÎþ¥ŸëZ¶'ÀOà}W±Œq|š JðŒ隣½Œýó8Þ}åí	🃈Æï)ÌäJ¸Âe¼–ðùöËḸ»ñöøO£§AYté$
ÕHòy–«á4>
ØGùT_‡J:	°O–h”Ýù{ÒN‚WãÒ@@ðI>öå5‹3B€„à°hÑ"e)æù„L3ÄŠ€ÚÚZ׶P(¤.\¸ l…'Uðz›6mRêêj×öuëÖ)HooïP2™ü¶´Õ¾*xIð¢jÁW_f~?ƒin93½ÆýH`ذaƒҲwï^×>ÙÙÙø8© ïŠHÛBúEÁ,jâ9æùŸgŽ_"HŽ€õë×ã,ä£
£Š‹‹]ûîرCVèáÊÏ|NðÌe‚+^¦ó|ŸˊN,Ô×׏ßÒÒòÇk׮õáfûöí®ý+++ñP[¶l©Ã[,äsN't®ŸCã3±	®Y³fÄøýû÷¿#mßinnþܾ}[ÅãqW<¨ ÖÚY´(¤|‘q…Î÷cNãÓB@]]6^Iù©YÚ^,F£+¤:ó
+W®t%@Ž©èƒKO¦N:‹‡ÝáÌùÓF*U«ð•UANœ8ÑĊL5wô¥òìïh;sæÌh!GUäܹs`å&W×꼐–LpŊ#ÆË)ÌfîàÏY–,YòY]™;w®+	


"ç{û¹	¦èæáÀ°|ùòãÛÛÛßaèšƪkÿý‚ æʕ+]è·gϞQC¢œ?Vݻw£RÄ"H4h”goõ7¶ßkãuá‘(á®þ’l†¿•耵***r%¡©©Iqü@'ë/xrîv—´=¯gèÊÑÅK2;++ë’²þ·($ÒBW3NÄüÁ €‡¥££ÆÏ0׵;€$²,½@ÎçžÀ89Ã?jH<|ø°Öýó¤þj›n‚I‚"qýúõ]Œٕ¦ñfèâ˜<ÖäçÊyýzÙäԨ!‘…!ñA*•±y$3œFxjƒ&º»»g¤¦Å.Ƈˆ(ãy	SÜW%Ü݄'Ož1:#P@F¨´:tè
ÌG›€83³I²cðCkît{ï=RŒó$÷o֛gMMڸq#ÜÝüuǰxWÇΝ;8¦ (Di$ëðsq‡ñ„yês½åy‰ߔŸAeãÿ££GþmΜ9õÒo	?mU‚¼ rÔàŽ\|¬ßEHR÷Œy­­­m‰ú-PBäîD"Ø_+ø:úðµ·ä¥}0kï4(JD<üjLoÌZ½zuüöç¯r݄&wK¯°èñ=&E‹¥› d ìñwxæŸA6½ ’éò|@¾&x™†?ÇöF,soI'¶ˆQä)VsªŒ*OŸEŽLÇg-PÌßи”ñE·HPÀϱ0<Ð8#ÉD†Î\\Ǫê‹{˜›¨‰ˆÓðtðkl,M^LݶIEND®B`‚‰PNG


IHDR@@`¹UkIDATx^íÙ1
À @Qϑ;{fk·‚J—çŸÏ!SR¹7j²µü–æß^@ïD-ÏÖ+
©œ Ä°RÿÕʌ5<ˆk€Ö€“
ÀÃ3ü"ç IEND®B`‚‰PNG


IHDR@@`¹UIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹UIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@`¹U/IDATx^í×}¨–gÇñÏußÏ9í8§ÕY´E؆•Ô2FÖ‡ 7Xåp•4
Lƒة
涃­|	k‹¶^d:ÉQQsj­li#–8¦é*Šƒ
ÜÆÈô¨Íóò¼ÜW0.¸á¹9p{Eõ½ÿ8ÿë{ý~×Û¢/™ÿuÔ €ˆˆz"¢¡Q2AQúb
‰Ðk!r
óÝéQû=á»>ª_.Yz NAɽËcæ­´ßr£:âÌ/ 7àá|î—ý٘ӆ½—Ak5dB3*æÿ6W-s·…Ì5èqWð1/×0ó	dšJÐo³ÍÑÌxAf”UhÉf>T‚*äò™O€0å éd˜é
 ügÞábÄÿòëøÿH'D "ãÅÈ5ô™-ˆFE…Ò+áâ¼Óç]k³Ï]žÑ!ˆñâlÑwµyfiÆf\ï:owRGˆuo›¾õցÛm˜ç6i+D¢ĺA@ĩo¸RÉ
6ðVïp‹%æih:f§uþ©PÔJ 
–	.·HÇgeSP(™K|ÜÀ|¯ÃÙþã'ô>-DQ¬
¨¾þ\ã’cÂf÷«뻆Í>
xÉGì[â:Oië¤2J
d•=Ýg•–.̿à³æ_bȰµô[`¶÷Ã[,s·5ë“ËdB%}ŸÏÙ0Û}V
ØhµÍo´Ër“j2 (Éàk.÷ÚiÈ?t@„Œrþ[;×o­%²†+lóÓç²ØáA‹Yê	säBw駇›å¸V	ë|’«¬×Š~õ¸ÜNKÝì€å¼ÙJ}2j}²L	y‹tq¯·ºTÉ"²Å*Ý,ð
а>¨!„ª@î$Ïé¦ß6¯VåJݠ$x“6êæU^	2™ê.s›¨›×zÐô)ž‚crUø‰gvZ§Êr7š¯÷E«<		Õ
¢¨Ðt›3wڣÊ×]âü¹É7¼À8ˆÝm-Ϻ«SÜdD7op«ވ2êo
Q2Êùkkš´×ý'|ØÝ\¯79Á!E)PM`҄	[ìø‹µ]X~ûuJ2(´^VóU‡öZãÂòsÖÑQ¨&2hš0á¬Û=ÿM[]8F=ɈçËá«	D…–IãƼ`±!G\(~¡Ã~mmE5 *¤Œ;jݘ
†Gaö”	”E¤Æí°ﰟêÆý’ž–ª	¤í˜RøßÖ;ìvŽ=šÒ`jRaÒG‡ýQïl‡_k§§™Š
?恨GZvqÆﵧH ZCڒM?ó÷­á¤ÞØg”aIUՕ ­éœG^r_Ô?‚Ýݰ*PUh™ôCg¿FMŸ¦휶_;)Ԑ΄–S¶¶>ö²N±۸V*@½bRhÚêìý^4]]eõJh:åûcáK¦ǨÇxÎÓZI¡¶@,ׁ8¾5œæü'x\3
º婨tÎúè3EÓù³‰Âö4ÿ(Ö¨¾“v;'¿q˜½Ži¥[°¶@õ~\ïøºðQ}Z5µªýC£¦@®á¤[⦡yCΓß9(-@ÎW©„Læ¯>eµ«u‰F¬5©YYµb© xÖé7>j¤—ž¹šÚ
‘úÕGŠô·O.ԩ/ݩ-qºi.I )—êP¤s¤•æoÚ©†BG&j&ŠôïI€Hú7!}uˆé›bpøu=cP¶®„,IEND®B`‚‰PNG


IHDR@@`¹U¯IDATx^íÙkŒ”WÇñïÜﳷ™aöÊˊ°[V¶ ´KƒTӆvA[nj(	ZkS_5!ƘTIÖl”¨$
	¶oššµ-
ÛµA75¥7ʂ\Êì2?ÉÉÉ83q	'ÏDßx~¯çùæ9×çyÐÿ8Èæÿ|”R¡tÏď¹byûOû“
A˜9ʮBa"D"DÃÐm~‚„4yé+„	Àç
°×黸ëÏNü¹ðúø®Ó÷DZˆ)¦|„¸¤És#\"Üyñ!¢=\xSUmbäø‚†0% Dœ´$iòÔF‚ @x¤¯p@’.j·6k…úµRßÕIIÅk#÷µ„)Rd,yòýÍXÂü„ˆ]’Æõ¤b¢,aí–4ùÁc9C˜ JyIz¶Šp‡€0ɟöêU	訤SO‘$Œ*@ŒZ%	G‚í€iòc/JCB1­Ós҃–ð5I—_¦ž¨éØ)´€;Át!u´­VñŠ~ 1Éf™,–ôñ12$ÝÐaÎÛiòÌ>H¦¼µoòcÙ{°TÒø;L#EÿԀéàNð"A–Î6JÿxcÇ«/¾'ýÍÈm’Æ^¢™´	à3øžfºön`Ñ××^;#×!”Ш¤7¾íp'Ø{ÐH³»Ÿ”þ¨;
_”tíݖ9]àN°3!E–Žc;¤J
¡z½*iòÊsщ„'‚Ÿf2_="=jøYýURáüÎ/3‡;
nŸ]Κ'ÎJͰGÒÕ÷¶¬aÓɘßûÁàBPi5ÐMÉooKúþFæ3“i¤1ÿßà@°3Ìzú®É
ݬe¶¹ý1‚ø®»£4ЮŠ¶óKöö‡LyN„ÒUê;cÒ+ڦï骤׿I+vø
`qšö?$*PZ/ü¼]€p¸AâdÞÞ.í³à^I׏“'åPM؂%T~·N:lk%]>èá8|Ðt÷œÉKҰ´^§$<ëàB(kÚ<U¼!Û.éžKŽ$!G€;A`ÏEtý葏ö_9wøðg, ƒ&â„ð9Ü	²;"M´ÓÍ|ú襇äíè
p'ØÝ E†V:™ÅL:ÈSoþ¿p¸üø	%IYrdi"MÜò^	b$H’$N”-ïðF°§6ö™Ðàa,Øøñ™®ï„êæàààa›ªˆÀ;¡ö€Ïëö;_°ǯË>ÜáÜc„kxZÒ@a›¤ó“u²Š{XÎÝ&,e1ý, ›²¤ˆ¨	àIIÒóe€¤.Hڳ‡ûXÊBúX`3ŸyÌa&­djø†ŠR±¨	µ”vJ:sŽåô2›L·頝VòdÌúª`«)ÿ«_~ðOiG K7oå™MôÐNŽ&Ki Žq"5„_5å_Úźá_Kg.#ì—ôþQ撧ޱ²D‰²åñؤ¢¤W‡YɚàúËÒãe€û%nÎê³çÝ@Eü&>O€
š”thˆ%pk–ŽTLÆ’Žý‚6Òñ‰ê+ázSþ­aòÉ[égÅO$-)#l—4~Ùdˆâ¯)àSþè.ú覓étó)Vü»´¯b2^’´wÍ$	Ö
Ð!I’Þù¹)ßF–,­ô°|ø'EÝPsaHÒÙ:i Œ¿†é/»¹˔o"E’F:éO|á\¡z2U,#N €Ú$it7lù$"$Éó	V¼vH:]1+iôک#„Ï>d“>ÜÍ\ºly3HÒÈ,–<¸u\•“qƒ¤ÂõL7Dð{ø‰&;ö3³¤¶”Êûð$E+½¬<qZú“øu¿~£›’¤—7“%FÀ+ L‚údŽidi ‰ÙLJݓ¡›e;‡'$­ҷ4jJß,~8úãít“« H„iÒv-·å>BÔÓÁ]Í_<Smã7\´•ø4]d¼|&j×òÊoFâä˜˲߿V4;áðÞèYÍ2æÑF½÷1à+=P	T53#¤éômÜôæ+ŸfkYý,fö”'@å׾êH’£‹…|†ûøŸe1ó颕F¶ünûä?™ô˜³O3i!Cš˜}üªn5ø#M†<­4“£‘ÔÔÅk(}Y$Išdå™ç¿ 4HKÀà_̃J°%‹zÙIEND®B`‚‰PNG


IHDR@@ªiqÞíIDATxÚì›=‹Q†ÏHP4i„р4’"EºÄ&VjÔ&6ùh–­Û©©F›4¦Q'ÕV¦Ú"h±° M6 ]e$drÎdFfÖÙud'7j΁×{ç~1ç™;…¯¤ë:Ü4‹źE¾£¨#ÔÇP(ôõòMÓ`ñ•E¥PòuƒA	|I{üBuP‡â¿õ·¨*àu‘­€	­ôQ[2™„T*årJ¥„Ãaê:G½G½DݙÏçÐét ÝnÃ`0€ÑhD»\vН€ÜTxR:‰–[§D"¡«ªª[sHtLí^æ[sü8oãâ‹`©^¯s¨ÜdÞVpÓd21®p6›]I¦X,®´Ñ8Oó®[wgإ(ŠŽ÷®땥vê÷ºֶ¸òƒ}2ê5êœN¼Ñh¸h6›Vr4îWigØ@<A]P’ù|ޑ<›É_˜ã`üA¯Ãc,êT¯V«Ž¾J¥bU©ÿ†_ß®ß.» †ŷÙlÑhtَ<ˆD"T£Î<~ù  ’6B2’3“]†íøGþó`€0À`€0À`€0À`€0À`€0Àð%4M»M%ýUÖ¶cyßwÀcú!O=†áU}´·ðê“Ééꪪ:úÈ,eÆJJ@„_ûï¢òŒÇc=‹9ü²,í¦g@1Çñõ
҉
è÷û+}™Lz½ž§¿ÝSøe›rL§ScۧÓiGò¹\nY§vê§q—’»pll›«ÕjÆ*a_lsàÑ8Ùív0Üúûkœ”$IÇã†1ªÕjéx;XIü@½1K£úi§y"üó4Å'Ô+›yúêÙ&ì’{ü'üñ¢>£>`â_\Þ±xzŠº‡"ƒխ¿
à·ÏK*"SXIEND®B`‚‰PNG


IHDR@@`¹UUIDATx^½Ù_OiðV†°X” ¬„?Ò&¥½©-AaC‚÷
ßGoֽÞMŒÊzµ›¸üù<«1¡ÔbVw³êPµØÚÙ3=ÉäP§OÂ;¡s2!¡'y~í̼s&ó֧ðò»–~ìÞ/õTð·¯׀>	€×ø¥ñ+<£¯w÷0ôå¡/ۗ‡‚GŽ?ˆáÊ#߯Kù~å†1¨€KüŃÇAüºT@8xŒ‹Jp¸ÇCŠâx<%¸xüOÇxKxbÇx­µ®„øÏ	ñ<žñ”àpˆ§‰w"¸l¼l?û‹å…ï›Ï ƒÀ<>ºfC,ßm;Ü0àñÍZ¥X)îuP:(5;ÍãàÿÚô6k>ÿ,€û{ø\ƲԒÔ2V°zô¡pô«X	{–?—}ÿ>9,€Æßõs
¸‰䑓}·¾¾ï|}[XÔé¼rz:’¡6 úJ¢3HaNö򑀼éÈU_‚°øÁ,~8ì³ÈÖÞujï5€€Å+਄”D_B—q©H@J>¹,—„:*)€,ÀÆn„ñ0‡q‰ÿ^öq$#IÓ1g„ oúýè/`;€@ãÐjÔß6ޜüTãMýmë¤Ð:éèh(€@ãà¸*ÀÖ]%üè±7+}*².„€]:<pBø”ƒa®¥„ʆá)¡ª˜¯g„!I;=Üi>>EžÚÇ“ÿü®„Þ|ÿÿ$¤Êy.ÿ©„ó?	÷7‘z0$rÅm%œïe¸·ƒ’’¨‡@OBŒbJT…ÝC0€æqõ?[QÑéŽæ±˜øÝ–´Q=	ÃËc˜FBˆXŠ+¯ÛãƏX–}·#’ۦcµòÚlü‚¤ÌHZx†®`Æ,àÓ~{Ü( /û
,EÎK¸¡ÁÈòi_‘ñWìBÿ[¶%èD$ÑY7í6Øˆx¼™A’ö¸qã²_ë:\ÓéÌê@Âã
€bގ×H¼Bœ„Æ[%ÜsÉîküvt¼P‚>˜T_Ö^ԟ7þª?¯½¨¾l5:­Æé}0aßÞ¡¸çѬ¸Eâ
€ò{›àYNjö6‘'ñÀó¸^Ú
΅µ³ó$ÞaiBàñiL“x`„1!Ì#_ܦ;ûê±Ïc^ðc®ç]Æ.<ˆOàñ“Àã''¬Ÿ!þGwðÚx||8aÆÇp‰w8h||'ôN¹»…‰	à÷ˆ\ùYùr§×ü½¶Ã¦DZ*‰)„k~_\b˜”šÀh¬—p~u‹F¤äÕmüâ/¯1(åaÀ=þ¡Öъ7qØIEND®B`‚‰PNG


IHDR@@`¹U¦IDATx^íٻoUÆáßîìeÆãY|Yvm᯽+ãKDbPšHHD‚††(¨nґŽ*eþ7(E¢@J4q$
‰IlCjß3Gc>Ér2sr¤¡Ùy¥mßGs9óÍYÔÿœ> èú€“N#8
QŠQƒ£¢€5  «ËTq£x™âR¥L)FX¤~£sô@ìeÜõ¹ÇƀAª”ì|µåýM¥î(_‘!âS¦h4€æõK»[BÈ¥F{e<êŒ1uíòζRMê¸8öOC•€aÚÌ\½òô/!¤ڄx¶9CŒò
½Õ!¤&,)„¿…@uF™bî³÷„@4h2ýñÛÿü©ÔOª‘#@nƑϗŸþ!õù*7æwïK}ޗ;9»wOês¿	oužU_°P8ŽN¯?øýôúwÕÊa€6¿ÿ&ãú]%¥) 7Žlt(ãÄ…yýNL\¥ŽÞ폦õ?ßúð£'…`бøðÑúž²Öÿò
¹øÉ²:šªFMø~þ˜^ÿŽ®ÿõkγÄ"ç>}?&¬+ßààRc$¬Ç×r3!88Iý½çÕÿöKt™æ,^[]I†€ã1ÀO· J%Sý&i2N‹3ô‚Á<ààÒÒâÿß-ܜÍP?M‹a2&ó‚) ­J_ž¿1¿w?SýKx¸PGÏW¯ìh-c€ö·v7²Õ'÷##3×.ïm+Å8
Ül€	Ą;`^/_251ÁÔõKû[ŒP3d¾ †£¹¶L¨yE€Lë
Â(å`^/„*~—J4XÖ#ßÒT¨ÈËÍ`Sr7!yÁc5‰NZ½ ’€=àÇxiz²ºB—I†	RëŎ5@–¦í/ޢIEÈ «ãæÚ2C¸8ráàѷKÈȒ#@·djÊ ™šò˜ìæ{@[™z‚–õÀàR§©”9án79V€"UjzߣÇ9.ðæ3óF”¼Î"]ÎÐ$ħ‚=€2>!/3Å=æRÒc–³L2–[@úӄQš´™xnÚQZŒ3BH€›º$¥d„ð©Q'̔5ñ¨àØ4RŒ0،×ÛñRo°ÿCú€>à_#:„¤¡E€{IEND®B`‚‰PNG


IHDR@@`¹U¦IDATx^íٻoUÆáßîìeÆãY|Yvm᯽+ãKDbPšHHD‚††(¨nґŽ*eþ7(E¢@J4q$
‰IlCjß3Gc>Ér2sr¤¡Ùy¥mßGs9óÍYÔÿœ> èú€“N#8
QŠQƒ£¢€5  «ËTq£x™âR¥L)FX¤~£sô@ìeÜõ¹ÇƀAª”ì|µåýM¥î(_‘!âS¦h4€æõK»[BÈ¥F{e<êŒ1uíòζRMê¸8öOC•€aÚÌ\½òô/!¤ڄx¶9CŒò
½Õ!¤&,)„¿…@uF™bî³÷„@4h2ýñÛÿü©ÔOª‘#@nƑϗŸþ!õù*7æwïK}ޗ;9»wOês¿	oužU_°P8ŽN¯?øýôúwÕÊa€6¿ÿ&ãú]%¥) 7Žlt(ãÄ…yýNL\¥ŽÞ폦õ?ßúð£'…`бøðÑúž²Öÿò
¹øÉ²:šªFMø~þ˜^ÿŽ®ÿõkγÄ"ç>}?&¬+ßààRc$¬Ç×r3!88Iý½çÕÿöKt™æ,^[]I†€ã1ÀO· J%Sý&i2N‹3ô‚Á<ààÒÒâÿß-ܜÍP?M‹a2&ó‚) ­J_ž¿1¿w?SýKx¸PGÏW¯ìh-c€ö·v7²Õ'÷##3×.ïm+Å8
Ül€	Ą;`^/_251ÁÔõKû[ŒP3d¾ †£¹¶L¨yE€Lë
Â(å`^/„*~—J4XÖ#ßÒT¨ÈËÍ`Sr7!yÁc5‰NZ½ ’€=àÇxiz²ºB—I†	RëŎ5@–¦í/ޢIEÈ «ãæÚ2C¸8ráàѷKÈȒ#@·djÊ ™šò˜ìæ{@[™z‚–õÀàR§©”9án79V€"UjzߣÇ9.ðæ3óF”¼Î"]ÎÐ$ħ‚=€2>!/3Å=æRÒc–³L2–[@úӄQš´™xnÚQZŒ3BH€›º$¥d„ð©Q'̔5ñ¨àØ4RŒ0،×ÛñRo°ÿCú€>à_#:„¤¡E€{IEND®B`‚‰PNG


IHDR@@`¹UçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹UçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹U¯IDATx^íÙMoUÅáŸ=ö¼db'ÅÉ;Â-qjË4IEP6HH ñ"6l€+D°ƒ+–|‚nUbÔê¦^ƒT$+¢M[Ú5͛“áf®¬¿°p|ÇS
çìsžѵæ'Dÿs&€	`˜=9•¼Š• y•œ
‰€Q€¸¼@Ï(®ŠC1fäÒt½*ÿßÙn
!
 €ÃtRÀÑN·ƒK1= OŸà€Aü¨«‡w¯nàcc¥8”©*€qýÁýÏ^ ԀôG`á2K¨†õ{}ò2
˜ţHz50¬ÿè5V©3G	G - ®õ»®\¦ÍST™‘çÏ`RŸ0²þƒ7èР*§™‚èGøûÏw_b…
SRŸ@»|¼ɼ|ø2aÿ÷ÏÏSÂÎ ©Ąƒ߾<‡—É䆮53øúэè•!„ÞhB®Ÿ1råìAyóði=Z¤¾·7!.·(n7o÷'KB€ÝT˜Gß~ç§kI	ýys«u|;Šp±±¤~÷Á{o±ÅÖÏߤÞëvŽvâ*i 1@êß“¬³ÁÅ_¾6%ôë¿?tG¯&¦q̺^_9ÏÐä,+´Øøõ+#‚…¥ë{êé»0OËtH}›3,±HÈ2M֌6S××zwOêõÄd‘J@<7ô…Ë3T˜c‰•Ó?Äõv,Qún½_,à™–tý‡¯ë¹Á,S¸x”x„p îˆ/.êz?¢¨™\*,žLMµõVen`éÁþo«Cûۇ÷¤>) Ìüá=µtÔeíèWŠ9¡_/ê&€|\¨²ÀÜÀØÊ¤>1 Ÿu R¡$õˆ õ‰ºÀÆÅWñp¤>)qúòÀƖËL	隐—oü1+!=™Â:•ÐdCÝBH’„á„s,Ӻr¹÷(Šnd
€<<*„Ÿ¾¸w_¿t³È1¸Ì\Ý<”—nF™Sßnôv¤>#€¬ëkRŸ!@֎Ôg¬¿)õê³X8ݎžšIB-%@žÿVKêÍCÈ,.騸„œ¡Å:Ïr‰çTžšK\ Mƒ*eòi–°À2g9G›Έ´Y¥Sø
Ã"G€K‰€yY¢¦R?55Bªúk	ré6Ӕ©e–2¾ž7i2Y\ó?èÇå½®RÒÿCc ûLÀ?YrtÉÄ>ĊIEND®B`‚‰PNG


IHDR@@`¹U¯IDATx^íÙMoUÅáŸ=ö¼db'ÅÉ;Â-qjË4IEP6HH ñ"6l€+D°ƒ+–|‚nUbÔê¦^ƒT$+¢M[Ú5͛“áf®¬¿°p|ÇS
çìsžѵæ'Dÿs&€	`˜=9•¼Š• y•œ
‰€Q€¸¼@Ï(®ŠC1fäÒt½*ÿßÙn
!
 €ÃtRÀÑN·ƒK1= OŸà€Aü¨«‡w¯nàcc¥8”©*€qýÁýÏ^ ԀôG`á2K¨†õ{}ò2
˜ţHz50¬ÿè5V©3G	G - ®õ»®\¦ÍST™‘çÏ`RŸ0²þƒ7èР*§™‚èGøûÏw_b…
SRŸ@»|¼ɼ|ø2aÿ÷ÏÏSÂÎ ©Ąƒ߾<‡—É䆮53øúэè•!„ÞhB®Ÿ1råìAyóði=Z¤¾·7!.·(n7o÷'KB€ÝT˜Gß~ç§kI	ýys«u|;Šp±±¤~÷Á{o±ÅÖÏߤÞëvŽvâ*i 1@êß“¬³ÁÅ_¾6%ôë¿?tG¯&¦q̺^_9ÏÐä,+´Øøõ+#‚…¥ë{êé»0OËtH}›3,±HÈ2M֌6S××zwOêõÄd‘J@<7ô…Ë3T˜c‰•Ó?Äõv,Qún½_,à™–tý‡¯ë¹Á,S¸x”x„p îˆ/.êz?¢¨™\*,žLMµõVen`éÁþo«Cûۇ÷¤>) Ìüá=µtÔeíèWŠ9¡_/ê&€|\¨²ÀÜÀØÊ¤>1 Ÿu R¡$õˆ õ‰ºÀÆÅWñp¤>)qúòÀƖËL	隐—oü1+!=™Â:•ÐdCÝBH’„á„s,Ӻr¹÷(Šnd
€<<*„Ÿ¾¸w_¿t³È1¸Ì\Ý<”—nF™Sßnôv¤>#€¬ëkRŸ!@֎Ôg¬¿)õê³X8ݎžšIB-%@žÿVKêÍCÈ,.騸„œ¡Å:Ïr‰çTžšK\ Mƒ*eòi–°À2g9G›Έ´Y¥Sø
Ã"G€K‰€yY¢¦R?55Bªúk	ré6Ӕ©e–2¾ž7i2Y\ó?èÇå½®RÒÿCc ûLÀ?YrtÉÄ>ĊIEND®B`‚‰PNG


IHDR@@ªiqÞ
IDATx^í[}LTÙßÁ)3ÀÈÇ2"ˆbT]Ñ-®µKYݏV³‹ÛݦJMëvuÝøUi¬¦MMì¶ÑhHmq7Q0.d5²Y?𢬶Dc4l¢È"à–ongrîd¼yÌ#½™¼IړüÂË}çžÇù½wι_óœâjÃÿ	b±1BLÀzã¿،0“ºR>|œž؁o)ÀÁ÷ì¬2®ÿWQP™ž000'
ú3ª%f޳ӵµµ3Ÿ>}úûÁÁÁó###mp¤tt´ghh¨	mŸѽ˗/ϖdø!”€É6چ?~ü\‡ú°k êÿà¸xñâ¬þþþ“ô¿s&]êÃDØL	ð>—F»»»W¡-5"ASTçå[»wïÞr¼å'220 ¾*ýX4ä­Ÿ/*_„>'ªg${ÚZËJ=:$èó”ú’
¶%_œ9Ü!ˆôe¶µµu
Ú"ŒHÐcçÃAúNòm•âlò4=¿ ¶ŠrÁ2B6ȖB‚)`"àV?¯æææuF$hìø’ßÒҲÎó"‡‡ōß¨ŽŠs³RÅç¹oŽ~¾ì-ºVï{úP_²A¶$	2ü0³j/XöìÙã—@Wd腕——§Ñ', ¾ÎWÿÞðžø¦¹Y¨Bmt¯B!A†Ceeå²-s‚¤$
\’÷ ټB@ZO–©oVÜýðˆ½¯ÚÚھ@ÒûZ¶=8W-N…{õɆԭ ۀC†‚ÏÓ|$	2ïD?~<lS2«Jˆå7oLÂððpÿþýûGVqqñúúúR{çùϼ}ªâcdb>zôè<_s’ôH0ûQíí퐖’b¯ÃÿzïWânÑߞ%áH‘—„C‡mGß×òòòV€„nj§pº÷Š	²MÏðý
̘®H×ÎI*Ÿê?äòOßñ:Ðóå—Ô4&	õ>|x3ú/<qâÄ鶴÷î]¯Þåw"HÈ6=ƒŸe× @“ãÏßÄaT×! ŸNLxj<‹)	EEE8ÎW1z�s3SHÇc‹„lÓ3—-ôI`8ù	È؞€­´yµÙY‚¤§§§b~<_Âýû÷멡vÉbN%ÀÕ`ž!“¡>ú$Hœ@4(	øÄù,„]ٷoßÎñÐÛÛÛ懀D~–S}Tb€©˜Ô<êÔéτ%7|ދ8°Ì	5È6=ˆÑ @‡s=zT;V¤Gٞ²¾	=Íͣj$ۚè“`·nÝú³Z©¤‘`Àӹjժw ÷
HØê‡Ã2H¶uB  $¨Ip÷îÝo VGԁ7’„.kw"<xpÛ$<;ê��m$Ô2¤"‹* 4½•ÑðöAÍ9!…J]GGG=ªC‹a‰d
²I¶uÊ`@HPBDú֭[³ãßȍ‚ÿýd}IÈÙ$Û:¡€ …¹NϨ®®þ­œ7~°‰bpu¨[šMð\«÷7½ï“-²I¶u†#ÀÛÝ@†õ½?É‘Öò“ã^‘3@êK6ÈÛt«“!
´HÈWHñ“d`nYYٯ=¼$FՁʚ\#Ð5µÑ=ґŸ}oiié²v&›L‡uÐ'agò£9Rȁüüü\¬êԌB„‰P!]êÃΧ°­h“MôI°û®1LB20xiíڵo_¹råpgggF†]pvˆ@×ÔF÷6lØð.érŸd¶£.‰YD€9	IB4‡C'±9À<`ð2Aàë|oë&qßh“EQ
OBÇm,‡Ät®å3ù
§1fs[*ë$pŸH“eqü×ÁíQìT;˜Le$r[é°n„º1(¢M@àIðÝã°p‘1Œhns±Ž²5ÆÎ[C€~‰ÔÙXô	°’›þö¸>֓ !V`=	Ö`=	ÁO€þʒÆ!¬'!ø	X²d‰Ð>Ÿ LhlAEöæÛm6›¸yó¦Ð>©òK
… #   @dffêlڴI<|øp8**jÚr€7€EÀ+>È~Èœù>“›IÀDeNo=۶mR°a¨ãr¹h]^CÐöcvô% U0HãIN2÷ÝAG-[¯SŒBhRL™2ÅP{ùr…¶›ßü÷€ïß!²$ÓØñxv>R™ÚZKÀƍ½Î;vì(Ne}Mº{÷î5ÔOMM¥½;víڵm/°“r÷¼bxv7QNt‚"	®_¿Þëü©S§þжŸ~L
X¡¡¡†$œ9sF ¬]CÛ, ÞgúfƒÉNˆ¥eKSÒyqá…B´e¹v»}å“'O†¨[X†dggˍʑ”””t&`¢¬ï~ Lx,"`õêմâ*Hêêêò’T&gô\´}AúW¯^³$޾}[\¿~ýC^Ј”ãu‘àʕ+½Î744rŸØ¼¾téÒ÷ñvIFF†!	›7o$ØÇÄIÐ-7+ƒ–€å˗{¿víÅ|:×ço“_ȹsçNogYqþX”””äór–°I‚…ÊIccãé<¾“‰œÕ!þ9‚60EBB‚!	ØÙœ0o2‰1r„|0nܸñ/=Kçc9¹HŸ™ñ†¬ƒf%$F1„ÎäRLøĆ`ijj"ç_Tœw†‹3úlàuW¯ã³yc–ijgÏJÛe<ˆâRg³š§ܞl5}Ä5;Õ×y¥t99lR€Œe˖mD’þJ"*Š,‰}n·{÷w!V žؘÔÕÕUä34b།açpHä!nÊ]»€Ô××{		ñŒNŸ>íJ©ªªZǹ$ŒìZM@(̢‘±ãx‹i‡…Ëw2b:n“…ûÊ䙓“#¶oßN¡$Xˆ:Êބó>›¹O\P ìÈD”±¸Ñ/Fl¿ÑüµÌCxŸA¡BcàҥKÿ\°`ÁFè-~Àá嶚õW¡êƃÉo†&0Iqœ3ÖÔÔ\¤l/g(‘%8àDµ?x“t€4Î-ÑPl»1f?ESO|ÅpÞH_³fÍZl[ŸÇßš0?r/ްšÀ`'f|¿´©'¾x¸ü*/€,^cÇçòýDÎþJxYF€Œº¼ Wyø:™+Š[ÝÂf²Í$˜	à’È{ûìd¼²…ý<0QÃñ &7’¨[Ú.“U "@jŒ·®­$à?
“!<…R/IEND®B`‚‰PNG


IHDR@@`¹UIDATx^͘]h\E†Ÿ™³®Ò4ÊV1±^ÑÛ*‚ЪP(±6±*j+¶õ"*("*5â•B(
‰š´MŒJJj„–ñÂ"B£ բV±Á"Es‘ìž=û¿ã0v؅p‡3Îs±WËûð~ó±ÃJ…_$xå$ ÐXÄp	bi–YêEb\’@"Ó,>D
‰LFA6Å\FpåÄ|úÓ($Ü@@
®>x¡×*$' 	H\¿ÿ|"
­—P’€ sÔ*$y	€×Z‰Ä
$« ¡E
SÐJ²
ü*Hð« o‚¿
ü*Hð« o‚¿
ü*Hð« á?+ôY…$¬»ç¼%øUàWA‚_	~$øUàWA‚_	~$øUàWA‚s…^«à@ÀÁ{uÀÔ%ÙFჃ>ì9ÉY–8úÿ…ù-Hg#xžC¬…Å0ðÏq¸[Ü%ÖǬkE·¸MÜ*n"sÍ4ÂÑžå-àì™dŽU‰È’ӄä‰(R¢J
ål
û¥ê=,‡˜	àñÍDäȲh!KHD‰25êv±¡>š;•b7öS熍.3„¦ÛB¡тjSàIFêäЦéO>…¤!æ7Ž!/߳…
%Š,fe*¦…jCà	FœÚp˜Â³ÙsM»0tn[)©Q¥BÙB¥ßÎcÁ7ûîœ$Òf§ {Nð©åGî:NÕ,ªnhgÛ8@Àé‘;&ˆÈk¢þ™êBÝ-˸bGü4wû*ÞÊ$ߍ®#oˆ(ü”ýýHó2Ž“eY÷Ìj# \	(€	øþ@×ÛD†E4ÃSªÖCÆ.#ï붓"@8}§øq|õp#¼¤)SšûûË4OcÏ>Wõ¼r­é	€¢pn|ÕÞÆFW¨*”¿8;š–ñ⊧±´' 45øs|å›Dq|™ªY)£ðð×ᯙ¦e<d¶ߔvрÒè ùý7ØøxŸëÓY)Ø›oä3‚^ƏÖ#4¨QYñ2E
qù:^郊*»¦«ÝÜËsüÌq6AåâÌÇ=]_¹ÙêxŠñìu<@£ƒò¹¹£pŒAn¦pqöžû3/ný¥ÁÍtÍoÛÑz”FÞW5Ôü驗®{àö±£Å÷¤n$Œ@ÇLùÐ: Jƒ̾þê掝}Çs‹ä‰âa)
(ê1ª5^c†@aÍäg	ɚøxU©·'Ъ P€ˆß@¡&o/«ýŽÅå³Üޑ"òDM¿üX#P3-”æªÚð$b\Ó(C[ç_¤[ ™w/–HIEND®B`‚‰PNG


IHDR@@`¹UçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹U¯IDATx^íÙMoUÅáŸ=ö¼db'ÅÉ;Â-qjË4IEP6HH ñ"6l€+D°ƒ+–|‚nUbÔê¦^ƒT$+¢M[Ú5͛“áf®¬¿°p|ÇS
çìsžѵæ'Dÿs&€	`˜=9•¼Š• y•œ
‰€Q€¸¼@Ï(®ŠC1fäÒt½*ÿßÙn
!
 €ÃtRÀÑN·ƒK1= OŸà€Aü¨«‡w¯nàcc¥8”©*€qýÁýÏ^ ԀôG`á2K¨†õ{}ò2
˜ţHz50¬ÿè5V©3G	G - ®õ»®\¦ÍST™‘çÏ`RŸ0²þƒ7èР*§™‚èGøûÏw_b…
SRŸ@»|¼ɼ|ø2aÿ÷ÏÏSÂÎ ©Ąƒ߾<‡—É䆮53øúэè•!„ÞhB®Ÿ1råìAyóði=Z¤¾·7!.·(n7o÷'KB€ÝT˜Gß~ç§kI	ýys«u|;Šp±±¤~÷Á{o±ÅÖÏߤÞëvŽvâ*i 1@êß“¬³ÁÅ_¾6%ôë¿?tG¯&¦q̺^_9ÏÐä,+´Øøõ+#‚…¥ë{êé»0OËtH}›3,±HÈ2M֌6S××zwOêõÄd‘J@<7ô…Ë3T˜c‰•Ó?Äõv,Qún½_,à™–tý‡¯ë¹Á,S¸x”x„p îˆ/.êz?¢¨™\*,žLMµõVen`éÁþo«Cûۇ÷¤>) Ìüá=µtÔeíèWŠ9¡_/ê&€|\¨²ÀÜÀØÊ¤>1 Ÿu R¡$õˆ õ‰ºÀÆÅWñp¤>)qúòÀƖËL	隐—oü1+!=™Â:•ÐdCÝBH’„á„s,Ӻr¹÷(Šnd
€<<*„Ÿ¾¸w_¿t³È1¸Ì\Ý<”—nF™Sßnôv¤>#€¬ëkRŸ!@֎Ôg¬¿)õê³X8ݎžšIB-%@žÿVKêÍCÈ,.騸„œ¡Å:Ïr‰çTžšK\ Mƒ*eòi–°À2g9G›Έ´Y¥Sø
Ã"G€K‰€yY¢¦R?55Bªúk	ré6Ӕ©e–2¾ž7i2Y\ó?èÇå½®RÒÿCc ûLÀ?YrtÉÄ>ĊIEND®B`‚‰PNG


IHDR@@`¹UçIDATx^í×OKbQ‡ñ§n×?WM¼é YŠŽX)%ô6š†þ¬Zͬ„i‚æ5ML+׽Þ@Ä³i´¬œë„ýˆ{8Œýnjõ|…¿CoÄ{3ý>´‰`“ƒ©Ÿ‘§B` âS¸ûû¸L)ÄLàà»ÿÜ{ê=ÝÃÅv:ÁûsäûŸ§߇xD‚]€Î'îŽûùÁú„»#Á*@çoOT^ù„Ûc` ç‚]€œ	–r^&XÈy™` äß'ØÈy™p¢	ƃ¼@0ä%‚@ÊLBޔ`0ËËÿ!rޜ Î
âêWøðjòG}YÇ'K8@D=c€ž:Y"aQRä(Q§É:›l±M›vÙ{À»ìж͛¬ӤN‰)¢8&€,Eª,²Ä
Í`-Öؠ-Úl°F‹¦Ú
K,R¥HÖàâ1M–<Eæ)QV¡FƒU°JƒÊj%æ)’'Ë4®ÿ£x¤H“ÁŒ*4@ƒ
røzҤðˆ†ÿ#T\¢Ĉë%ñ)P5
ø$‰£GŒ¨>ÛCÝŠ æ G„$9* BŽ$œWÓO7¡CŸ²(ãǑŽÒÑƀ1`ƀ1`ô_Ç#>HBŸd¶Îò‡OŠþ(µó0ù{ˆ‡kx–ߜö	=v¡ò7§ú,7{˜\}yVƒüËóõӇÉ$Ì0G½ÛQƒ|·C9fHè§Y¸Ç)iòTY¾:“	rþêŒeªäIëÇiøç9>Eh]ž1yN‹Šø&Ïs™`œ7¸‚QÞäKÐùŸ߇óf™*æ™"o
Eóæ€9o ÞÉ[È9o ļ}À0¡ÙÿŽxyþ��·&Ìò‘F·ÓíÐà#³BÞ:@Ȑ§D5X‰<!o
§	i²|–%'çÕDÀ?ã@ÜeÈլIEND®B`‚‰PNG


IHDR@@`¹U¦IDATx^íٻoUÆáßîìeÆãY|Yvm᯽+ãKDbPšHHD‚††(¨nґŽ*eþ7(E¢@J4q$
‰IlCjß3Gc>Ér2sr¤¡Ùy¥mßGs9óÍYÔÿœ> èú€“N#8
QŠQƒ£¢€5  «ËTq£x™âR¥L)FX¤~£sô@ìeÜõ¹ÇƀAª”ì|µåýM¥î(_‘!âS¦h4€æõK»[BÈ¥F{e<êŒ1uíòζRMê¸8öOC•€aÚÌ\½òô/!¤ڄx¶9CŒò
½Õ!¤&,)„¿…@uF™bî³÷„@4h2ýñÛÿü©ÔOª‘#@nƑϗŸþ!õù*7æwïK}ޗ;9»wOês¿	oužU_°P8ŽN¯?øýôúwÕÊa€6¿ÿ&ãú]%¥) 7Žlt(ãÄ…yýNL\¥ŽÞ폦õ?ßúð£'…`бøðÑúž²Öÿò
¹øÉ²:šªFMø~þ˜^ÿŽ®ÿõkγÄ"ç>}?&¬+ßààRc$¬Ç×r3!88Iý½çÕÿöKt™æ,^[]I†€ã1ÀO· J%Sý&i2N‹3ô‚Á<ààÒÒâÿß-ܜÍP?M‹a2&ó‚) ­J_ž¿1¿w?SýKx¸PGÏW¯ìh-c€ö·v7²Õ'÷##3×.ïm+Å8
Ül€	Ą;`^/_251ÁÔõKû[ŒP3d¾ †£¹¶L¨yE€Lë
Â(å`^/„*~—J4XÖ#ßÒT¨ÈËÍ`Sr7!yÁc5‰NZ½ ’€=àÇxiz²ºB—I†	RëŎ5@–¦í/ޢIEÈ «ãæÚ2C¸8ráàѷKÈȒ#@·djÊ ™šò˜ìæ{@[™z‚–õÀàR§©”9án79V€"UjzߣÇ9.ðæ3óF”¼Î"]ÎÐ$ħ‚=€2>!/3Å=æRÒc–³L2–[@úӄQš´™xnÚQZŒ3BH€›º$¥d„ð©Q'̔5ñ¨àØ4RŒ0،×ÛñRo°ÿCú€>à_#:„¤¡E€{IEND®B`‚‰PNG


IHDR@@`¹UIDATx^íØ=K#QÅñ£Nތ/‰F#ɺA
[‰,ø)¶Y_š-+a]A?ÓÊZY[Ùm/"kgc¹½{ðž…Á3NFb3ó´üȝ¹pï<ïH) ¤€@ gÀFl‰}‘7€Èr†þ~Á
!â¶Íý¤€fd6] !’ ã:›È" c  óYî·\Ç9#$€yn
;ç:÷[(AB@ç‹wÛÌóÁ	™H@†Ð1HøóE#€Êßìú<eŒ"	Èq«ìœ'ÜìAtþÔªGž,ñ0•çVÕñ9
@çá5L 	(p«öŽ$@绀9”^(aÎ4Á:o€ú«uÐè¼æ_
˜7€ @ä4Á:o€*!pHL–4 y,`%
bFPâÖB"ìÁ"o€øƒ‚D>1@ôoŸ|¢	"ß7‚?¿nw,ßÂív÷l
¿۶|ÿ<¬ó¬SQ¼Þ#ô
pò¸ÞC‘ud1Š©«ý§Gú–z¼ÚÇËYxš‡žПüÅ!š]@E”QGëüèeBȟ¡ÅbÙÿ‡Á,Ÿá­–?;Æ2kþý*è¾FN`Ñ6B€
|Æ:Öô`[,½œo³4âÅíž(¡öÁø„U´±,¦Un­±¥ò5Öì¿P€´°€æÅ4¸ÑŠãÎÿüÎsœ& Åø4*(‰©p£–TÞNCAHö> ó„doD:oEHôN¨óЄÞ2hB/™4¡—‘$_±?͘ÿõ]ç
 	Kþ¤ŒõqêO¼%7€&4±xyà:±>Ï;—XDSç
 	U̢þû[œ
n×1‹ªÎ@Æ1‰
Êq®hˆ­`ã:oeM(1ʉqIî3^ðùÈNô5ӹ8×tà>ãA¬¼¾¨äĸ¨ôÛÆMHøÞx;½-O) àŸôm‹
¸tÍIEND®B`‚‰PNG


IHDR@@ªiqÞoIDATxÚì™?‹AÆGA°°PØþR)z] ­mÔoO`—tjwǥ´°(j¡¥äl,mB°B°É}É&øçTDɼ›™Éx¹;RfwŸGgg^…緻ï¼;àœ3?·øÀñx|Ž@@uÂá°kM>çԤiPŒyÀcƒÌç
~·P(äIƒ"Ù%è{½^ÿ1žøAD"¡w»êZ`ð†>f³™0¼þ$ߨ—ÉdtÀd2QÝ+s)táÙ)=°F£¡Ç
¯wtCëd³٤µÒQ:æ›͆ӸÐX(+u‘ñ¸Ð[¡{òÐn·µ7y•ÞÞS!”ƒ_¶Û-K&“l±X8’ËåX·Û=»5ÜØ:«T*ºð±,‹Íçs:çóҙº%"ý~ÿŒT<çõzO§S¾Z­µÿ^¶móÑhÄ…™y”q·	à…Ж&ªÕê_?òŠț4O^/L¤kE°T*yÎ|¹\6¯’kå[™¿P	£V«yö
 ÛY¸x|¤‰Á`ðdX.—®É”¯þ!gçq8%&¾>\²Ù,ëõz^_2Ö©TŠ‹ÒѬ^»´p{«Õzª¸¡àOtÏçuÀp8T„ƉÛ*ÁWB;òR,µ?ò*ý}¦ ›ĥ¡ŒûÝÒÙҽåð;ò2µ?ò*ýÙzK,‰°Óéä¹-1ù4ø}¿߳X,¦Ÿ‡ö±!x3ä{x=à³öK€¶Ę––_>žIEND®B`‚‰PNG


IHDR@@`¹U¶IDATx^íÙkp\uÇñ'÷ͽͥMLڦ÷@[Zjah‹€ãTñ‚0ÅQGp†‹8¨3T±
Î`gÐñE•¡‚µÙ={kÒdJQK	¥”n’†Ü6ÙK6»¹oö|=ýÏéxv§MO¢‚/Øß$³çÕó9ÿ˳ç"|Èù|ø b¥œã“e$[%çlÔQ–‘ù|ìÌÒ9’'ùR Ž{¼V׶êϵâ0R y’«(Yÿ€Y:WòëÛâOûSý`f2ùÎÄÑ;4ˆC1ì!ìÌ3ϓ‚_/ùqªT˜ LQ0Ã̔³{‡J¾
„}€*nœùgˢê1€nžf
d™Ê".å.ö1	ÀôëooU#‘£àÿ)À<wGۥÉcÛÈFΙ
î'ŒýâÚrÉ7WÄ<Öò…]7ë£pŠë¤„Ý$ɖ=uR`NÅ|fù¢¾ÛHÂó” ¶r5=Àôñ½ËÅa%ؤ•ïØÉìBì‡:ځ©<Tkæ°¾û2=#sL5§€±}R*j9ΐ+ŽË+§ކ½HF
¹‰çéBÆ9Â#lÊ$°ŠÐû=)–|sìÔùçKéÀ.8Eq ‡Û€Ìð*gnRÃϬ–"ɓì¹Ôì?А!cåWâ 9šèŠ
¶ŽÐg`Š;2ûÈsRfNƒm@–äH”õÿ´Œ™}HMÇN[[†šU†šƒ‡B¯OܟXŽ>þø)6ÇÀ6 WŠJ«¦߇miƒï’cá#¡æðp?ì{U|Æ÷ƒC-ñºΗÒ¯=»¤Ü{5ÿeþÐE–p:ûð‘ÈhoØu‡Ü
FÈñD|¨y´BTZ7“ǤRŠ$×&@M@¡,ì
ž²”/&Œ¼9ó&´¸+êr)CÆ÷˜6â��qxÌ(`ôGÖI©Ú6yR,ՉVØa|HÆϔÕƜ‰¦HSŸ	ès…㸖pGý±cП6n߷ÉqHŽ=€ڀR“Â2àE`¬#êKåǚ¢MýÎNMèÔúѦ„3nŒBğš„Ë-€§€îݖI°(òO.‡‰´39
¿1썻M±f­ݣ´{:´ AŠ;‡ÝßÄÜk|úƒT«`ЅßßCˆ%)t¢þ¨;êLjöŽvè<iì¯Éb)µ	PK°âgW@·
èzØrÍÔ½‰÷tžµ¾DR#ejÚܼbˆ%㤈
i³zÝAOütŠG2oè/R«ú¡m@¥£AŸÖ)²þNŠᣃî>­C{ËsØçly¹Mx¹ÍÙrØwÌp÷¸û½ã¡·Zïÿf®€
Y:~Š´߸'I1ÚsÐí:î>âsµìkUöµºZŽøÞötiÆø§f¦YdìÞܥ¶§Àa–÷ÝÀt’Épó«Ïթµ»[ý®fÀÕÜêowwj½ZÐ=˜GX~÷e©1[‘Í]°@êŽ<¯ –¸I1Ö5ÚN¿3 ½éiõ+­þ7=­×èŒі©dŠ/X@r¤j­,’û۰@ʤöŽ­úÌ$À&0'ƞ6Üÿîw°)⌻§â)ö§¡ú^•åR%ŪÙlÅ%†xeäPæÏë×ÐÑõ©“	§ê„ÚqO»÷¸§SësEœ£þä°N‹-€BBÀ¿!K¤B
%Ç. WФR–½ômf\ÿ€ =vöj]ZÀm,=-ä{wf¬Iß$NÈZ˰CªV4ƎÁn$-Ÿ#ŒN’‰ёÞPGðdøôHx2•Dg?iØzbwÉ
sØd›“°bϭz*ÉU„
%È4“Œ3Æ8“LqÏg@sp~Ù 
Reù%°yET(¥^Oüz¨G2’ËV¾Ë<ϸ•%ç¼=сèÑ!çå‹͋²,û¥ùR"ղ|ÁÆÈðÕȜs—"$^ڰÐr—dë²<W­ƒÉêk®Nà$+lr¸Æ$|Š›¸`ìÅM,÷Š6ÙêºÈèˆÒxãö‘w Æ-¶õ¸йÇÚJ&ÁޝQŽ9
Kå¢ÍW÷zö³aV@!÷©b s­
Â,“P ¥a™4ÊfÏÓqÐy/â8 ‘Ÿ0@w[ð(ìDf%Ød«•P¦Fa­l¼áúš™˜ÀËnîf'7ñMb/ {÷¹ʶ.܉ÌJ˜N(•*©“•²N6_á_FOè:df:ÞyàWw˕r…\yl/Ĺ꜄„…0ÀJ(bY(5²LÖÈzÙ,—úúßß߶çä+§µ_—«ýÏÏûVé'd‹l’
²^.)»ìý$äH¶ÍgDj9I™TI­X%e6-r™ÊµQÖÉZY!
s…4–Ü!ëÂë8”K¥,–:Udµ¬1J6«e¥,—%o‘TY|fÍ„¿Ÿ0úBU©ä+‚
ÀÙqÈ3ER*Fµ©‘Z•U¸BʤÄ@«±Zb¶œžeúï=۞mҟ•ŠÃ`23¥ªp¡ÁËSqH©"4žðU`ú””«Û5»a2T¡|#ê¿ùœ؈š.³,=!›ðÀ*Qc``…˜3æ±ùQÄÂÀÃëԕ²
€íØ%l’ƒ…õêÁÅÜó'ÜBÙl§xïi©›`þ„¿Œ Ҷôbu¿8Àü	jSÊ&ïccÝCGŸ]t‰4HõÜáü	õ²úLÿÌö¯“ͲNVJ­چ¹sنó'”H…Q°Á@4ÊE¥Á8Z(EçnDöcŸ¯Úx•ÔH‘©6ŽŠfiÅÿåd©6îPMºÜH™Á9ûNE>€X߶©X^m}0³‰gôNÉ|Èù\"·ÏÚçc‚IEND®B`‚‰PNG


IHDR@@`¹UŠIDATx^í˜{pTÕÀç޻Ù]!<"
µ"iÇ vÂCªíŠSe:V
íT°
Å)´#µvZ§¶±P_VßÀ(
°J ¢ƒ”È#˜˜çnvï=_»×3sf§!܌Íø¿oÎÎ=»™|¿ùÎs®¾X¾`¾øRÀ#DØ^>(Óì ¶u±`S+T.nIŒ+,MnÒÁ]#’€2ᔻëGöŸåuN!DÚýý]©
ÛVO:B€Q¡Ë(éhlÑ]œ彯¹¹èûÎBҴ’¢Aæõ#^K€t.`ŠîLJ<1§÷|UyŽשæ##ڃaŒäR&²o}0ïœwŒÈçP(\Ü7Ï:ÿ/޹°–{X¦#úpó~ãýS—¬M ¹ø&½Wsåà?«Â}ÌáU:§ˆEÌţ}ÓÊko>Ne(¤Ã}&Õ~oÈãªð¯|ã¤顅ÛË!âßøê£ñ̊‰„Óqúý߸ïn®£…hlä"v;{Ú3w”…®
Øâ¯ýú©Ëp±˜®PËXöQðͅÍZçúî=ƬTE±„|’\ÍԠÚx‹ÅTO“h¤Çw݄g"GüðܲŸV,.7°„2ò—XÀ,0'џ>pÁOjÉ »2	Ãò/(í+ÌÉK_Êk,§¿µå@ýŽ£ێ¾Y·­aOêˆWðO~ˆžbNïëo³S1jñvʂµLÀҏCg›kÒÇ­ƒvœXѐD˜ϽXÎa¤–VÜQKÆÔ zzô½îÁâòÃðÛvdÆü\ij¹È=9éæš÷#K¹
Ën^F%§_¥VÀT॑±AX‡e6•èlã»*åŸ	¸AØÂ'/hÿ¸õ€b¥XVý¦˜‰H4³ù­„ç²h٧RŸ¥ô¦¤ùÍ}™‡e5)â×áâD¯€ƒƒ×óBX‡e
}ñ›ý:7Léh/puÌ47×rߴÖÀ
6íluùEÑÌ釛8va¹h¯S:""M†&×Ï}ëAƒn?…ó±ìJ‡íB¢p.IzÒÄr>B¦^Á­Ì~aPˆ µB2
‰²Q¼…ä ›>¢Ày½ ÁRŽà·!¥8!Ÿ¬	ڄAXê§¢	¨\HB
‹ƒƒ_èX2€S€2!ςí-PŒEӆV*ÐY%"Â'XzAчÔ-’íëAöPSHú_odðÉ*­°î¸Zy…ð>–¯©º®ž†’ÖéC±üˆ—ŠrpÅ!÷iÃôEá8nIÀkXÎê Q+ €4}<c$;0ð$·/‹ ݕ˜…'ŽòH–»îFŽaT¿‹ M@>¸uÀäKyo³žK¼¢ÓÚöHy(î߉Ä`ÅﰜÉéøMsw£‘0"V@£W¼qÞݓÜ>Ôc`.ÛHTMكŽP‚A”£µ£ÜøÏ[ÃX®Žm8ž1+ Ñ:ò˭}FßdWª™ɣ$‡Å¿ÆՎ`(IÄF¸=kù–$³€MÏâ£ÑHÔI(hüuÀ<а<Îmˆ*š¸À)QÿÅ!J9ž7$1Êëý!ã8ŠåGô¥eﴭø¡BÄ!ŒÀԍŸîpî"nÇòöò¥%ÎEÒ*
’&«ª§ÓV1z,å,ÖüÞ\È4D_>Y2U÷Îzt®ó"›°¼ÂPneý
U!a3¿æE,ಂbŽl¸z£)?]!È	ÜüÎûxTQŽêYÈ@.æîã,a:ƒcÒ[F1ˆ»ïðüS]Ì&õVìàQ@’¢޽ö?Üç¼jÆQGW™Í&c˳£fT§0ó ʝPÐá ´Úvռ–ýÃÙÄiDÅå[ü‘±\Ãš(š²õ¡ŠDçw‚|Ðá ¤Io¨›>«齡lçZ¢PÎjÖñcÖó43™&zLݼ¼"iN" ‚ ɒ!MÛóWΪ]WL¯0œÎHrï2ÅýŒÇÀæˆ
D”²(@m¯+ÿéë׌™=¹ç$^a«I“œÉṳ?ppK<9 ¢?ä)¬¢×Ô͌ž±#h@:°ËÑ(2®jâºßÞøµ+/_Nš-¼ÍG4¥œÉh3GßÿÛʙÿ¨YÅЩÂIDh|̲Ä_shÍÒËVÜ5ùì	½‡UªJòÉ6ڼæåÙÛTS-üŠj6u °‘1¡ 1tþ†ÄÁ
e<Œ
ð*Knqک¥eñ"×ó³-õÇþ½õ½¥{›3øN¯øîŃ&639OFçhy&Tðt´wD*§JÄÂÃÃ%<ødÑ.Ņտˆ  ‘“½¨eR„»#^..*Aç"Ѐ‹ß(ÃﬖA“V1¹ÁØ™q\òç‚lj0&qM8v9Yóï\¤‘á‹vªÁO 0m×ցː<“Ö\Áa³¿	\ Q¸k')Ìà)úÎa%A”
äK€6¥Ç4ÄFT…j¤c…gh¤øŒý–&@¢TÀJ€tø¶<ÿS0t¨`Vw,Ž‹ˆ,ÐAŽÐ8ø)Œ£ÿØ}¨ˆ¬0“§*y¨©J	yxЭ
ÁàoW±‡" ~Ëø‡îÈW¤Q†ÜùÆÎ¯ïõUH×í}ú²eÇÚÌ˅|n«‚ ÇVñ섒B÷ù㴓¦ŒYV ÛÄ\pb¯µ¡ðɆ
ÙV@ý¿Ì5ÂÒgÈ⣻³VAa®ú¸˜ç0Ìu½»@Ðf̺7}éÎU€Mg¿!%|±üiÞå2ÞàIEND®B`‚‰PNG


IHDR@@`¹U¬IDATx^ÅÖkŒ]U‡ñßÞ{n½*†ÖRK¸¶É(ŠB‚Z41‚EDÃ-š)Xl´ÔÄÐhhE¹©$Rä¢I¥ÃU ´8,:#ˆM[¦Îíœ9ÊÎJV89ΜÂó~›ù°žõß��¼·•zyïHÆSo‘†zc­TTîžD*•ÉԅJ¥IyŸ'¾’$É×ät7ù«G­q¡÷çI’¼K3ä'ÊÌö¤Û-t‚c}ÑÕÚ|L®™ÐçL^I¢oðÍ_Öj›/ZRJ¦»ÃԼY¨4ɒ¼-µ
ÄN×;ØW,v²÷©Ïkžžìnóì¯Ña®KÎã`ghÔàp,բY½LP¨E „íPwÛâN7ø“nK4ht<-‘³áS´J‡[üÄ*mtj.‘HjÇ?b~s²܍–ØoŠ•–j2é"̂ƒüÚés’nu•“¤G¹ә²Ê
¤UܿÞ
^â~ä|×yÆþ\f–)ʘÇ9~žç|Ç9.ñ ¿iLüØdY­	dšœxˆ•Àá–ÑèT™J4q•'8‹išeÒZHe¦k˜+™ÍR•
#Â0C&­5>¥ÿŠp„ŒٕطÌlÕIkA=m
"Ma–LEÊGc+l—„ªa%ºúuŠp$¦©ÈTèפy%a'T)PBIID˜R‘ýD ›^ýêòª—ɂJùñFtð¬GAմ `+¯™æ{÷²
~fN˜‡¤zv#’jZðª“Ýç‚ú¹Ok˜ë›Ö;[]XLÒ*Žѫ§Ýp¹€j聙É~`›n;ýÒä?w´Lú΂@Qç€v‘}ÌD5	tƒÅ.·/&Yìœ+ü>T“@Q1ŒaUì[ž‰œG©«2A{…1¬:&Í"{ X@T(ê4²¡ffõ"OÀfáû±Úvùw»A‘9Õ¡Oˆ°ž©vˆS0dS
	ôàZ)zVXr•’PPŠï€
"8@eö٦٦ƒ.½y®H+|ÿ¥a]†—2ØT>†sªxݘêH‘V%žɏ/)‘Vøøœ­Å>oŠ:™  K1&ßpJ¼-`’k_Þ)QžRÒ»TƒÜæ«\ï]¾eª:)Júü«ÀH‹{}X„&m–JG€u[¯¨ˆ߾GxÔ‡¦W¸ٹg¸ÆF'
:ڌF£ÃD »l^ÑÅ&»Cb™©֘u©N߷ȯ¼d¡t¶Õîq´L¢“õÆÆIî5_d-ü]1(A
!þ3¶ÀJ
€™nñ¬OóYkÝìp/Ðfl|Î)¦”<'€44 SçD¾-GkµڜÔ|��ÆÈµôj+O@˜þ©œÄiÚÝæÐÔG˜n<¬÷OT#Hœ©¼ª©›ýÞ\4þ+ÄûÇ$ROs£ʐùªv§÷1b]8>¶¥¼îòÆծ´wSÔNvÚl	R”PR´ÓE¥í˝§`âáxØpܐ‚EÃڜ£çf_²ûÝX§· Ø#

Øâë6=hž×M,ƒZyÅKqŁ!ýöxÝùÖmtœ.ÉZ}<V~R ä
;]êÎnŸÔjâ¸'4 L€( ~ý†úìr•ëw”N´ÆÄ0â~vy2”'Š!…=¹Äo,:ËM&‚G¼Î:‚å”â(æ}ta±÷|?4~~‰ǗD…8}öxÊbÛ.·Ìø°†ùŽ’@xŽoSèÓe‘׮u™ñp—^Ò–*D‰¢áð"öØb±­+ýVí\«
+„U@hİPB·e†–ԼšZ=ÇÏ+(Ž> ¾‰\!ž·j‡‹ÔÆÕp«áÞY >ˠàÿ\ícçq÷ÓéaCq«7Cފ]¾kp‘vccÈp­¡8Õ
ˆÈ:­Øíþc,,×ÎCž4h(¨V |9õû£Û^ñ/«–_ø)[­0(4€1	ÄG®q×Ǻ݀Ñ)h·Ѕ¼éboÄû5ð¶½p¥ë·
Í$ɨU¯٭ôX¤݀ÁøÆ,‡1,¦UÎrŸç½8jmö˜•ÎÐaO.î_‹@P“Ý6»Â-ÎÞk-°ÀR·ۡO¿Ãñ#¤0	QaWÕ՗ß?ÎÍQa (ôêõæ(Õk—ÝùýÃñ㈿á{Áîü€JþÂŽǏO@ü^0h ¯þJþ7X¾ý*ó?ÄP°R)ªŽÔIEND®B`‚‰PNG


IHDR@@`¹U@IDATx^íÙáTWÇñϹ3˲%ÄPjڠ­ZM)ñE«DŨ¤Mc‚ÚVcKB¢B"ÆB@Û465Òؔhզ‘j©¡"”Ä,‘•‚e»ؚ¡A
ڄ¢‰$twggî_ô$—L®Ûvˆ/ä{þ€ç{~Ï3çœÜ	Ñÿ–Ìÿ»À%KU‚7%€ˆ 
€€ˆ”„àüE¡51Fã#´ۂT>S5Ϸm3h—
–š¢GU÷[î?òcûºëTeBH ¤|EÕýî*T}Þ7Ýá ,S@ôCkäò Ʈ¤ò·[5ÇZ1Ӱ#~ê'sâ+,›k¥w™b²3þfm8¶Ân»ÐQA4ŽPµøo£ß|0Õ
n0պ™îf/)¸Ú”ÉDQS±|6ÈÞ43¸V·À{Ép=¼Ódð¨ýN:唃÷!i6:H	x•c­ÖLÒÂ[ ÏMv[Òû¾¹ÓçN»bÚä÷ø‚gÜ*)t>™ÌëäÚ$sï¤êF‹U@n§ÏVF¾£¹<±ý™N˜áÊOúœ
 â&72Ë;ôêѣª"“	ã%¤¥}¦ñ6Зû´…úüÅ{54EQlh)š%ßéSÂz׀Zâwîô9ˆYkÇUT]ë>Ûüڃ®W´Or®ù¸jÜÈGms™ŠYë̛å	Üm‘…–ù­{Tµ0Û|嘤»Ê$Ÿð¬[˜o‰™P¤C×ûÜ6'{Ô+NÙäªÌR7káJ´Ã­ôˆ;ÌÖ
SÌT=7«ªB•¢¼ë¯ôÝëzÁíú˜ýJXd‘a0Ï<˕ñVWÃU
¹fÈTL÷D¥o³o)*^n“ªr¸L»×T„¬è¾e޾ÆgÀu–›8Ó¼‡dÅ¥þûŠV¸Ï4á‹vø•‚à%€*¤¦2³4¾&­@!@îøÆÊTü™§•±Ln1ìOsNS2@Àfq•3Zá
ïÖ-ž“s@žcYñ ô’M¯”NA·€!¹¦fjA*Ÿkxȑ-s1ÙIÝ>¹¼H€(×P÷ºÕÎ}Í‹WᠳRdһMؚã֎XìÌÅÛ?¿—§Àù-3jÄvOðU‡íð¬†4ÎP7fԨuN<iP÷9g¯yY£5¤jFµŽïê>F٣QŒ`!Ó ŽU3èø€“ºM?<“öß2JFmÍmÔ]ê¶sڋI H UAݘ~#ë5u“½Î0¨&	Ð*@ÊùÍ	Ow¿»‹òåÅïa£øîõ3ì9ñ€fjÃQ/٭[üÁIžw.(ˆElà~ÝbìTא‹å-éXn3ä𠽺AÓVFìIñ/êƬïVûœdÈYI€rPØíðƒ&ÎÏa‡zûéfð=VŠ&ƨ§8[Ö2ÆÍàyCû=iblsš]†%Æ€”šu«6~ýêmÄóŸ(Gmü»U.œã8n¿$ËÊ3PSóˆ¿n°مò}M~a,ímÄâbª9ku<·ԀÎáeñO¿,oU(W1ePqÔ]êυòÿ6¦.c»Hs “ÙçN_6KÐ)u{lUSOû׶@Œá92²RL¦}R†F$Ú­£˜^Œ´J›Zˆbh?D䈢†šªLèH ]îÅþu$Ò4Td~7ŒI!ה‹bçD4“Bgå!&‰˜Êw.€(
.Œ¢R.ýw|Ià?ñÛyÈlNªIEND®B`‚‰PNG


IHDRnàMèÌIDATx^½Ô?ha‡ñç.¹\Z5=*IEO	èRpÈ$¸Hî¦s—€8ˆ A$ÄA»8¹œ‹ƒà°—£i‘–t„þA¡)‘‚-5Rܾ^—»€Ky¸í>üÞß;¼è¿;TB&Y,rXd0à_$“Ü×ÉýÝÎÇΟö÷kä0‡{kƗ+„yښÁÆL'ÖۋAäkª‡}Þ{x#˜Œnޫ
j·Ú-/¢ýnjb¦“c눯é©é©ý~Me­í1Ž5„´®BUm<ÕTѬvµVæ¤ŒS½9WÈqeõ{8dÓÖÏQ|sÓªËׯúîF5â7Èc$ÈPÀÝYvä¨÷ãɭÍO]!W¿)I&y&î6¢ª„_MÈ×óKØI²Œqvg¹.¢ê
DH¾æ(f21æܾê+Ð7m¯Ì?íu*B]q+™Äû,.!WšL¾¼Ó
â+H&6¥WµªPsðå™/Ghõ'I#ñœwKŽˆó´òˆv:1ÈS¼~ùý\sÐЬVó÷9ÃXê.ñœ#LpŽ”ÃÎã2Ž9Œdaĉ°"…Jbdba“ˑòó'wÓ_0Õ1IEND®B`‚‰PNG


IHDRnàMè¯IDATx^½”±
Ä 'b+ÁFHHH•ÿÿ­Üáä<8²S¬#Êõ3/*O‘‰@$‘À$ºJ ]÷#J$_æb
™8¢$Š”BSª”úWE•Œ™&¥1“|=_éCãê=+uðõ\¥ªç”/‹IÑb,lìÆib'»±±øÅ‰L¡UÊJ£…¬ãÿùíۗâëQFÕS¥ž"T»š®â2ˆW˜ç%øOlÛ?£IEND®B`‚‰PNG


IHDRnàMè7IDATx^ÍԿNÂPÆáßi-mBø7t²3š0‘8Td—I.Êè.wá¬wÀÄ̘ô˜àˉ_
QâÆûNïð§=9ȿ{¹äaÎì2ÁÃÿ¼ÅwŒÛÞ1Q.‡;K„ïˆO´³Ë!¡¢"
棕¡Aő

‘ÜÎGŠŠ(Èm*"ÄDŽDÄ"©Ø\À°y*|“M¢¢M:"”@	 §¡„Á"uà·:´H	0`ßÓM6>Cîe“}Ü:B<›¬ò:‰«|6!v„€:ÉËô€DÐç¦hŸ8ðüHBãŽO‹î‰Ð#áºhBOd¼OSº´ÜñAP´¶§ymŽ(šM¶YùWn³×JµßÆå³ßmJU©•¯%5ª
„ãxø\ácÜ6n{üsf_îsñЫ֞ܗÈIEND®B`‚‰PNG


IHDRnàMè°IDATx^Ó=kQÅñÿÎÍÞ\–I6«.³;!
‰ ˆÄBÐÂFŒˆ…J¢À^°HÀ/ ~-ì´VÔÆJßA|©YÈë›=rafôœb`¸?žæBЊ¶ÍAà6Wp$ÒÂá	¦GÁa2þy‰i‹GP%Ϝ´;þxÅ"Àӓ0•èáúÒù
Y$e"!#	C	‹J’EIò’ädHL±è¦ôéjDÿžRGûžFbQ—¡*!³¤†^¯1à(˜.ºÌ"=¼!U´5~yƒCò¢=Β:Š“ºtjw̒ƒBÌîñîÅcØX²®§t\û£ìg8Å1晡Ý@"Øú>Þ=,ôB¯î°HNŸ9B9EE)ïغ¶¿]¾öùÉ=¡Uí¼g@ZlŸ@¤½¯«+œ¼»ökâ5¥zv‘Pþ©u2͡ý/·Îr„œ¥ћ›B=&%i"mf7NЧKJöüö=Ôޟߏ˜Å5‡§C ñÂÒæÛw÷¯Ÿcž´™´Hp$ñIàqEºøæÅl”:˜ïÑHʉί‘¿¦–»˜±Ó³IEND®B`‚‰PNG


IHDRÄé…cíIDATx^µ–ßKSaÇ;g¹årþH›#‘5”˜Њ.’„¢AWA8ªm×"ô/¨àE‘nº궼½±›åüA,ñκ´å<ÝÄùô|áåeÙ9ǣÑ^Þ¼Ÿó<Ï;Ø"²…³=£ýSJäÅƙN§¯¬®®Þň¹XWþI¡25ÙlöV¹\Noh4÷mŽ0òü3ֱϨ§‘‚L&Ñ˺žœŒSËP55b$̱>??[ˆ”ÓHL]©TÊ$&_âr@ŒëØÇ9œ—‚„sbb"”ÿ•G†¬cçpގD©BeÜSSSÑt.
D؟™™yĒZ‰|=µÌæ¦HÿFÔN&###a|”•D‚O¡PˆÚÛÛqè§Ïç#¿ßOºYOâ_ÐÎÎδYe¢0.æ²Çã¡ÃÃC<M‚ãææ&õõõÑVq‹Œ^—¶§퍏?fA‹AOd‰ xȼjhhµŽD"tpp@š¦Qoo/­¬¬à‹i][G0R¡Pø:::ú„—L^—ìÁûÎÎNŠF£T-FV´¿¿OÉd’ÖÖÖhyy™¸G4==M===¸è9*À4þõ;Y8™¤ë:!ÆÆÆ*t$*•
DÈ¥£T*!…ÃaHbL«¸Kþâ¥Ddq/H	úaXGéУÝÝ]ÚÞÞ&·Û]aÁu¦a(ñ3âñ8Ù
Q.d™‹âÅL‚›™nUUóKKK¶E¼a¼âáÈ0jüyñ2^Çb1ے`0ÉSæSc%Qp@»\®R.—;V°¸¸Á&ÈxÕJԪlÞ%‰c%ƒƒƒ¼eü²ÖÙdÓåp8򳳳¦‚b±H^¯¯ê¾A©Ì$27ÓÆ<c¾3dA
™‹
¨6%²7õ¢lW™Ó}„.æ`šD» 
QxÖ>Qó¶*0oã’Yœ@òÇ?æœ	¸ü¬(f’ÿÎowÏ=O*Ó@IEND®B`‚‰PNG


IHDRnàMè,IDATxcøO2)ZhT‰Z`°¨âЂ;ŒG™-ÔJü£ZQU{.Ǚ.^IEND®B`‚‰PNG


IHDRnàMè7IDATx^ÍԿNÂPÆáßi-mBø7t²3š0‘8Td—I.Êè.wá¬wÀÄ̘ô˜àˉ_
QâÆûNïð§=9ȿ{¹äaÎì2ÁÃÿ¼ÅwŒÛÞ1Q.‡;K„ïˆO´³Ë!¡¢"
棕¡Aő

‘ÜÎGŠŠ(Èm*"ÄDŽDÄ"©Ø\À°y*|“M¢¢M:"”@	 §¡„Á"uà·:´H	0`ßÓM6>Cîe“}Ü:B<›¬ò:‰«|6!v„€:ÉËô€DÐç¦hŸ8ðüHBãŽO‹î‰Ð#áºhBOd¼OSº´ÜñAP´¶§ymŽ(šM¶YùWn³×JµßÆå³ßmJU©•¯%5ª
„ãxø\ácÜ6n{üsf_îsñЫ֞ܗÈIEND®B`‚‰PNG


IHDRnàMè7IDATx^ÍԿNÂPÆáßi-mBø7t²3š0‘8Td—I.Êè.wá¬wÀÄ̘ô˜àˉ_
QâÆûNïð§=9ȿ{¹äaÎì2ÁÃÿ¼ÅwŒÛÞ1Q.‡;K„ïˆO´³Ë!¡¢"
棕¡Aő

‘ÜÎGŠŠ(Èm*"ÄDŽDÄ"©Ø\À°y*|“M¢¢M:"”@	 §¡„Á"uà·:´H	0`ßÓM6>Cîe“}Ü:B<›¬ò:‰«|6!v„€:ÉËô€DÐç¦hŸ8ðüHBãŽO‹î‰Ð#áºhBOd¼OSº´ÜñAP´¶§ymŽ(šM¶YùWn³×JµßÆå³ßmJU©•¯%5ª
„ãxø\ácÜ6n{üsf_îsñЫ֞ܗÈIEND®B`‚‰PNG


IHDRnàMè©IDATx^Ò=kQÅá߽³3³³“Ýhb–̺DbwƒQ,TÐ"Z¥QÁB,´°²³Õ*¢Xù´°Dý‚/˜€us$s1¹™Hâ9õýþhÇý?âÅ`	ÙE‹–r*ˆ%æq}¬p‡»25¢ú¬è7{¨m‡Ôéj-£b†xkbH诓>	fkÒ`°Næé`ÊÄ_+eöÉÔ¯9À4!S$†€„ÜæŒ#Çr¸_j‹—4óI@Êó£º"»ìȉœ,h¨UM‹OÜ#ÆnCÄÂ!­HZ”#÷sr#‡—ôA3bž³ANwV—´–k*晤“â<‰OêLòäœþHú¦r~©1d–Ô'cxsWÕy!޳×,
2NÙåw•ä¦X¤M¼yäM¦xpµ’ôÄEÆ}âVçxüóc	¼Kôhú#»XRº<½^"·Ä#2L‘¸æ‚/¯äç»ÚCκo‰¡Ãe¾"¿<¤KŠ­"†]æˆ+sd»‰0U,!#Œ3IF'oÆ-w_ÕÄÝtDÝkL­xü;î_øšĤðŸ8IEND®B`‚‰PNG


IHDRnàMè=IDATx^uÒMHTaÇá߽w3Î8S“:~ôadTÐ&*hZVPbµª]›¨E›ˆ‚”¤E‹Š EíŠhUHáFŠÀ̅AԴJ†­qMï¿t@/w˜ÿY¼›÷á!0–Jø«r˜XÓX˜A"00±qãÂÄB¸^áG'a?ÀÄޑøwÂ+,dfú;#Xj¥|áÓQ?ÀzÛæ¯«M®¶kH¹\L.)i`“œ=¥“º¦5iaŠ8¡ið!?:ï)7¾8JUòæHá”HZ"€‹o|r67ö@–z45LŠð*	 \Rï.
ÊÐEýÉÞ8H;@JhìX		l™{ýڠùü¹C4Áò‘r$Q›¹/IÅI6“ÀƐ Â&™}٣Mêæ^"˜"H‚(üŸ¼¸¢´²ÞÀ.ª0‚¤EHÜjÏO,ä'î²·Œ”£‘.4ÐÊZˆc‹2²FèŽV³X?B
I’ÄVVï'½z*æêÚÙÍNÚh$†‹ƒ]ºãéÕÌ÷B¾EhPo.³‰4)jq±0ðeåÆzõëÛá®ÏÏú…ºõû#õDqq°0¡œÔK³_»;ØqõøOÏQH½:€‹á»jT*„Y[ürfëIӚ{Z¨O¹§D1+›Xß6RĉR÷ú¨iv.û˜V%báP‹½„›[§?ŒÜ>±F¢•‰‰…¹üº$i^1ŽSy0,\¢ÔP½ü˭LJ-ÿ÷ ù’
¡²Æ.rÌIEND®B`‚‰PNG


IHDRÄé…cÐIDATxÚì•A
Â0E3Y¸­Ppë	¼‚ôJnô
½A—
¡ÉViãÿeY±Q30ÌLó˜$üHŒÑ|ڬù‚e!˜ÔÇçæKLÒXk
ü?ÃÐ1j=„išÌ8Ž䧶mwŒ¬¹þŠIîâEdŽhØëT
ò@8ò­iˆ‚"ˆ Jro?ðº*¤B*ä!*!Qæ¾Í<…&Åõ‘5׹¿XêÙ]?§;üìœÛàO¹"ßÃWTdI¥úMˆÏü~Œõ"H}©=ߗ( !kíIEND®B`‚‰PNG


IHDRnàMèEIDATx^…бŠÂ@àß.`‘ÖøÚX¨ÍmŒâ4g›W¹{G°s×Xî-ã0xó7Ëÿ\ õ	þ!"¨ëúº†Bôž0ˆϹ5֜sȘÀic¬vÚ{Ú’D‚ßÂòI"@‚ÈJฉzÂÀZׁaŒy"&´X`9,±p¢ *y2ÃüEæ˜9± vF¾€ºhïC袡0âoý¸mÿ%…{Ü~rÄD¶åÝ
#p·m‰´'
	²¦òˆVXá7Ã’¾XäåӚ]‰/Fï­u…)ÆÏõÝ5UgBÅ:ãã®3…Xº3_ŸÂ(ƒã&Œ¦tˆו®I$"P ‰8Dg{‚Ф-Û‚P‚Ô'aÀ	O…ØGy˜?$3Bç¸GIEND®B`‚‰PNG


IHDRnàMè[IDATx^ÍԱJÃPÆñrIri¡´Ғ´d©f*¨¨‹¾€uÑgPñ	tÚWp(®îâìØե«J±øjlʱÆJBCný¾õþ¸çžá"ÿ˜b °pЉÚ(Œlb>øÓGY•M…nk2ì$f¡‚sšÚé^8ê$‰‹Î{‹E™æÝÅD‚˜4ÒÄÀ|õ01Åû£ðý@µ¢°§}…3h¾ý€¶Œ¥“I,J"_Ͻ€â ÎÁûÇÍåÛkç‡ÔÓġ*ҕÉppƒ«3¶÷Ñ^šh<fh,àú˜ŸæñîdH'Mêé MV(R¦ÖmQÂJ“†s4–ÛVpPXh
بl÷ùr¾Iõ»~&F.!ZD/ÀJ$M\YÈ×SßÇÌ&6VÙ`'ê6ë¸PÙD¡©à҈ZǣJ	“yÒÄ@a£u°P1YúïâŽb"IEND®B`‚‰PNG


IHDRnàMè[IDATx^ÍԱJÃPÆñrIri¡´Ғ´d©f*¨¨‹¾€uÑgPñ	tÚWp(®îâìØե«J±øjlʱÆJBCný¾õþ¸çžá"ÿ˜b °pЉÚ(Œlb>øÓGY•M…nk2ì$f¡‚sšÚé^8ê$‰‹Î{‹E™æÝÅD‚˜4ÒÄÀ|õ01Åû£ðý@µ¢°§}…3h¾ý€¶Œ¥“I,J"_Ͻ€â ÎÁûÇÍåÛkç‡ÔÓġ*ҕÉppƒ«3¶÷Ñ^šh<fh,àú˜ŸæñîdH'Mêé MV(R¦ÖmQÂJ“†s4–ÛVpPXh
بl÷ùr¾Iõ»~&F.!ZD/ÀJ$M\YÈ×SßÇÌ&6VÙ`'ê6ë¸PÙD¡©à҈ZǣJ	“yÒÄ@a£u°P1YúïâŽb"IEND®B`‚‰PNG


IHDRnàMèDIDATx^¥Ò1nÂ0à߄”HUh;0!°1°u¥* S9TU[Tê-¨¸C»0MØpŸÚð$«/©ÚúŸüGŸl=ö×)ÜR}Åéêð·ãí>?­õÌh£×3´‰„Áj®ÍÔN­6«9#0xM†‹d≄¯äLôž‘D¼Íä¤m¹@9¯“ÞLà}'
>BDà£3HvjCøPÂ)p…b™iס6N¡b×è1éÑ. փª{Ê“÷#ÿ¿¼÷»ÓNòîm$¹‰ð%=îç){Ü?§є‡|‰nžšƒBçºôūøapƒþrq0i	f¹@ŸZù‡±.úä!;¨Ѕ~z`€JÂ(γ<C̠š0j£Ci3	‡|´(>q^õPe ‘/ËÔvD§rIEND®B`‚‰PNG


IHDRnàMèDIDATx^¥Ò1nÂ0à߄”HUh;0!°1°u¥* S9TU[Tê-¨¸C»0MØpŸÚð$«/©ÚúŸüGŸl=ö×)ÜR}Åéêð·ãí>?­õÌh£×3´‰„Áj®ÍÔN­6«9#0xM†‹d≄¯äLôž‘D¼Íä¤m¹@9¯“ÞLà}'
>BDà£3HvjCøPÂ)p…b™iס6N¡b×è1éÑ. փª{Ê“÷#ÿ¿¼÷»ÓNòîm$¹‰ð%=îç){Ü?§є‡|‰nžšƒBçºôūøapƒþrq0i	f¹@ŸZù‡±.úä!;¨Ѕ~z`€JÂ(γ<C̠š0j£Ci3	‡|´(>q^õPe ‘/ËÔvD§rIEND®B`‚‰PNG


IHDRnàMèYIDATx^ÍԱJÃ`Åñÿ—$-”*-ik—j¦‚Šºøm}†
>®Bó
ÅÕ]wÇnNºÅw°­A®i RêÖ{æßpÎp‘gÝ	
ƒIÄÅF£b@†hŒ¤îwü¸…•O6$Q` ߯A›:Ÿ<I€Ù{ÿ˜*kiÄė¹Ü_ТŒZìғéäá”"Z@a}԰P9d séFhöùÔÁEcš¿ct–Ô%Ÿ·W“iŒž»‡þϋ%ì,©IXú¤ÃÁõy…ˉÜ4q©|¿†+µhâßô'Ó^„æRä‰M)hS¥L‘MZ1ò…ˆPύCƒÆ
‘w9_€˜4²Da¡±P/^ì½ÂR‚c졿(ÍÊÄ5ÃYS‡·Œh
xøìrÈQ”=¶ÙÀɐ8X8”¨P£N#ŠƒÎ'
‹IÄA£Öþ]üŠ„EöIEND®B`‚‰PNG


IHDRnàMèYIDATx^ÍԱJÃ`Åñÿ—$-”*-ik—j¦‚Šºøm}†
>®Bó
ÅÕ]wÇnNºÅw°­A®i RêÖ{æßpÎp‘gÝ	
ƒIÄÅF£b@†hŒ¤îwü¸…•O6$Q` ߯A›:Ÿ<I€Ù{ÿ˜*kiÄė¹Ü_ТŒZìғéäá”"Z@a}԰P9d séFhöùÔÁEcš¿ct–Ô%Ÿ·W“iŒž»‡þϋ%ì,©IXú¤ÃÁõy…ˉÜ4q©|¿†+µhâßô'Ó^„æRä‰M)hS¥L‘MZ1ò…ˆPύCƒÆ
‘w9_€˜4²Da¡±P/^ì½ÂR‚c졿(ÍÊÄ5ÃYS‡·Œh
xøìrÈQ”=¶ÙÀɐ8X8”¨P£N#ŠƒÎ'
‹IÄA£Öþ]üŠ„EöIEND®B`‚‰PNG


IHDRÄé…c9IDATx^µ“]HSa€;gÙt9—Vs‰1Ãáï͜d7Òՠ‹/¼ŠPÁڕÂP‚ ^™?yvD†ᕻÐy¡cñB6m77Ûy{ßÃËa¸u<½ðpø¾};Ïûó+ 	Žbû"æ!œ¹¬„_X2??o>88x‹ÅÜ��«¦}þ“„¥‘Hdè,N„!8=
ô¤õÑÑÑ0ýN¢ËHÁþþþp"€å†XikƒÞ^zÊkÚ…BŠè2’’±±±»g§§ÇËMMð¹´Â߿ƒ$I¿Óéttg|pŸ*:öx<µt^h)ÏCKK”¹„éKe¥,Âê|$¢ŠB߾ItŽÎk‘yèc0|œš‚¾>¹°H^oôôÀϙ	ÏyPR®"Q^Z†<Dî“q,,,¼¢J~8€™ǨYTU%‹Vìv‰~÷ù|/PR¡&YàµÛíP__O‡~Y,hll„x4š[ÆçÎĤR©W$ψö³©T²»»»U­Ñ#÷ŒF#µ2™ Œ^ápFGGAív­¯¯¿A¥p&Ü"<A^šL&à€ÎÎNÈf³ÇÁétÂÞÞdNN ï;¡uÒëõ¾¥S‘ۥÌàSKKtuuA¾d¯g.—£9Ààà ìîî‚ßï¼Ұ¹¹	.—êêê†PЀÜ*øN¸ŠkÈãææf8Á)fggsp.XDɭ›œœ”…”­©ædù‹ϓðN«ժHh"jÍ(™LB4ƒPCArƒ»BQTrù:00Z‚’ áêê*eêGj9Y¡¨„ÛuiEñp{{´†Ûí&É{ÄÌG‰bƒ¿Îټëïï×,±Ùl$y†T!%jðÁz½þ¿æ[[[$ˆ!6ĈˆjB̫æ#]Ջbdd„$xž<5	φ«qètºõµµ¿
‰˜ÍfºUεJM¢Tc@j^$‚€
ÓH-w@Ô(QfSÁnBìHû9H+bE*¹‚&	#²¨œ¯µ…{^“­os2z¥
í¥"gXZ~ùU*’ÿËÓZY̨ÙÜ2IEND®B`‚‰PNG


IHDRnàMèVIDATx^һJCA€áÿä$'‡p’ˆr#
¦PD°ÓÂFŒˆ…J´´óì¾€øiì´VÄ^o… ^*Q“›Œ›H„Œd¦Xöcf˜E°š)hÉߛ€»œÃÆ×?ñã6joKñõKD*µ»•H!.1‘yi$)‚‚4’AE:ёN:è~µéDE:Q‘NT¤éDGÿ’!A¥­¿gc©dONȄÔKñf˜fœ4a1àó¥Vä\.v#EŒÜÞU’bÀ×óòÚÃñ¾ yù¾!‡‹ƒÝ{–„Hõ)Ÿcjwý½áˆ_^åtKÛKáúãÖ,£¤Ȗ.7)HéO_e€Ha’Q<âg۷R”êÏG‘¶FlB¸†œɖ¯®6æHãéÄÂ×Ҝ¸’iµÅÑë0¡&":iWl×z‘_¼™ñž9ȝóIEND®B`‚‰PNG


IHDRnàMèDIDATx^¥Ò1nÂ0à߄”HUh;0!°1°u¥* S9TU[Tê-¨¸C»0MØpŸÚð$«/©ÚúŸüGŸl=ö×)ÜR}Åéêð·ãí>?­õÌh£×3´‰„Áj®ÍÔN­6«9#0xM†‹d≄¯äLôž‘D¼Íä¤m¹@9¯“ÞLà}'
>BDà£3HvjCøPÂ)p…b™iס6N¡b×è1éÑ. փª{Ê“÷#ÿ¿¼÷»ÓNòîm$¹‰ð%=îç){Ü?§є‡|‰nžšƒBçºôūøapƒþrq0i	f¹@ŸZù‡±.úä!;¨Ѕ~z`€JÂ(γ<C̠š0j£Ci3	‡|´(>q^õPe ‘/ËÔvD§rIEND®B`‚‰PNG


IHDRnàMèYIDATx^ÍԱJÃ`Åñÿ—$-”*-ik—j¦‚Šºøm}†
>®Bó
ÅÕ]wÇnNºÅw°­A®i RêÖ{æßpÎp‘gÝ	
ƒIÄÅF£b@†hŒ¤îwü¸…•O6$Q` ߯A›:Ÿ<I€Ù{ÿ˜*kiÄė¹Ü_ТŒZìғéäá”"Z@a}԰P9d séFhöùÔÁEcš¿ct–Ô%Ÿ·W“iŒž»‡þϋ%ì,©IXú¤ÃÁõy…ˉÜ4q©|¿†+µhâßô'Ó^„æRä‰M)hS¥L‘MZ1ò…ˆPύCƒÆ
‘w9_€˜4²Da¡±P/^ì½ÂR‚c졿(ÍÊÄ5ÃYS‡·Œh
xøìrÈQ”=¶ÙÀɐ8X8”¨P£N#ŠƒÎ'
‹IÄA£Öþ]üŠ„EöIEND®B`‚‰PNG


IHDRnàMèDIDATx^¥Ò1nÂ0à߄”HUh;0!°1°u¥* S9TU[Tê-¨¸C»0MØpŸÚð$«/©ÚúŸüGŸl=ö×)ÜR}Åéêð·ãí>?­õÌh£×3´‰„Áj®ÍÔN­6«9#0xM†‹d≄¯äLôž‘D¼Íä¤m¹@9¯“ÞLà}'
>BDà£3HvjCøPÂ)p…b™iס6N¡b×è1éÑ. փª{Ê“÷#ÿ¿¼÷»ÓNòîm$¹‰ð%=îç){Ü?§є‡|‰nžšƒBçºôūøapƒþrq0i	f¹@ŸZù‡±.úä!;¨Ѕ~z`€JÂ(γ<C̠š0j£Ci3	‡|´(>q^õPe ‘/ËÔvD§rIEND®B`‚‰PNG


IHDRnàMè[IDATx^ÍԱJÃPÆñrIri¡´Ғ´d©f*¨¨‹¾€uÑgPñ	tÚWp(®îâìØե«J±øjlʱÆJBCný¾õþ¸çžá"ÿ˜b °pЉÚ(Œlb>øÓGY•M…nk2ì$f¡‚sšÚé^8ê$‰‹Î{‹E™æÝÅD‚˜4ÒÄÀ|õ01Åû£ðý@µ¢°§}…3h¾ý€¶Œ¥“I,J"_Ͻ€â ÎÁûÇÍåÛkç‡ÔÓġ*ҕÉppƒ«3¶÷Ñ^šh<fh,àú˜ŸæñîdH'Mêé MV(R¦ÖmQÂJ“†s4–ÛVpPXh
بl÷ùr¾Iõ»~&F.!ZD/ÀJ$M\YÈ×SßÇÌ&6VÙ`'ê6ë¸PÙD¡©à҈ZǣJ	“yÒÄ@a£u°P1YúïâŽb"IEND®B`‚‰PNG


IHDR@þ‹ÀèœIDATx^í}hdWÆ/ÀB X†¦M»Ým·Ý6íö
ÂÂÚht붵[kƒÕԵ©ÑÑÑѩÑÔÕÅmWWW«kG£‘±SӎMMnýXݺ²°®ϓž—.37÷¼w%´½<å—÷㜹ï{Ï=÷Ļâý3Ô-@-¨ 4ä9ªՠ	¨ŸŒB»Œý,™w©%J”hÚƒ€ŠÐåõz;”‡Ðߡý
ÿiò¡5è¨ßMXµLJšÐxD>#þoկLÄøéÿ"YÊÄR$1ÿӦæ]°üϓwÌ?ù‹æçih0Ÿ†¦³fì/:øŸ6±6
».öóGæ’QÃÄ4qü%~ßÄ_7öÈDPÎ0¾ÑR§øC'ò•ø¦ëç_÷ïzꂿ7ÿgÿÆɅµ‘CÏq˜Ì)¨uãäKø=ËþîOTý«ƿU2Ÿ{:wÍýߧ}ÿêûNÎ(xjÖ$£u‘Qhº'`?Q¢D‰ºLá©(oôºMáh:á_ûÑݣà' իƿíóš;úÙW§p½vñò¯úÐqÿÆOýfãšû—ÿqlç‘3Qí3þuúOû·Îúw}í¿þ¥7›7<öBȳF°VHíÙø{¿°²~ÝÇç"åïêûžÿ…—úµŠÿë	©UAkŒŸþïýâ_ÈRŒeã3ðÓ!ù˓gþoøä‹5üKü§Oäô5jþÉSü™¿säÃß)‘Ÿ?ÏÀ~sOûŒEüãé›Ož±Òg²w>õ±ÏÜ;ðÔ!ñŸü†ÿ_ý7E~#&̍éž:Îñ—øiŸñߚ}Ã>r¥~O]ý‘ï’!oâÿ«ÄO>¥òàì(àãÐ$“ٿ~âW	b3
ÍîÃ$líyüåy|îÒDLÞ^üçÛü§[/��çèïȳ‘š¿âޯ»òTÐßùðOçľBû ©ËÚD%J”h Û
‚֠]J~×4<ˆ"î§ Êð½ß`á`Ѿ„³×ûäÙ8 è÷ÁW íðÇÑÿÉRÐÔÓÑF”æé4íÃ&ù4•¡,ŠéföO@äÅþ<y£t¿7Ô+䗠c”U¿Î"7©ᱧÛåŸ×täï׬qâÿ¬±ß$/B޶µ‰ÿóÇÂ-¼å¿Ô?©?« _	æß⫁úIžLpü%þ`þêþø`ý*‚§ob§nØY+Ì-mT„èôuþBøjÿãœøßFc7}æ•ó&糖ÿ–ý…ÓÈUXýìÇ<*
ŽŸÔ©ßBµãÁzpÈC5xYW¼ ƒ¸™v>ôÝ\ܢð·|îOe8A&’v?öBÎJø×Jb?¢¶ƒiZöóŽ<uJºâ[¦—Ê
¾j!ìÐ%~W¥ <t€̻@‰õP1ø"äãî0¯äK,7OýžÅëV›]ù<x^|S,{w=ò37ûc³lœ¤ðdp×ìíxà.þ߀†!ÿöp7îêÿ"”#
T„f®Àâ=úäÄò¼æ{¸Yõö<^÷°rÆÝÈÿ¯ˆý4yÔò|YöP\;Ž¿åÿ24±fyhÞ(þ܋ÏznûÒ߼6u§ˆÏìñÿqӼa
\üIhò®üà1›ŸFüâ¿ä_â§øó°U¿.all~Š<>“ø³’áQ»2v!Œð‡¿=‚ùÃjȈeü«Áú}”Ímˆÿ`È2Ì?;kÙoW0ÆÅ>|¶ýÏZþ3×Eñ?¨ëù¹wGñsNÛâÿ°ÍÃNhýäœE£CVƏñÛõçpÍá殺(Ý`2<¿=XŠ«¿ֳ݉.<–µz‘ˆ†ØG'+|Wžƒ!I`·>äÚ|à"iÙwóŸÂÝGM–eÁKþ\tOß[»>ö¼øïªh
ê#³…J”(]Â÷â<ԫä}sñ>‰ǵDŠW
+Ü.|Ž<ìJñà5ÆÃöý:y,ÕGå³PËæQly­ŽÊýÇ5š×Zû¬ÂóíÂ@«xD&«=´Ç0Žö_’æ‡5ªmü̱°ù³Hÿ1~myŽÉÍO4y3ôͬÜÔÉwÈ??ãØ„hp…ïƒZh4íü³V¶³Ϲ%õó”õXq7šË`+!óGì7¬ú=hÛÀ‚÷:ÄOž
ä¢U3A¸	ñ𨲝}Æd×_æܩ~Ò>xú¯©Ÿä9¶¶ÿYϽ€Ï£l™娂¢Hc6x¨ìÈs˳AØ/	ƒn2ªÿ$Aìñ§a_â/*
@w3êøɣñ‘øµw¼g1¸
URò)hL;¼§•è0äCJ¾„ÂÂ}-ÜõõKãà 2y^Р4
”Æ>y*Çâå¸2[F±žzÈkíï@rå‹(,¼0þŒ‚Ïc«ƒä/£ñßاÿÃÒü¹ð(š|lGû¸6Òÿ§5öÉï@ó£ʿďæÃÕÿé·ü“<k[(O߸:xÍý§„Oa5iþ¯€’ü‡ð=°q€nÆÅÆÆj!öÊpÕo3>ƒ9¾nêÇhжxlV¿G#©®õK꯯¬´OÿãôiÛ\W‚æå9«‚gw_5ü²Ò~¬šDޝ‰}¥ÿµ˜ñǷ¯Ÿª “ÃOr
K•d””Ç[ªDG¡%(§äW®ô—œKì?Qñfõ‚×yÜâ¢eÜ	’¯çwÙ7öç!®\hí/@rçî¢%c¿±0:ó\½øQ̝ýÇêO,^ÆbmÐǯ?á5ù[^ÿ>nÎ_Ðø/M¿Û
o€?¥	ðp,–¦þ尟ênø¬­ÿϙúuZiÿrÕõw…€F<C£—ôükä׶ˆ/bærð«ZÿcÚ/Åäæyñº–Ç2pûïƒøFÃb¬«d„žӮÆÉã¬êşZśs¡ˆ9¥á×
_ÂwZiÿ,y~'ãð¼¦ÅáË(b*¹ãÿªÅoiþ´ãw™ü/)ùŠyÛ밆—=®(¨ÜsBæ!6ú×>ôc-ß7úäâƒÈـ’ϛú}>fý]˫ óÌw5&¿‹×à2îšâð…˜|1nüæ®em‹ò'|Kɗv>ü|œù³jaÛì»dLTò±¤îã‚4…¥xU1o
qN*ù7
ÿ’ª€›·†Š˜ÓñíëùBÜø±¤á/‰}¥ÿ-3~…˜ñÏluþ”öÏ~\9ºи‚÷°’‘IÄMà×OÌkù>¬:–ó}J>·þ
¯
`ÎÀ%%_3ü²’¯~Ek«8ö+1ý¯ɦ½-Êß|Ìñ«ÄÏÿ˱æÎ&á3\-?
]´œ‹«»¡]JvŽ{øj&VÄ4ü’9k¤†=]~ِš²­Ää—Pã5&ÏïD~A?ÏIaüJû+f9¿×¼-£çõþ7c6@ý8"e<7ß:ó²Tñ݋©¤R6¬Ô(>²~Dɟ6õwI5᠖yePµ	˜¼Y‚*ky,¡iùŒe¿ µ»­ý¬e?3¥}ß<Â,ň_ˏXþ—¶jþð­
4’ÿAhêøÖJ:aëäc9y¯OiVÃÌw©…1IkxóÁGN2
¾l!0§9ÿ†ð*ûÆÿVLÿyMPåÏðüNd|^x<ËƌH›‰?¦ÿqòNù)‡M±“à·) îãq-dÞ#JĽR¨aZþ ^£ç[sc¸n
wÜIžUð'±	IÞÈ(ö}Ô,>§۸ãÞù5xhAé¿ð
뭅¬†‡}­ÿ=PöÉ*샏ÿ6Ñʼn¿ÖÁþ(4A
~Ž\ⲁ…ݛÍ<jâ)¥<÷ƒ
S{ZæÄÔ*¾˜›Ù?…¤Xep'$o%plSŽ{Ÿ²ÂC5ÌmǽQäë¾ØÇހžü"ì÷*x‰¿®ð?cٯIþÈßÉnÅݨðMð©ñ/pþ(⾪؄»Ýò\±	¸öK`÷a%F½{
ålÿ»%â›x|kNÛqoòe.øþ^Ueñ)AN¬˜eîþgùmPƒ<î8Âø®ó2°cŸwJäˎöÓ³x2~W¾añyGû9¨Ž7äˆð‚£ý,´žñ‡_
êí°ò³LÿqÇ+ñó^†NÒV;^â—Õȶ¹Ž»@ž„Ëwð¿fñ3?mVa˜[ΑL»ñ·珝½2b‘:i?ׁ¯Ò>LÃ[xãR¬Pt˜±_ßÎ~š<ã„có5¦…Glô1݁—7ïü,Y‰cœs<ߋ¹”#÷›h"Gy‰Ÿss	þ;òÏr.Hü5æOkŸ<ìçïFg„ç9'°?¨·ÿúiðžcü%kþ
8°r>Ú8øãàûp ~œ2ï%Jç¥ay2'OŠÔ<ÜoÌ:uã”Hö0ü•æaJù3…v@«</ƒÅ_øˆ›ÓМù+ÂÏÑÿñBÓ/þϓßäзahÆh¼õ÷QNA]!Ïì'¡ªÅ7ȣP°À	Ÿjãÿ6è‹<Šà"›]£Eò\ù1Ëå•6ñ"ï>ïæÑ ÓVӲß^âæ6Ϡ!—"B[6_3þKóS%oíyèÆ#±ªÕÀþ³ó_!ñûsP—•úÂÏÄ>s½`ñóÂóѭøoæBxŽí/1w†¯Ëø“GœÓ<-ÕnáÅòŸsÅö¿*<l–ڜ³ÂïBÍâé=0þôgT˜€˜KòÒó?ա)¶ã—ü³A&/óggç_xŽ1óGû÷ØLDûäÿt(ÿ²ãžڗñ;åy2®ü$ØÐ§ÙyÁÿ“U˜DI¤”ë]‹ŠÃæ×޷ŽyÕsüSiì򯙕‹Š”ˁY8ÿ”Ï͚
~†…GV òøw¨ÿö£7›ÏC]xþ¹

ŢlÛïÆ!ZÒèµkb|,I³Ø
/…Ÿš‚<ðíâ@“¹.Íš]J§5èˆÓô±ÈY…Dìógái?…øƒöS˜3xi|¨2yÄfóô…ŸټÂûð78~vþè?³yæ\xþ.áKâÀ~7ø"¸–Ý0wäÙÙ<æD°i¥Nþ#6áǂ«ø•,û´i?ý)Ê^‹|Çücƒöá°sK?|,kÏ|ç÷XLGûàƒöùwûÂ8{üö×ìG°ߍøeþΡя̊}Œß°iIƕçc$‡7™%JôNtZ}9p£€ã2s7ŽÇß/ãƑϡ̃+BYòøwTþ0ŠâE0
Óø’ÇÊC”“¯óhDÖÁ\€h¿`ÙmžÐÄ<hÿ<óóÔO>äm#Þ}a…‚¶šdý3Ð$”ƣS/ìO
`UjÀت[ö›&ÛÁÓ~»üñ3Ɩ5±ÎۗLþ
o_=Œb®
³*¼ùlHòÂ猯5ˆcײølØüá˜`#hŽ'|3æ@þfžÿæÿvò²zÔÆòƒ°_ cXùe¨Ïڨ–ÿ2´bù¿¥Ë³ø_—ü5­Øv<pZ˜¨öéóq‡òbŸñïÃ\smB8ûhͬê@<p§ØǣP¢D‰þâ÷ϣ)Ǔ¾IEND®B`‚‰PNG


IHDRnàMè7IDATx^ÍԿNÂPÆáßi-mBø7t²3š0‘8Td—I.Êè.wá¬wÀÄ̘ô˜àˉ_
QâÆûNïð§=9ȿ{¹äaÎì2ÁÃÿ¼ÅwŒÛÞ1Q.‡;K„ïˆO´³Ë!¡¢"
棕¡Aő

‘ÜÎGŠŠ(Èm*"ÄDŽDÄ"©Ø\À°y*|“M¢¢M:"”@	 §¡„Á"uà·:´H	0`ßÓM6>Cîe“}Ü:B<›¬ò:‰«|6!v„€:ÉËô€DÐç¦hŸ8ðüHBãŽO‹î‰Ð#áºhBOd¼OSº´ÜñAP´¶§ymŽ(šM¶YùWn³×JµßÆå³ßmJU©•¯%5ª
„ãxø\ácÜ6n{üsf_îsñЫ֞ܗÈIEND®B`‚‰PNG


IHDRÄé…c›IDATxÚì”I€ E�l\xŽ€'p	„XۨDQƒ¢›6iÒ0üÇgD¬JD å‚!sö8Eÿ@+i¬t7N¦F.ò IƒwéÈ	÷ø£¥Òf¬s®£2În’öÒPÖÞûÅöí!ð6הí)DkmhÐÀËÌA)eŠ9á9·œ”:“Ïo×ï¯މü]ȏQ€)ý¸Vä°ÚIEND®B`‚‰PNG


IHDRnàMèÙIDATx^½ԽkSQÇñï¹÷¦Ijs1©¥
¦V(ÑIñ¨`G×qí "GÛ(hS¡¦‹…,QðÚÅAÝtÈߊ©IíR¡jÒü<Ak—òãá¹ˇ‡ËsÎAÿ$ Ÿ€ˆ-³ÐI0ca5»>ós~}¦š	0Û<ºJÃ͏54i«¦æçÒqºðÜŒ'77rŠ!l¿¡͍wÃ7	Níi,å„ökJÏm¥…E¥Ó}.bˆ•ÏÕUZ+’lO+®šÊç‰a:‰ObunV(/µ‰ʹЬVçHàw’€äڄÐ3ÑNû[׵¶@’ “DHU‹¡é¦T-’"âœòæ’ë_¾iñ‚›ø$Žf~U&…ESz¡|+-tER)G¯‹bô?È6ï岆tVõ֗ktã;öBÈ=Ñ»}Mè¾V$
Xôõ*q<ÇöÙÍcÇßÏWË‹ã/ïÖ['ÚHŸÎÅ8Î!ý’á0‡lyu»Þº£ïOèÁwždb$H’²ée™׷ꭼ–õ!Gˆ¿ý}±¡›>†]\~úöæÞÁÎ)Žà#Ešƒ¶RDñ¶wퟣ�Û}Œƒ8bððm<`G_˜ß”%×IEND®B`‚‰PNG


IHDRnàMèÜIDATx^½ÔÍKTaÇñï}љçҌ‰i2µ*ú*hÙÖ!ZE¹‰ ÂpW:åآE`ºIp“PA/ › —]-ÜLT–6c"˜ŽÃè¯!jó ´ñþ8<wóáp8Ͻ迳‹dâRgàmÔ<Â]Z_*f»#ƒÞŸú©Îê璆ÕoURõëÔ	êñÝ<§×VsJvÞÒÚêÇNCž›„göV¦sB4 —V­ÂPeúl3¡‹xÄJŠ©UsZYøöfeaÎPB%.ǫ%ÉùÑ¡¼6ŸA¡͏’$¨%!©ʼn>¡b#öŽnjq‚a-©#]ü§˰Šc¤©svyec–å-³üÔä%7±YŽeVfú…¡½RÞº&i*G“‹xÄiy”­V¶îåª:t^åõï½48öBDۃ®ß3¶}õ顿$u	2ôã:	|ÇöÙCÛÁãO{>ÏLõ¼¾_ÖɿH_ÎÃsÜ1"Zh'Ã[}{·lÝ[ÿõŒFçM&N’iKûɼ»SV^³*Ü "Øù{±Ð@3O.Ï>ÿp{_{mGÇIÓÊ!«41ümÄ|b4YÅÀAñŒØÕ?Ì|Ì|liSIEND®B`‚‰PNG


IHDRnàMèøIDATx^•Ô=hqÇñïÝårIZª&ÍÅ&
hM}ÃB‰‹
qt*)‚ƒ “8«“ Hq¨"8º¨´â¤8ˆ[!“â"Ep¨ƒø%µjúòŽ<K’ú{ٞwÿÿÚuÅÅéTO3îPe’$ž±8ââ“ç Y–ÇT/	9Fš„AP¸™jçD³ªm鐼ßeñ•>N?’ L´Wµ¡1MK’êz$iA,‘ÁíGЉö†¤KFôIÒ3ñŠQR¸8½¤ÀǦ¤F´.éžØÄB<œn²¸ ©Ù!3Qoè¾65-®‘2bç$ÇÜEIëá«Q?¯o’.ˆ¸ꌻ$™b†QΏÆnEýNÔ/KÚQAL1hÄ%ÅÃ:-V™óÚ-Y֢>/郸Bٞ>բZÑu¡÷êÍ]ñ”ý¶‹CŠSeýQ½ÖÏ>䌸BŒx^ם¥ Í	†ðÀ^lã<×JY˔ÈàqIr˜ۅ­w}É9qƒ<I0âà‘!Ï8üæçð]é¿TÙCˆ¡4ÃT˜¯é_¹.)ÙÅ4b§3ÌÞÎjM–m=‘ÿ‹Y’8ÝÄvšàmdÅ
³èù‰v
©0A•“QMr”CqŸ˜�Š¡@ŽA|\è%†\|RVøöË0‚v]ÿ•ÒÓüÆLÝIEND®B`‚‰PNG


IHDRnàMèmIDATx^íÒ1KQÅñÿ›qf×]Ɋ‹£˪ˆšfQÄF­ÄŠVV¢…–BìíR†`aiýZ˜*ú
a"‚	ìÙ׸óöžSÿ¸ï>.zuy#¤bÚê&ƒ|bæ™&Ç(B|Ìÿ‰G̏š†Åm¢²øÉ(U<L61DTójê¯jjeH}*‰3òX–&Ÿˆeö{Ôʬ%+j¨©ªøÍ^ŠØ¾OhU–è“%»nèZÃb‘óD!K㺗tؐ“cIsb8Mb*–4õ<ÿÔÕ`œœKN¶•SqŠ;%¤—)¯~™I>Š#JDîú9Ê|ÞÊ$#b"ûÉEf¢‡_rs!n!ï~2xvη¹Ù_Iˆ1.1„™ôëç)p§RƒöY¸<º`“?(Õ/”ÉáeC@2cԘ–IÞSá!æ¥K覗~lú(Øû"›€Á'¤³­î񿺏F\¸QŠÂ/IEND®B`‚‰PNG


IHDR

¿øƒ
£IDATx^ìԱ
!Aߋþ[æ Â9MêlåÌ2V¾2¤4Ò@Hi 
¤4Hi 
¤4Ò@Hi 
Ò@Hi 
¤4Ò@ 
¤4Ò@¼fTÓÒwn³ãø~2è—Î\ÞO#[w~CNG2®Eá“üì›AŠ$GEõUnðÚÆ+3‡ðýÁW˜CÌÞë†1•YB<äHÊŒ
Õ'ÉHeÏb‚×ÿKQ´ž„F¤%zâ­ÞcSª”^‡Ž×1 ËH+Joß×ÿ
?0×AEíý]c_=Šu´A£¬µ}Géí܂WޡÖ
m°Uµ~îŸÓê`u‹ÇÑà\£ƒ¾éï™. T°P ý<*M&”=ª!&ÝÅ	´*	ٱޏ³ÚkBÑ`±Gk��‘# I•ü¦žcŽåcƒÅ%@º£QB!€ dz’{ÁÒæÈK¨ ¨W´öB!;ò:¡³*“J×Àøo,œðpri#$Cr?ý `ˆ
à
Ð؀áé¾T„àx0ÐY¬Õ͎‹&wSD
á耆ê(¡O„ÀAçè#VË7´Öæ«~Þ	#å‡w"ƒ|­	}ãm…ž‘xٱð°{x‡àˆÞãhøÍ+<€
D–l/Yê4—’ñXHø¿xxá
Ш'Ê×DJã8!¡„Gø…L.
Р†^wíTww q€ágp
-\Cl@ãJr@á@¦ˆ•æG^ŒOP,ϸ?®……ŽähD[|½–ãHüd_ìûXõ³!e¨°±m&l?×ja°ðønÙ7ûûQw4£@¢A À3âï]è_Lö§}Ú|²~¶?ìwû¶ 8¯…ÃZÁ7ý‰ÇV‡s¸ýj_	ÆÈ>í«ýfŽ.ÌsȾRþr,*þÃí£càø0½*"V
ЀO`äͧ’?¤¤l¬ûŠØadר©™²kÄ€ôŽžG¸Æm(u×(xŒØ
МŒ0ù…ۭæ~d²[Þ/ìç)uAC睞ñ¿\c\ƒ¾¡×Áá¯û®Œ',®õÓkúF¾«C¯‘Ÿ<y‡vÊ( H~áØÙ~ç)J†Z׸¤¼OÂNöŸPÒSÒÖ5Æ5”ÅíåÂJ¡ç{é5BÜéŽëm|£øŒ6žaý†WÕlҸÆN‚_”ƒk£ƒrÚ]áƒF-¾ i׆î›Ð] L \iD»¡¡XÑÓ¹øŒ’·" éeɟ]g|Uï@! t¿4¡̄âp
@Ñ
•]GTG÷І:¡!>‹÷hžú4ÜS× 4zŒC{Z¡Á3
øÉ¢7ðl£Dg¤öÌAù”cqÖÜÁ5´ûˆÕh#ìYµ»]'”:^lT«Š~J-Æ
¡QâžAÍÑ ×rÀ錆ð,<³:Úï÷LÝ…ˆ{‰Hô¢0H</±ҷ
ÕîÝÊF×Î?õ{wl0CQxÿ6@.lEŠîZh@¹ÄÀøi ¡¹Èó¯40PÒ@ 
¤4Ò@Hi 
¤4@Hi 
¤4Ò@Hi€4Ò@Hi 
¤4Òi 
¤4Ò@Hi 
¤4@Hi 
¤4Ò@Hi€4Ò@Hi 
¤4Òi 
¤4Ò@9Ìܟ‚‚4Fk¹ì"'­»\RûÇ8¹„³¤>x	ýDxÙ9£Ô<b7yjr€^'‡éÝCš¶Ð<´Y«ňÁ,D¡_‹$¯w7º_4²ÿSêŠ-‘йÞ݊×(FÄ*W
“l#{l2]-É;òbÎÁØJ(ކ`Ûv’Ê\Á:ÖCÃbçԟ„­Dºf­n4¤.¬­„B¶uµ´©)E%¶…[µ—«´¡¦±åuU;3«؆Úrn2þ3Œh%¥z;ÅÒ#¯­p­ÄRJŠÿؾÛÐD¾B‡«v¯aR;ˆ¯206}±n²²u?C1ÝÊ
 ØZK ÐíªUý%î0Œ³žÊ6”TÐuT7£3c+PF]C±)ëyݬ>´шÅ5¢d-eÅKŠéLM%?(ßJÌ“¬Š¡˜^)“N<[=àD§EÂjµ¡Æ׌_xÚp,ôˆ'ü̚PæwÑý;»esît4"Ñ\_ðŸpcRc¸pcÇÊ–™˜EgPxÞyp—ÝI4ˆ¨± 8ñŒϸû£Çȍ£"Gž[ÁßÔê€"1ò‰G>yÝåtCZ÷
UÃИ§‘шEçmC÷ìo
(óêa|£ñ½	Ž"²9SÌ''8Ÿŷ¡‡Œv«†¢Xm²•Cðhx›Ë-‡Âߣ±@ªF=4´j@ªÆÐT?Nœx,˜ƒ
lC!Z70ððŸý1¾âqj‡ÍkFw(¼bP]±¨‡‡hHw@~8&ÄF¾(+ÖkxÅкá¦âð|ð€ñùÅ1· Uì$>ٙ[ѮÆÂ6ôßÄL¤f”ߡ°SÀ3¼à»îOÀ&”"¥Ñ Ôd)Z78ãS¤ÜÅX+äš!§ ¼G#™žF=ƒ½†g
*>îòQ®‹
Áp,h/&U0ª1h(8Ù|¶Â`hÕHN7ôʱàHØÊŠÖ¯	¾@4óÖ þÞA@Ní5jjÙ'X‚‡Õ0ÔCÃqð±WŠÑÐ=\Ò~í5ÔêIÐՠJ ¡[W1“!îS a“twRyóWªˆx^˜
jœkZT7áàg*£Íh‹£|ôAíPd¨¸fX^ƒZÂцÜT–õ¢gfRßTrsY( Ìi¨Ô
x
0Nùc~ЅVîÏ,Ŷi6c0´fXÉJÇ0¯`†â!ýˆçª"BÃÌ;FéJcÆŽš†ƒqˆ°Ã(®w
Ç,(ŠÚ{¨ý/ôšrƒf qÌcb!W@Càˆ텐p0â_´ÛF#‡ƒW:"ª1”¸r@1؀!hÔ8(÷´YMÇGba‰`q<L[Óy·ÔA9q ÎLð€"2ŠÂG^yߑԝ©ì¶{
^èL,ba3iÓÙ.†e€$Xߋ³›í5r8x#!Ϯ#cÎá,£9zGq¸*ЉŽ9…ÐÈáöáÝd^E–Ï€ðnF
48ñ`NŸ•…Be™½P–?S0ê ´ü5…@g7•EÀä_W
½•ÛCþ5×#ßÇä_S¼B\¿jäÀXYM4ø(UûÝÞ£ÂPÜÈÞÿʱҥû0SYXÉÁ&ϚÞîIø(Ÿ×ò0ÊÔÖE8i̘k#ˆü4¦ö $\‡ê/F#
¤4Ò@H¤4Ò@Hi 
¤4Hi 
¤4Ò@Hi 
¸‡Ú2ÚI§IEND®B`‚‰PNG


IHDR

"ÌÀ:ŸPLTEÿÿÿ®H*5tRNSH8?Do
=39Ad4;(!%-OE G6Bkn>CF@	"Œ³—[ÍIDATx^íÐ×qT1@$9^¸äœs6ÐmPÒ0»%ì—!„xrøµ‡'1„Ðrã÷q
½HÇ×m7òm
ýH·¹åFŽG¡'G1·Ûȱ¬BOV%ævsڅžìÒÜp£/¡'/Ci·Çé2ôärc»ToBOnjj¹±Ø=Ù[ô³aÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذaÆ
6lذñ9„~Ÿ7vË_¡uù³íF=;?¸øރ‡ûƒó³Úrcœ®×ÛåݷÜ-·ëýil·‘Ëpuºޮž—í=¯¶ëӫ¡ävsª›‹·ǧýöžß.65Í
7bù¨ï›×=xݼ׏Ûm„K¦ºèA†Tbí6BŽsSÆ2ÇZn„œsìEÎ9üÝøOÀŸû‰ƒÑ1
ªIEND®B`‚‰PNG


IHDRØYþG–IDATx^ÅÊ1nÂ0€Ñg˶ÈZ:€ Œ‘0ÊàLôþ÷èöK‘²ó¾õóIÙΨ/ídߎš¥æèK ¹hBh.’MÖM²PÌÖ͊P=¬{¨Bó´î©}|»Ûaã®	ÕÕÍÖÒÖMW…â`öòö½½ÌА
ÎFÝoԍÎYHªÁÞÉOt²7¨’@’U‹ª"KÀ?ü—\=ô@´IEND®B`‚‰PNG


IHDR€€i7©@AIDATx^íÝïO•eÇñ÷}ŸûàÜG¥”ìXêdNqc2bSsl\©˜ ÉH“ê‰ÙÖÑ\¶ìôËÖf¹™®Vj5]ùcs+œ=@¨•N6œ蜓óøìîáõ Îáؾ±¾—÷çúÞ/ìÜçpApŸŸ B€    à?ŸC‚æSE-UÌgcqíe /íRÌÂæWN}{åüÀå ¸|åü™c_¥†¸Âçÿ€Ceoì¸r>øÛnl{‹rÆáX€C!?R®»jq
ÀäWžëÒîFÉ:&à(Í7ëê¤O€t¾Yënfá*Í7»u“Zb
¤óÍöîc®Ù|³ß{¨"ª@6ßlh:²H盱ޏé|3šÈU
`òµä[ ŸßÛG-¾Ù|³ýßSIŽÙ|³;˜BL	€|~gKIQ Ÿ?<œl¡„òùwî®øˆx
äók?f	…dáèÏ’"rpÈ䛵a˜|’ù»ŽRǃÄM¾áüÉøDtĄòWQL.^€*<ʿùR2_óöí•ÌW Ÿ¯
@>_€|¾*ù|UòùªäóUÈ竐ÏW Ÿ¯
@>_€|¾±üwÚxfXɊQ>µTSÆ$Ü`òïö@Ïéݭ,fn†úóS|±Œ<œÌL¾Eë<A…8™DL¾=;×A%	œ‘\Jßû °p')Ç	Àaâ̦»w+·e'SqÓxTvu–îÒEž š! zs`ñÖn§'5@„ÙÛðã)*ðRD©éëµàúU–‘• ›ú¡ÁÀ걖œÔ>ëËÇzütMÖ4‘› apèþXÞÛgsþµkÔã§û!øØþïl8ÙAUº‚Q¦,Øa3@ý»LK÷k0B‚¥]¶æ_¼ÄÓà¥pȡ$¹uxØN€÷0'ý‹¡5[¿°1ÿØjOt¤—ÃYLä©Ö#¶å·w³†éÄqG~ gu»Žڔßv–F搇—Ù#±\ŠYeÁÍ[Ïíg5%äÅÉð¡¨üùï¯â%SLÑŠÊ¼}œ¼ÉöÑ?lãeYÄT
‰ãeøX\žàý¯YÉL¦3m”ϣ$™Ä8r‰Ýû#‚{°cÈÕã'ÏÄ߀(~½ÌÓöæ¨Fyyuòêä	ÔȨ'P O @ž@€<:Cðé	]†àaִwËèû£©<æÐxºG†@€!ȧTŽ@€C”|æ
”Q Op÷NS¥¸ºä	fãj'ØbTÈÌ\ÏDòæNIEò՛)ÀQ Opð0³‰¨'è륆˜"yžQu•–<Ïâ+ °÷BEC`=€<Áà
Šä	~ù%ÄÕÈ|xˆ25×êÊ±B¢Jä	¶}ÎãŒÁU OÐÞM”\®.Opõzr+³ðqm0¥4¶Mº‡˜O¾uÿ`ÁPÂꍟ]èÿ§Oñm8@sKÇ6CÇdѼ|ÏWíúûoAÿým?/û„M,æ!òòÅäçàg<S(gÍl¢…M<O=$)ÄÇÃArÒs‰â3–"ŠI2•$ÅQ€OÀv‡1²‰ã'›˜ÀW^à~<!@„!@„!À_.ىØjwD¼IEND®B`‚‰PNG


IHDR€€i7©@GIDATx^íÝkoe€á{fg·íNˡ@„Ål*¥$
MmRÔ"´B„P¤ê”DŠŒCQX`P„hbc &b0@[Q?Åp$
!„ÊA>´ýöúquw<Ÿ—yÞ_p_ÙÌfÞ9aîó„!@„!@@À=‡AL †Zꨥ†28ü·s›Yå²Lvy—Rf,[yxÏÅS=Œé¹pñÔþo›_g
I\Ÿöÿ‡!T®yçVùÇ\<õÖ:*(ı‡‡˜~¬ݤŸ÷RE1Ž•8+[|µÛdœ£TvxTéR4à2¾us)@  FÝÍkÆh%të¶ P€@@”ړ]Æ(ÈeA¯1J|aêòi2F€@=€<ýîc@ýÙsjò˜úc»1Jb”L^gŒN€	æt•!Ðàǣ©–¾>'C	fÔÜÛ/C À!‡bfÕ}"E oCÄ%ÌnÝiŒ€€ ÎÌ۰KŠ@߮pŸQ’Êxä“d¾AG
€<AÇ>*ñÈ|þ“ðÈlÛ('P O @ž@€<:yuòêä	ÔȨ'P O @žà®pIө£~€×\iæ÷vËÜ
€K)37·vºÕcÔN@pg…Tüí.>k²8SÕùC`Av‡ÕG;‚‹"·àQٱÏX8|D9n6—’U덕Óß;®‰á8™¢L;ÆX:G:©ÆËà\ù¾±x¦¿Æ`œôU~² ­Lj¤Èaö•K6œ8ÎSDÓä±ÈX=7®Ó@nzŸ%Æòa1ñôù4YЄ\¿Ac&Ÿ†˗m8~‚YÄ3k÷uØ°ý;žÈtÌaLÃF›&¯et¦¿AÁ,8sÞÖüÎ#<C‘ô>“^Ùbg~__ª…2òp2Ÿ
¥nÏaZ¾b	¼l§ÃqÆò|û1Ûò[wò,ÃÉÁɾ!RÈîþզü
»˜ÇH⸷³%¥ˆ2ž{qûµ›ÖäÏ'I~ö-±€ $3yõͶ¿ÿñ§%ùޝl‹{Ä)¦„©,dkxû¬µ¬w¯\þ_‰‘ÏF’âaÆðË8æ~ø\þÝ^óÈ!ŽOþ€®LٲC._ßÅÑI۶J櫐ÏW Ÿ¯
@>_€|¾*ù|EòùUòùªäóUÈ竐ÏW ÿý/A¾éüC]4òZš’Ï_È
Õ=6GD,¿œ"¢8ڝ-߸I$b¯—ò¦Õý½’ùŠpy¼i•l¾"†["›¯ xŸ¤d¾*†N[!™¯
 BåÁýrùúb<}î¬T¾F€<^Ê×	à³D"_õëô$òUä«XÔ×'‘¯÷0«ë¤@¾Z€\*6µ	䫈RÌÒë7ò•¸ðäš/ò¿\}óڏ	ä+pñŸj¹tE _íЍáåC]éóÛ¦ßëÓàci\ºãßîD<ݽìæSäÛ1š™,ŸýéîßNww_5¦ûêéî¯Ûçl¡™©Œ¢oÀ?²2€ãàáSLŠ*x‰å¬f9ÍÔSɃ!އƒÀÈȏKŸL IŠR$Á |¢¸v¿„¹Äñ‰“KŒÈÀjëþ\!@„!@„!À_!þìün>IEND®B`‚‰PNG


IHDRrÿY)IDAT•caðe–’`Šc˜bà€Pœ(„â†P‚JB½QŸzŠ[GZIEND®B`‚‰PNG


IHDRò®ä CIDAT•cafÐb```a0Þ,îÊ	b°9ÌñÄ`ˆüÂÀf0%Ð\07„ñ›AÂxΠ’da¸ÆÀ2ø	&ŵëIEND®B`‚‰PNG


IHDRò®ä GIDATq
@@Ð'ùÍq	…Ά¸9
a‹!W‰¨¼×)hj¼+çXY>6¥3ƒ=$ $ ô@€0/,x\áFS+š¨^÷÷7IEND®B`‚‰PNG


IHDRµú7êˆIDATxڽ‘±
Ã0Deñ Ü_ÉP<h5:–üÿ‡´2EÕҥ/ï]mz|9?èDõŒžߖyaÜqPÿP—΍‚jxgå’* ¬ëՔa©DEV7ÇY¨·uã,ø´·Ð !Þg7“æÉ×<&Ž-¤ù¡z4CH=ÿ᳞ÒÆEQPŠIEND®B`‚‰PNG


IHDRµú7ê©IDATx^¥‘1
„0EÿQ<E®±é]ÅFt½A°±´˜:g°³ÙSˆ…×ÉF÷Á.,C Ã<fÞ$p7ñ38åOœåç[Q	3
ÞªÜ%¼bÆàTС(1@`ëÌßL°FŸˆT9,zF¶}„Dêì@ÂrpÌA‡Îè@óå M¯¹bÚg
A¿ë^ל©–4éW7Z““©Ëìþ©ÿÿÍ‹ƒí;k.J²IEND®B`‚‰PNG


IHDRµú7êFIDATxc #¸8íU&Œý*óâ4éõÓ@J Ò\!x¨äUæM¸b4%7ÁJÀ$\S	Bš°‚Vt$Ao
(ú–pay
ܫðIEND®B`‚‰PNG


IHDRµú7êBIDATxcøORMƒÃ †(UÁ0´ƒIƒ š	0%Š„>„Y¨
 JҤ+4‚#	{“Ȁ¢Cdô°ÈmÁəBIEND®B`‚‰PNG


IHDR

';6,IDATxc`hB€ðè?\ÁC0,!„†ÄԎiV'au<Ü
!ñ­âJIEND®B`‚‰PNG


IHDR:˜ ½NIDATxcÐ@ä
¸%ƒÈx¸@òï*
²?-•¿«Êÿ4 ›QñûOŠ¡•~W#Tý®ªø]ƒHù]ҕpO‘‰Pk)÷v
9Q›>9¾IEND®B`‚‰PNG


IHDRµAåZRIDATx^¥Ïa
À @aoà]ß
'è¥Z¬HmâýüDTÚOÇHÁP¤§%ãE#Ð^аŒŠ?c(ãäAȊñ“߭µ÷ _ª镚péož¢lñ¶'IEND®B`‚‰PNG


IHDRµAåZIDATx^…A‚@E{ä&CÉx	<É;&Ï ^d@蜴b7æíúÚä÷FAÏȒè(ljª%±9&Z•ªVž•¬…
ѮID½.…NGG„@Ê„¨³^lŸJu°%•£°°9ýQÊÓËð#ïÂàT rúºŠß@•Tê+µ…Ú^ùSB†³WÌVŸ/þƋÎ{ñoǙÍN8-ð›IEND®B`‚‰PNG


IHDRµAåZœIDATx^}A
ƒ@EsëAŒ 0½„=‘W¬½Èh»°]h5	]”·ËKBò…Œ–ži¥£!۫ª¨I,ށZ¥ªY…g޴pb`¡"Út"Rét.4Z:#ÒJ@ˆZk…ÎúÕaoRÙ‹Ӧ”·—áG>µ¶°púnƒ
P®¯”þJ{åF¯->üƒ/n\±à¿ÑМN»ޚIEND®B`‚‰PNG


IHDRµú7ê–IDATx^•ËˊÂ@…ÁBtHKƒ¢@ x]húÿw›4¤™ßÙÖñ]k­û1‰ϮU{³0:9eÙqùž…› yȒÒ$܄K!Ù`-ŒV.2	h…9°ÎT¤+ÀF©H/l®²T‘·§R#{h$´Je³ÁÁ^ï%üªJîâ³gy×H§³õMû㣯|AIEND®B`‚‰PNG


IHDRµú7ê¬IDATx^•͡‹BAÀᯜEä‚,šžõTL®ٌÚ,>b¾C\}ó§_9,~S3ã=}‰—>tB­¤æËÍÓÞÊÚN–-ëí›pÒ$#ÅÁÓI8–dèîÐ×Ùë9VÉVH@#¬ðQ%aL„5TW¦Â;êÄF´²åQë×U‘dÒ´B§Q°ôp·µ0µñ£ó­fä,þçªñR237öŽ?dw$‹uÐÊIEND®B`‚‰PNG


IHDRµú7êºIDATx•Í!na€Ñg‹F`ê¬ øm8CÛ
O‚ë	8W œ
(Ã!Zƒ B–©!²̾±ßÌh¦-7ÔñһR{=5Ÿ.îÖfæV
…iuû"´™“›¾dãî lSÒuuh+­µl+ÉRȀa†·J2FÀP˜Cåʷ0:VԒ…0Ø+díü9Kz
'ݔì„RŽdêæjiâ˯ҏš¾£xÎYî¥ÌÈØ@ÿ#[Hvæ²aˆIEND®B`‚‰PNG


IHDR$$ᘘsRGB®ÎéIDATX	͘AkAÇߛ,•d	hö¢/^¼¥z)Võ`Oú
´ ‚P=kAÐbýõ ‚$ҋš›ç^ôb!‚`dS”dÇùÏf–Í&cgw³¡sHf2ï½ÿ/³3;ó†)c¹°*ý•ÁÅPòb9§ÜRra˜eG}uHòWÁòÝû¯߬ðOô¹v5\Xí^aÞT⧉¤çæÇ=ù^²x¶¹R{áâ³'ÐâÃî|_ÊG
¢éÐnÃí
óÝֽÚG»e[çÕ
YÙù<‘’–m6y~gAOgúwž/qœÿX ËkòàïÝ`CÁ,Žs*ú3µêUéå-þ•Ž5¤aºA[OO²­„·ê5¿™†I<&=2%Ã@ZÐL2
æL)))jê˜;_‚Ǧïø‘E«)üìœV½Ââ”Y}ñEK{ZÃ:Im
„—^ñ÷̰H¶–lFDoàl&om{ÓnØýî¾L&ŠȽª¨ö°Qª÷¦²`WjÑ'‘y™Ÿ˜‹ׂ•ÐÅ&íÁIwü¯}ãì­]«ҥ“öAEl`›¥€UŸe\·„Útù܁±P€AбÕ
·†0‡+7{¢WŸz´þö6OC%a`Û,,ž:õIl,YА
ø›z­¯X<µw|S<õ,@°µAå†Q1B9„sp®’||PfÐñ$‰m¢h¢æ¡2#ßd=O,$^…–:K^Ï`àTd™Š@ª¢ž^¶åP„ÞêË=°äMHU¬vSêXô€¼iJºVß*_*š{Yõöèàöæ}Fñ.‰$n¯Һ“Ú1δ*_Z/MÕ‰£9OÃ$Bcö˜IêÓ(ÐB›ÔBz‹ŒRM¬­¤Quh@+RA™$2Ê2G
±Çe­Ð2PêñWŽŸSú²AÅN§ÐÐE‰—}ÔýÜ7×1i´}sa•3Wz8Îã#Wz8A`ÓÎs¥÷L`BþžM%IEND®B`‚‰PNG


IHDRµú7ê2IDATxc DýG‚
X )}ՀWA„’„02¢§DW€FªLHd<lïCSç9IEND®B`‚‰PNG


IHDR  Ùs²EIDATx^íÌÑ	 ÄÐÎé4·¹PJ@)
^òÿâ­Æ,Ö.	JT'€€  €`€ Ý@¿à€Û-×4	×dM JIEND®B`‚‰PNG


IHDR@@`¹UpIDATx^íÎÁ
€ À@æt6×	Œ!÷@’¶Üx«êºŸ@,Cç€0‰à€1à$8	@‚à$8	@‚€à€ïÀN @€ @€üßT=Í"ºÉxH!IEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£ ¾¶‡ˆ+€øÿÑP>+µ-â⃠K øŒ
碦e=Pƒ÷±TLćŠ÷RӲ×PC¥Ðĥ ⯩f,ÈðËQn‰6_FCÕiSbÙ5A$àk)j‡®e@~+Ñô°ì'Tü3½|ö…Ÿ&K$æ³딖 Wˆ´è
¸`ŒZàYgIEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£ §o>+Wñ þ¢¡|Vj[ÄÄA–@ñ*ÎEMËz ïb5¨˜ˆ復e¯¡†J¡‰KAÅ_SÍ2XᗣÜm ¾2Œ†ªӦIJk ƒHÀ×(>RÔ]ˀüV þ¢éaÙO¨øgzùì)>M —HÌg×)-A®iÑp	2$À(™‹-¦
´'IEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£ 8·Šˆ+€øÿÑP>+µ-â⃠K øŒ
碦e=Pƒ÷±TLćŠ÷RӲ×PC¥Ðĥ ⯩f,ÈðËQn‰6_FCÕiSbÙ5A$àk)j‡®e@~+Ñô°ì'Tü3½|ö…Ÿ&K$æ³딖 Wˆ´è
¸`Œ“"­{hIEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£àïA&V ®â;@üDCù¬Զˆˆ‚,â?06Tœ‹š–õ@
ÞÄjP1
*ÞKMË^C
•B—‚Š¿¦še° Ã/G¹%Ú@|d!U§M‰e×@‘€¯Q|¤¨º–ù­@üDÓòŸPñÏôòÙR|6š@.‘˜ϮSZ‚\!Ң+àdH€Q0
5@cË͊äIEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£à÷eV ®â;@üDCù¬Զˆˆ‚,â?06Tœ‹š–õ@
ÞÄjP1
*ÞKMË^C
•B—‚Š¿¦še° Ã/G¹%Ú@|d!U§M‰e×@‘€¯Q|¤¨º–ù­@üDÓòŸPñÏôòÙR|6š@.‘˜ϮSZ‚\!Ң+àdH€Q0
P¹7ڃÑIEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£àý.V ®â;@üDCù¬Զˆˆ‚,â?06Tœ‹š–õ@
ÞÄjP1
*ÞKMË^C
•B—‚Š¿¦še° Ã/G¹%Ú@|d!U§M‰e×@‘€¯Q|¤¨º–ù­@üDÓòŸPñÏôòÙR|6š@.‘˜ϮSZ‚\!Ң+àdH€Q0
=tBÊÜÕö;IEND®B`‚‰PNG


IHDR'Ý<Þ§IDATx^•ԱKUaÀá÷x¯aå¢!C2)(hn¬ ªÁÁý4U 5˜!Ys•ƒs:8AC”¦6µTFf_K\Î9œƒÈo:ž÷;>ÞP¬ۨg_løౚ(VD£Ö̺ªþĐ3Â	ӚU츰OS³۔o.(25“–í•óÆÞ"»ãµn±iÍ,ëòR=:ŒY‘¬ӑco
·Y¡Nó’ä¯$™יaG­ê!L:c’9…~s’{"Ӕ"4üԓc«’>!„>ÉjŽõá²"W’ŠO…¶…ÛZ2`A*fÁ@ó4ä[’J[ʰAKáTÅV¿Ýe#¤-³šÏaC£”[7^5,¼3XÊþHÖKY·CášþŠÓ~UœvÅó[þ·Y—Bx¨w¬iMWÜo³÷RiËm֫%BØã«Ãí[²X‚۷¤+»ZnŠÍS·ìd~—lWß5¼rWäٰEufÜ*Û\#¾›ÖQº¹ÎU{²麰_ˀÿÉE3~˜PyVìˆ'>ù-9+Ü0¢!òýê  n‚',‹IEND®B`‚‰PNG


IHDR'Ý<Þ¥IDATx^•ԱKUQÀñŸ„A>
+Ÿ
A’IAAscQ
>È(褩©Áɚƒ¨„èpp>Ð¥i„M-•‚Ái‘Çáp"ßé^øüνpÎ	eÝF½pHøjÃGOµ‰²Z3ëºÚæˆ!ç„S¦Õ[±“ÂuQf¯)ß]R2m&-Û-ZvÂ[ûKvÝbËê9ëôZ-íƬHVŒiϙw†›¬¨ü$ù'Iæudì¸U½"„IgsfB2ç°ÐoNò@dMy$B—_zrfUÒ'„Ð'Y͙C"\õJäIRùT´#ÜÕÈȀ©̂]𼜳$U¶”±AKáLõ¶~k¶ÍÚ|	º*ٸu㭆…÷+Ù_Éz%ëv$ÜÐ_½šßի¹æeˆmÿ۬+!<ֻ
V·¦3„'6Ù©²å&ëÕ!ìóÍÑæ.Y¬@‹Í]ҙŸ·†ÛbëÔ,;-?ovªmº¼q_șaŸŠ֙qG”,ŒøaZ{åÍuQ䧼¼`n
5صI.›ñӄ6Q°¢cžùìä¼pˈ®rýÿ@Ùbp`IEND®B`‚‰PNG


IHDR'Ý<Þ¦IDATx^•ÓMKTQÀáÿ8ch9B´L

Z·¬ ª…2
ú´ª@ja†dÏ:ˆʅ}.‚ E”¦¶jS!˜A œÉpïåN"¿Õ9ðœ8'ë4♃Âë>x¬"ŠшU3®©n.1è¬pҔz+vBد.Šé6雋ŠLń%»Eˎ{c_‘ÝõZ§زz–ux©šmF-K–j˱·†š¬P»9I²!Iæ´gØ1+zþ±	grl\2ëÐgVr_dšôP„šŸºrlEһ9ꕬäX—A®x!r%©8*´#ÜÑȐ~óR1óú3輧!ߢTÚb†
X§ËØzÖë!m›U|ëj¥l̚±V‹…wJÙÉZ)ët8\×W¾›_廹êyˆmßmÆåéÙ«[Õšì½TÚR“õhˆöúêHó•,” …æ+éÈþ·†[bëT-9•ÿo;U·@5¯Üy6䣁ÿ²i·E‘…aßMi+Ý.�…ºÂ
ývm’K¦ý0®"ò¬ØQO|ò[rN¸iXMäûéVK?\IEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£àïA&V ®â;@üDCù¬Զˆˆ‚,â?06Tœ‹š–õ@
ÞÄjP1
*ÞKMË^C
•B—‚Š¿¦še° Ã/G¹%Ú@|d!U§M‰e×@‘€¯Q|¤¨º–ù­@üDÓòŸPñÏôòÙR|6š@.‘˜ϮSZ‚\!Ң+àdH€Q0
5@cË͊äIEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£à÷eV ®â;@üDCù¬Զˆˆ‚,â?06Tœ‹š–õ@
ÞÄjP1
*ÞKMË^C
•B—‚Š¿¦še° Ã/G¹%Ú@|d!U§M‰e×@‘€¯Q|¤¨º–ù­@üDÓòŸPñÏôòÙR|6š@.‘˜ϮSZ‚\!Ң+àdH€Q0
P¹7ڃÑIEND®B`‚‰PNG


IHDRÔôUœIDATxc 
£àý.V ®â;@üDCù¬Զˆˆ‚,â?06Tœ‹š–õ@
ÞÄjP1
*ÞKMË^C
•B—‚Š¿¦še° Ã/G¹%Ú@|d!U§M‰e×@‘€¯Q|¤¨º–ù­@üDÓòŸPñÏôòÙR|6š@.‘˜ϮSZ‚\!Ң+àdH€Q0
=tBÊÜÕö;IEND®B`‚‰PNG


IHDR¿¾-|1‚IDATx^ݝÛw׵³±1`Àvžó_ä%#‰ÏÉÎÞ6„n\b¼m'9çáŒ3â�b„ÌEB`0vl0ØN|9ñŽã+؎	I kK­–„!@·nIݭju«ú̅¿²§k—ºªºj®<ÆI=ôó7ç·æºtiõ÷._¾ìK)6R£h£˜xî͉OV13AÑNñÅ&Š¥߳	0\Å=Œužâ:ÅōÇM½EŒƒ¥`ÌA,¡ØDñt
QÄ)nRtPüéÑÓÅĸ' Vtu(=ÓQ°áÿ%]wS”P¥h§GM]¯Pl¦Xf«Á;«¬6“…ºµªܚº|r¸Â×`9еº^Bo€5ª¾«~
BW«ׄՇÐLáyxa¬a°_
’żÑOLC_'ÅqÔK"‡£ÐUº|X ^ðað¬»T=P¯N0cнë)þ)Àñu„y>v
è*a>¼‰ŽP„àr��ñ*úÄó!׵<`χ½Á{ԋÐ5Öc•8¾J™çÇ0¾F؜RŽºÁZ]­l^¾öËеęá}mý~X"У:˜yÚ–TûX=·˜Õë:XQ¡y¹¬v6
±õÆFè
Ê릆5ïQSÖyYÀó6óWÀް®±áCè<
ÝvÞÀú×]¨¹õ8ޱ;Ö[o”âu~Y||…ؼ|ãëe3‡~XˆÿF±þ½3C»ÙÚ&a³Ž‚._¼¥åÇ(ÚÎuv™=б6;̕^YG±Œ>X13ï[ց°Š(ŽPt`ï:Eq}íîÄߙç—¥¬6ŠaŠ8Å
è<òÄá©
L—ÞŠRìÁ;)nR$ØÞü8EÛ/̃®ŠW)Z)FÃ`¿ÝK¬9ÉårváÄÚV›Y/èꀮMloî‡w7ó|‹òXã`åçnyˆÅêuœÕkڬXe>Ï8k£Mo ‡/ãçKü°KO5_+^ćìŒè.¿gD|Nyõ“›ï(=ÈaT±Û-˝ÆO>ÈJнh´9Ûޘ8M€œ%’5«¶¬8çðø—ªdŸ
ke	\AQ†ž[,º{TÚG÷CW!¬ç1䜢¾}°—ÏS¬(€u/Ån–C§Hâõžsˆzíq££¨B9ÿ7ìuÕÈZáQW¬U²vƒåº^²V#'	—¬Šý>êµÏC½&)*u° «ÖkVÂ}#æև>X+tëòX¯ºY+=Žå¤Ï#'	9¬ñÓ½xÇ.Ì_žzo¦±<…~¸BC½’>=¿OÓøZN±݃ç>굊é’Ì!Ÿ+cë•ð0¾ö‚%½˜òÑ7VyÕ/-÷zV
êֵº<±Þøì†bU{ì½{
aaPóØi/¼Œe¬}ØØåž:=íbµÛÆ®uQ$øžC¡<º؜≷’³x<HZ=ÎËnt�sz!!]¨tå‹êwÇÎZ{”G޽ÕL—SÄ_úhä6Wz᭠Ø:²ðº½l녷
õJºa!×uȽ§Ã/Ôk'EÌ«Æë9_^ê…<¬*ðÌa—tz¬׽ŒåymóեËY¿“¬Ix	ÞðÄ[i¿>¿píb;·ñvøUL1ˆqõêՋãããͳ³³=Ùlvb>c$&gŒ‰ŽlO͇sÍëö¤ú	`¥(ñ Œ³rÄꙘ˜h0YIÅìÌö¼ðiú\ѾT˜±F)ñÀõ7«t5)V&“ù†Eìpèrü4±ºkºܲ¡ç,ÒuÎÔeFÂd©ï“îðoŽLž+F±ÎkÅ«WX3‡JŸb«Ü«[½Ž"÷¿^šü”EYÜa®‹³Tn•.“…ǒBXÈa·é
bDÍz™ºìX`¸‰uVϡ…UæYëm<oçx#bÑU䖅ñËçyԋ³rˆ˜G]ÿJ1ÊXð†-õõò¨k<Ÿççç£vÞÀB±ŒB|¶ëQ©Tª—X± õŠð•G×Z9´z¾‘³ˆUlÕÿÕÏ-ž_疅ÚF­9t©kõvË*²°zzTIJ‰(÷X/>¾n犼Y¤GuûèQlê…~hÉ!æ”BÇ2X#ùrhףú¡ÛõFË!¯WØ&‡Ç×CȻÛùËZ¯²BÇ×ÀÀ%ErÆøêác٧7Âùê¥þ_¸7|öÛÅsØkÉáC^rèrN‰€Åsó8–×[ÖQ°œǗwÖ:‡z9/—جÙÔøRs$XQ»V©ۃ”¾‹WŠ,ºzá
‡zc!ÖӆkøLÛà•|ó²òÆ"se¹ÖŠ1¬Ïӑ‹ƒ!Òužõyk½ú,ºÖydM€e¨=Ï;çnQ:\¬±'YÝð6PDÁʭݓº¨öY�›[°Œe֣òø0˪K±:ˆ¥ö“óÙ\‚¯±mÖó¥XŌ•[¿7ÕsèÓtCçկY³i#96mLGÓvž§Xふž"ÊX}u§•®ñ¸1‘"–úWåôö÷#×[í×Î<ìwÇÁ2ëÀ'ésmW²‘Xòk]S؛¤ï«ÿ3×ép"ƒq¹ÁÃaÔzžCªWg)]*—í`)Ýæk¾3ÙCÌ2·‡_ðƸÕ-—²‘“Ñ䭯ëEìÛu´ìÍc.öæù¼Ñ[ûá\“ҥ3s¤9dgœUêa[¼÷¯c'y½T®”Žhâk–ʥb£^œ5îñÌa
¼›«yo´^åP±Ìñ•ÎäÖz1֤Ç3‡uÖ5ö-³§ÕøRz¸ç÷4פr¬8ˆ/gDX/ܴ®Ù3³_³æþ‹7Âà°z¹;üªàyjDs.þ#ÑKjR=ZEñ}aϚ
gpp°Ë-«ÿÆB±¸Àç\$°R±L]·nÝêwÊº`”íJ—ëLW·[VÏõl_imª‹±vºеÃÂêsÃRú¿h9ÃÌï†UÁëå–577×G¯©|4´þ¢*ùG¬…°”~õz6¹T¹Î!1êå•e(…$+ÄtUº`mc9ya©<˜ºPw'Ïï,ć4æû-ºvåÖó!ÞèäÞKć|ÃâÒ¿ó¡+ށü¸_¹|ØÏǗKÖvç~è<–Ýùó—÷ö›žG<ï҇9>ô2–+¼Î_œåч•|Sî%‡Ôk'gù¨Wµֳ…Žek’ëö}^°†<yõò©Ë@~Üû=ÊÃz£ۣ7ž«ÅY»Àpۣ:˜SxžÂÚá·^|®t8HÙ^^o¾„ƒC_kgÖsæÚõ?^Ožöè
ޣvº`Uš{
ZŸ‡CW³ýzTغ>tʡ©Kí;Bƒ®Y}‹ôCWºŠkR}ák`°Ævqh³Ãd•íO…h_åiïà‘UÁX]joê’ÕkYÏW¸`=Ka ‡9çéQ¶žg>ìr˚LÌ÷òõ<Ÿ¿òðvR`u»­Wøz¶¿¤6ÕóÖ?†ۜÖÜ&«hoê"ָ> úvš9¡똞v:üêé»òÌ]Áør=–{‡o³B&cÇͺ7§úá¿OžéF½\貞T¹ay^à́çÐ%ë^÷°`YÏmv¹8#ú?r«KyK½ªÁZôð« uÊ€§8ðqº‰Y\tcÖ|4­÷Ê1(^<•n F¬|›°ê‚Yˆ?}‘>ËXÛ6AêÚé4¸(2ê݋BXG>»͚7Íèb£—)4‡ã±3Ôx.™ސ¬—Ê=iHS¨njŸv¡k9ôÁrÜ\V³zóZw±Ð~¬l¡ºT>T½ÁrU/b5¨ë,rèÄÚåÇÐÕäRWU>T9̺`m@×9æ?׫±ª\ø0ãg,{ò!X¾t9³vúe©9֥7vð>ïCWÚEߨÅYÂõªðߣàygֶ€zԼ׾!Üç+ƒ©ï½Î,=ª‘éz֥Ï	ú³²~Æg9F٣ªcћŒ4u٣ˆát¸‘iêMžöåygV%XÙC'Ó
†,kW@¬4X;ò°ž+Cû¨F#˜õ†S3¤ëœaøË||å­=ÒløY:³ªLí£
^G1Öö<¬j“¥ž2ü÷
¾×[ì@/£tk]ó‡Éó¾×XÚñ*ßÿw“U¨®—?OŸ¥û¹Ï^r~¡`\9|rž÷̪WyÁÓm;]¬1/ûcQTºXG¥՘ôu¾áÌzÆïùt¥]<tóXÙ×VVõb‡_¥¥ãñx« ™Læ^zé¥ÜSO=¥þU_ÛO…2p“¨µ¦¨ééé6?¬Ϻ2çX¥&‹tµøa}ܑiÁ^AQ¶ȣ€†ï‚Åt۱‚Òuò»õ*ϓÃXAyc³
«„åÐ+‘HœÿŸG&ÿ‘‡µ!@ÖÖìKlXe¬^A²ìt)¿`µúÍ!cmY¤^9–àXk5æ°<+­^뇥jÀX›òô,X¾rèàG ˷7T
À2à9‚¬7$û¼Õóx~,¿9Ìæѵ¬ù€sXfÇɡ½®"ޣˡ½çËØzCº–ò¾!ܣJKz|ñ~¤ç7ذʥæJá¾ÑÂëeÝ,?ÿîؚK—nëά«¥¸G)~c<h?´a›‡¶gõá":g€¨7lXåЕþ°-ã»G1V±
«ºҟtf.ø��
Œåw,·Zç/«.Ó[¯6¬‡¡+ó~ë|[€>\gÃ*ƒ.äз®…±ȟýA×<íÅö)VÏ<¾ÊۧÐÃ	_¬kcž½^Æïü¥Æ'ý)éÕÏÏ_»ˆõ´ík6¿,~o_9ð™ÆÅêÄç6øÚΙ9ô{FtŠXLW‘õðë>óubkÊ=òÈ#¹¢¢¢\ee¥ú÷ö×ÃÃöÀWÿ‘®gªýÀrIڈbá”2HÖ$Å–Ëßơ+=)Õ֔…µ’"TqjyޱV3Ö}Œu.Ö+_¤Ø}c÷[YAÖëؗ¬^ð†Ï	°x½V1V},U÷÷뇺è×±VqÏ]/•vXÌó²b±X=XÓ¶õRÞÐõ€…5ÉÆrºƑ7K$‡“ÐÂëeæ°)`֔¥^«™7‚®×$÷!4N±bº¼Þoçyz*âB,ª{3_`±%ãÃqõš€÷,=
}CÖó÷=¾T~x?ÔÔ7Ɛ7Û5€°çWšº”Wƒô| ¹ްö¨`ñkêÊaLé²\=ºöùDÇõ›±ÀÖ¬^÷1Ö}X憎"h”X0Öj°ÔzµAb,[tM0]’¬{Í{œ^úŒt	Ì_]1A]+-õŠAWÐkÑi«.3‡‡NŠè²z~Œ‚žb	¼^ãV]Üóså*
Þ7ƙ7‚ì“ÖÞ[ß>ص¦:
–e?Wòý²€®aùօ¿b:˽aYcO9§ü	{sú Ï,9\Éu	œ98ÔK”5&q…q??üªÝmv L&“ûõ¯{üñÇsÙlö6œ.ÊÌ=úè£êûêç¶2ý©fÂà‡P,º+«ņUVW,º¬¬Œµ¬ö@Yµ©6°êë X׫¬ƒŒõ‚P½Loa¬:°ڄXÜûáùV™Ê{CyÞI^8~òÆvƪ•ȡòšýaΒð¡êC6¬:!Ö°jx’ð±Zl9߸.x,>–Ÿ®—Åó"¬V°êlêÕ&äC–¾ñ%âmzT‹]{…úó†è¼̽Q#¼Þà9|Qƒ7΃õ‚FサØø’èQû°Ñë\—É*Þ¯xù£›M`	Œå:ÅAÔ➙6)2Ö~Åڰ/Õ)Õ78KX×aÆÚV»!Ó7ösîq’š¿ö1Ö^ԫː™—kmêôZ4dS¯½±,©ù‹³j(ÔެUh]g~Ñ’m#ւ€/p_c\¼ ÔÚÌ_Ö6u²s¥üžè“ócŸڬ7ö1–ęƒÝþ«+àýòyƲz£]ê<Ê<üZF1KaЅC‹9÷“Ÿü$÷ÕW_}G@$ÉýøÇ?V?·…]]¸®.Å,Ž`¥$Xt!ß01°Vá#š“¬K#C`%)î!†ŠAÖӵTŠuyô])Ôkr¨.h`™ºV0o,­k`>”öXºê•LÍýseò²ò¡™C°rA³ÒéôuUôŠ{%s¨ò¤òÖ*Þ7Äu!‡B¬!°’x׿.3‡j|IèÞ`,]³ЅÊz¬åÂÞ0à½Â>Ò=¾4×k¬»)âÂ,xžýPp|qÎhèQ|þÊIûÐê
Éõ–kJהP½¸çՓ0Ë1o—nf‡|hæp1–âÝmC­çDt!‡ÄP1C‘ë̊y¬ef/Þ\—Õ:ÛdхÐbýºî¦H€%£s
ó†ºT[҇÷2ÏÇrkaoØè’_ªYúÆÝ`åú†$篥æší,}šéàxV€órBx^NñùKü¼{ó¤ø¼Œu”䚍³$ë¥Æ+=eVÿù…kaÔ
ë^ÔKn¿¼Òê
Éó(uøõgÔ.FFFr>ø`nllŒ³ný³ŸýLýۧ¤ÚqÚöq¶‚Õ)bwNBŒõ¨&ÖVèËa½#Ätm«[‚Uüm½cºº„½ñ8g	ëz’å°SHW«
+,¤«ƒù𗒬pÿйšÿ­ÿ��…Ç2ìq֣z„Xm`=ÉúFH’]%`E„Y[5ԫ,ޣºD½–&þ›Fo”RlÖbºD{¯ÒÖc¬^!aŸSº%ë–ëj5u™>èÕÁÖÕnææ°GéáÁÃÅNJz¬-øø~é~øq63–d·g+XZêÅXºr(=§l5½±nO*,œÃǿѵWLW¬'uÕÞØ*ìù6]>äë÷ΕþÛSõ›Ì\îQ±õ|—4‹ïS¤ÇŸ—¥{”Æù{=ùzõK]û/i]êiMu(UZWœRMgOªï?ç»󠾾>÷«_ý*÷£ýèö¿¿ýíoÍàßW¯[ì>®s€½Mœ7%Yt@³
«Q‚Ew5u‚8oHéÂ}\fß!ÎkL—$ë/u½
–˜.ºs Y‹ëzWº^t¿A#Xoç(»ÛFr,¿#íX,fށ týºÎ±ÀRº^פKùðXMÂ,ñ¥üÍu	³L]ʯjÒõ–FÏK‹7x®z”Pq¯—pßຎkò×Õ$͢;,÷ÓÇÃ'Ç×7õ¢yå
ܣ#Þ{M–ºÃU˜õ&q^դëÏÄy÷9‰²P¯×qQ“ð¼|‚8ÇÁjԐãšêõ–éCŸ¦›…ÆWXÑì
Œe}¬Ÿ¤uôù7Ñ{¥=œ­E›$×6˜OŽéZðyY˜eÙë‰{ãcI×ëMMõz[zÝu%q¦£g 
]G™7DÏRÔáW˜õÚ<òyû±­[·æ>œ«¨¨Èm۶Íõµú¾ú¹zz½ݟ#öÖGœM¬~“5;;«CWøNÑÕs=ÛV¯t½z‡¿ÑuQ4‡ÐÅXÝZ¼]wŠûP/°:%uM¥#šª_»;qJZ—Ê}ŸFV?ó¡4«W³®°°®>°"ȡ]½LWŸ´%uá1úcéò!æ/mc¹KF—~o†~S—™ÃT*Õ/ä
S—š3»)úodŽAœ.Š\øXBºÀ
+V7X’=
,ZƒÈêâ¬Ð`V´GՍÊë«kPK½z4իåP¼šÞ˳."‡:X}7^ÿ æ½Ñúqyq]áy™Í)Z×6¬NMë(žCñ±–®õaä܉Ÿ9¨u]tñ—¦ÿó{¸cA]6a÷Q’ê1²óçÏoôsõ:ۏšL¥	l˜gp×GnaaA„5û-k–8	èŠJ°¦RF¬(q¦%s˜¸õ®)i]3s߰gJ’•ú–•”öáäŒeޘ„¥ë5‡z‰çãkŒé’öü(Ó%Z/io¨|¡ù¦t²¤}¨jVT—.pbšXqøPñ¥YfRjFuzC˜Å篨†Æ5隅7tèšÑè[{þ:vJ]Ԟ͊çpƼßf:eˆ׋8£Š•˜gMB—ִù)t‰[⬄©k<nD5zCzþš N,9ŒkªWÊôF,)^¯$¯—V–|ïa}^҇³qk6Mså´Æy9zé˜+g4®{g5®{õ¾RZö)ßÃ%j
pË
›™™Éýâ¿ȝ:uÊ:@9Ký\½N½ÞN÷Ìÿy%vF ¢,l˜'«‹¥UêeƝƚ—dßeëeܡžOßIõz°bf’bZG?TZäP–…ШËШk^£®…;T—¡‘•½³Ɨ~ÏãCirمœVF#+K¡Úr¸`haÍ+–¡Gׂb¥3u¹;Íó*pǍ/CW½º{¦º"“šú|ú¿],½ë^¾ד×uç±ú=Gé²<ùåÍúJDmm­Ìéq'ˆ"¬Äìwž“d%o}ÃRš’,þô;]–֕öƭùœɚåïhÈa\²^֧çtùPZò‹¿ۦÁSºƗ´çç³ÆÄßꇺÎuö£G	äÐá‰YVŠ"¡iN_üés¥Øü%ŸCÇ'õ$=o†ɚ”®"à7G&OmÚ?݄§ED½_îfÝ2ŸƊ&RÕÇÓXâõKÍi⽗8“L—$kN£7Rð†]	âÄð$‘xBu°gR“çoчID®Nt¥æÄuñ'èu°F5­f)Æ5±3¡i}ˆ}¥–5Îy™±Äû¼®z3-œC“5ÅuI{^ã>eÖrç—3¬¹¹9÷Ãþ0÷ôÓOÛ\îàè‘dÍÌÎõ~~þÚÅc'oþMX¿ÿHéëdñ»±,W<+2deÉç¬N¦K:‡®K>‡ò,ø0¢Ëó¬^Ҟ¿Èû†´7tõ
èê¾Sz/¿O9ó†õÎ/Mºz5Εýw‹׫K£»/]º¼LÍIçð+󎛖ËÙ~i]ü^'	¿_Œ8]¸kI:‡½ì®%Qt…5éêç÷:ióÆUxC–խ©^½êÕgÍaøšo@—´7.ޡóöÚXaMóXXGɳº…×l:}ØÇX=Z¼––u¯þµhº4îSäuY>íцøꫯrSSS®`üvøMþB,þ©m¯Jê:Õyë̃;fԓ0øä9ÿTDþ‰’,袐cñOÞg½¦)‡oçuAÿ´Ç7ø'ÑH°Ž~™në„Æz½ÅǗV–¼_E›%Xï5ßjxêXôô»_@ïЕ÷“ï…Y–_üÇà
-9©—ó§X6
±L]o‚¥e½AObí§?eNЧ›	°ì?©ððÉt“¤.°Ž³OR“eA×ø4:Éz稤.þI üÓ¥uñO¾“îQ&ž—Öõ*t‰÷(âœ'sJ÷¨wX¥u½M/×üßãÑÓýƒÓõbõÒ?½¹YË^OãœbùDuQ–å“ýÅׯkZðzI÷ù·¹ç…uIï+9ë/<‡ê��&M=НÙÞV‡_)ØիWCvŒýô§?͵µµcôsõ:ÛÆè÷¶öE©0«¬')¶€Õ)¥ë«K—³ô¤Ù/‰C!Ç*®IµcÃüt‰åpþT¬_çQIVIMª
,U¯­`u‰°X™®°P½:ÀzŒ{C¸^O0V·0ë1V¯pŸ`¬!o´ڰBX›%=_´/Õ
ú¡œç#¯™ØãҺ”ÀzŒåNá9ž×2Wrotçp«†¹²“׋þä÷ZÍß&?b…Ì’ï¥Pã@ª^í`=i²ÖîIõ
ûðqâ”0]Ҭ­·Y{Sݒ,Ôk‹b­ۓ
Kzºƒ.ñ¥t¡^¢žG½4yã	
ºڙ.°Äëõ¤™ÃMu©óÒã‹í‰z$Yèójš¿gûʰô^±:…½Á×؝Â9ä{½n
k€͚ÖQ|¯'Ý7¸7º¤{”†zµk\‹v1nմ>ܪ2½¡¿–áoc
zrÈòø{îç?ÿyî÷¿ÿ}îÝwßͽóÎ;ÖPßW?W¯»ýzJ§Ó×	²€ß/ÅrŠ$k–dAWJƒ®•w+],U“ýÿ9Zÿ/UIõ(örèa]Y…©³J×=R¬±…ëœ%é+£ßa)o,¥HæÐk•æz-5ïZԕ¤XŠzMIèê^‹{c†±¼ꥅ…zIxþâMxžGJŽå¹-uӧ‰±9œ‘ꇸv–±’zæ/â%>ÁBºÌÎ@ÓrSWjV¤^¦®eÿöÂÔróN5ÎEta^&Æ2Š
ƒú—¨7Ô܌ޘë¿!ÊZ	–]«˜.ÔKT×RŠ8r(Ò7àó‚9ä¬V¯¤0‹{>%ä!k½0–}˜RõâcÞÍááF¾ìÿêÊú¼Dg°¾¾K|Nç5îõV‚•Һ¯”_o¬Ҭk©†uT’¯4èâ9\ÐÀZæäÆ2֢¨—ðš-oÜ#é
žCMã+	MbãK՟euø¥¢Ž"788ø_ŽÔÞÿýÜC=”[³fMníڵÖPßW?¿ý:ëôû.à”í°â öãd/hÖy°^d¬:°º‚dá֪kXëjµÑU+ÁzúDòS<)ÂYuõ*۟:–7:f]ëc„ç[ƒd•Ö~Ã:ÈX5̇¬:žCèj	’Uòí“Xk—„7 ËêÐ%Å:"٣<Íf3¾ö‚
´^µ©6°j…{Ïá>ϷÉzêxò¤º×}Iל"ڣôϕ`aN¡º}ï‹×*ÊkãM4Î;`Y-`Õ)b/…ê)í†L½^`¬]j<Ùçù;ô‡k?žN	¬«٬cÕ!‡RžÁÊڰ¼!Ã:ÂX5`u	­£jm|ØfÈxã€ÕÔ+[¤ú¯</Ö7x…u⬮L^þ¨y줄çy"înáõ<ïó{KbŸrÐfÕ*åC–”k)¤÷°mvó²KÕßf¯w­£$¼ñ‚M[„Æ×A–Ž5Û!6¾Dæ/éz©šØäpcIô¨6g]Bž? º7G¹7LØ}ÑÅîâ0Cݒ¯þåow7@=@Ó? ଱€YgÁ£¸ßšbMYt­¤ˆÕKågÖjЉ€Y
ŠuðýÑÏhò·Ô+X]ÇϤÏb³<NñcÝV õÂKõ`M
ëâ¬ikÅ8»+À÷Š50]‹y¾!–ºû¬(Å*k<Hֱ/‘Cî
^/ä0`֔ÕAûP݋¼!Ƃ®³Ì+ë^ÖçöaÌZ/ޣ®×ÄÁ÷G8kuОoîK}y‰Þ%œ²Úa|I͕+ÿ¯§‡;Ÿžš5-æÆr%ÆîÕ	Ž? 8ˆû(&qçRSÀseO,q]“ìn¢@æJ>/[tÅÎáYæ
Ûªþd½àùVԼÓLÂ󌥸ã",ûzM˜ÞðájÆRžŒ	ùpœ{ž×kÿGs-A°p¯_#ƙðÌYzÝo²*ß¿®Aï•èQÖ9%ªi=¿,•g‘ñ%¼'âõz@Ó\9޼٭£ÆòÖõ¼®ý2_J̕Œµ
Zoç9àKếϕ“v9x|q`Ix#f9ßX)çy¬í=Ԛ­1ÏùƈDy½ȌRˆNÇãqL˜…E"‘8O€4`›Ààñ?›ŸžžnUdÃ*+M¯½ˠ(·a•A³o–ªÓUœG×|õºÀX¥6¬b蚇._¬æÐիôÞEZЬ³Ó”O…2ˆ‘Ɔy³
k£ËÎó‚ª×Éï²J%}]
cÖÃAåϺ2癮õy¼‘õ›ÃO:3-Þ(*‡¶ßfeÁÚ"٣>ïΜwÐU”ç?îøN‹óxÞw½¾èÎ43֖<õÊøËðᆽñ–îށ¢ÅÆWOߕÉúÞùó~X7&RͶs%¥žwl
¼3Ož
²ϗs¢ù͒geÃc£É"ÉÚbÃ*+M½3ˆy9Ëë†5‡iªW0ë
èCk£
«¬ìm™ÖY¿´aa¾ÉÂó~ë•ɓÃS×GÁz~³
«¬t/ËãìÙH:PÏ[Y¿¨J®;~ê†Ҟ
xï`eñ>ŸհOYÇX­Õˠ(±a­ÇÏ2ôÚ@û†ÃúP+à}ÊF0tìa×-²Þ0˜7tä0pó®Ef•Ø×Ë?÷A5óޛ'‡Ø‰Ök=XY
ž_`½ZêUÆu4§¨•µÖd©}¥DŸ·«Mƒ°“DׁӼ³T
]<gŠ£ÓØs¬g˜®³²êkgVXiÒÕX «±*ó°v‚•!Vƒ]ó`Uåaíb¬F¿¬Hÿ•|9¬‡‡þ>r‹è]Œ¸çéé…scî*ðëyz¢@±æjΧËËø–•ˍ7²ȡg½ËŽåp;Åb¬*“5>>Þ\HÁʚ9tZ§¤‹>%­Ñe½ž)x|EOÔ#‡N¬]~¼'¾Î2V¾±\åÇxjî,ϡVæ‹Pê´!ÄR~	E*®Nt«×Òø/È>N7ѧ&Փ]|þâÄNh/˜uýæäYÖçwÙqÕ`eiœ4Î_ŒUmÇAl+sèӴŸ9%ã‚UeæPõµBXj¬°yù9I–umN^=VÀ »Øe²T_3
Ôå’UV–<ïǎ,îù<ïǎ¬f߬Ÿ;ãËάÊ5Չ­µ”‹B=ßDŒ¬‹¯72`Ó7ìc»…å»^nև˜—%uUøZ‹¢G1ֳNk°êع]o4úð¡|½ôïa¼êËoŸßå¼ÿ˿7ªœYò>äûe
çAô(}#z	œ9ˆ=—‡µç0];8Ã
û¾iÜ5¡KÃ.ºÐëúéõ=
‚x¿Ûøc…éB²>'.Ië£;:«ډ…‰À«‡XýnXêÿ‰t…½è‚
ÜQ‚.W,®‹7
'ãƒÕ
]nrØK¬.pO,ÔKռÀzUbT/v°z]„=³öü¿±§X߇vƒåÐm½ú(ëö$ÚÍ"ºž+¤^ƒãÙ^ºW#ށˆ“+ùXv««çz¶Ïd!v{a)_¹õ]^«tu1]lAí0‰a|yÐE÷»ô0]UJ…Ûö˭®>ºk.ÄX»\xc»×–µ^Õ.êUÅrèz,‡¯gûIW'8†K]4u}r~ìtøZֵ7ˆÕÅtít¡kû«ŸÜlV^¢ZG<°úL]ˆÊEXvٜúÿŒ-¸òaïðw½ñóÉ6sŠíaXnYêu*ꠎþd(“琍Çs&‹|ÕÝí2‡}ÃYš+¿žS{˜®E7è&KMò——ù+ÄX»½°P/×ó2clqè–R5÷¬Ëù@Ž¦.ò²g]ˆ]à8±¼ë¼la}߁UÉ|öR/ëZÔ«Š{~fvÎK¹ç+œX虿Õua^öµ>ÌÇêêÀzÃÇZÔú·@V?±Âֱìv®TùÇ\YH½Ð{çJ¯ó2tuyԵï<êêf=j'n×Q]Xc»_krˆ,‡}¾<ïœÝ,‡aO>ô¾¯ü¯—ð¾r‡u}X`Ÿ¯t㍀X»\{>¤¹“7<ú°‚÷
ïgÞsÈ÷•rõ²öCï,~àq_éú@y‰±*\žÛä
¬ú¡ý!ÛbÀbŠ	@
دž² æÉf³Qº ©þ¥¯{èûMª™Aî:À#sîâaŠ›ŒV§—&Ë0Œd&“Q¬}¿X]Œ£(÷ÀZO1ba5(Véj´, &=²ÖQŒƒ•¸¤r˜J¥zçççcŠeæº"Ðe²ֹe¡^1¦«×̡҃zñ†Mê\ê‘5Á”lX=6¬˜|³zÃ̡…UO¬nÎbƵb«ÇâÃËá9>ù7u^
ÿ÷3%XëÀrªWXáƎÁëx
k‚¢,·��Àjd,>¾·œia“å`yö†u|™¬qùzңA]jLƒÝñµFq^êeüÕ+–4¢¡Ál½›_¯.¡f¬(E)c¹÷!cÍzÍÌ-DçæsÉÉb]ÍöÔ~4״~oª‡±b`¹Íá«®¾«ÓgÚ²ÅH¥äx܈vÐ×u§IW7X…Ôk­٣蓭Ҵéíû`®¹år62:mDg‰¥˜Šuð“ô9ÒÕgñF‘Özbܠƒž+æ¥à‡è)‹ö+وª“ҥþU,õý
êRº‰Q„¼çTP=z÷S]Kånf¬9t¨—ݟMM€e(]ÊÛmÄ™"]Ä›Ϋ«¬¼Ä:“…ö¨ºÀ¤ë[oøº^V¯ØηÇ׹á ÖSŒ™ºÔïzáSb‘®hòkoL!‡J/r˜£»ØÎaþÚ膃(6Y<‡jì*=¦ç•ÎÚçšöÿ}òëócÅY¼^=ô;áo=O‡¦æÚ&bYÛ<âƒխt©>¡s™\"Y˜`óW—uþ²p<³:‰O-LØÌËݖõF©÷|ÌZ¯xò–Ùçù:ªÉŠB—+ÆbÔd©Úc-Êç/Û5úh¹ÖŠÑÍuӍèó|-j·Žêa,xÞ«æ½чmæåz¥c‘5_ÈOQ”¸ea®œdsJϡƒ7b×óEL—]ƒ\c—ذòԋë§(öÈâk›¾Åö)*·ªž®÷¡+²È;Â<°š¹.ÅRknæC£ za}˜g¯—Pëz»}
XeXÿJ1jç
žCÚL÷¨'l +Ç÷°>rا¼§GE+æQW‘Ç}J¥÷yÙÃ:xž³¬9œ( ‡ÜÝÖz)o�9ſæ/ÏõBïã½×ÜóX¯µ–¾Ñg9ßHX÷æ>Îàyûsëù†M*öqæНG—µŽò5|ÀUøĮ N‘ÄëWà%Vâ“’.Y	Šý²VPìu«¦ØçƒUíA×4Þ-¿·ÖjõJª¬*˜߭7öû`yõF]¬{፸‡zíµ\ìÅóÕêÿ߯Ğ!†grQë†õ«§Îâ#Å÷S¬f¬À|X÷·Ñ¶)ORÔq‹îjšfÆbºXšÃGžO„0FÂF——¾Qiúð™ÑÓvËAÔn?õ¢C‹/–zc)íÛޘX…§ÒX{½°LíÈE
jîÈB½j‹‡Óa‡ҵσ®8E…ÓXæ˅à{(â.YSÈÃjžÃZ9ŒíIl‡§Üs žtâÐ
×.]ŽáÝòU°V»¨—Ñ0f(ê
ԵÆ=mÇ9òáH£Ëùg]Vo”×ƛó̕µ`¹çpo ‡“j²à°ðꢈª7\Î˻ÑG½²Vüãµ?º]@W]ºøÚfÒ%+ò¿`ž¯-µ
ë¢i·,Ÿºž÷¨«NËÞc٧®˜[^¿B§7|ìS’ºXtMQT	Œ/	îö0¾’x½ϻfőóUê•ËϾ2®Á+±¯{¬×J9ôäBÏ kÒ5ûeMިÍçC7Х¸$ì5ŠŠ(ŒÅ×'pÁÜR^Y7a˜ë(ŽƒuO¬{ðNÝqÆJ@WH± û® tÕFB1‘×ñʒXKp2ý
ê3‚Ž‚}?"‡w«¢^­¨ÓNiÛðýM{ã~÷cu2o,ˆUŠ\µãä>Žzu¢^ƒ¬—ՇÐÕÁ=ï°)÷4¾ kºn˜¬÷뇊‰±4 VÅ蚀®맚¯ý¯Ql¦X†5¼²62]Qºçä&ž&éd¬¥³:è)£nl£`§xºüæðŸ(Öo©›ÞMŒvŠQëÅŠ»ý°ðú¥¸„üEH1:ÖË›(–2¾þn<Ñq¬	Šþ
AW™U—7—Ëq׵	h£Ð8¾>ž×úÝ[†]ۡg
º:k™œ|qrtTé€×ã¨W‡ªê¹Ďãq£¾9z…éJ"‡íÈm9Å=ŽOÌ9Çè:¢t@OukE78uC±Üøͱ^ðF+qx¿ý½3CûØzÃ?>äި~wìcô^s®\æƒý±	>ìø͑ÉO°ŽZç?®kÓþé}l^N€Õ$ë÷¯O܍§Z^ÄzcÈ2½Œ¹t‰_rSŠõ_Œ€õ
Ey@ëÃ%ø]G:Ö8دµ,ˆu/[G5S²õ|»­ë¨6äpZhͦ¼Q
¿…+V9^„®ð['êÅ<hïâ{"6¾ÆØz¾
lŸV,¾×ۢ<$°×³ö(°–åyäªû”8ïQBº:Ø{˜éÚ «Œí+'Ø>=
½7¸Å=?eî+ÑOʂܛãw^àûJ‰ÖQ˾r_³ù+V	ÛWŽšs
rú*t6§ð³>–Åzö•þ	9\°7ÎÜu¢ԍ®ÿÂH)çbq›IEND®B`‚‰PNG


IHDRÔôUŽIDATxc 
£ ôb0+Wñ þ¢¡|VZX–²Šÿ ±1­,T‡²5€x/ÔÂ^z­Բ×t‰KXpRà m ¾2Œ†ªӦIJk ƒHÀ×èDµC×2 ¿ˆ?ƒhzXö*þ™^>ûBŠÏFÈ%óÙuJK+DZt\‚	0
F8Ô*¯ß½IEND®B`‚‰PNG


IHDRÔôUŽIDATxc 
£ ña<+Wñ þ¢¡|VZX–²Šÿ ±1­,T‡²5€x/ÔÂ^z­Բ×t‰KXpRà m ¾2Œ†ªӦIJk ƒHÀ×èDµC×2 ¿ˆ?ƒhzXö*þ™^>ûBŠÏFÈ%óÙuJK+DZt\‚	0
FÅ"(WjkIEND®B`‚‰PNG


IHDRÔôUŽIDATxc 
£À÷ +Wñ þ¢¡|VZX–²Šÿ ±1­,T‡²5€x/ÔÂ^z­Բ×t‰KXpRà m ¾2Œ†ªӦIJk ƒHÀ×èDµC×2 ¿ˆ?ƒhzXö*þ™^>ûBŠÏFÈ%óÙuJK+DZt\‚	0
FŠjþ.-‹ˆÕIEND®B`‚‰PNG


IHDR¹åi,IDATx^͔¯JQGÏ]Á	&ƒ ÍfôŸbÁâƒÉ`Õ.cÁ"6ñ,öEA°¹É`’u—ù{?ùÁ–•»² >¾áwœ™1-ZL‘€ãí e”ÎÑÅýùD2‰ö÷I’ ^_ž¸¾ºMx™ªWVé=> œóˆ–ÏX^ZPµ!"ªU–î´Á3¬m…}xY¼÷8=¹TµÆ5e˜ÎW€á̃Æûð\ã|v5"{þá›y@²†Iª¡öa$¬O³¬.%R4%„2òÏY-Y•° R!ª4Èú2ª
(ûß5h0ÈâÊPY•Aèï®ÓG÷Žù¹YbæåXYç즛2!ë[mF03ì÷Е	÷ïþg_‡‰õîÞ6zûIEND®B`‚‰PNG


IHDR¹åiEIDATx^͔=KÄ@†ßًžøY]!(ZV‚à°ÓÊÖF¯´Ñö
m,-¹k[ÿ„¥•¥V–b!Eâ]4ÙqvÂBÈqˆC†g²Ïì’ì3cPa0ÀªŽvW÷m§ٺ¸îT’9ÑæÖæ—´ˆ¢Hyvrêt‚
Ý13=…øå÷7Z3ecvAçeìpp¸ƒáÆ4ˆܣ„B¨C’°¼ï·ÚÞmòÓ‚ÉQh˜@¬ÌÆ0F©	› äġB*$7A’ibka™¬û–±>X˜DŔ~©"åŸUS½DfÓ_éÈ.vÒ\&RÓU3q…Ÿ¶÷žÉm¢$=É.¿
?ÁÖV<q$`€m.Υ©ÈRþ£ãôK×çÐ#áÿÖ/[Y߯ùÕ%úˆ&˜¹}‡w›ô/î³o±yU/A²IEND®B`‚‰PNG


IHDR	=Zà/IDATxc`°døÀð_1h1\ð-ƒƒ?irU£6r8Ñ:WIEND®B`‚‰PNG


IHDRnvZIDATx^-ȱ	€0á„ìaë*Î Ø;A\Â6•èBœå��pÕ}bà¤CV ы•ÂcÈf!£›Ï6"ÑÈZP…@v¸ÚFöJâõrJbò­mŒ?TNø¤ÐwIEND®B`‚‰PNG


IHDRµú7ê6IDATxc DýG‚
X )}ՀWA¨:’„02+T=ò9\	¦DW€FªLHd<•ÂCmr&?IEND®B`‚‰PNG


IHDR

Øâ,÷:IDATx^­ͱ
0ÄÀ_ô„ŒA**D•ÈåFP£ÀÔ0QÔÖ+©Ը½ÄþúA±P
''pð,¤þÉÓxIEND®B`‚‰PNG


IHDR

Øâ,÷:IDATx^­ͱ
0ÄÀ_æõHŒA**D•ÈåFP£ÀÔ0QÔÖ+©Ը½ÄþúA±P
''pð˦L¢IEND®B`‚‰PNG


IHDR

Øâ,÷:IDATx^­ͱ
0ÄÀ_6ñÞŒA**D•ÈåFP£ÀÔ0QÔÖ+©Ը½ÄþúA±P
''pð¾ùá/߸ÝIEND®B`‚‰PNG


IHDR00*lPLTEuuuuuuuuuÃЬtRNS&Kn]ÄÐTIDATx^¥DZ
0˜<£\yÊ/:ä	w~ýçý¼ž¯š˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&f~Ì6³ä¸
%‡IEND®B`‚‰PNG


IHDR00ý1‘IDATxíÍ1 AÔ`=_	‚“b¤š&»~g½ýëfÏêkÄ÷”—@y”g@y”7@y”g@y”g@y”g@y”g@y”g@y	”g@yÜ9¸óq@y”g@y”g@y”g@y”g@y”g@y”g@y”g@y”g@y”7€ý~ÿµÎ*uàÞ#}IEND®B`‚‰PNG


IHDR00ý1‘IDATxíÍ1€0h‰ô|%†bPMÃË]¿³Îþºٳúñ=—ÊC <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <î2(ÿ8 <Ê3 <Ê <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê[ÀüßAh¡bä
IEND®B`‚‰PNG


IHDR00ý1‘IDATxíÍ1€0h‰ô|%†bPMÃË]¿³Îþºٳúñ=—ÊC <Ê3 <Ê3 <Ê3 <î’(ÿ8 <Ê3 <Ê3 <Ê3 <Ê3 <Ê <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê3 <Ê[Àüß¹°ÚûV5éBIEND®B`‚‰PNG


IHDR00*lPLTEuuuuuuuuuÃЬtRNS€Áõ\•TIDATx^¥DZ
0˜<£\yÊ/:ä	w~ýçý¼ž¯š˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&f~Ì6³ä¸
%‡IEND®B`‚‰PNG


IHDR00*lPLTEÿÿÿÿÿÿÿÿÿ8À;¨tRNS&Kn]ÄÐTIDATx^¥DZ
0˜<£\yÊ/:ä	w~ýçý¼ž¯š˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&f~Ì6³ä¸
%‡IEND®B`‚‰PNG


IHDR00ý1IDATxíÍ!À0h‰™ȫà_°ІôåŽ﬿înö¬¾F|Ïa@y	”g@y”g@y”g@y”g@y”g@y”g@y”g@y”g@y”gÀ3GåÇå!PžåPžåPžåPžåPžåPžåPžåPžåPøøüíȆ!I¼LIEND®B`‚‰PNG


IHDR00ý1ŒIDATxíÍ1uÁCc2O€ÇŐj›<KýÎó_÷›çþ(þñfÀå3àòpù¸|\¾.Ÿ—πËgÀå3àòpù¸|\¾._ó–À(Q£F	Œ%0J`”À(Q£F	Œ%0J`”À(Q£F	Œ%0 ýøû_I;Ä/õÿE’IEND®B`‚‰PNG


IHDR00ý1†IDATxíÍ1UPÅÀUóÌ|yWðP €*
góùö_s>¿ŸWç•Ày%p^	œWç•Ày%p^	œWóJ`”À(Q£F	Œ%0J`”À(Q£F	Œ%0J`”À(Q£F	Œ%0J`”À(Q£FD?ÿñª6˜pû©ˆIEND®B`‚‰PNG


IHDR00*lPLTEÿÿÿÿÿÿÿÿÿ8À;¨tRNS€Áõ\•TIDATx^¥DZ
0˜<£\yÊ/:ä	w~ýçý¼ž¯š˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&fÈ©‰²Gjb†쑚˜!{¤&f~Ì6³ä¸
%‡IEND®B`‚‰PNG


IHDR°º¬KþIDATx^½ձÁPÇaρT¼ŠÑÈÐÍj"łxI#£ˆ/b0x%T]ÿ“T4Mªçê=†/éÒóKšæœBmæë˜ÂHçÝá*24˜€"ºÍáúöp~„ƒb°üáüo8Ÿ“€ʩŸhÁÓ@à	v2P”!7(Å+P†¹ï@B@e
Œ@	éQà ØPà$8SÀ\)pxùD{ÁÀú³dt)P@ p‡"ÈR 0ï"ËðßtI.;b\×ʹƒӁGŽ@�YïÇÏÒà}0ײEîÑO†ØÁ<¸DÏ[èCùیa#‰îº	IEND®B`‚‰PNG


IHDRàw=ø½IDATx^Õֽ
Â0@aOb"FaZ"–  HZ†¯̃' aÏn(,"ù
Н½§Dþ3›ӽĢLj+fÈ¥Á¼ eË[Ü IíÀ¢Ø!B4D+p†hVš¢´^;0ÿsà¡ý‹|
ŒŠA{™v)Ð(m´€&§p0Z‡Ý›Y[鸎hóÜÚNÄ&«yeNØÔ™…ûñk,̷%Ϗç‡LjëҌ7†¼Ø1ÎwIEND®B`‚‰PNG


IHDRàw=ø¾IDATx^µÕÏ	Â0ÅñL«£8€W«Kˆxh®.cVh&qL`<¨ê+XZ|‡Ï5_ȟ_Ìòx}þ(ÁZp0ó	Óe8Õ(ÁF öº#kM€X4¼:aƀF£´ê@Tî}à¦Dõõ!7êkZA=´j˜z^9*z’jØ
jèþ4®k0Ўç1yñÃøÃ[Áeâ¶lT<ùËÛâKŸ~‰"<Þ"p°(­ñ@¼ܭAÃÿIEND®B`‚‰PNG


IHDR;0®¢DIDATx¥•Up$ٱ†¿sêTwp@°æ™efffz2^_3>›™íWûÅÌÌ̌ÃÌ(²pÕÜU™VUH'¦+zIûEdatüùgfeU5ïøÖÔêzCW×cc˜E4Ð(Š84V´àä¿À^æíߜ\³o <¢̡$¨ú;íÏØÚYû÷t
æ‰+YCQŋyŒIï1H~lõ’K€Ì[8&²JH
Ц+cZ9†8ì~ÉœPÈ8Ì^“I"6…ÿ+üV >/aâ¼@œ-qV¨EB’߸ôâ7ܴI¶´Ç6Â0”|¾€Î@3þ™ˆÊÄÄÀ Ðp¸L}z·MåŸÒîO,lûD{G;…¼£¹rš„¿žcéҥÓSS²Æ&ŸŒΉeD!lèW6öKz¸“Å6†ǫ”ËUTcφˆt¶·O8ZXxàBá¾c¬!%–˜Ÿì°|ok€̊‹Âþ±6uL‘ÏYÚÚ
Ï$î7Յ®Õ½ôژë7CS†¿6$\µViÄKs¯NtqéÒ"OM—CG.ú2gðI‰ãbE9ƒ
}’Š1|øg.KøÑv}(wR¬&n…b±Hggιgq,¶ɱ1pÎRR¾¿5 š½bµ4­˜cc†á)ãï÷- »½̂‚£T*qlxœÕKûél+uœŠ[p"虥[Ԧ$Œ•ð/^K̙|å–ŸïüûƒÝi¹QL¾ùË?òĝ7rþº•-‹ˆqM/€“¤lêWNO>򳀄«ץm`pҠà9UêàÓßÿÎUÈåøú/þ7]Öxïùÿ'½¸‹uŒwüŸc\"<z©pbܤ½Þ=`Y¾H¸p…R®§Ï2߻aí†ëØÜ3J[»#-ÆX*Õ¿޲‹›/=Ÿž…ÝxǪ&;Õi‰¿ðW˫nÞqÄÉq@™V0ð™?8Š5CvhÇt9ª£´°fYA`ùۮý´çs\{þ¦æSUGþv8``ÒòðÅ1kzƒaçiö9›ì:M¨trj´Êï·îàuOÜAè܌ðA®:gɒ2ƁŸ2'*Äd9>føԯÐú/’̳X!ìÞD~è?ùÓ sAž+ÏÛàŭµ©c;÷ãlˆúúŒƒOîÐäBnéçсaN
óÀõWXëJ½^GDH°
2dÅ|2<ËóSå.¶AR?–mŽ6}¿ɹÑh 2;\¢ÍÙӺ´-ßi&á=£¾ü"ººrüðÏÿB»¯¾¸I<)»5Æ‹gÕæ{½±tÉbVôöððÍW²íÐQ~ö×-‰¨k-Ñzk¡g/­´øÝhÔC±EÊڳúxôƫØ{ì4cSӉÛ4°¶\Ùc
ÓY–§M,–dw·Q­EˆÀúå/âõÝEÏÂ.ü®~ëí¥Ïýqº÷ð`´*ÂZ24âfO×M\ì嫃'FÇkïJœ͑šQz,.°ˆH*”]z¼c³eË^æÃ8äþ¾·V¯E‘1M_wE»®_D!ÒÖæüâH!íïÄDõ]VD˜OÜw__tîæöY@Ú;Ë
W´q÷Œh.àœõc֭/µuFœu†ùÒÛm?ˆÑï“8½´Àí×u8K&aQŒÑ9qïZTc'ª̗êSõŸ8kõʋræÖk;R—¹œ%tHܦBs¢ÞùØHénæÀ|¹úêö¨oiۛ׮’þZµn‰UrZ©ŠZ0{NLƒFF¦ÿpß}×þíyX-g]à-IEND®B`‚