# glx_if v0.7 # Some conditional tags # Johan Nilsson # http://johan.galaxen.net/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6NjoiZ2x4X2lmIjtzOjc6InZlcnNpb24iO3M6MzoiMC43Ijtz OjY6ImF1dGhvciI7czoxMzoiSm9oYW4gTmlsc3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoy NToiaHR0cDovL2pvaGFuLmdhbGF4ZW4ubmV0LyI7czoxMToiZGVzY3JpcHRpb24iO3M6MjE6 IlNvbWUgY29uZGl0aW9uYWwgdGFncyI7czo0OiJ0eXBlIjtpOjA7czo0OiJoZWxwIjtzOjcw MzM6IgoJPGgxPmdseF9pZjwvaDE+CgoJPHA+VGhpcyBwbHVnaW4gY29tZXMgd2l0aCAxMSBk aWZmZXJlbnQgY29uZGl0aW9uYWwgdGFncy4gTW9zdCBvZiB0aGVtIGNvdWxkIGJlIHVzZWQg aW4gZWl0aGVyIGEgcGFnZSB0ZW1wbGF0ZSBvciBpbiBhIGZvcm0uPC9wPgoKCTxwPjxhIGhy ZWY9IiNnbHhfaWZfZnJvbnRwYWdlIj5nbHhfaWZfZnJvbnRwYWdlPC9hPjxiciAvPgpJZiB3 ZSBhcmUgb24gdGhlIHdlYnNpdGVzIGZyb250cGFnZTxiciAvPgo8YSBocmVmPSIjZ2x4X2lm X25vdF9mcm9udHBhZ2UiPmdseF9pZl9ub3RfZnJvbnRwYWdlPC9hPjxiciAvPgpJZiB3ZSBh cmUgbm90IG9uIHRoZSB3ZWJzaXRlcyBmcm9udHBhZ2UsIHNlYXJjaHBhZ2Ugb3IgY2F0ZWdv cnkgbGlzdC4gaG1tbSB0aGlzIGNvdWxkIGJlIHRoZSBzYW1lIGFzIGlmX2luZGl2aWR1YWxf YXJ0aWNsZSwgd2VsbCBpIGNhbnQgcmVtZW1iZXIgd2h5IGkgZGlkIHRoaXMgb25lLiBCdXQg aXQgaXMgdGhlcmUgZm9yIHlvdSB0byBwbGF5IHdpdGguPGJyIC8+CjxhIGhyZWY9IiNnbHhf aWZfc2VjdGlvbl9mcm9udHBhZ2UiPmdseF9pZl9zZWN0aW9uX2Zyb250cGFnZTwvYT48YnIg Lz4KSWYgd2UgYXJlIG9uIGEgc2VjdGlvbnMgZnJvbnRwYWdlPGJyIC8+CjxhIGhyZWY9IiNn bHhfaWZfbm90X3NlY3Rpb25fZnJvbnRwYWdlIj5nbHhfaWZfbm90X3NlY3Rpb25fZnJvbnRw YWdlPC9hPjxiciAvPgpJZiB3ZSBhcmUgbm90IG9uIHRoZSBzZWN0aW9ucyBmcm9udHBhZ2Ug YnV0IGluIGEgc2VjdGlvbjxiciAvPgo8YSBocmVmPSIjZ2x4X2lmX3NlYXJjaCI+Z2x4X2lm X3NlYXJjaDwvYT48YnIgLz4KSWYgdGhlIHVzZXIgYXJlIGRvaW5nIGEgc2VhcmNoPGJyIC8+ CjxhIGhyZWY9IiNnbHhfaWZfbm90X3NlYXJjaCI+Z2x4X2lmX25vdF9zZWFyY2g8L2E+PGJy IC8+CklmIGEgc2VhcmNoIG5vdCBoYXZlIGJlZW4gYXR0ZW1wdGVkPGJyIC8+CjxhIGhyZWY9 IiNnbHhfaWZfY2F0ZWdvcnlfbGlzdCI+Z2x4X2lmX2NhdGVnb3J5X2xpc3Q8L2E+PGJyIC8+ CklmIHdlIGFyZSBvbiBhIGNhdGVnb3J5IGxpc3Q8YnIgLz4KPGEgaHJlZj0iI2dseF9pZl9j b21tZW50c19vcGVuIj5nbHhfaWZfY29tbWVudHNfb3BlbjwvYT48YnIgLz4KSWYgY29tbWVu dHMgYXJlIG9wZW4gZm9yIHRoaXMgYXJ0aWNsZTxiciAvPgo8YSBocmVmPSIjZ2x4X2lmX2Nv bW1lbnRzX2Nsb3NlZCI+Z2x4X2lmX2NvbW1lbnRzX2Nsb3NlZDwvYT48YnIgLz4KSWYgY29t bWVudHMgYXJlIGNsb3NlZCBmb3IgdGhpcyBhcnRpY2xlPGJyIC8+CjxhIGhyZWY9IiNnbHhf aWZfY29tbWVudHNfY2xvc2VkX2NvbW1lbnRzIj5nbHhfaWZfY29tbWVudHNfY2xvc2VkX2Nv bW1lbnRzPC9hPjxiciAvPgpJZiBjb21tZW50cyBhcmUgY2xvc2VkIGZvciB0aGlzIGFydGlj bGUsIGJ1dCB0aGVyZSBhcmUgY29tbWVudHMgbGVmdCBiZWZvcmU8YnIgLz4KPGEgaHJlZj0i I2dseF9pZl9jb21tZW50c19jb3VudCI+Z2x4X2lmX2NvbW1lbnRzX2NvdW50PC9hPjxiciAv PgpPcHV0cHV0IHRleHQgaWYgY29tbWVudHMgYXJlIGVxdWFsIHRvIHNvbWV0aGluZzwvcD4K Cgk8aDM+RXhhbXBsZTwvaDM+CgoJPHA+QmVsb3cgYXJlIHNvbWUgZXhhbXBsZSBvZiBob3cg dGhlIGFib3ZlIHRhZ3MgY291bGQgYmUgdXNlZC48L3A+CgoJPGg0IGlkPSJnbHhfaWZfZnJv bnRwYWdlIj5nbHhfaWZfZnJvbnRwYWdlPC9oND4KCgk8cD5PdXRwdXQgdGV4dCBvbmx5IG9u IHRoZSBmcm9udHBhZ2UsIHRoaXMgaXMgdXNlZCBvbiB0aGUgZGVmYXVsdCBwYWdlIHRlbXBs YXRlPC9wPgoKCTxvbCBjbGFzcz0iY29kZSI+CgkJPGxpPjxjb2RlPiZsdDt0eHA6Z2x4X2lm X2Zyb250cGFnZSZndDs8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Jmx0O3AmZ3Q7V2VsY29t ZSB0byB0aGlzIHNpdGVzIGZyb250cGFnZSZsdDsvcCZndDs8L2NvZGU+PC9saT4KCQk8bGk+ PGNvZGU+Jmx0Oy90eHA6Z2x4X2lmX2Zyb250cGFnZSZndDs8L2NvZGU+PC9saT4KCTwvb2w+ CgoJPGg0IGlkPSJnbHhfaWZfbm90X2Zyb250cGFnZSI+Z2x4X2lmX25vdF9mcm9udHBhZ2U8 L2g0PgoKCTxwPklmIHdlIGFyZSBub3Qgb24gdGhlIHdlYnNpdGVzIGZyb250cGFnZSwgc2Vh cmNocGFnZSBvciBjYXRlZ29yeSBsaXN0LjwvcD4KCgk8aDQgaWQ9ImdseF9pZl9zZWN0aW9u X2Zyb250cGFnZSI+Z2x4X2lmX3NlY3Rpb25fZnJvbnRwYWdlPC9oND4KCgk8cD5PdXRwdXQg dGV4dCBpZiB3ZSBhcmUgb24gYSBzZWN0aW9ucyBmcm9udHBhZ2U8L3A+CgoJPG9sIGNsYXNz PSJjb2RlIj4KCQk8bGk+PGNvZGU+Jmx0O3R4cDpnbHhfaWZfc2VjdGlvbl9mcm9udHBhZ2Um Z3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZsdDtwJmd0O1dlbGNvbWUgdG8gdGhpcyBz ZWN0aW9uJmx0Oy9wJmd0OzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT4mbHQ7L3R4cDpnbHhf aWZfc2VjdGlvbl9mcm9udHBhZ2UmZ3Q7PC9jb2RlPjwvbGk+Cgk8L29sPgoKCTxoNCBpZD0i Z2x4X2lmX25vdF9zZWN0aW9uX2Zyb250cGFnZSI+Z2x4X2lmX25vdF9zZWN0aW9uX2Zyb250 cGFnZTwvaDQ+CgoJPHA+T3V0cHV0IHRleHQgaWYgd2UgYXJlIDxlbT5ub3Q8L2VtPiBvbiBh IHNlY3Rpb25zIGZyb250cGFnZSBidXQgaW4gYSBzZWN0aW9uLjwvcD4KCgk8b2wgY2xhc3M9 ImNvZGUiPgoJCTxsaT48Y29kZT4mbHQ7dHhwOmdseF9pZl9ub3Rfc2VjdGlvbl9mcm9udHBh Z2UmZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZsdDtwJmd0O1dlIGFyZSBpbiBhIHNl Y3Rpb24gYnV0IG5vdCBvbiBpdHMgZnJvbnRwYWdlJmx0Oy9wJmd0OzwvY29kZT48L2xpPgoJ CTxsaT48Y29kZT4mbHQ7L3R4cDpnbHhfaWZfbm90X3NlY3Rpb25fZnJvbnRwYWdlJmd0Ozwv Y29kZT48L2xpPgoJPC9vbD4KCgk8cD5Ob3RlISBUbyBoYXZlIHRoaXMgdG8gd29yayBvbiBt eSBvd24gcGFnZSBpbiBjb21iaW5hdGlvbiB3aXRoIGdseF9pZl9zZWN0aW9uX2Zyb250cGFn ZSwgSSBoYWQgdG8gcHV0IGl0IGFib3ZlIHRoZSBnbHhfaWZfc2VjdGlvbl9mcm9udHBhZ2Ug dGFnLjwvcD4KCgk8aDQgaWQ9ImdseF9pZl9zZWFyY2giPmdseF9pZl9zZWFyY2g8L2g0PgoK CTxwPlNheSB5b3UgaGF2ZSB5b3VyIHNlYXJjaCBpbnB1dCBvbiB5b3VyIGFyY2hpdmUgcGFn ZSBhbmQgd2FudCB0byBoYXZlIHRoZSBzZWFyY2ggaW5wdXQgYWJvdmUgdGhlIHNlYXJjaCBy ZXN1bHQsIHRoZW4geW91IGNvdWxkIHVzZSBpdCBsaWtlIHRoaXMgb24geW91ciBkZWZhdWx0 IHBhZ2UgdGVtcGxhdGU8L3A+CgoJPG9sIGNsYXNzPSJjb2RlIj4KCQk8bGk+PGNvZGU+Jmx0 O3R4cDpnbHhfaWZfc2VhcmNoJmd0OzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT4mbHQ7dHhw OnNlYXJjaF9pbnB1dCBidXR0b249IlNlYXJjaCIgc2l6ZT0iMTUiIHdyYXB0YWc9InAiIC8m Z3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZsdDsvdHhwOmdseF9pZl9zZWFyY2gmZ3Q7 PC9jb2RlPjwvbGk+Cgk8L29sPgoKCTxoNCBpZD0iZ2x4X2lmX25vdF9zZWFyY2giPmdseF9p Zl9ub3Rfc2VhcmNoPC9oND4KCgk8cD5JZiBhIHNlYXJjaCA8ZW0+bm90PC9lbT4gaGF2ZSBi ZWVuIGF0dGVtcHRlZDwvcD4KCgk8b2wgY2xhc3M9ImNvZGUiPgoJCTxsaT48Y29kZT4mbHQ7 dHhwOmdseF9pZl9ub3Rfc2VhcmNoJmd0OzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT4mbHQ7 cCZndDtJZiBubyBzZWFyY2ggaGFzIGJlZW4gZG9uZSZsdDsvcCZndDs8L2NvZGU+PC9saT4K CQk8bGk+PGNvZGU+Jmx0Oy90eHA6Z2x4X2lmX25vdF9zZWFyY2gmZ3Q7PC9jb2RlPjwvbGk+ Cgk8L29sPgoKCTxwPlRoYW5rcyB0byA8YSBocmVmPSJodHRwOi8vd3d3LnN0YXIyOS5uZXQv Ij5qYXNlPC9hPiBmb3IgdGhlIGdseF9pZl9ub3Rfc2VhcmNoIGZ1bmN0aW9uLjwvcD4KCgk8 aDQgaWQ9ImdseF9pZl9jYXRlZ29yeV9saXN0Ij5nbHhfaWZfY2F0ZWdvcnlfbGlzdDwvaDQ+ CgoJPHA+T3V0cHV0IHRleHQgaWYgd2UgYXJlIG9uIGEgY2F0ZWdvcnkgbGlzdCBwYWdlPC9w PgoKCTxvbCBjbGFzcz0iY29kZSI+CgkJPGxpPjxjb2RlPiZsdDt0eHA6Z2x4X2lmX2NhdGVn b3J5X2xpc3QmZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZsdDtwJmd0O0FydGljbGVz IGluIHRoaXMgY2F0ZWdvcnkmbHQ7L3AmZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZs dDsvdHhwOmdseF9pZl9jYXRlZ29yeV9saXN0Jmd0OzwvY29kZT48L2xpPgoJPC9vbD4KCgk8 aDQgaWQ9ImdseF9pZl9jb21tZW50c19vcGVuIj5nbHhfaWZfY29tbWVudHNfb3BlbjwvaDQ+ CgoJPHA+T3B1dHB1dCB0ZXh0IGlmIGNvbW1lbnRzIGFyZSBvcGVuLjwvcD4KCgk8b2wgY2xh c3M9ImNvZGUiPgoJCTxsaT48Y29kZT4mbHQ7dHhwOmdseF9pZl9jb21tZW50c19vcGVuJmd0 OzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT4mbHQ7dHhwOmNvbW1lbnRzX2ludml0ZSAvJmd0 OzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT4mbHQ7L3R4cDpnbHhfaWZfY29tbWVudHNfb3Bl biZndDs8L2NvZGU+PC9saT4KCTwvb2w+CgoJPGg0IGlkPSJnbHhfaWZfY29tbWVudHNfY2xv c2VkIj5nbHhfaWZfY29tbWVudHNfY2xvc2VkPC9oND4KCgk8cD5PcHV0cHV0IHRleHQgaWYg Y29tbWVudHMgYXJlIGNsb3NlZDwvcD4KCgk8cD48c3Ryb25nPkF0dHJpYnV0ZTwvc3Ryb25n PjxiciAvPgo8Y29kZT5pbmdvcmVjb21tZW50czwvY29kZT48YnIgLz4KU2V0IHRoaXMgdG8g ZmFsc2UgdG8gaWdub3JlIGlmIGNvbW1lbnRzIGhhdmUgYmVlbiBsZWZ0IGJlZm9yZS4gVGhp cyBpcyB2ZXJ5IGhhbmR5IGlmIHlvdSB3YW50IHRoaXMgdGFnIHRvIHdvcmsgd2l0aCBpZl9j b21tZW50c19jbG9zZWRfY29tbWVudHM8YnIgLz4KZGVmYXVsdCB2YWx1ZTogdHJ1ZTwvcD4K Cgk8b2wgY2xhc3M9ImNvZGUiPgoJCTxsaT48Y29kZT4mbHQ7dHhwOmdseF9pZl9jb21tZW50 c19jbG9zZWQmZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZsdDtwJmd0O0NvbW1lbnRz IGFyZSBjbG9zZWQgZm9yIHRoaXMgYXJ0aWNsZSZsdDsvcCZndDs8L2NvZGU+PC9saT4KCQk8 bGk+PGNvZGU+Jmx0Oy90eHA6Z2x4X2lmX2NvbW1lbnRzX2Nsb3NlZCZndDs8L2NvZGU+PC9s aT4KCTwvb2w+CgoJPGg0IGlkPSJnbHhfaWZfY29tbWVudHNfY2xvc2VkX2NvbW1lbnRzIj5n bHhfaWZfY29tbWVudHNfY2xvc2VkX2NvbW1lbnRzPC9oND4KCgk8cD5PcHV0cHV0IHRleHQg aWYgY29tbWVudHMgYXJlIGNsb3NlZCBidXQgdGhlcmUgaXMgY29tbWVudHMgbGVmdCBiZWZv cmUuPC9wPgoKCTxvbCBjbGFzcz0iY29kZSI+CgkJPGxpPjxjb2RlPiZsdDt0eHA6Z2x4X2lm X2NvbW1lbnRzX2Nsb3NlZF9jb21tZW50cyZndDs8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+ Jmx0O2xpJmd0O0NvbW1lbnRzIGNsb3NlZCBidXQgdGhlcmUgYXJlICZsdDt0eHA6Y29tbWVu dHNfY291bnQgLyZndDsgb2xkIGNvbW1lbnRzJmx0Oy9saSZndDs8L2NvZGU+PC9saT4KCQk8 bGk+PGNvZGU+Jmx0Oy90eHA6Z2x4X2lmX2NvbW1lbnRzX2Nsb3NlZF9jb21tZW50cyZndDs8 L2NvZGU+PC9saT4KCTwvb2w+CgoJPGg0IGlkPSJnbHhfaWZfY29tbWVudHNfY291bnQiPmds eF9pZl9jb21tZW50c19jb3VudDwvaDQ+CgoJPHA+T3B1dHB1dCB0ZXh0IGlmIGNvbW1lbnRz IGFyZSBlcXVhbCB0byBzb21ldGhpbmc8L3A+CgoJPHA+PHN0cm9uZz5BdHRyaWJ1dGU8L3N0 cm9uZz48YnIgLz4KPGNvZGU+dmFsdWU8L2NvZGU+PGJyIC8+CldoYXQgdmFsdWUgdG8gY29t cGFyZSB0bywgbXVzdCBiZSBhIGludDxiciAvPgpkZWZhdWx0IHZhbHVlOiAwPGJyIC8+Cjxj b2RlPm9wZXJhdG9yPC9jb2RlPjxiciAvPgpXaGF0IHRvIGNvbXBhcmUgd2l0aCwgdGhlIGZv bGxvd2luZyB2YWx1ZXMgYXJlIGF2YWlsYWJsZTwvcD4KCgk8b2wgY2xhc3M9ImNvZGUiPgoJ CTxsaT48Y29kZT5lcXVhbF90bzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5ub3RfZXF1YWxf dG88L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+bGVzc190aGFuPC9jb2RlPjwvbGk+CgkJPGxp Pjxjb2RlPmdyZWF0ZXJfdGhhbjwvY29kZT48L2xpPgoJCTxsaT48Y29kZT5sZXNzX3RoYW5f b3JfZXF1YWxfdG88L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Z3JlYXRlcl90aGFuX29yX2Vx dWFsX3RvPC9jb2RlPjwvbGk+Cgk8L29sPgoKCTxwPkFuZCBzb21lIGV4YW1wbGUgb2YgaG93 IHRvIHVzZSBnbHhfaWZfY29tbWVudHNfY291bnQ8L3A+CgoJPHA+RXF1YWwgdG8gMCBjb21t ZW50czwvcD4KCgk8b2wgY2xhc3M9ImNvZGUiPgoJCTxsaT48Y29kZT4mbHQ7dHhwOmdseF9p Zl9jb21tZW50c19jb3VudCBvcGVyYXRvcj0iZXF1YWxfdG8iIHZhbHVlPSIwIiZndDs8L2Nv ZGU+PC9saT4KCQk8bGk+PGNvZGU+Jmx0O3AmZ3Q7Tm8gY29tbWVudHMgeWV0LCB5b3UgY291 bGQgYmUgdGhlIGZpcnN0LiZsdDsvcCZndDs8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Jmx0 Oy90eHA6Z2x4X2lmX2NvbW1lbnRzX2NvdW50Jmd0OzwvY29kZT48L2xpPgoJPC9vbD4KCgk8 cD5FcXVhbCB0byAxIGNvbW1lbnQ8L3A+CgoJPG9sIGNsYXNzPSJjb2RlIj4KCQk8bGk+PGNv ZGU+Jmx0O3R4cDpnbHhfaWZfY29tbWVudHNfY291bnQgb3BlcmF0b3I9ImVxdWFsX3RvIiB2 YWx1ZT0iMSImZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZsdDtwJmd0O1RoZXJlIGlz IG9ubHkgb25lIGNvbW1lbnQmbHQ7L3AmZ3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPiZs dDsvdHhwOmdseF9pZl9jb21tZW50c19jb3VudCZndDs8L2NvZGU+PC9saT4KCTwvb2w+CgoJ PHA+TW9yZSB0aGFuIDIgY29tbWVudHM8L3A+CgoJPG9sIGNsYXNzPSJjb2RlIj4KCQk8bGk+ PGNvZGU+Jmx0O3R4cDpnbHhfaWZfY29tbWVudHNfY291bnQgb3BlcmF0b3I9ImdyZWF0ZXJf dGhhbiIgdmFsdWU9IjIiJmd0OzwvY29kZT48L2xpPgoJCTxsaT48Y29kZT4mbHQ7cCZndDtU aGVyZSBhcmUgbW9yZSB0aGFuIHR3byBjb21tZW50cyZsdDsvcCZndDs8L2NvZGU+PC9saT4K CQk8bGk+PGNvZGU+Jmx0Oy90eHA6Z2x4X2lmX2NvbW1lbnRzX2NvdW50Jmd0OzwvY29kZT48 L2xpPgoJPC9vbD4KCgoKCiAiO3M6NDoiY29kZSI7czo1Mjk1OiIKZnVuY3Rpb24gZ2x4X2lm X2Zyb250cGFnZSgkYXR0cywgJHRoaW5nKQp7CiAgICBnbG9iYWwgJHByZXRleHQ7CiAgICBy ZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCAkcHJldGV4dFsicyJdID09ICJkZWZhdWx0 IiAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHkoJHByZXRleHRb ImMiXSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5KCRwcmV0 ZXh0WyJxIl0pICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSgk cHJldGV4dFsicGciXSkpKTsKfQoKZnVuY3Rpb24gZ2x4X2lmX25vdF9mcm9udHBhZ2UoJGF0 dHMsICR0aGluZykKewogICAgZ2xvYmFsICRwcmV0ZXh0OwogICAgcmV0dXJuIHBhcnNlKEV2 YWxFbHNlKCR0aGluZywgJHByZXRleHRbInMiXSAhPSAiZGVmYXVsdCIgJiYKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5KCRwcmV0ZXh0WyJjIl0pICYmCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eSgkcHJldGV4dFsicSJdKSAmJgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHkoJHByZXRleHRbInBnIl0p KSk7Cn0KCmZ1bmN0aW9uIGdseF9pZl9zZWN0aW9uX2Zyb250cGFnZSgkYXR0cywgJHRoaW5n KQp7CiAgICBnbG9iYWwgJHByZXRleHQsICRpc19hcnRpY2xlX2xpc3Q7CiAgICByZXR1cm4g cGFyc2UoRXZhbEVsc2UoJHRoaW5nLCBlbXB0eSgkcHJldGV4dFsiYyJdKSAmJgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX2FydGljbGVfbGlzdCA9PSB0cnVlKSk7 Cn0KCmZ1bmN0aW9uIGdseF9pZl9ub3Rfc2VjdGlvbl9mcm9udHBhZ2UoJGF0dHMsICR0aGlu ZykKewogICAgZ2xvYmFsICRwcmV0ZXh0LCAkaXNfYXJ0aWNsZV9saXN0OwogICAgcmV0dXJu IHBhcnNlKEV2YWxFbHNlKCR0aGluZywgIWVtcHR5KCRwcmV0ZXh0WyJzIl0pICYmCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfYXJ0aWNsZV9saXN0ID09IGZhbHNl KSk7Cn0KCmZ1bmN0aW9uIGdseF9pZl9zZWFyY2goJGF0dHMsICR0aGluZykKewogICAgZ2xv YmFsICRwcmV0ZXh0OwogICAgcmV0dXJuICghZW1wdHkoJHByZXRleHRbInEiXSkpID8gcGFy c2UoJHRoaW5nKSA6ICIiOwp9CgovLyBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gYnkgamFz ZQpmdW5jdGlvbiBnbHhfaWZfbm90X3NlYXJjaCgkYXR0cywgJHRoaW5nKQp7CiAgICBnbG9i YWwgJHByZXRleHQ7CiAgICByZXR1cm4gKGVtcHR5KCRwcmV0ZXh0WydxJ10pKSA/IHBhcnNl KCR0aGluZykgOiAiIjsKfQoKZnVuY3Rpb24gZ2x4X2lmX2NhdGVnb3J5X2xpc3QoJGF0dHMs ICR0aGluZykKewogICAgZ2xvYmFsICRwcmV0ZXh0LCAkaXNfYXJ0aWNsZV9saXN0OwogICAg cmV0dXJuICghZW1wdHkoJHByZXRleHRbImMiXSkgJiYgJGlzX2FydGljbGVfbGlzdCA9PSB0 cnVlKSA/IHBhcnNlKCR0aGluZykgOiAiIjsKfQoKZnVuY3Rpb24gZ2x4X2lmX2NvbW1lbnRz X29wZW4oJGF0dHMsICR0aGluZykKewogICAgZ2xvYmFsICR0aGlzYXJ0aWNsZTsKICAgICRp ZCA9ICR0aGlzYXJ0aWNsZVsidGhpc2lkIl07CiAgICAkcnMgPSBzYWZlX3JvdygiKiIsICJ0 ZXh0cGF0dGVybiIsICJJRD0nJGlkJyBBTkQgQW5ub3RhdGU9MSIpOwogICAgJG91dHB1dCA9 ICIiOwogICAgaWYgKCRycykKICAgIHsKICAgICAgICAkb3V0cHV0ID0gcGFyc2UoJHRoaW5n KTsKICAgIH0KICAgIHJldHVybiAkb3V0cHV0Owp9CgovKgppZ25vcmVjb21tZW50czogSWYg dGhpcyBpcyBzZXQgdG8gZmFsc2UgdGhlIHBsdWdpbiB3aWxsIGluZ25vcmUgYW55CmNvbW1l bnRzLCBpZiBzZXQgdG8gdHJ1ZSB0aGUgdGV4dCB3aWxsIG9ubHkgc2hvdyBpZiB0aGVyZSBp cyBubwpjb21tZW50cyBhbHJlYWR5LiBJdCBpcyBmYWxzZSBhcyBkZWZhdWx0CiovCmZ1bmN0 aW9uIGdseF9pZl9jb21tZW50c19jbG9zZWQoJGF0dHMsICR0aGluZykKewogICAgaWYgKGlz X2FycmF5KCRhdHRzKSkgZXh0cmFjdCgkYXR0cyk7CiAgICBnbG9iYWwgJHRoaXNhcnRpY2xl OwogICAgJGlnbm9yZUNvbW1lbnRzID0gKGVtcHR5KCRpZ25vcmVjb21tZW50cykpID8gZmFs c2UgOiB0cnVlOwogICAgJGlkID0gJHRoaXNhcnRpY2xlWyJ0aGlzaWQiXTsKICAgICRvdXRw dXQgPSAiIjsKICAgICRycyA9IHNhZmVfcm93KCIqIiwgInRleHRwYXR0ZXJuIiwgIklEPSAk aWQgQU5EIEFubm90YXRlPTAiKTsKICAgIGlmICgkcnMpCiAgICB7CiAgICAgICAgaWYgKCRp Z25vcmVDb21tZW50cykKICAgICAgICB7CiAgICAgICAgICAgICRyczIgPSBzYWZlX3Jvdygi Q09VTlQoIGRpc2N1c3NpZCApIEFTIG51bV9vZl9jb21tZW50cyIsICJ0eHBfZGlzY3VzcyIs ICJwYXJlbnRpZCA9ICRpZCIpOwogICAgICAgICAgICBpZiAoJHJzMikKICAgICAgICAgICAg ewogICAgICAgICAgICAgICAgaWYgKCRyczJbMF0gPT0gMCkKICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAkb3V0cHV0ID0gcGFyc2UoJHRoaW5nKTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAg ewogICAgICAgICAgICAkb3V0cHV0ID0gcGFyc2UoJHRoaW5nKTsKICAgICAgICB9CiAgICB9 CiAgICByZXR1cm4gJG91dHB1dDsKfQoKLyoKSWYgdGhpcyB0YWcgaXMgbm90IGVuY2xvc2Vk IHdpdGggb3RoZXIgdGFncyBvciB0ZXh0IGl0IHdpbGwgb3V0cHV0CmhvdyBtYW55IGNvbW1l bnRzIHRoYXQgaGFzIGJlZW4gcmVjb3JkZWQgYmVmb3JlIHRoZSBhcnRpY2xlIHdhcyBjbG9z ZWQuCndlbGwsIHRoYXQgZGlkbnQgd29yayB2ZXJ5IHdlbGwgc28gdGhhdCBsaW5lcyBhcmUg anVzdCBjb21tZW50ZWQgb3V0LgppbnN0ZWFkIGp1c3QgdXNlIDx0eHA6Y29tbWVudHNfY291 bnQgLz4KKi8KZnVuY3Rpb24gZ2x4X2lmX2NvbW1lbnRzX2Nsb3NlZF9jb21tZW50cygkYXR0 cywgJHRoaW5nID0iIikKewogICAgaWYgKGlzX2FycmF5KCRhdHRzKSkgZXh0cmFjdCgkYXR0 cyk7CiAgICBnbG9iYWwgJHRoaXNhcnRpY2xlOwogICAgJGlkID0gJHRoaXNhcnRpY2xlWyJ0 aGlzaWQiXTsKICAgICRudW1PZkNvbW1lbnRzID0gMDsKICAgICRvdXRwdXQgPSAiIjsKICAg ICRycyA9IGdldFJvdygiU0VMRUNUIENPVU5UKCAiLlBGWC4idHhwX2Rpc2N1c3MuZGlzY3Vz c2lkICkgQVMgbnVtX29mX2NvbW1lbnRzCiAgICAgICAgICAgICAgICAgIEZST00gIi5QRlgu InR4cF9kaXNjdXNzCiAgICAgICAgICAgICAgICAgIExFRlQgSk9JTiAiLlBGWC4idGV4dHBh dHRlcm4gT04gIi5QRlguInR4cF9kaXNjdXNzLnBhcmVudGlkID0gIi5QRlguInRleHRwYXR0 ZXJuLklECiAgICAgICAgICAgICAgICAgIFdIRVJFICIuUEZYLiJ0ZXh0cGF0dGVybi5JRCA9 ICRpZCBBTkQgIi5QRlguInRleHRwYXR0ZXJuLkFubm90YXRlID0gMCIpOwogICAgaWYgKCRy cykKICAgIHsKICAgICAgICBmb3JlYWNoICgkcnMgYXMgJHJvdykKICAgICAgICB7CiAgICAg ICAgICAgIGlmICgkcm93WzBdICE9IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg IC8vJG51bU9mQ29tbWVudHMgPSAkcm93WzBdOwogICAgICAgICAgICAgICAgJG91dHB1dCA9 IHBhcnNlKCR0aGluZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAvL3Jl dHVybiAoJHRoaW5nKSA/ICRvdXRwdXQgOiAoJG51bU9mQ29tbWVudHMgIT0gMCkgPyAiJG51 bU9mQ29tbWVudHMiIDogIiI7CiAgICByZXR1cm4gJG91dHB1dDsKfQoKLyoKVGhpcyBmdW5j dGlvbiB3YXMgcmVxdWVzdGVkIG9uIHRoZSBUWFAgRm9ydW0gYnkgbGVlLgpJdCB0YWtlcyB0 d28gYXR0cmlidXRlcwp2YWx1ZTogdGhlIHZhbHVlIHRvIGNvbXBhcmUgd2l0aApvcGVyYXRv cjogaG93IHRvIGNvbWFwYXJlCiovCmZ1bmN0aW9uIGdseF9pZl9jb21tZW50c19jb3VudCgk YXR0cywgJHRoaW5nKQp7CiAgICBpZiAoaXNfYXJyYXkoJGF0dHMpKSBleHRyYWN0KCRhdHRz KTsKICAgIGdsb2JhbCAkdGhpc2FydGljbGU7CgogICAgJHZhbHVlID0gKGVtcHR5KCR2YWx1 ZSkpID8gMCA6ICR2YWx1ZTsKICAgICRvcGVyYXRvciA9IChlbXB0eSgkb3BlcmF0b3IpKSA/ ICIiIDogJG9wZXJhdG9yOwogICAgJG91dHB1dCA9ICIiOwoKICAgIHN3aXRjaCAoJG9wZXJh dG9yKQogICAgewogICAgICAgIGNhc2UgImVxdWFsX3RvIjoKICAgICAgICAgICAgaWYgKCR2 YWx1ZSA9PSAkdGhpc2FydGljbGVbJ2NvbW1lbnRzX2NvdW50J10pCiAgICAgICAgICAgICAg ICAkb3V0cHV0ID0gcGFyc2UoJHRoaW5nKTsKICAgICAgICBicmVhazsKICAgICAgICBjYXNl ICJub3RfZXF1YWxfdG8iOgogICAgICAgICAgICBpZigkdmFsdWUgIT0gJHRoaXNhcnRpY2xl Wydjb21tZW50c19jb3VudCddKQogICAgICAgICAgICAgICAgJG91dHB1dCA9IHBhcnNlKCR0 aGluZyk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAibGVzc190aGFuIjoKICAgICAg ICAgICAgaWYgKCR2YWx1ZSA8ICR0aGlzYXJ0aWNsZVsnY29tbWVudHNfY291bnQnXSkKICAg ICAgICAgICAgJG91dHB1dCA9IHBhcnNlKCR0aGluZyk7CiAgICAgICAgYnJlYWs7CiAgICAg ICAgY2FzZSAiZ3JlYXRlcl90aGFuIjoKICAgICAgICAgICAgaWYgKCR2YWx1ZSA8ICR0aGlz YXJ0aWNsZVsnY29tbWVudHNfY291bnQnXSkKICAgICAgICAgICAgJG91dHB1dCA9IHBhcnNl KCR0aGluZyk7CiAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAibGVzc190aGFuX29yX2Vx dWFsX3RvIjoKICAgICAgICAgICAgaWYgKCR2YWx1ZSA8PSAkdGhpc2FydGljbGVbJ2NvbW1l bnRzX2NvdW50J10pCiAgICAgICAgICAgICRvdXRwdXQgPSBwYXJzZSgkdGhpbmcpOwogICAg ICAgIGJyZWFrOwogICAgICAgIGNhc2UgImdyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byI6CiAg ICAgICAgICAgIGlmICgkdmFsdWUgPj0gJHRoaXNhcnRpY2xlWydjb21tZW50c19jb3VudCdd KQogICAgICAgICAgICAkb3V0cHV0ID0gcGFyc2UoJHRoaW5nKTsKICAgICAgICBicmVhazsK ICAgIH0KCiAgICByZXR1cm4gJG91dHB1dDsKfQoKZnVuY3Rpb24gZ2x4X2lmX2ltYWdlX2Rp c3BsYXkoJGF0dHMsICR0aGluZykKewogICAgZ2xvYmFsICRwOwogICAgcmV0dXJuIHBhcnNl KEV2YWxFbHNlKCR0aGluZywgIWVtcHR5KCRwKSkpOwp9CmZ1bmN0aW9uIGdseF9pZl9ub3Rf aW1hZ2VfZGlzcGxheSgkYXR0cywgJHRoaW5nKQp7CiAgICBnbG9iYWwgJHA7CiAgICByZXR1 cm4gcGFyc2UoRXZhbEVsc2UoJHRoaW5nLCBlbXB0eSgkcCkpKTsKfQoiO3M6MzoibWQ1Ijtz OjMyOiIwODJhY2ZmYjNlMjIwMmJjNDNjNWM1MzRiMzc1NTdiOSI7fQ==