  <dtdversion>1.2</dtdversion>
  <name>HitCounter</name>
  <version>1.0.3</version>
  <help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIHNpbXBseSBjb3VudHMgaGl0cyBvbiBhIHBhZ2UsIHRoYXRzIGl0LCBub3RoaW5nIG1vcmUuICBXZWxsLCB0aGVyZSBpcyBhIGxpdHRsZSBtb3JlLCBpdCBpcyBjYXBhYmxlIG9mIGV4Y2x1ZGluZyBjZXJ0YWluIHN1Ym5ldHMgZnJvbSB0aGUgY291bnRpbmcsIGFuZCBoYXMgYSB0aW1lb3V0IHNvIHRoYXQgeW91IGNhbiBzZXQgdGhlIGludGVydmFsIGJldHdlZW4gdmlzaXRzIGZvciB0aGUgc2FtZSBpcCBhZGRyZXNzIChpbiBtaW51dGVzKTwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPkl0IGlzIHJlYWxseSBzaW1wbGUsIGp1c3QgcGxhY2UgdGhpcyBzdHJpbmcgc29tZXdoZXJlIGluIHlvdXIgdGVtcGxhdGUgb3IgcGFnZToge2Ntc19tb2R1bGUgbW9kdWxlPUhpdENvdW50ZXJ9PC9wPgo8cD5IZXJlIGlzIGhvdyBJIHVzZSBpdDogICImbHQ7cCZndDtUaGlzIHBhZ2UgaGFzIGJlZW4gdmlld2VkIHtjbXNfbW9kdWxlIG1vZHVsZT1IaXRDb3VudGVyfSB0aW1lcyZsdDsvcCZndDsiLiAgT3B0aW9uYWxseSwgeW91IGNhbiB2aWV3IHRoZSBudW1iZXIgb2YgdW5pcXVlIGhvc3RzIHRoYXQgaGF2ZSB2aXNpdGVkIHlvdXIgcGFnZSBieSBhZGRpbmcgdGhlICJvcHQ9aG9zdHMiIHBhcmFtZXRlciB0byB5b3VyIHRhZy4gIGkuZToge2Ntc19tb2R1bGUgbW9kdWxlPUhpdENvdW50ZXIgb3B0PWhvc3RzfS48L3A+CjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDUsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSJtYWlsdG86cm9iQHRlY2hjb20uZHluZG5zLm9yZy4iPiZsdDtyb2JAdGVjaGNvbS5keW5kbnMub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=</help>
  <about>PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGhvdG1haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC4zPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAxLjAuIFNlcHRlbWJlciwgMjAwNS4gSW5pdGlhbCBSZWxlYXNlLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4xLiBTZXB0ZW1iZXIsIDIwMDUuIEFkZGVkIGhvc3RzIHRhZywgYW5kIGNvbmZpcm1hdGlvbiB0byB0aGUgcmVzZXQgYnV0dG9uPC9saT4KPGxpPlZlcnNpb24gMS4wLjIuIE9jdG9iZXIsIDIwMDUuIEFkZGVkIHVzZXIgYWdlbnQgZXhjbHVzaW9uIGFuZCB0cmFja2luZzwvbGk+CjxsaT5WZXJzaW9uIDEuMC4zLiBKYW51YXJ5LCAyMDA2LiBQSFA1IEZpeGVzLCBhbmQgb3RoZXIgbWlub3IgdHdlYWtzPGxpPgo8L3VsPjxiciAvPg==</about>
  <description>An extremely simple hit counter module.</description>
  <file>
    <filename>/</filename>
    <isdir>1</isdir>
  </file>
  <file>
    <filename>/formcontent.php</filename>
    <isdir>0</isdir>
    <data><![CDATA[PD9waHAKCi8vIGEgZHVtYiBjbGFzcyB0byBhbGxvdyBtZSB0byBtYWludGFpbiBhIGxpc3Qgb2Ygc3RyaW5ncwpjbGFzcyBTdHJpbmdMaXN0CnsKICB2YXIgJGRhdGE7CiAgdmFyICRpZDsKICB2YXIgJGFkZDsKICB2YXIgJHJlbW92ZTsKICB2YXIgJG5hbWU7CiAgdmFyICRzaXplOwogIHZhciAkbWF4bGVuZ3RoOwoKICBmdW5jdGlvbiBTdHJpbmdMaXN0KCAkaWQsICRuYW1lICkKICB7CiAgICAkdGhpcy0+aWQgPSAkaWQ7CiAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogIH0KCiAgZnVuY3Rpb24gc2V0QWRkKCAkYWRkICkKICB7CiAgICAkdGhpcy0+YWRkID0gJGFkZDsKICB9CgogIGZ1bmN0aW9uIHNldERhdGEoICRhcnJheSApCiAgewogICAgJHRoaXMtPmRhdGEgPSAkYXJyYXk7CiAgfQoKICBmdW5jdGlvbiBzZXRNYXhsZW5ndGgoICRtYXhsZW5ndGggKQogIHsKICAgICR0aGlzLT5tYXhsZW5ndGggPSAkbWF4bGVuZ3RoOwogIH0KCiAgZnVuY3Rpb24gc2V0UmVtb3ZlKCAkcmVtb3ZlICkKICB7CiAgICAkdGhpcy0+cmVtb3ZlID0gJHJlbW92ZTsKICB9CgogIGZ1bmN0aW9uIHNldFNpemUoICRzaXplICkKICB7CiAgICAkdGhpcy0+c2l6ZSA9ICRzaXplOwogIH0KCiAgZnVuY3Rpb24gZGlzcGxheSgpCiAgewogICAgJHN0ciA9ICIiOwogICAgaWYoIGNvdW50KCR0aGlzLT5kYXRhICkgKQogICAgICB7Cgkkc3RyLj0gIjx0YWJsZT4iOwoJZm9yZWFjaCggJHRoaXMtPmRhdGEgYXMgJGVsZW0gKQoJewoJICBpZiggJGVsZW0gPT0gJycgKSBjb250aW51ZTsKCSAgJHN0ci49Ijx0cj48dGQ+IjsKCSAgJHN0ci49ICRlbGVtLicmbmJzcDs8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInLiR0aGlzLT5pZC4kdGhpcy0+bmFtZS4nX2hpZGRlbl8nLiRlbGVtLiciIHZhbHVlPSInLiRlbGVtLiciIC8+JzsKCSAgJHN0ci49IjwvdGQ+PHRkPiI7CgkgICRzdHIuPSc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSInLiR0aGlzLT5pZC4kdGhpcy0+bmFtZS4nX3JlbW92ZV8nLiRlbGVtLiciIHZhbHVlPSInLiR0aGlzLT5yZW1vdmUuJyIgLz4nOwoJICAkc3RyLj0iPC90ZD48L3RyPiI7Cgl9CiAgICAgIH0KICAgICRzdHIgLj0gJzx0cj48dGQgY29sc3Bhbj0iMiI+JzsKICAgICRzdHIgLj0gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInLiR0aGlzLT5pZC4kdGhpcy0+bmFtZS4nX3RleHQiIHZhbHVlPSIiIHNpemU9IicuJHRoaXMtPnNpemUuJyIgbWF4bGVuZ3RoPSInLiR0aGlzLT5tYXhsZW5ndGguJyIgLz4nOwogICAgJHN0ciAuPSAnPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iJy4kdGhpcy0+aWQuJHRoaXMtPm5hbWUuJ19hZGQiIHZhbHVlPSInLiR0aGlzLT5hZGQuJyIgLz4nOwoJJHN0ci49IjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICByZXR1cm4gJHN0cjsKICB9CgogIGZ1bmN0aW9uIGdldERhdGEoKQogIHsKICAgIHJldHVybiAkdGhpcy0+ZGF0YTsKICB9CgogIGZ1bmN0aW9uIGhhbmRsZXIoICRwYXJhbXMgKQogIHsKICAgIC8vIHNldHVwIHRoZSBkYXRhCiAgICAkdGhpcy0+ZGF0YSA9IGFycmF5KCk7CiAgICBmb3JlYWNoKCAkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlICkKICAgIHsKICAgICAgaWYoIHByZWdfbWF0Y2goICcvJy4kdGhpcy0+bmFtZS4nX2hpZGRlbl8vJywgJGtleSApICkKCXsKCSAgYXJyYXlfcHVzaCggJHRoaXMtPmRhdGEsICR2YWx1ZSApOwoJfQogICAgfQogICAgCiAgICAvLyBoYW5kbGUgYW4gYWRkCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJHRoaXMtPm5hbWUuJ19hZGQnXSApICkKICAgICAgewoJYXJyYXlfcHVzaCggJHRoaXMtPmRhdGEsICRwYXJhbXNbJHRoaXMtPm5hbWUuJ190ZXh0J10gKTsKICAgICAgfQoKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsICkKICAgIHsKICAgICAgaWYoIHByZWdfbWF0Y2goICcvJy4kdGhpcy0+bmFtZS4nX3JlbW92ZV8vJywgJGtleSApICkKCXsKCSAgJGl0bSA9IHN1YnN0ciggJGtleSwgc3RybGVuKCR0aGlzLT5uYW1lLidfcmVtb3ZlXycpICk7CgkgIC8vIHdlJ3JlIHJlbW92aW5nIHNvbWV0aGluZwoJICB1bnNldCgkdGhpcy0+ZGF0YVthcnJheV9zZWFyY2goJGl0bSwkdGhpcy0+ZGF0YSldKTsKCX0KICAgIH0KICB9Cn0KCj8+]]></data>
  </file>
  <file>
    <filename>/HitCounter.module.php</filename>
    <isdir>0</isdir>
    <data><![CDATA[PD9waHAKLyoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyogWW91ciBpbml0aWFsIENsYXNzIGRlY2xhcmF0aW9uLiBUaGlzIGZpbGUncyBuYW1lIG11c3QKICAgYmUgIltjbGFzcydzIG5hbWVdLm1vZHVsZS5waHAiLCBvciwgaW4gdGhpcyBjYXNlLAogICBIaXRDb3VudGVyLm1vZHVsZS5waHAKKi8gCgpyZXF1aXJlX29uY2UoImZvcm1jb250ZW50LnBocCIpOwoKY2xhc3MgSGl0Q291bnRlciBleHRlbmRzIENNU01vZHVsZQp7CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIF90ZXN0aXAoJHJhbmdlLCRpcCkKICAgTk9UIFBBUlQgT0YgVEhFIE1PRFVMRSBBUEkKCiAgIFRoaXMgaXMgYSBmdW5jdGlvbiB0byBtYXRjaCBhbiBJUCBhZGRyZXNzIGFnYWluc3QgYW4gCiAgIGFkZHJlc3MgcmFuZ2Ugc3BlY2lmaWNhdGlvbi4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBfdGVzdGlwKCRyYW5nZSwkaXApIAogIHsKICAgICRyZXN1bHQgPSAxOwoKICAgICMgSVAgUGF0dGVybiBNYXRjaGVyCiAgICAjIEouQWRhbXMgPGpuYUByZXRpbmEubmV0PgogICAgIwogICAgIyBNYXRjaGVzOgogICAgIwogICAgIyB4eHgueHh4Lnh4eC54eHggICAgICAgIChleGFjdCkKICAgICMgeHh4Lnh4eC54eHguW3l5eS16enpdICAocmFuZ2UpCiAgICAjIHh4eC54eHgueHh4Lnh4eC9ubiAgICAobm4gPSAjIGJpdHMsIGNpc2NvIHN0eWxlIC0tIGkuZS4gLzI0ID0gY2xhc3MgQykKICAgICMKICAgICMgRG9lcyBub3QgbWF0Y2g6CiAgICAjIHh4eC54eHgueHh4Lnh4W3l5eS16enpdICAocmFuZ2UsIHBhcnRpYWwgb2N0ZXRzIG5vdCBzdXBwb3J0ZWQpCgogICAgaWYgKGVyZWcoIihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLyhbMC05XSspIiwkcmFuZ2UsJHJlZ3MpKSB7CgogICAgICAjIHBlcmZvcm0gYSBtYXNrIG1hdGNoCiAgICAgICRpcGwgPSBpcDJsb25nKCRpcCk7CiAgICAgICRyYW5nZWwgPSBpcDJsb25nKCRyZWdzWzFdIC4gIi4iIC4gJHJlZ3NbMl0gLiAiLiIgLiAkcmVnc1szXSAuICIuIiAuICRyZWdzWzRdKTsKICAgICAgCiAgICAgICRtYXNrbCA9IDA7CiAgICAgIAogICAgICBmb3IgKCRpID0gMDsgJGk8IDMxOyAkaSsrKSB7CglpZiAoJGkgPCAkcmVnc1s1XS0xKSB7CgkgICRtYXNrbCA9ICRtYXNrbCArIHBvdygyLCgzMC0kaSkpOwoJfQogICAgICB9CiAgICAgIAogICAgICBpZiAoKCRtYXNrbCAmICRyYW5nZWwpID09ICgkbWFza2wgJiAkaXBsKSkgewoJcmV0dXJuIDE7CiAgICAgIH0gZWxzZSB7CglyZXR1cm4gMDsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgCiAgICAgICMgcmFuZ2UgYmFzZWQKICAgICAgJG1hc2tvY3RzID0gc3BsaXQoIlwuIiwkcmFuZ2UpOwogICAgICAkaXBvY3RzID0gc3BsaXQoIlwuIiwkaXApOwogICAgICAKICAgICAgIyBwZXJmb3JtIGEgcmFuZ2UgbWF0Y2gKICAgICAgZm9yICgkaT0wOyAkaTw0OyAkaSsrKSB7CglpZiAoZXJlZygiXFsoWzAtOV0rKVwtKFswLTldKylcXSIsJG1hc2tvY3RzWyRpXSwkcmVncykpIHsKCSAgaWYgKCAoJGlwb2N0c1skaV0gPiAkcmVnc1syXSkgfHwgKCRpcG9jdHNbJGldIDwgJHJlZ3NbMV0pKSB7CgkgICAgJHJlc3VsdCA9IDA7CgkgIH0KCX0KCWVsc2UKCSAgewoJICAgIGlmICgkbWFza29jdHNbJGldIDw+ICRpcG9jdHNbJGldKSB7CgkgICAgICAkcmVzdWx0ID0gMDsKCSAgICB9CgkgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuICRyZXN1bHQ7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0TmFtZSgpCiAgewogICAgcmV0dXJuICdIaXRDb3VudGVyJzsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEZyaWVuZGx5TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCgkKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRWZXJzaW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gJzEuMC4zJzsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEhlbHAoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEhlbHAoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMCc7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3JFbWFpbCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMEBob3RtYWlsLmNvbSc7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRDaGFuZ2VMb2coKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsKICB9CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIElzUGx1Z2luTW9kdWxlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBIYXNBZG1pbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QWRtaW5TZWN0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQogIHsKICAgIHJldHVybiAnc2l0ZWFkbWluJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgSGl0Q291bnRlcicpOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RGVwZW5kZW5jaWVzKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQogIHsKICAgIHJldHVybiBhcnJheSgpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEluc3RhbGwoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEluc3RhbGwoKQogIHsKICAgICRkYiA9ICR0aGlzLT5jbXMtPmRiOwogICAgJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKICAgICRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCiAgICAkZmxkcyA9ICJpZCBJIEtFWSwKICAgICAgICAgICAgIHBhZ2VfaWQgSSwKICAgICAgICAgICAgIGlwX2FkZHJlc3MgQygyNTUpLAogICAgICAgICAgICAgZGF0ZSBULAogICAgICAgICAgICAgYWdlbnQgQygyNTUpCiAgICAgICAgICAgICI7CiAgICAvLyBjcmVhdGUgaXQuIFRoaXMgc2hvdWxkIGRvIGVycm9yIGNoZWNraW5nLCBidXQgSSdtIGEgbGF6eSBzb2QuCiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfaGl0Y291bnRlciIsCgkJCQkgICAgICAkZmxkcywgJHRhYm9wdGFycmF5KTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiAgICAvLyBjJHJlYXRlIGEgc2VxdWVuY2UKICAgICRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfaGl0Y291bnRlcl9zZXEiKTsKCiAgICAvLyBjcmVhdGUgYSBwZXJtaXNzaW9uCiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIEhpdENvdW50ZXInLCAnTWFuYWdlIEhpdENvdW50ZXInKTsKICAgICAgICAKICAgIC8vIGNyZWF0ZSBhIHByZWZlcmVuY2Ugb3IgdHdvCiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgic3VibmV0X2V4Y2x1c2lvbnMiLCAiMTkyLjE2OC4wLjAvMTYsMTAuMC4wLjAvOCIpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoInZpc2l0X3RpbWVvdXQiLCIzMCIpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImFnZW50X2V4Y2x1c2lvbnMiLCAiIik7CgogICAgLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiAgICAkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwogIH0KCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFVwZ3JhZGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFVwZ3JhZGUoJG9sZHZlcnNpb24sICRuZXd2ZXJzaW9uKQogIHsKICAgICRmbGRzID0gImlkIEkgS0VZLAogICAgICAgICAgICAgcGFnZV9pZCBJLAogICAgICAgICAgICAgaXBfYWRkcmVzcyBDKDI1NSksCiAgICAgICAgICAgICBkYXRlIFQKICAgICAgICAgICAgIGFnZW50IEMoMjU1KSwKICAgICAgICAgICAgIjsKCiAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCiAgICAkY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CiAgICBzd2l0Y2goJGN1cnJlbnRfdmVyc2lvbikKICAgICAgewogICAgICBjYXNlICIxLjAiOgogICAgICBjYXNlICIxLjAuMSI6CgkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7Cgkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9oaXRjb3VudGVyIiwgImFnZW50IEMoMjU1KSIpOwogICAgICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCWJyZWFrOwogICAgICB9CgkJCiAgICAvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKICAgICR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKICB9CgkKCQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFVuaW5zdGFsbCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gVW5pbnN0YWxsKCkKICB7CiAgICAkZGIgPSAkdGhpcy0+Y21zLT5kYjsKCiAgICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKICAgICRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2hpdGNvdW50ZXIiICk7CiAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiAgICAkZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfaGl0Y291bnRlcl9zZXEiICk7CgogICAgLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwogICAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBIaXRDb3VudGVyJyk7CgogICAgLy8gYW5kIHRoZSBwcmVmZXJlbmNlcwogICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3N1Ym5ldF9leGNsdXNpb25zJyk7CiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndmlzaXRfdGltZW91dCcpOwoKICAgIC8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwogICAgJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBEb0FjdGlvbigkYWN0aW9uLCAkaWQsICRwYXJhbXMsICRyZXR1cm5faWQpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuX2lkPS0xKQogIHsKICAgIHN3aXRjaCAoJGFjdGlvbikKICAgICAgewogICAgICBjYXNlICdkZWZhdWx0JzoKCXsKCSAgLy8gdGhpcyBpcyB0aGUgcGx1Zy1pbiBzaWRlLCBpLmUuLCBub24tQWRtaW4KCSAgJHRoaXMtPl9EaXNwbGF5TW9kdWxlT3V0cHV0KCRpZCwgJHBhcmFtcywgJHJldHVybl9pZCk7CgkgIGJyZWFrOwoJfQogICAgICBjYXNlICdkZWZhdWx0YWRtaW4nOgoJewoJICAvLyBvbmx5IGxldCBwZW9wbGUgYWNjZXNzIG1vZHVsZSBwcmVmZXJlbmNlcyBpZiB0aGV5IGhhdmUgcGVybWlzc2lvbgoJICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIEhpdENvdW50ZXInKSkKCSAgICB7CgkgICAgICAkdGhpcy0+X0Rpc3BsYXlBZG1pblBhbmVsKCRpZCwgJHBhcmFtcywgJHJldHVybl9pZCk7CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgJHRoaXMtPl9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybl9pZCwKCQkJCSAgICAgICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkgICAgfQoJICBicmVhazsKCX0KICAgICAgY2FzZSAnc2F2ZV9hZG1pbnByZWZzJzoKCXsKCSAgaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBIaXRDb3VudGVyJykpCgkgICAgewoJICAgICAgJHRoaXMtPl9TYXZlQWRtaW5QcmVmcygkaWQsICRwYXJhbXMsICRyZXR1cm5faWQpOwoJICAgIH0KCSAgYnJlYWs7Cgl9CiAgICAgIH0KCiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfRGlzcGxheU1vZHVsZU91dHB1dCgkaWQsICRwYXJhbXMsICRyZXR1cm5faWQsICRtZXNzYWdlKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9EaXNwbGF5TW9kdWxlT3V0cHV0KCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCkKICB7CiAgICAkZGIgPSAkdGhpcy0+Y21zLT5kYjsKCiAgICBpZiggISR0aGlzLT5fSGFuZGxlSGl0KCAkaWQsICRwYXJhbXMsICRyZXR1cm5pZCApICkKICAgICAgewoJcmV0dXJuOwogICAgICB9CgogICAgCiAgICAvLyBub3cgZG8gc29tZXRoaW5nIGJhc2VkIG9uIHdoaWNoIG9wdGlvbiB3ZSdyZSBnaXZlbgogICAgJG1vZGUgPSAnaGl0cyc7CiAgICAkcSA9ICcnOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydvcHQnXSApICkKICAgICAgewoJJG1vZGUgPSAkcGFyYW1zWydvcHQnXTsKICAgICAgfQogICAgc3dpdGNoKCAkbW9kZSApCiAgICAgIHsKICAgICAgY2FzZSAnaGl0cyc6Cgl7CgkgIC8vIG5vdyBlY2hvIHRoZSB0b3RhbCBudW1iZXIgb2YgaGl0cyBmb3IgdGhpcyBwYWdlCgkgICRxID0gIlNFTEVDVCBDT1VOVChpZCkgYXMgdG90YWwgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2hpdGNvdW50ZXIKICAgICAgICAgIFdIRVJFIHBhZ2VfaWQgPSA/IjsKCSAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRyZXR1cm5pZCApICk7CgkgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkgIGVjaG8gJHJvd1sndG90YWwnXTsKCSAgYnJlYWs7Cgl9CgogICAgICBjYXNlICdob3N0cyc6Cgl7CgkgICRxID0gIlNFTEVDVCBjb3VudCggZGlzdGluY3QgaXBfYWRkcmVzcykgYXMgdG90YWwgRlJPTSAiLgogICAgICAgICAgICAgICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9oaXRjb3VudGVyCiAgICAgICAgICAgICAgIFdIRVJFIHBhZ2VfaWQgPSA/IjsKCSAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcSwgYXJyYXkoICRyZXR1cm5pZCApICk7CgkgICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkgIGVjaG8gJHJvd1sndG90YWwnXTsKCSAgYnJlYWs7Cgl9CiAgICAgIH0KCiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuX2lkLAoJCQkJICR0aGlzLT5MYW5nICgnZXJyb3JfZGJlcnJvcicpKTsKCXJldHVybjsKICAgICAgfQogIH0KCiAgZnVuY3Rpb24gX0hhbmRsZUhpdCgkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQpCiAgewogICAgJGRiID0gJHRoaXMtPmNtcy0+ZGI7CiAgICAkaXAgPSBnZXRlbnYoIlJFTU9URV9BRERSIik7CgogICAgLy8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiB0aGUgZXhjbHVkZWQgaXAgcmFuZ2UKICAgICRzdWJuZXRzID0gc3BsaXQoIiwiLHRyaW0oJHRoaXMtPkdldFByZWZlcmVuY2UoInN1Ym5ldF9leGNsdXNpb25zIikpKTsKICAgICR0ZXN0ID0gMDsKICAgIGZvcmVhY2goJHN1Ym5ldHMgYXMgJHN1Ym5ldCkKICAgIHsKICAgICAgJHRlc3QgPSAkdGhpcy0+X3Rlc3RpcCggJHN1Ym5ldCwgJGlwICk7CiAgICAgIGlmKCAkdGVzdCApCgl7CgkgIC8vIGRvbid0IGFsbG93IGFueSBtb3JlIHByb2Nlc3NpbmcKCSAgcmV0dXJuIHRydWU7Cgl9CiAgICB9CgogICAgLy8gb3IgYW4gZXhjbHVkZWQgdXNlciBhZ2VudAogICAgaWYoIGlzc2V0KCAkX1NFUlZFUlsiSFRUUF9VU0VSX0FHRU5UIl0gKSApCiAgICAgIHsKCSRhZ2VudHMgPSBzcGxpdCgiLCIsdHJpbSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgiYWdlbnRfZXhjbHVzaW9ucyIpKSk7CgkkdGVzdCA9IDA7Cglmb3JlYWNoKCRhZ2VudHMgYXMgJGFnZW50KQoJewoJICBpZiggcHJlZ19tYXRjaCggIi8iLiRhZ2VudC4iLyIsICRfU0VSVkVSWyJIVFRQX1VTRVJfQUdFTlQiXSApICkKCSAgICB7CgkgICAgICAvLyBkb24ndCBhbGxvdyBhbnkgbW9yZSBwcm9jZXNzaW5nCgkgICAgICByZXR1cm4gdHJ1ZTsKCSAgICB9Cgl9CiAgICAgIH0KCiAgICAvLyB0aGVuIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IHNldCBhIGhpdCBmcm9tIHRoaXMgcGVyc29uCiAgICAvLyB3aXRoaW4gdGhlIGxhc3QgTiBtaW51dGVzCiAgICAkdGltZW91dCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCJ2aXNpdF90aW1lb3V0Iik7CiAgICAkZXhwciA9IHNwcmludGYoIiVkIG1pbnV0ZXMgYWdvIiwkdGltZW91dCk7CiAgICAkZGF0ZTEgPSBzdHJ0b3RpbWUoJGV4cHIsIHRpbWUoKSk7CiAgICAkcSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfaGl0Y291bnRlciBXSEVSRQogICAgICBwYWdlX2lkID0gJHJldHVybmlkIEFORCBpcF9hZGRyZXNzID0gXCIkaXBcIiBBTkQgZGF0ZSA+IFwiIi4kZGItPkRCVGltZVN0YW1wKCRkYXRlMSkuIlwiIjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEgKTsKICAgIGlmKCAhJGRicmVzdWx0ICkgCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuX2lkLAoJCQkJICR0aGlzLT5MYW5nICgnZXJyb3JfZGJlcnJvcicpKTsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKICAgIGlmKCAkcm93ICkgCiAgICAgIHsKCS8vIHRoZXJlIHdhcyBhIGhpdCB3aXRoaW4gdGhlIHRpbWVvdXQgcGVyaW9kCglyZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgCiAgICAvLyB0aGVuIGFkZCBhbiBlbnRyeSBpbnRvIHRoZSBkYXRhYmFzZQogICAgJG5ld2lkID0gJGRiLT5HZW5JRCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfaGl0Y291bnRlcl9zZXEiICk7CiAgICAkYWdlbnQgPSAkX1NFUlZFUlsiSFRUUF9VU0VSX0FHRU5UIl07CgogICAgJHEgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9oaXRjb3VudGVyIFZBTFVFUyAoPyw/LD8sPyw/KSI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoICRxLCBhcnJheSggJG5ld2lkLCAkcmV0dXJuaWQsICRpcCwgCgkJCQkJICRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwKCQkJCQkgJGFnZW50KSk7CiAgICBpZiggISRkYnJlc3VsdCApCiAgICAgIHsKCSR0aGlzLT5fRGlzcGxheUVycm9yUGFnZSAoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsCgkJCQkgJHRoaXMtPkxhbmcgKCdlcnJvcl9kYmVycm9yJykpOwoJcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBfRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5faWQsICRtZXNzYWdlKQogICBOT1QgUEFSVCBPRiBUSEUgTU9EVUxFIEFQSQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIF9EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2U9JycpCiAgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduICgndGl0bGVfZXJyb3InLCAkdGhpcy0+TGFuZyAoJ2Vycm9yJykpOwogICAgaWYgKCRtZXNzYWdlICE9ICcnKQogICAgICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24gKCdtZXNzYWdlJywgJG1lc3NhZ2UpOwogICAgICB9CiAgICAKICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnZXJyb3IudHBsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgX0Rpc3BsYXlBZG1pblBhbmVsKCRpZCwgJHBhcmFtcywgJHJldHVybl9pZCwgJG1lc3NhZ2UpCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gX0Rpc3BsYXlBZG1pblBhbmVsKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2U9JycpCiAgewogICAgJGRiID0gJHRoaXMtPmNtcy0+ZGI7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3ByZWZlcmVuY2VzJywkdGhpcy0+TGFuZygncHJlZmVyZW5jZXMnKSk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CiAgICAKICAgIC8vCiAgICAvLyBUaGUgc3RhdGlzdGljcyB0YWIgdG9kbwogICAgLy8KCgogICAgLy8KICAgIC8vIFRoZSBwcmVmZXJlbmNlcyB0YWIKICAgIC8vCiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigncHJlZmVyZW5jZXMnKTsKICAgIC8vIGFsbG93IHRoZSB1c2VyIHRvIHNldCB0aGUgcHJlZmVyZW5jZXMsIGFuZCB0byByZXNldAogICAgLy8gYWxsIHN0YXRpc3RpY3MKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywKCQkJCSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsIAoJCQkJCQkJICdzYXZlX2FkbWlucHJlZnMnLAoJCQkJCQkJICRyZXR1cm5pZCkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywKCQkJCSAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJCSAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdzdWJtaXQnLAoJCQkJCQkJICAgICdTdWJtaXQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Jlc2V0Y291bnRzJywKCQkJCSAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwncmVzZXRjb3VudHMnLAoJCQkJCQkJICAgJHRoaXMtPkxhbmcoJ3Jlc2V0aGl0Y291bnRzJyksICdvbkNsaWNrPSJyZXR1cm4gY29uZmlybShcJycuJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmUnKS4nXCcpOyInKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9zdWJuZXRleGNsdWRlJywKCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X3N1Ym5ldGV4Y2x1ZGUnKSk7CiAgICAkbWFuaXAwID0gbmV3IFN0cmluZ0xpc3QoICRpZCwgJ2lucHV0X3N1Ym5ldGxpc3QnICk7CiAgICAkbWFuaXAwLT5TZXRBZGQoJHRoaXMtPkxhbmcoJ2FkZCcpKTsKICAgICRtYW5pcDAtPlNldFJlbW92ZSgkdGhpcy0+TGFuZygncmVtb3ZlJykpOwogICAgJG1hbmlwMC0+c2V0RGF0YSggZXhwbG9kZSggIiwiLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3VibmV0X2V4Y2x1c2lvbnMnKSApICk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oImlucHV0X3N1Ym5ldGV4Y2x1ZGUiLCRtYW5pcDAtPmRpc3BsYXkoKSk7CgogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGltZW91dCcsCgkJCSAgJHRoaXMtPkxhbmcoJ3RpbWVvdXQnKSk7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RpbWVvdXQnLAoJCQkgICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2lucHV0X3RpbWVvdXQnLAoJCQkJCQkgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd2aXNpdF90aW1lb3V0JywnMzAnKSwzLDMpKTsKCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hZ2VudGV4Y2x1ZGUnLAoJCQkgICR0aGlzLT5MYW5nKCdwcm9tcHRfYWdlbnRleGNsdWRlJykpOwogICAgJG1hbmlwID0gbmV3IFN0cmluZ0xpc3QoICRpZCwgJ2lucHV0X2FnZW50bGlzdCcgKTsKICAgICRtYW5pcC0+U2V0QWRkKCR0aGlzLT5MYW5nKCdhZGQnKSk7CiAgICAkbWFuaXAtPlNldFJlbW92ZSgkdGhpcy0+TGFuZygncmVtb3ZlJykpOwogICAgJG1hbmlwLT5zZXREYXRhKCBleHBsb2RlKCAiLCIsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhZ2VudF9leGNsdXNpb25zJykgKSApOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCJpbnB1dF9hZ2VudGV4Y2x1ZGUiLCRtYW5pcC0+ZGlzcGxheSgpKTsKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wcmVmcy50cGwnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwogIH0KCgogIGZ1bmN0aW9uIF9TYXZlQWRtaW5QcmVmcygkaWQsICYkcGFyYW1zLCAkcmV0dXJuaWQgKQogIHsKICAgICRkYiA9ICR0aGlzLT5jbXMtPmRiOwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydyZXNldGNvdW50cyddICkgKQogICAgICB7CgkkcSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2hpdGNvdW50ZXIiOwoJJGRiLT5FeGVjdXRlKCAkcSApOwogICAgICB9CiAgICBlbHNlIHsKICAgICAgJG1hbmlwMSA9IG5ldyBTdHJpbmdMaXN0KCAkaWQsICdpbnB1dF9zdWJuZXRsaXN0Jyk7CiAgICAgICRtYW5pcDEtPmhhbmRsZXIoICRwYXJhbXMgKTsKICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3N1Ym5ldF9leGNsdXNpb25zJyxpbXBsb2RlKCIsIiwkbWFuaXAxLT5nZXREYXRhKCkpKTsKCiAgICAgICR0aW1lb3V0ID0gJzMwJzsKICAgICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3RpbWVvdXQnXSkgKQoJewoJICAkdGltZW91dCA9ICRwYXJhbXNbJ2lucHV0X3RpbWVvdXQnXTsKCX0KICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3Zpc2l0X3RpbWVvdXQnLCR0aW1lb3V0KTsKCiAgICAgICRtYW5pcDIgPSBuZXcgU3RyaW5nTGlzdCggJGlkLCAnaW5wdXRfYWdlbnRsaXN0JyApOwogICAgICAkbWFuaXAyLT5oYW5kbGVyKCAkcGFyYW1zICk7CiAgICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZ2VudF9leGNsdXNpb25zJyxpbXBsb2RlKCIsIiwkbWFuaXAyLT5nZXREYXRhKCkpKTsKICAgIH0KCiAgICAkdGhpcy0+UmVkaXJlY3QgKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7CiAgfQoKfSAvLyBjbGFzcwoKPz4K]]></data>
  </file>
  <file>
    <filename>/index.html</filename>
    <isdir>0</isdir>
    <data><![CDATA[]]></data>
  </file>
  <file>
    <filename>/lang/</filename>
    <isdir>1</isdir>
  </file>
  <file>
    <filename>/lang/en_US.php</filename>
    <isdir>0</isdir>
    <data><![CDATA[PD9waHAKJGxhbmdbJ3N0YXRpc3RpY3MnXSA9ICdTdGF0aXN0aWNzJzsKJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHJlZmVyZW5jZXMnOwokbGFuZ1sncmVtb3ZlJ10gPSAnUmVtb3ZlJzsKJGxhbmdbJ3Byb21wdF9hZ2VudGV4Y2x1ZGUnXSA9ICdFeGNsdWRlIHRoZXNlIHVzZXIgYWdlbnRzIGZyb20gY291bnRpbmcgKHJlZ2V4cCknOwokbGFuZ1sncHJvbXB0X3N1Ym5ldGV4Y2x1ZGUnXSA9ICdFeGNsdWRlIHRoZXNlIHN1Ym5ldHMgZnJvbSBjb3VudGluZyc7CiRsYW5nWyd0aW1lb3V0J10gPSAnV2FpdCB0aGlzIG1hbnkgbWludXRlcyBiZWZvcmUgY291bnRpbmcgYSBoaXQgZnJvbSB0aGUgc2FtZSBob3N0JzsKJGxhbmdbJ3Jlc2V0aGl0Y291bnRzJ10gPSAnUmVzZXQgSGl0IENvdW50cyc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnQXJlIHlvdSBzdXJlPyc7CiRsYW5nWyduYW1lJ10gPSAnTmFtZSc7CiRsYW5nWydhZGQnXSA9ICdBZGQnOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydlcnJvcl9kYmVycm9yJ10gPSAnRGF0YWJhc2UgRXJyb3InOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnSGl0Q291bnRlcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCBlLmcuLCBCZSBzdXJlIHRvIHNldCAiTWFuYWdlIEhpdENvdW50ZXJzIiBwZXJtaXNzaW9ucyB0byB1c2UgdGhpcyBtb2R1bGUhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdQb3N0IFVuaW5zdGFsbCBNZXNzYWdlLCBlLmcuLCAiQ3Vyc2VzISBGb2lsZWQgQWdhaW4hIic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOwokbGFuZ1sndGl0bGVfbW9kX3ByZWZzJ10gPSAnTW9kdWxlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ3RpdGxlX21vZF9hZG1pbiddID0gJ01vZHVsZSBBZG1pbiBQYW5lbCc7CiRsYW5nWyd0aXRsZV9hZG1pbl9wYW5lbCddID0gJ0hpdENvdW50ZXIgTW9kdWxlJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQW4gZXh0cmVtZWx5IHNpbXBsZSBoaXQgY291bnRlciBtb2R1bGUuJzsKJGxhbmdbJ3dlbGNvbWVfdGV4dCddID0gJzxwPldlbGNvbWUgdG8gdGhlIEhpdENvdW50ZXIgTW9kdWxlIGFkbWluIHNlY3Rpb24uJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMS4wLiBTZXB0ZW1iZXIsIDIwMDUuIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMS4gU2VwdGVtYmVyLCAyMDA1LiBBZGRlZCBob3N0cyB0YWcsIGFuZCBjb25maXJtYXRpb24gdG8gdGhlIHJlc2V0IGJ1dHRvbjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4yLiBPY3RvYmVyLCAyMDA1LiBBZGRlZCB1c2VyIGFnZW50IGV4Y2x1c2lvbiBhbmQgdHJhY2tpbmc8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMy4gSmFudWFyeSwgMjAwNi4gUEhQNSBGaXhlcywgYW5kIG90aGVyIG1pbm9yIHR3ZWFrczxsaT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5UaGlzIG1vZHVsZSBzaW1wbHkgY291bnRzIGhpdHMgb24gYSBwYWdlLCB0aGF0cyBpdCwgbm90aGluZyBtb3JlLiAgV2VsbCwgdGhlcmUgaXMgYSBsaXR0bGUgbW9yZSwgaXQgaXMgY2FwYWJsZSBvZiBleGNsdWRpbmcgY2VydGFpbiBzdWJuZXRzIGZyb20gdGhlIGNvdW50aW5nLCBhbmQgaGFzIGEgdGltZW91dCBzbyB0aGF0IHlvdSBjYW4gc2V0IHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHZpc2l0cyBmb3IgdGhlIHNhbWUgaXAgYWRkcmVzcyAoaW4gbWludXRlcyk8L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5JdCBpcyByZWFsbHkgc2ltcGxlLCBqdXN0IHBsYWNlIHRoaXMgc3RyaW5nIHNvbWV3aGVyZSBpbiB5b3VyIHRlbXBsYXRlIG9yIHBhZ2U6IHtjbXNfbW9kdWxlIG1vZHVsZT1IaXRDb3VudGVyfTwvcD4KPHA+SGVyZSBpcyBob3cgSSB1c2UgaXQ6ICAiJmx0O3AmZ3Q7VGhpcyBwYWdlIGhhcyBiZWVuIHZpZXdlZCB7Y21zX21vZHVsZSBtb2R1bGU9SGl0Q291bnRlcn0gdGltZXMmbHQ7L3AmZ3Q7Ii4gIE9wdGlvbmFsbHksIHlvdSBjYW4gdmlldyB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBob3N0cyB0aGF0IGhhdmUgdmlzaXRlZCB5b3VyIHBhZ2UgYnkgYWRkaW5nIHRoZSAib3B0PWhvc3RzIiBwYXJhbWV0ZXIgdG8geW91ciB0YWcuICBpLmU6IHtjbXNfbW9kdWxlIG1vZHVsZT1IaXRDb3VudGVyIG9wdD1ob3N0c30uPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA1LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOnJvYkB0ZWNoY29tLmR5bmRucy5vcmcuIj4mbHQ7cm9iQHRlY2hjb20uZHluZG5zLm9yZyZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+Cic7Cj8+Cg==]]></data>
  </file>
  <file>
    <filename>/templates/</filename>
    <isdir>1</isdir>
  </file>
  <file>
    <filename>/templates/adminprefs.tpl</filename>
    <isdir>0</isdir>
    <data><![CDATA[PGgzPnskdGl0bGVfc2VjdGlvbn08L2gzPgo8cD57JGFkbWluX25hdn08L3A+CntpZiAkbWVzc2FnZSE9Jyd9PHA+eyRtZXNzYWdlfTwvcD57L2lmfQp7JHN0YXJ0Zm9ybX0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9hZ2VudGV4Y2x1ZGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2FnZW50ZXhjbHVkZX08L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zdWJuZXRleGNsdWRlfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zdWJuZXRleGNsdWRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RpbWVvdXR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpbWVvdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcmVzZXRjb3VudHN9eyRzdWJtaXR9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0K]]></data>
  </file>
  <file>
    <filename>/templates/error.tpl</filename>
    <isdir>0</isdir>
    <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
  </file>
</module>
