# rah_finweather 0.1 # Outputs a various weather information from Finland's most bigest cities. # Jukka Svahn # http://www.uproar-n-rattle.biz # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTQ6InJhaF9maW53ZWF0aGVyIjtzOjY6ImF1dGhvciI7czoxMToiSnVra2EgU3ZhaG4iO3M6MTA6ImF1dGhvcl91cmkiO3M6MzA6Imh0dHA6Ly93d3cudXByb2FyLW4tcmF0dGxlLmJpeiI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMSI7czoxMToiZGVzY3JpcHRpb24iO3M6NzI6Ik91dHB1dHMgYSB2YXJpb3VzIHdlYXRoZXIgaW5mb3JtYXRpb24gZnJvbSBGaW5sYW5kJ3MgbW9zdCBiaWdlc3QgY2l0aWVzLiI7czo0OiJoZWxwIjtzOjIzNTU6IjxoMiBzdHlsZT0iZm9udC1zaXplOjIuNWVtOyI+cmFoX2ZpbndlYXRoZXI8L2gyPg0KDQo8cD5PdXRwdXRzIGEgdmFyaW91cyB3ZWF0aGVyIGluZm9ybWF0aW9uIGZyb20gRmlubGFuZCdzIG1vc3QgYmlnZXN0IGNpdGllcy4gVXNlcyBGaW5uaXNoIE1ldGVvcm9sb2dpY2FsIEluc3RpdHV0ZSdzIHJlc2VhcmNoIGRhdGEgdG8gb3V0cHV0IHdlYXRoZXJpbmZvcm1hdGlvbi48L3A+DQoNCjxoMj5UaGUgbGlzdCBvZiBhdmFpbGFibGUgY2l0aWVzOjwvaDI+DQoNCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEuNjVlbTttYXJnaW46MjBweCAwIDIwcHggMDtib3JkZXItdG9wOjFweCBkYXNoZWQgI0NDQzsiPg0KPHRyPg0KPHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6MXB4IGRhc2hlZCAjQ0NDO3BhZGRpbmc6MjVweCAyNXB4IDAgMjVweDsiPg0KDQo8dWw+DQo8bGk+SGVsc2lua2k8L2xpPg0KPGxpPkpvZW5zdXU8L2xpPg0KPGxpPkpva2lvaW5lbjwvbGk+DQo8bGk+Snl2w6Rza3lsw6Q8L2xpPg0KPGxpPkthamFhbmk8L2xpPg0KPGxpPkthbmthYW5wJmF1bWw7JmF1bWw7PC9saT4NCjxsaT5LaXR0aWzDpDwvbGk+DQo8bGk+S29ra29sYTwvbGk+DQo8bGk+S291dm9sYTwvbGk+DQo8bGk+S3VobW88L2xpPg0KPGxpPkt1b3BpbzwvbGk+DQoNCjwvdWw+DQoNCjwvdGQ+PHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6MXB4IGRhc2hlZCAjQ0NDO3BhZGRpbmc6MjVweCAyNXB4IDAgMjVweDsiPg0KDQo8dWw+DQo8bGk+S3V1c2FtbzwvbGk+DQo8bGk+TGFodGk8L2xpPg0KPGxpPkxhcHBlZW5yYW50YTwvbGk+DQo8bGk+TWFhcmlhbmhhbWluYTwvbGk+DQo8bGk+TWlra2VsaTwvbGk+DQo8bGk+TXVvbmlvPC9saT4NCjxsaT5OdXJtZXM8L2xpPg0KPGxpPlBlbGxvPC9saT4NCjxsaT5Qb3JpPC9saT4NCjxsaT5Qb3J2b288L2xpPg0KPGxpPlB1ZGFzaiZhdW1sO3J2aTwvbGk+DQo8L3VsPg0KDQo8L3RkPjx0ZCBzdHlsZT0icGFkZGluZzoyNXB4IDI1cHggMCAyNXB4OyI+DQoNCjx1bD4NCjxsaT5Sb3ZhbmllbWk8L2xpPg0KPGxpPlNhbGxhPC9saT4NCjxsaT5TYXZvbmxpbm5hPC9saT4NCjxsaT5Tb2Rhbmt5bCZhdW1sOzwvbGk+DQo8bGk+VGFtbWlzYWFyaTwvbGk+DQo8bGk+VXRzam9raTwvbGk+DQo8bGk+VXVzaWthdXB1bmtpPC9saT4NCjxsaT5WYW50YWE8L2xpPg0KPGxpPlZhcmthdXM8L2xpPg0KPGxpPllsaXZpZXNrYTwvbGk+DQo8L3VsPg0KDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCg0KDQo8aDI+VGFncyAoZGlmZmVyZW50IG1vZGVzKTo8L2gyPg0KDQo8dWwgc3R5bGU9ImxpbmUtaGVpZ2h0OjEuNjVlbTsiPg0KPGxpPjxjb2RlPiZsdDt0eHA6cmFoX2ZpbndlYXRoZXIgbW9kZT0idXBkYXRlIiAvPjwvY29kZT4gT3V0cHV0cyAiTGFzdCB1cGRhdGVkIi1kYXRlLjwvbGk+DQo8bGk+PGNvZGU+Jmx0O3R4cDpyYWhfZmlud2VhdGhlciBtb2RlPSJpbWd1cmwiIC8+PC9jb2RlPiBPdXRwdXRzIHBsYWluIHVybCBvZiB3ZWF0aGVyaW1hZ2UuPC9saT4NCjxsaT48Y29kZT4mbHQ7dHhwOnJhaF9maW53ZWF0aGVyIG1vZGU9ImltYWdlIiAvPjwvY29kZT4gT3VwdXRzIGEgd2VhdGhlcmltYWdlLjwvbGk+DQo8bGk+PGNvZGU+Jmx0O3R4cDpyYWhfZmlud2VhdGhlciBtb2RlPSJmIiAvPjwvY29kZT4gQ3VycmVudCB0ZW1wZXJhdHVyZSBpbiBGYXJlbmhpdGVzLjwvbGk+DQo8bGk+PGNvZGU+Jmx0O3R4cDpyYWhfZmlud2VhdGhlciBtb2RlPSJjIiAvPjwvY29kZT4gQ3VycmVudCB0ZW1wZXJhdHVyZSBpbiBDZWxzaXVzLjwvbGk+DQo8L3VsPg0KDQo8aDI+QXR0cmlidXRlcyBmb3IgYWxsIHRhZ3MgKGRpZmZlcmVudCBtb2Rlcyk6PC9oMj4NCg0KPHVsIHN0eWxlPSJsaW5lLWhlaWdodDoxLjY1ZW07Ij4NCjxsaT5wbGFjZSAtIFRoZSBjaXR5IHRvIGNob29zZS48L2xpPg0KPGxpPmxhYmVsIC0gTGFiZWx0ZXh0PC9saT4NCjxsaT5sYWJlbHRhZyAtIChYKUhUTUwtb2JqZWN0IC8gdGV4dCB0byB3cmFwIGxhYmVsPC9saT4NCjxsaT50aW1lb3V0IC0gSG93IGxvbmcgeW91IHdhbnQgdG8gbGV0IHRoZSBzZWFyY2ggb2YgaW5mb3JtYXRpb24gY29udGludWUuPC9saT4NCjxsaT5jbGFzcyAtIENTUyBjbGFzcyBvZiB3cmFwZWxlbWVudDwvbGk+DQo8bGk+d3JhcHRhZyAtIChYKUhUTUwtb2JqZWN0IC8gdGV4dCB0byB3cmFwIGVudHJpZXM8L2xpPg0KPGxpPnBhdGggLSBwYXRoIHRvIHRoZSBpbWFnZS1mb2xkZXIgd2hlcmUgd2VhdGhlcmljb25zIGFyZSwgd2l0aG91dCBlbmRpbmcgc2xhc2guPC9saT4NCjxsaT5leHQgLSBleHRlbnNpb24gb2YgdGhlIGltYWdlcy48L2xpPg0KPC91bD4NCiI7czo0OiJjb2RlIjtzOjEwMDE0OiIJIyMjIyMjIyMjIyMjIyMjIyMjDQoJIw0KCSMJcmFoX2ZpbndlYXRoZXItcGx1Z2luIGZvciBUZXh0cGF0dGVybg0KCSMJdmVyc2lvbiAwLjENCgkjDQoJIwlieSBKdWtrYSBTdmFobg0KCSMJaHR0cDovL3d3dy5yYWhpbmFhLmJpeg0KCSMNCgkjIyMjIyMjIyMjIyMjIyMjIyMNCgkNCglmdW5jdGlvbiByYWhfZmlud2VhdGhlcigkYXR0cykgew0KCQkNCgkJZ2xvYmFsICRwcmVmczsNCgkJDQoJCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCQkncGxhY2UnCQkJCQk9PiAnSGVsc2lua2knLA0KCQkJJ21heGFydGlzdHMnCQkJPT4gMzAsDQoJCQknbGFiZWwnCQkJCQk9PiAnJywNCgkJCSdsYWJlbHRhZycJCQkJPT4gJycsDQoJCQkndGltZW91dCcJCQkJPT4gMywNCgkJCSdtb2RlJwkJCQkJPT4gJ2Jsb2Nrc3RhcnQnLA0KCQkJJ2NsYXNzJwkJCQkJPT4gJycsDQoJCQknd3JhcHRhZycJCQkJPT4gJycsDQoJCQknYnJlYWsnCQkJCQk9PiAnJywNCgkJCSd3JwkJCQkJCT0+ICcnLA0KCQkJJ3VzZXdlYXRoZXJpY29uJwkJPT4gJzEnLA0KCQkJJ3VzZWlubGluZWltZycJCQk9PiAnJywNCgkJCSdwYXRoJwkJCQkJPT4gJ2ltYWdlcy93JywNCgkJCSdleHQnCQkJCQk9PiAnZ2lmJywNCgkJKSwkYXR0cykpOw0KCQkNCgkJJHNvY2tldFRpbWVvdXQgPSAkdGltZW91dDsNCgkJQGluaV9zZXQoImRlZmF1bHRfc29ja2V0X3RpbWVvdXQiLCAkc29ja2V0VGltZW91dCk7DQoJCQ0KCQkkZ2V0cGFnZSAJCT0gQGZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwOi8vd3d3LmZtaS5maS9zYWEvcGFpa2FsbGkuaHRtbD9rdW50YT0iLiRwbGFjZSk7DQoJCQ0KCQkkc3RhcnRwb3MgCQk9IHN0cnBvcygkZ2V0cGFnZSwgJzxkaXYgaWQ9Im9icy10ZXh0Ij4nKTsNCgkJJGVuZHBvcyAJCT0gc3RycG9zKCRnZXRwYWdlLCAnPC9iPjwvcD48L2Rpdj4nKTsNCgkJDQoJCSRjb250ZW50IAkJPSBzdWJzdHIoJGdldHBhZ2UsJHN0YXJ0cG9zLCRlbmRwb3MtJHN0YXJ0cG9zKTsNCgkJDQoJCSRkYXl0aW1lID0gMDsNCgkJJG5pZ2h0dGltZSA9IDA7DQoJCSRvdXRwdXQgPSAiIjsNCgkJDQoJCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KCQkjDQoJCSMJIFN0ZXAxOiBOb3cgaXQgb3V0cHV0cw0KCQkjDQoJCSMJIDxkaXYgaWQ9Im9icy10ZXh0Ij4NCgkJIwk8cD48Yj5UdW9yZWluIGhhdmFpbnRvOjwvYj4gMDguMDkuMjAwNyAwNDo1MDxiciAvPmwmYXVtbDttcCZvdW1sO3RpbGEmbmJzcDs8Yj40LjkmbmJzcDsmZGVnO0M8L2I+LCBwYWluZSZuYnNwOzxiPjEwMTMuMiZuYnNwO2hQYTwvYj4sIGtvc3RldXMmbmJzcDs8Yj45NiU8L2I+LCBwb2hqb2lzdHV1bHRhJm5ic3A7PGI+MS4yJm5ic3A7bS9zPC9iPiwgdHVubmluJm5ic3A7c2FkZWtlcnR5bSZhdW1sOyZuYnNwOzxiPjAmbmJzcDttbTwvYj4sIHNlbGtlJmF1bWw7JmF1bWw7Jm5ic3A7PGI+KDAvOCkNCgkJIw0KCQkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCgkJDQoJCSR0YWdzID0gYXJyYXkoDQoJCQknPGRpdiBpZD0ib2JzLXRleHQiPicgCQkJCQk9PiAnJywNCgkJCSc8cD48Yj4nCQkJCQkJCQk9PiAnJywNCgkJCScmbmJzcDsnCQkJCQkJCQk9PiAnICcsDQoJCQknbCZhdW1sO21wJm91bWw7dGlsYSZuYnNwOzxiPicgCQkJPT4gJycsDQoJCSk7DQoJCQ0KCQkkd3RhZ3MgPSBhcnJheSgNCgkJCSfDpCcJCQkJPT4gJ2EnLA0KCQkJJyZhdW1sOycJCT0+ICdhJywNCgkJCScmQXVtbDsnCQk9PiAnYScsDQoJCQknJm5ic3A7JwkJPT4gJycsDQoJCQknICcJCQkJPT4gJycsDQoJCQknbW08L2I+LCAnCQk9PiAnJywNCgkJKTsNCgkJDQoJCSRzcnRhZ3MgPSBhcnJheSgNCgkJCSdBdXJpbmtvIG5vdXNlZSA8Yj4nCT0+ICcnLA0KCQkJJyAnCQkJCQkJPT4gJycsDQoJCQknOicJCQkJCQk9PiAnJywNCgkJCSdqYSBsYXNrZWUgPGI+JwkJCT0+ICcnLA0KCQkJJzwvYj4nCQkJCQk9PiAnJywNCgkJKTsNCgkJDQoJCS8vIFBvc3RpbmctZGF0ZQ0KCQkNCgkJJHBvc3RlZAkJCT0gc3Vic3RyKCRjb250ZW50LDQ3LDE1KTsNCgkJDQoJCSRob3VyCQkJPSBzdHJmdGltZSgiJUgiKTsNCgkJJGhvdXIJCQk9IEBudW1iZXJfZm9ybWF0KCRob3VyLDApOw0KCQkkbWludXRlCQkJPSBzdHJmdGltZSgiJU0iKTsNCgkJJG1pbnV0ZQkJCT0gQG51bWJlcl9mb3JtYXQoJG1pbnV0ZSwwKTsNCgkJDQoJCWlmICgkaG91ciA9PSAiMDAiICl7DQoJCQkkaG91ciA9ICIiOw0KCQkJaWYgKCRtaW51dGUgPT0gIjAwIil7DQoJCQkJJG1pbnV0ZSA9ICIiOw0KCQkJfQ0KCQkJaWYgKCRtaW51dGUgPT0gIjAxIil7DQoJCQkJJG1pbnV0ZSA9ICIxIjsNCgkJCX0NCgkJCWlmICgkbWludXRlID09ICIwMiIpew0KCQkJCSRtaW51dGUgPSAiMiI7DQoJCQl9DQoJCQlpZiAoJG1pbnV0ZSA9PSAiMDMiKXsNCgkJCQkkbWludXRlID0gIjMiOw0KCQkJfQ0KCQkJaWYgKCRtaW51dGUgPT0gIjA0Iil7DQoJCQkJJG1pbnV0ZSA9ICI0IjsNCgkJCX0NCgkJCWlmICgkbWludXRlID09ICIwNSIpew0KCQkJCSRtaW51dGUgPSAiNSI7DQoJCQl9DQoJCQlpZiAoJG1pbnV0ZSA9PSAiMDYiKXsNCgkJCQkkbWludXRlID0gIjYiOw0KCQkJfQ0KCQkJaWYgKCRtaW51dGUgPT0gIjA3Iil7DQoJCQkJJG1pbnV0ZSA9ICI3IjsNCgkJCX0NCgkJCWlmICgkbWludXRlID09ICIwOCIpew0KCQkJCSRtaW51dGUgPSAiOCI7DQoJCQl9DQoJCQlpZiAoJG1pbnV0ZSA9PSAiMDkiKXsNCgkJCQkkbWludXRlID0gIjkiOw0KCQkJfQ0KCQl9DQoJCWlmICgkaG91ciA9PSAiMDEiICl7DQoJCQkkaG91ciA9ICIxIjsNCgkJfQ0KCQlpZiAoJGhvdXIgPT0gIjAyIiApew0KCQkJJGhvdXIgPSAiMiI7DQoJCX0NCgkJaWYgKCRob3VyID09ICIwMyIgKXsNCgkJCSRob3VyID0gIjMiOw0KCQl9DQoJCWlmICgkaG91ciA9PSAiMDQiICl7DQoJCQkkaG91ciA9ICI0IjsNCgkJfQ0KCQlpZiAoJGhvdXIgPT0gIjA1IiApew0KCQkJJGhvdXIgPSAiNSI7DQoJCX0NCgkJaWYgKCRob3VyID09ICIwNiIgKXsNCgkJCSRob3VyID0gIjYiOw0KCQl9DQoJCWlmICgkaG91ciA9PSAiMDciICl7DQoJCQkkaG91ciA9ICI3IjsNCgkJfQ0KCQlpZiAoJGhvdXIgPT0gIjA4IiApew0KCQkJJGhvdXIgPSAiOCI7DQoJCX0NCgkJaWYgKCRob3VyID09ICIwOSIgKXsNCgkJCSRob3VyID0gIjkiOw0KCQl9DQoJCQ0KCQkkdGltZSAJCQk9ICRob3VyLiRtaW51dGU7DQoJCSR0aW1lCQkJPSBAbnVtYmVyX2Zvcm1hdCgkdGltZSwwKTsNCgkJDQoJCSRzdGFydHBvcyAJCT0gc3RycG9zKCRnZXRwYWdlLCAnQXVyaW5rbyBub3VzZWUgPGI+Jyk7DQoJCSRlbmRwb3MgCQk9IHN0cnBvcygkZ2V0cGFnZSwgJzwvYj4gamEgbGFza2VlJyk7DQoJCSRzdW5yaXNlIAkJPSBzdWJzdHIoJGdldHBhZ2UsJHN0YXJ0cG9zLCRlbmRwb3MtJHN0YXJ0cG9zKTsNCgkJJHN1bnJpc2UJCT0gc3RydHIoJHN1bnJpc2UsICRzcnRhZ3MpOw0KCQkkc3VucmlzZQkJPSBAbnVtYmVyX2Zvcm1hdCgkc3VucmlzZSwwKTsNCgkJDQoJCSRzdGFydHBvcyAJCT0gc3RycG9zKCRnZXRwYWdlLCAnamEgbGFza2VlIDxiPicpOw0KCQkkZW5kcG9zIAkJPSBzdHJwb3MoJGdldHBhZ2UsICc8L2I+LiAnKTsNCgkJJHN1bmRvd24gCQk9IHN1YnN0cigkZ2V0cGFnZSwkc3RhcnRwb3MsJGVuZHBvcy0kc3RhcnRwb3MpOw0KCQkkc3VuZG93bgkJPSBzdHJ0cigkc3VuZG93biwgJHNydGFncyk7DQoJCSRzdW5kb3duCQk9IEBudW1iZXJfZm9ybWF0KCRzdW5kb3duLDApOw0KCQkNCgkJaWYgKCRzdW5kb3duPDEyMDApIHsNCgkJCWlmKCRzdW5kb3duPCR0aW1lICYmICR0aW1lPCRzdW5yaXNlKSB7DQoJCQkJJG5pZ2h0dGltZSA9IDE7DQoJCQl9IGVsc2Ugew0KCQkJCSRkYXl0aW1lID0gMTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYgKCRzdW5kb3duPjEyMDApIHsNCgkJCWlmICgkdGltZTwkc3VuZG93biAmJiAkc3VucmlzZTwkdGltZSkgew0KCQkJCSRkYXl0aW1lID0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG5pZ2h0dGltZSA9IDE7IA0KCQkJfQ0KCQl9DQoJCQ0KCQkkc3RhcnRwb3MgCQk9IHN0cnBvcygkY29udGVudCwgJ2wmYXVtbDttcCZvdW1sO3RpbGEmbmJzcDs8Yj4nKTsNCgkJJGVuZHBvcyAJCT0gc3RycG9zKCRjb250ZW50LCAnJm5ic3A7JmRlZztDPC9iPicpOw0KCQkkY2Vsc2l1cyAJCT0gc3Vic3RyKCRjb250ZW50LCRzdGFydHBvcywkZW5kcG9zLSRzdGFydHBvcyk7DQoJCSRjZWxzaXVzCQk9IHN0cnRyKCRjZWxzaXVzLCAkdGFncyk7DQoJCQ0KCQkkZmFocmVuaGVpdCAJPSBAbnVtYmVyX2Zvcm1hdCgkY2Vsc2l1cyAqICg5LzUpICsgMzIsMSk7DQoJCSRjZWxzaXVzCQk9ICRjZWxzaXVzLicgJiMxODY7Qyc7DQoJCSRmYWhyZW5oZWl0CQk9ICRmYWhyZW5oZWl0LicgJiMxODY7Ric7DQoJCQ0KCQkvLyBXZWF0aGVySWNvbg0KCQkNCgkJJHN0YXJ0cG9zIAkJPSBzdHJwb3MoJGNvbnRlbnQsICdtbTwvYj4sICcpOw0KCQkkZW5kcG9zIAkJPSBzdHJwb3MoJGNvbnRlbnQsICc8Yj4oJyk7DQoJCSR3IAkJCQk9IHN1YnN0cigkY29udGVudCwkc3RhcnRwb3MsJGVuZHBvcy0kc3RhcnRwb3MpOw0KCQkkdwkJCQk9IHN0cnRyKCR3LCAkd3RhZ3MpOw0KCQkkdwkJCQk9IHN0cnRvbG93ZXIoJHcpOw0KCQkNCgkJLy8kZGVmYXVsdHN0eWxlCT0gJzBjbG91ZCc7DQoJCQ0KCQlpZiAoJHVzZXdlYXRoZXJpY29uID09ICcxJykgew0KCQkJaWYgKCRkYXl0aW1lID09IDEpIHsNCgkJCQkkc3R5bGUgPSBhcnJheSgNCgkJCQkJJ2F1cmlua29pc3RhJwkJCQkJCT0+ICcwY2xvdWQnLCAJCQkJCSMgU3VubnkNCgkJCQkJJ3NlbGtlYWEnCQkJCQkJCT0+ICcwY2xvdWQnLCAJCQkJCSMgQ2xlYXINCgkJCQkJJ21lbGtlaW5zZWxrZWFhJwkJCQkJPT4gJzFjbG91ZF9ub3JhaW4nLCAJCQkjIENsb3VkDQoJCQkJCSd0aWhrdXNhZGUnCQkJCQkJCT0+ICcxY2xvdWRfbGlnaHRyYWluJywgCQkJIyBSYWluDQoJCQkJCSd0aWhrdXNhZGV0dGEnCQkJCQkJPT4gJzFjbG91ZF9saWdodHJhaW4nLCAJCQkjIFJhaW4NCgkJCQkJJ2phYXRhdmF0aWhrdXNhZGUnCQkJCQk9PiAnMWNsb3VkX2hlYXZ5cmFpbicsIAkJCSMgRnJvemluZyByYWluDQoJCQkJCSdqYWF0YXZhYXRpaGt1c2FkZXR0YScJCQkJPT4gJzFjbG91ZF9oZWF2eXJhaW4nLCAJCQkjIEZyb3ppbmcgcmFpbg0KCQkJCQkncHVvbGlwaWx2aXN0YScgCQkJCQk9PiAnMWNsb3VkX25vcmFpbicsIAkJCSMgQ2xvdWR5DQoJCQkJCSdlbmltbWFrc2VlbnBpbHZpc3RhJwkJCQk9PiAnNGNsb3VkX25vcmFpbicsIAkJCSMgQ2xvdWR5DQoJCQkJCSdtZWxrZWlucGlsdmlzdGEnCQkJCQk9PiAnMmNsb3VkX25vcmFpbicsIAkJCSMgQ2xvdWR5DQoJCQkJCSdwaWx2aXN0YScJCQkJCQkJPT4gJzNjbG91ZF9ub3JhaW4nLCAJCQkjIENsb3VkeQ0KCQkJCQknc3VtdWEnCQkJCQkJCQk9PiAnM2Nsb3VkX2ZvZycsIAkJCQkjIEZvZw0KCQkJCQknamFhdGF2YXZlc2lzYWRlJwkJCQkJPT4gJzFjbG91ZF9tb2RyYWluJywJCQkjIEFjaWQgcmFpbg0KCQkJCQknamFhdGF2YWF2ZXNpc2FkZXR0YScJCQkJPT4gJzFjbG91ZF9tb2RyYWluJywJCQkjIEFjaWQgcmFpbg0KCQkJCQknaGVpa2tvamFsdW1pa3V1cm9qYScJCQkJPT4gJzRjbG91ZF9saWdodHNub3cnLAkJCSMgU25vdw0KCQkJCQknbHVtaWt1dXJvamEnCQkJCQkJPT4gJzFjbG91ZF9zbm93JywJCQkJIyBTbm93DQoJCQkJCSd2b2ltYWtrYWl0YWx1bWlrdXVyb2phJwkJCT0+ICcxY2xvdWRfc25vdycsCQkJCSMgU25vdw0KCQkJCQknaGVpa2tvYWx1bWlzYWRldHRhJwkJCQk9PiAnNGNsb3VkX2xpZ2h0c25vdycsCQkJIyBTbm93DQoJCQkJCSdsdW1pc2FkZXR0YScJCQkJCQk9PiAnMWNsb3VkX3Nub3cnLAkJCQkjIFNub3cNCgkJCQkJJ3RpaGVhYWx1bWlzYWRldHRhJwkJCQkJPT4gJzRjbG91ZF9oZWF2eXNub3cnLAkJCSMgU25vdw0KCQkJCQknaGVpa2tvamFyYW50YWt1dXJvamEnCQkJCT0+ICc0Y2xvdWRfbW9kc25vdycsCQkJIyBNb2QNCgkJCQkJJ3JhbnRha3V1cm9qYScJCQkJCQk9PiAnNGNsb3VkX21vZHNub3cnLAkJCSMgTW9kDQoJCQkJCSd2b2ltYWtrYWl0YXJhbnRha3V1cm9qYScJCQk9PiAnNGNsb3VkX21vZHNub3cnLAkJCSMgTW9kDQoJCQkJCSdoZWlra29hcmFudGFzYWRldHRhJwkJCQk9PiAnNGNsb3VkX21vZHNub3cnLAkJCSMgTW9kDQoJCQkJCSdyYW50YXNhZGV0dGEnCQkJCQkJPT4gJzRjbG91ZF9tb2Rzbm93JywJCQkjIE1vZA0KCQkJCQkndGloZWFhcmFudGFzYWRldHRhJwkJCQk9PiAnNGNsb3VkX21vZHNub3cnLAkJCSMgTW9kCQ0KCQkJCQknVXVra29za3V1cm9qYScJCQkJCQk9PiAnMmNsb3VkX3RodW5kZXJzJywJCQkjIFRodW5kZXINCgkJCQkJJ3ZvaW1ha2thaXRhdWtrb3NrdXVyb2phJwkJCT0+ICcyY2xvdWRfdGh1bmRlcnMnLAkJCSMgVGh1bmRlcg0KCQkJCQkndWtrb3N0YScJCQkJCQkJPT4gJzJjbG91ZF90aHVuZGVycycsCQkJIyBUaHVuZGVyDQoJCQkJCSd2b2ltYWthc3RhdWtrb3N0YScJCQkJCT0+ICcyY2xvdWRfdGh1bmRlcnMnLAkJCSMgVGh1bmRlcg0KCQkJCQkncmFla3V1cm9qYScJCQkJCQk9PiAnM2Nsb3VkX2hhaWwnLAkJCQkjIEhhaWwNCgkJCQkJJ3JhbmtrYWFzYWRldHRhJwkJCQkJPT4gJzJjbG91ZF9oZWF2eXJhaW4nLAkJCSMgSGVhdnkgUmFpbg0KCQkJCQknc2FkZXR0YScJCQkJCQkJPT4gJzJjbG91ZF9tb2RyYWluJywJCQkjIFJhaW4NCgkJCQkJJ2hlaWtrb2FzYWRldHRhJwkJCQkJPT4gJzFjbG91ZF9saWdodHJhaW4nLAkJCSMgUmFpbg0KCQkJCQkndm9pbWFra2FpdGFzYWRla3V1cm9qYScJCQk9PiAnMWNsb3VkX2xpZ2h0cmFpbicsCQkJIyBSYWluDQoJCQkJCSdzYWRla3V1cm9qYScJCQkJCQk9PiAnMWNsb3VkX2xpZ2h0cmFpbicsCQkJIyBSYWluDQoJCQkJCSdoZWlra29qYXNhZGVrdXVyb2phJwkJCQk9PiAnMWNsb3VkX2xpZ2h0cmFpbicsCQkJIyBSYWluDQoJCQkJKTsNCgkJCX0NCgkJCQ0KCQkJaWYgKCRuaWdodHRpbWUgPT0gMSkgew0KCQkJCSRzdHlsZSA9IGFycmF5KA0KCQkJCQknYXVyaW5rb2lzdGEnCQkJCQkJPT4gJ25fMGNsb3VkJywgCQkJCQkjIFN1bm55DQoJCQkJCSdzZWxrZWFhJwkJCQkJCQk9PiAnbl8wY2xvdWQnLCAJCQkJCSMgQ2xlYXINCgkJCQkJJ21lbGtlaW5zZWxrZWFhJwkJCQkJPT4gJ25fMmNsb3VkX25vcmFpbicsIAkJCSMgQ2xvdWQNCgkJCQkJJ3RpaGt1c2FkZScJCQkJCQkJPT4gJzFjbG91ZF9saWdodHJhaW4nLCAJCQkjIFJhaW4NCgkJCQkJJ3RpaGt1c2FkZXR0YScJCQkJCQk9PiAnMWNsb3VkX2xpZ2h0cmFpbicsIAkJCSMgUmFpbg0KCQkJCQknamFhdGF2YXRpaGt1c2FkZScJCQkJCT0+ICcxY2xvdWRfaGVhdnlyYWluJywgCQkJIyBGcm96aW5nIHJhaW4NCgkJCQkJJ2phYXRhdmFhdGloa3VzYWRldHRhJwkJCQk9PiAnMWNsb3VkX2hlYXZ5cmFpbicsIAkJCSMgRnJvemluZyByYWluDQoJCQkJCSdwdW9saXBpbHZpc3RhJyAJCQkJCT0+ICduXzJjbG91ZF9ub3JhaW4nLCAJCQkjIENsb3VkeQ0KCQkJCQknZW5pbW1ha3NlZW5waWx2aXN0YScJCQkJPT4gJ25fM2Nsb3VkX25vcmFpbicsIAkJCSMgQ2xvdWR5DQoJCQkJCSdtZWxrZWlucGlsdmlzdGEnCQkJCQk9PiAnbl8yY2xvdWRfbm9yYWluJywgCQkJIyBDbG91ZHkNCgkJCQkJJ3BpbHZpc3RhJwkJCQkJCQk9PiAnbl8yY2xvdWRfbm9yYWluJywgCQkJIyBDbG91ZHkNCgkJCQkJJ3N1bXVhJwkJCQkJCQkJPT4gJzNjbG91ZF9mb2cnLCAJCQkJIyBGb2cNCgkJCQkJJ2phYXRhdmF2ZXNpc2FkZScJCQkJCT0+ICcxY2xvdWRfbW9kcmFpbicsCQkJIyBBY2lkIHJhaW4NCgkJCQkJJ2phYXRhdmFhdmVzaXNhZGV0dGEnCQkJCT0+ICcxY2xvdWRfbW9kcmFpbicsCQkJIyBBY2lkIHJhaW4NCgkJCQkJJ2hlaWtrb2phbHVtaWt1dXJvamEnCQkJCT0+ICczY2xvdWRfc25vdycsCQkJCSMgU25vdw0KCQkJCQknbHVtaWt1dXJvamEnCQkJCQkJPT4gJzNjbG91ZF9zbm93JywJCQkJIyBTbm93DQoJCQkJCSd2b2ltYWtrYWl0YWx1bWlrdXVyb2phJwkJCT0+ICczY2xvdWRfc25vdycsCQkJCSMgU25vdw0KCQkJCQknaGVpa2tvYWx1bWlzYWRldHRhJwkJCQk9PiAnM2Nsb3VkX3Nub3cnLAkJCQkjIFNub3cNCgkJCQkJJ2x1bWlzYWRldHRhJwkJCQkJCT0+ICczY2xvdWRfc25vdycsCQkJCSMgU25vdw0KCQkJCQkndGloZWFhbHVtaXNhZGV0dGEnCQkJCQk9PiAnNGNsb3VkX2hlYXZ5c25vdycsCQkJIyBTbm93DQoJCQkJCSdoZWlra29qYXJhbnRha3V1cm9qYScJCQkJPT4gJzRjbG91ZF9tb2Rzbm93JywJCQkjIE1vZA0KCQkJCQkncmFudGFrdXVyb2phJwkJCQkJCT0+ICc0Y2xvdWRfbW9kc25vdycsCQkJIyBNb2QNCgkJCQkJJ3ZvaW1ha2thaXRhcmFudGFrdXVyb2phJwkJCT0+ICc0Y2xvdWRfbW9kc25vdycsCQkJIyBNb2QNCgkJCQkJJ2hlaWtrb2FyYW50YXNhZGV0dGEnCQkJCT0+ICc0Y2xvdWRfbW9kc25vdycsCQkJIyBNb2QNCgkJCQkJJ3JhbnRhc2FkZXR0YScJCQkJCQk9PiAnNGNsb3VkX21vZHNub3cnLAkJCSMgTW9kDQoJCQkJCSd0aWhlYWFyYW50YXNhZGV0dGEnCQkJCT0+ICc0Y2xvdWRfbW9kc25vdycsCQkJIyBNb2QJDQoJCQkJCSdVdWtrb3NrdXVyb2phJwkJCQkJCT0+ICcyY2xvdWRfdGh1bmRlcnMnLAkJCSMgVGh1bmRlcg0KCQkJCQkndm9pbWFra2FpdGF1a2tvc2t1dXJvamEnCQkJPT4gJzJjbG91ZF90aHVuZGVycycsCQkJIyBUaHVuZGVyDQoJCQkJCSd1a2tvc3RhJwkJCQkJCQk9PiAnMmNsb3VkX3RodW5kZXJzJywJCQkjIFRodW5kZXINCgkJCQkJJ3ZvaW1ha2FzdGF1a2tvc3RhJwkJCQkJPT4gJzJjbG91ZF90aHVuZGVycycsCQkJIyBUaHVuZGVyDQoJCQkJCSdyYWVrdXVyb2phJwkJCQkJCT0+ICczY2xvdWRfaGFpbCcsCQkJCSMgSGFpbA0KCQkJCQkncmFua2thYXNhZGV0dGEnCQkJCQk9PiAnMmNsb3VkX2hlYXZ5cmFpbicsCQkJIyBIZWF2eSBSYWluDQoJCQkJCSdzYWRldHRhJwkJCQkJCQk9PiAnMmNsb3VkX21vZHJhaW4nLAkJCSMgUmFpbg0KCQkJCQknaGVpa2tvYXNhZGV0dGEnCQkJCQk9PiAnMWNsb3VkX2xpZ2h0cmFpbicsCQkJIyBSYWluDQoJCQkJCSd2b2ltYWtrYWl0YXNhZGVrdXVyb2phJwkJCT0+ICcxY2xvdWRfbGlnaHRyYWluJywJCQkjIFJhaW4NCgkJCQkJJ3NhZGVrdXVyb2phJwkJCQkJCT0+ICcxY2xvdWRfbGlnaHRyYWluJywJCQkjIFJhaW4NCgkJCQkJJ2hlaWtrb2phc2FkZWt1dXJvamEnCQkJCT0+ICcxY2xvdWRfbGlnaHRyYWluJywJCQkjIFJhaW4NCgkJCQkpOw0KCQkJfQ0KCQkJDQoJCQkkdyA9IHN0cnRyKCR3LCAkc3R5bGUpOw0KCQkJDQoJCX0NCgkJDQoJCWlmICgkbW9kZSA9PSAndXBkYXRlJykgew0KCQkJJG91dHB1dCAuPSAkcG9zdGVkOw0KCQl9DQoJCQ0KCQlpZiAoJG1vZGUgPT0gJ2ltZ3VybCcpIHsNCgkJCSRvdXRwdXQgLj0gaHUuJHBhdGguJy8nLiR3LicuJy4kZXh0Ow0KCQl9DQoJCQ0KCQlpZiAoJG1vZGUgPT0gJ2ltYWdlJykgew0KCQkJJG91dHB1dCAuPSAnPGltZyBzcmM9IicuaHUuJHBhdGguJy8nLiR3LicuJy4kZXh0LiciIGFsdD0iIiAvPic7DQoJCX0NCgkJDQoJCWlmICgkbW9kZSA9PSAnZicpIHsNCgkJCSRvdXRwdXQgLj0gJGZhaHJlbmhlaXQ7DQoJCX0NCgkJDQoJCWlmICgkbW9kZSA9PSAnYycpIHsNCgkJCSRvdXRwdXQgLj0gJGNlbHNpdXM7DQoJCX0NCgkJDQoJCS8vIEJsb2NrZWxlbWVudA0KCQkNCgkJaWYgKCRtb2RlID09ICdibG9ja3N0YXJ0Jykgew0KCQkJJG91dHB1dCAuPSAnPCcuJHdyYXB0YWcuJyBjbGFzcz0idy0nLiR3Licgd2VhdGhlcmJveCInOw0KCQkJaWYoJHVzZWlubGluZWltZykgew0KCQkJCSRvdXRwdXQgLj0gJyBzdHlsZT0iYmFja2dyb3VuZDogdXJsKFwnJy5odS4kcGF0aC4nLycuJHcuJy4nLiRleHQuJ1wnKSBuby1yZXBlYXQgMCAwOyInOw0KCQkJCX0NCgkJCSRvdXRwdXQgLj0gJz4nOw0KCQl9DQoJCQ0KCQlpZiAoJG1vZGUgPT0gJ2Jsb2NrY2xvc2UnKSB7JG91dHB1dCAuPSAnPC8nLiR3cmFwdGFnLic+Jzt9DQoJCQ0KCQkkb3V0W10gPSAkb3V0cHV0Ow0KCQkNCgkJcmV0dXJuIGRvTGFiZWwoJGxhYmVsLCAkbGFiZWx0YWcpLmRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0KCX0iO3M6NDoidHlwZSI7czoxOiIwIjtzOjM6Im1kNSI7czozMjoiMmU4YzBkMjBiZDhkZGI3NzQ0YjRiMTVkYzVkMjMzYWQiO30=