# Name: soo_required_files v0.2.7 # Type: Admin/Client side plugin # Load JavaScript and CSS files per article # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE4OiJzb29fcmVxdWlyZWRfZmlsZXMiO3M6NjoiYXV0aG9y IjtzOjg6IkplZmYgU29vIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI1OiJodHRwOi8vaXBzZWRp eGl0Lm5ldC90eHAvIjtzOjc6InZlcnNpb24iO3M6NToiMC4yLjciO3M6MTE6ImRlc2NyaXB0 aW9uIjtzOjQxOiJMb2FkIEphdmFTY3JpcHQgYW5kIENTUyBmaWxlcyBwZXIgYXJ0aWNsZSI7 czo0OiJoZWxwIjtzOjEyNDMxOiI8aDE+c29vX3JlcXVpcmVkX2ZpbGVzPC9oMT4KCjxwPlRo aXMgaXMgYSBwbHVnaW4gZm9yIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5jb20iPlRl eHRwYXR0ZXJuPC9hPi48L3A+Cgo8dWw+Cgk8bGk+PGEgaHJlZj0iaHR0cHM6Ly9mb3J1bS50 ZXh0cGF0dGVybi5pby92aWV3dG9waWMucGhwP2lkPTMwNzIwIj5TdXBwb3J0IGZvcnVtIHRv cGljPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzc0 L3Nvb19yZXF1aXJlZF9maWxlcyI+QXV0aG9yIHNpdGU8L2E+PC9saT4KCTxsaT48YSBocmVm PSJodHRwczovL2dpdGh1Yi5jb20vanNvby9zb29fcmVxdWlyZWRfZmlsZXMiPkdpdEh1Yjwv YT48L2xpPgo8L3VsPgoKPGRpdiBpZD0idG9jIj4KCjxoMj5Db250ZW50czwvaDI+Cgo8dWw+ Cgk8bGk+PGEgaHJlZj0iI292ZXJ2aWV3Ij5PdmVydmlldzwvYT48L2xpPgoJPGxpPjxhIGhy ZWY9IiNyZXF1aXJlbWVudHMiPlJlcXVpcmVtZW50czwvYT48L2xpPgoJPGxpPjxhIGhyZWY9 IiNpbnN0YWxsYXRpb24iPkluc3RhbGxhdGlvbjwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0i I3VwZ3JhZGluZyI+VXBncmFkaW5nPC9hPjwvbGk+Cgk8L3VsPjwvbGk+Cgk8bGk+PGEgaHJl Zj0iI3VzYWdlIj5Vc2FnZTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI2F0dHJpYnV0ZXMi PkF0dHJpYnV0ZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3Blci1wYWdlIj5QZXItcGFn ZSBsb2FkaW5nPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNwZXItc2VjdGlvbiI+UGVyLXNl Y3Rpb24gbG9hZGluZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcGVyLWFydGljbGUiPlBl ci1hcnRpY2xlIGxvYWRpbmc8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3RhZy1jb250ZW50 cyI+TG9hZGluZyB0YWcgY29udGVudHM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2xvYWQt b3JkZXIiPkxvYWQgb3JkZXI8L2E+PC9saT4KCTwvdWw+PC9saT4KCTxsaT48YSBocmVmPSIj ZGVmYXVsdHMiPlByZWZlcmVuY2VzICZhbXA7IGRlZmF1bHRzPC9hPjwvbGk+Cgk8bGk+PGEg aHJlZj0iI2V4YW1wbGVzIj5FeGFtcGxlczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9IiNoaXN0 b3J5Ij5IaXN0b3J5PC9hPjwvbGk+CjwvdWw+Cgo8L2Rpdj4KCjxoMiBpZD0ib3ZlcnZpZXci Pk92ZXJ2aWV3PC9oMj4KCjxwPkF1dG9tYXRpYyBsb2FkaW5nIG9mIDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+IGFuZCBKYXZhU2NyaXB0IGZpbGVzIGluIHRoZSBwYWdlIDxjb2Rl PiZsdDtoZWFkJmd0OzwvY29kZT4gKG9yIGFueXdoZXJlIHlvdSBsaWtlKS4gRm9yIGJhY2tn cm91bmQsIHNlZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvNzMvYXJ0aWNs ZS1zcGVjaWZpYy1jc3MtamF2YXNjcmlwdC1pbi10ZXh0cGF0dGVybiI+QXJ0aWNsZS1zcGVj aWZpYyA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiAmYW1wOyBKYXZhU2NyaXB0IGlu IFRleHRwYXR0ZXJuPC9hPi48L3A+Cgo8cD48c3Ryb25nPnNvb19yZXF1aXJlZF9maWxlczwv c3Ryb25nPiBoYXMgZm91ciBvcHRpb25zIGZvciBsb2FkaW5nIGZpbGVzIGFuZCBmb3Jtczo8 L3A+Cgo8dWw+Cgk8bGk+YWxsIGNvbnRleHRzIChieSB0YWcgY29udGVudHMpPC9saT4KCTxs aT5wZXIgcGFnZSAoZm9yIGZpbGVzIHdpdGggbWF0Y2hpbmcgbmFtZXMpPC9saT4KCTxsaT5w ZXIgc2VjdGlvbiAoZm9yIGZpbGVzIHdpdGggbWF0Y2hpbmcgbmFtZXMpPC9saT4KCTxsaT5w ZXIgYXJ0aWNsZSAoYnkgY3VzdG9tIGZpZWxkKTwvbGk+CjwvdWw+Cgo8cD5UaGVzZSBtYXkg YmUgdXNlZCBpbiBhbnkgY29tYmluYXRpb24uPC9wPgoKPGgyIGlkPSJyZXF1aXJlbWVudHMi PlJlcXVpcmVtZW50czwvaDI+Cgo8cD5ObyBzcGVjaWFsIHJlcXVpcmVtZW50cywgZXhjZXB0 IHRoYXQgcGVyLWFydGljbGUgdXNlIDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+cmVxdWlyZXM8 L3NwYW4+IGEgY3VzdG9tIGZpZWxkIChuYW1lZCA8c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+ IGJ5IGRlZmF1bHQpLjwvcD4KCjxwPkFsbCBteSBwbHVnaW5zIGFyZSBnZW5lcmFsbHkgZGV2 ZWxvcGVkIGluIHRoZSBsYXRlc3QgVHhwIHB1YmxpYyByZWxlYXNlIGFuZCBtYXkgbm90IGhh dmUgYmVlbiB0ZXN0ZWQgaW4gZWFybGllciB2ZXJzaW9ucy48L3A+Cgo8cD48c3Ryb25nPnNv b19yZXF1aXJlZF9maWxlczwvc3Ryb25nPiBpcyBjb21wYXRpYmxlIHdpdGggPGEgaHJlZj0i aHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzkyL3Nvb19wbHVnaW5fcHJlZiI+c29vX3BsdWdp bl9wcmVmPC9hPiwgd2hpY2ggPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlczwvc3Bh bj4gVHhwIHZlcnNpb24gNC4yLjAgb3IgZ3JlYXRlci48L3A+Cgo8aDIgaWQ9Imluc3RhbGxh dGlvbiI+SW5zdGFsbGF0aW9uPC9oMj4KCjxwPkZvciBwZXItYXJ0aWNsZSBmaWxlIGFuZCBm b3JtIGxvYWRpbmcsIDxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0dGVybi5uZXQv d2lraS9pbmRleC5waHA/dGl0bGU9QWR2YW5jZWRfUHJlZmVyZW5jZXMjQ3VzdG9tX0ZpZWxk cyI+bmFtZSBvbmUgb2YgeW91ciBjdXN0b20gZmllbGRzPC9hPiAmIzgyMjA7UmVxdWlyZXMm IzgyMjE7LiAoSWYgeW91IHdpc2ggdG8gbmFtZSBpdCBzb21ldGhpbmcgZWxzZSwgY2hhbmdl IHRoZSBjdXN0b20gZmllbGQgc2V0dGluZyBpbiBwbHVnaW4gcHJlZmVyZW5jZXMgKHNlZSA8 YSBocmVmPSIjZGVmYXVsdHMiPlByZWZlcmVuY2VzICZhbXA7IGRlZmF1bHRzPC9hPiwgYmVs b3cuKTwvcD4KCjxwPkluc3RhbGwgdGhlIG9wdGlvbmFsIDxhIGhyZWY9Imh0dHA6Ly9pcHNl ZGl4aXQubmV0L3R4cC85Mi9zb29fcGx1Z2luX3ByZWYiPnNvb19wbHVnaW5fcHJlZjwvYT4g aWYgeW91IHdhbnQgdG8gY2hhbmdlIGRlZmF1bHQgc2V0dGluZ3MgKFR4cCB2ZXJzaW9uIDQu Mi4wIG9yIGdyZWF0ZXIgPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5yZXF1aXJlZDwvc3Bhbj4p LjwvcD4KCjxoMyBpZD0idXBncmFkaW5nIj5VcGdyYWRpbmcgZnJvbSAwLjEuMTwvaDM+Cgo8 cD5JZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gMC4xLjEgd2l0aCA8c3Ryb25n PnNvb19wbHVnaW5fcHJlZjwvc3Ryb25nPiwgY2hlY2sgcHJlZmVyZW5jZXMgYWZ0ZXIgaW5z dGFsbGF0aW9uLiBUd28gYXR0cmlidXRlIG5hbWVzIGhhdmUgYmVlbiBjaGFuZ2VkIGluIHRo aXMgdmVyc2lvbiwgbWVhbmluZyBhbnkgY3VzdG9tIHNldHRpbmdzIGZvciB0aG9zZSBhdHRy aWJ1dGVzIChkZWZhdWx0IGpzIGFuZCBjc3MgZGlyZWN0b3JpZXMpIHdpbGwgYmUgb3Zlcndy aXR0ZW4gb24gdXBncmFkZS48L3A+Cgo8aDM+VXBncmFkaW5nIHRvIDAuMi42PC9oMz4KCjxw PlZlcnNpb24gMC4yLjYgYWRkcyBhIG5ldyBwcmVmZXJlbmNlLCA8Y29kZT5odG1sX3ZlcnNp b248L2NvZGU+LiBJZiB5b3UgYXJlIHJ1bm5pbmcgPHN0cm9uZz5zb29fcGx1Z2luX3ByZWY8 L3N0cm9uZz4sIGFmdGVyIGluc3RhbGxpbmcgdGhlIG5ldyB2ZXJzaW9uIG9mIDxzdHJvbmc+ c29vX3JlcXVpcmVkX2ZpbGVzPC9zdHJvbmc+IHlvdSBtdXN0IGRpc2FibGUgYW5kIHJlLWVu YWJsZSBpdCB0byBpbnN0YWxsIHRoZSBwcmVmZXJlbmNlLiAoVGhlIG5ldyBwcmVmZXJlbmNl IHdpbGwgZnVuY3Rpb24gYXQgaXRzIGRlZmF1bHQgdmFsdWUgZXZlbiBpZiB5b3UgZG9uJiM4 MjE3O3QgZG8gdGhpcy4pPC9wPgoKPGgzPlVwZ3JhZGluZyB0byAwLjIuNzwvaDM+Cgo8cD5P b3BzLCBJIHJlYWxseSBkaWRuJiM4MjE3O3QgbmVlZCB0byBhZGQgdGhhdCBwcmVmZXJlbmNl IHRvIDAuMi42LiBWZXJzaW9uIDAuMi43IHJlbW92ZXMgaXQsIGluIGZhdm9yIG9mIHRoZSBn bG9iYWwgZG9jdHlwZSBwcmVmZXJlbmNlLiBTbyBpZiB5b3UgcHJldmlvdXNseSBpbnN0YWxs ZWQgb3IgdXBncmFkZWQgdG8gMC4yLjYgYW5kIGFyZSBydW5uaW5nIDxzdHJvbmc+c29vX3Bs dWdpbl9wcmVmPC9zdHJvbmc+LCB0byBkcm9wIHRoZSBub3ctdXNlbGVzcyBwcmVmZXJlbmNl IGZyb20gdGhlIGRhdGFiYXNlLCBhZnRlciB1cGdyYWRpbmcgdG8gMC4yLjcsIGRpc2FibGUg YW5kIHJlLWVuYWJsZSB0aGUgcGx1Z2luLiBTb3JyeSBhYm91dCB0aGF0LjwvcD4KCjxoMiBp ZD0idXNhZ2UiPlVzYWdlPC9oMj4KCjxwPlBsYWNlIHRoZSA8Y29kZT5zb29fcmVxdWlyZWRf ZmlsZXM8L2NvZGU+IHRhZyBpbiB0aGUgcGFnZSA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+ LiBJdCB3b3JrcyBhcyBlaXRoZXIgYSBzaW5nbGUgb3IgY29udGFpbmVyIHRhZzo8L3A+Cgo8 cHJlPiZsdDt0eHA6c29vX3JlcXVpcmVkX2ZpbGVzIC8mZ3Q7PC9wcmU+Cgo8cD5vcjwvcD4K CjxwcmU+Jmx0O3R4cDpzb29fcmVxdWlyZWRfZmlsZXMmZ3Q7CgkmbHQ7IS0tIGNvbW1hLXNl cGFyYXRlZCBsaXN0IG9mIGZpbGUgYW5kIGZvcm0gbmFtZXMgLS0mZ3Q7CiZsdDsvdHhwOnNv b19yZXF1aXJlZF9maWxlcyZndDs8L3ByZT4KCjxoMyBpZD0iYXR0cmlidXRlcyI+QXR0cmli dXRlczwvaDM+Cgo8cD5Zb3UgY2FuIG92ZXJyaWRlIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMg d2l0aCBpdHMgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGU7IHRoZSBmb2xsb3dpbmcgYXJlIHRo ZSBvbmVzIHlvdSBtaWdodCBhY3R1YWxseSB3YW50IHRvIHNldCB0aGlzIHdheTo8L3A+Cgo8 dWw+Cgk8bGk+PGNvZGU+cGVyX3BhZ2U8L2NvZGU+IDxlbT4oYm9vbGVhbik8L2VtPiBXaGV0 aGVyIHRvIGVuYWJsZSBwZXItcGFnZSBsb2FkaW5nPC9saT4KCTxsaT48Y29kZT5wZXJfc2Vj dGlvbjwvY29kZT4gPGVtPihib29sZWFuKTwvZW0+IFdoZXRoZXIgdG8gZW5hYmxlIHBlci1z ZWN0aW9uIGxvYWRpbmc8L2xpPgo8L3VsPgoKPGgzIGlkPSJwZXItcGFnZSI+UGVyLXBhZ2Ug bG9hZGluZzwvaDM+Cgo8cD5XaGVuIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIGVpdGhlciB0 aHJvdWdoIDxhIGhyZWY9IiNkZWZhdWx0cyI+cHJlZmVyZW5jZXM8L2E+IG9yIGJ5IHRoZSA8 Y29kZT5wZXJfcGFnZTwvY29kZT4gYXR0cmlidXRlLCB0aGUgcGx1Z2luIHdpbGwgbG9vayBm b3IgYSBjc3MgYW5kIGEganMgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGN1cnJl bnQgcGFnZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjdXJyZW50IHNlY3Rpb24gdXNlcyBhIHBh Z2UgY2FsbGVkICYjODIyMDthcnRpY2xlJiM4MjIxOywgdGhlIHBsdWdpbiB3aWxsIGxvb2sg Zm9yIGZpbGVzIG5hbWVkICYjODIyMDthcnRpY2xlLmNzcyYjODIyMTsgYW5kICYjODIyMDth cnRpY2xlLmpzJiM4MjIxOyBpbiB0aGVpciByZXNwZWN0aXZlIGRpcmVjdG9yaWVzLjwvcD4K CjxoMyBpZD0icGVyLXNlY3Rpb24iPlBlci1zZWN0aW9uIGxvYWRpbmc8L2gzPgoKPHA+V29y a3MgdGhlIHNhbWUgYXMgcGVyLXBhZ2UgbG9hZGluZywgZXhjZXB0IGJhc2VkIG9uIHRoZSBj dXJyZW50IHNlY3Rpb24gbmFtZSAoYW5kIHRoZSA8Y29kZT5wZXJfc2VjdGlvbjwvY29kZT4g YXR0cmlidXRlL3ByZWZlcmVuY2UpLjwvcD4KCjxoMyBpZD0icGVyLWFydGljbGUiPlBlci1h cnRpY2xlIGxvYWRpbmc8L2gzPgoKPHA+VGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4g ZmllbGQgdGFrZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4gTGlzdCBpdGVtcyBjYW4gaW5j bHVkZTo8L3A+Cgo8dWw+Cgk8bGk+SmF2YVNjcmlwdCBmaWxlIG5hbWVzIChlLmcuLCAmIzgy MjA7c2NyaXB0LmpzJiM4MjIxOyk8L2xpPgoJPGxpPjxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGZpbGUgbmFtZXMgKGUuZywgJiM4MjIwO3N0eWxlLmNzcyYjODIyMTspPC9saT4K CTxsaT5UeHAgZm9ybSBuYW1lczwvbGk+CjwvdWw+Cgo8cD5BbnkgaXRlbSBlbmRpbmcgaW4g JiM4MjIwOy5qcyYjODIyMTsgaXMgYXNzdW1lZCB0byBiZSBhIEphdmFTY3JpcHQgZmlsZS4g SXQgd2lsbCByZXN1bHQgaW4gYSA8Y29kZT4mbHQ7c2NyaXB0Jmd0OzwvY29kZT4gZWxlbWVu dCBsb2FkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkZWZhdWx0IEphdmFTY3Jp cHQgZGlyZWN0b3J5IChzZWUgPGEgaHJlZj0iI2RlZmF1bHRzIj5EZWZhdWx0czwvYT4sIGJl bG93KS48L3A+Cgo8cD5BbnkgaXRlbSBlbmRpbmcgaW4gJiM4MjIwOy5jc3MmIzgyMjE7IGlz IGFzc3VtZWQgdG8gYmUgYSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBmaWxlLiBJ dCB3aWxsIHJlc3VsdCBpbiBhIDxjb2RlPiZsdDtsaW5rJmd0OzwvY29kZT4gZWxlbWVudCBs b2FkaW5nIHRoZSBzcGVjaWZpZWQgZmlsZSBpbiB0aGUgZGVmYXVsdCA8c3BhbiBjbGFzcz0i Y2FwcyI+Q1NTPC9zcGFuPiBkaXJlY3RvcnkgKHNlZSA8YSBocmVmPSIjZGVmYXVsdHMiPkRl ZmF1bHRzPC9hPiwgYmVsb3cpLjwvcD4KCjxwPkFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0 byBiZSB0aGUgbmFtZSBvZiBhIFR4cCBmb3JtLiBUaGUgcGx1Z2luIHdpbGwgYXR0ZW1wdCB0 byBvdXRwdXQgdGhlIG5hbWVkIGZvcm0gKGZpcnN0IGFkZGluZyB0aGUgZGVmYXVsdCBwcmVm aXg7IHNlZSA8YSBocmVmPSIjZGVmYXVsdHMiPkRlZmF1bHRzPC9hPiwgYmVsb3cpLjwvcD4K CjxoMyBpZD0idGFnLWNvbnRlbnRzIj5Mb2FkaW5nIHRhZyBjb250ZW50czwvaDM+Cgo8cD5J ZiB5b3UgdXNlIDxjb2RlPnNvb19yZXF1aXJlZF9maWxlczwvY29kZT4gYXMgYSBjb250YWlu ZXIsIHRoZSB0YWcgY29udGVudHMgYXJlIHRyZWF0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHRo ZSA8c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+IGZpZWxkIGNvbnRlbnRzLCBhYm92ZS4gVGhh dCBpcywgdGhlIHRhZyBjb250ZW50cyBzaG91bGQgYmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlz dCBhbmQgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBjc3MgZmlsZXMsIGpzIGZpbGVzLCBh bmQgVHhwIGZvcm0gbmFtZXMuPC9wPgoKPHA+QXMgb2YgdmVyc2lvbiAwLjIuMiB5b3UgY2Fu IGluY2x1ZGUgVHhwIHRhZ3MgaW4gdGhlIHRhZyBjb250ZW50cywgYWxsb3dpbmcgZS5nLiBU eHAgY29uZGl0aW9uYWwgdGFncyBmb3IgZnVydGhlciBhdXRvbWF0aW9uIG9wdGlvbnMuPC9w PgoKPGgzIGlkPSJsb2FkLW9yZGVyIj5Mb2FkIG9yZGVyPC9oMz4KCjxwPkZpbGVzIGFuZCBm b3JtcyBhcmUgbG9hZGVkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6PC9wPgoKPG9sPgoJPGxp PlRhZyBjb250ZW50czwvbGk+Cgk8bGk+UGVyLXBhZ2UgZmlsZXM8L2xpPgoJPGxpPlBlci1z ZWN0aW9uIGZpbGVzPC9saT4KCTxsaT48c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+IGZpZWxk IGNvbnRlbnRzPC9saT4KPC9vbD4KCjxoMiBpZD0iZGVmYXVsdHMiPlByZWZlcmVuY2VzICZh bXA7IGRlZmF1bHRzPC9oMj4KCjxwPllvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVl cyBmb3IgdmFyaW91cyBzZXR0aW5ncyBhbmQgYXR0cmlidXRlcyBieSBpbnN0YWxsaW5nIHRo ZSA8YSBocmVmPSJodHRwOi8vaXBzZWRpeGl0Lm5ldC90eHAvOTIvc29vX3BsdWdpbl9wcmVm Ij5zb29fcGx1Z2luX3ByZWY8L2E+IHBsdWdpbi4gT25jZSBpbnN0YWxsZWQgeW91IGNhbiBh Y2Nlc3MgdGhlIHByZWZlcmVuY2VzIDxhIGhyZWY9Imh0dHA6Ly90ZXh0Ym9vay50ZXh0cGF0 dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9UGx1Z2lucyNQYW5lbF9sYXlvdXRfLjI2 X2NvbnRyb2xzIj5ieSBjbGlja2luZyB0aGUgPHN0cm9uZz5PcHRpb25zPC9zdHJvbmc+IGxp bmsgZm9yIDxzdHJvbmc+c29vX3JlcXVpcmVkX2ZpbGVzPC9zdHJvbmc+IGluIHRoZSBwbHVn aW4gbGlzdDwvYT4uPC9wPgoKPHA+VGhlIGluaXRpYWwgZGVmYXVsdHMgYXJlOjwvcD4KCjx0 YWJsZT4KCQk8dHI+CgkJCTx0aD5BdHRyaWJ1dGU8L3RoPgoJCQk8dGg+RGVzY3JpcHRpb248 L3RoPgoJCQk8dGg+RGVmYXVsdDwvdGg+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD48Y29kZT5j dXN0b21fZmllbGQ8L2NvZGU+PC90ZD4KCQkJPHRoPkN1c3RvbSBmaWVsZCBuYW1lPC90aD4K CQkJPHRkPjxrYmQ+UmVxdWlyZXM8L2tiZD48L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+ PGNvZGU+Y3NzX2RpcjwvY29kZT48L3RkPgoJCQk8dGg+PHNwYW4gY2xhc3M9ImNhcHMiPkNT Uzwvc3Bhbj4gZGlyZWN0b3J5PC90aD4KCQkJPHRkPjxrYmQ+Y3NzLzwva2JkPjwvdGQ+CgkJ PC90cj4KCQk8dHI+CgkJCTx0ZD48Y29kZT5qc19kaXI8L2NvZGU+PC90ZD4KCQkJPHRoPkpT IGRpcmVjdG9yeTwvdGg+CgkJCTx0ZD48a2JkPmpzLzwva2JkPjwvdGQ+CgkJPC90cj4KCQk8 dHI+CgkJCTx0ZD48Y29kZT5mb3JtX3ByZWZpeDwvY29kZT48L3RkPgoJCQk8dGg+Rm9ybS1u YW1lIHByZWZpeDwvdGg+CgkJCTx0ZD48a2JkPnJlcXVpcmVfPC9rYmQ+PC90ZD4KCQk8L3Ry PgoJCTx0cj4KCQkJPHRkPjxjb2RlPnBlcl9wYWdlPC9jb2RlPjwvdGQ+CgkJCTx0aD5QZXIt cGFnZSBsb2FkaW5nPC90aD4KCQkJPHRkPk5vPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRk Pjxjb2RlPnBlcl9zZWN0aW9uPC9jb2RlPjwvdGQ+CgkJCTx0aD5QZXItc2VjdGlvbiBsb2Fk aW5nPC90aD4KCQkJPHRkPk5vPC90ZD4KCQk8L3RyPgo8L3RhYmxlPgoKPGgyIGlkPSJleGFt cGxlcyI+RXhhbXBsZXM8L2gyPgoKPGgzPlVzaW5nIHRoZSBSZXF1aXJlcyBmaWVsZDwvaDM+ Cgo8cD5XaXRoIGRlZmF1bHRzIGFzIGFib3ZlLCBlbnRlcmluZyA8a2JkPnNjcmlwdDEuanMs IHN0eWxlMS5jc3MsIGZvbyA8L2tiZD4gaW4gdGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9u Zz4gZmllbGQgd2lsbCBnZXQgPGNvZGU+Jmx0O3R4cDpzb29fcmVxdWlyZWRfZmlsZXMgLyZn dDs8L2NvZGU+IHRvIG91dHB1dCBzb21ldGhpbmcgbGlrZTo8L3A+Cgo8cHJlPiZsdDtzY3Jp cHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90O2h0dHA6Ly9l eGFtcGxlLmNvbS9qcy9zY3JpcHQxLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7 bGluayByZWw9JnF1b3Q7c3R5bGVzaGVldCZxdW90OyB0eXBlPSZxdW90O3RleHQvY3NzJnF1 b3Q7IGhyZWY9JnF1b3Q7aHR0cDovL2V4YW1wbGUuY29tL2Nzcy9zdHlsZTEuY3NzJnF1b3Q7 IC8mZ3Q7PC9wcmU+Cgo8cD5mb2xsb3dlZCBieSB3aGF0ZXZlciBpcyBpbiB0aGUgZm9ybSBu YW1lZCAmIzgyMjA7cmVxdWlyZV9mb28mIzgyMjE7LjwvcD4KCjxwPkZvcm1zIGFyZSBlc3Bl Y2lhbGx5IHVzZWZ1bCBmb3IgcHJlc2V0IGNvbWJpbmF0aW9ucyBvZiBmaWxlcy4gRm9yIGV4 YW1wbGUsIHNvbWUgc2NyaXB0cyAoZS5nLiA8YSBocmVmPSJodHRwOi8vd3d3LnNoYWRvd2Jv eC1qcy5jb20vIj5TaGFkb3dib3g8L2E+KSByZXF1aXJlIGEgbWl4IG9mIEphdmFTY3JpcHQg YW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGZpbGVzLiBQdXR0aW5nIHRoZSBh cHByb3ByaWF0ZSA8Y29kZT4mbHQ7c2NyaXB0Jmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDts aW5rJmd0OzwvY29kZT4gZWxlbWVudHMgaW4gYSBmb3JtIGFsbG93cyB5b3UgdG8gY2FsbCB0 aGlzIHVwIHdpdGggYSBzaW5nbGUgZW50cnkgaW4gdGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0 cm9uZz4gZmllbGQuIFNvIHRvIGxvYWQgbXkgJiM4MjIwO3JlcXVpcmVfU2hhZG93Ym94JiM4 MjIxOyBmb3JtICh3aGljaCBsb2FkcyB0aGUgc2NyaXB0cyBhbmQgPHNwYW4gY2xhc3M9ImNh cHMiPkNTUzwvc3Bhbj4gcmVxdWlyZWQgZm9yIFNoYWRvd2JveCksIEkgZW50ZXIgPGtiZD5T aGFkb3dib3g8L2tiZD4gaW4gdGhlIDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4gZmllbGQu PC9wPgoKPGgzPkNvbWJpbmluZyBwZXItc2VjdGlvbi9wYWdlLCBwZXItYXJ0aWNsZSwgYW5k IHRhZyBjb250ZW50IGZpbGUgbG9hZGluZzwvaDM+Cgo8cD5Gb3IgbXkgPGEgaHJlZj0iaHR0 cDovL2lwc2VkaXhpdC5uZXQvIj5wZXJzb25hbCB3ZWJzaXRlPC9hPiBJIGhhdmUgPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gZmlsZXMgbmFtZWQgYWZ0ZXIgZWFjaCBzZWN0aW9u IChpbmNsdWRpbmcgdGhlIGRlZmF1bHQgc2VjdGlvbiksIHBsdXMgYSBmaWxlIGNhbGxlZCAm IzgyMjA7YmFzZS5jc3MmIzgyMjE7IGZvciBjb21tb24gc3R5bGVzLiBTb21lIGFydGljbGVz IGhhdmUgc3BlY2lmaWMganMvY3NzIHJlcXVpcmVtZW50cywgc28gSSBhbHNvIGhhdmUgYSA8 c3Ryb25nPlJlcXVpcmVzPC9zdHJvbmc+IGZpZWxkLCB1c2VkIGFzIGFib3ZlLiBJIGhhdmUg YSBmb3JtIGNhbGxlZCA8Y29kZT5wYWdlX3RvcDwvY29kZT4gdGhhdCBjcmVhdGVzIHRoZSA8 Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IGVsZW1lbnQgZm9yIGV2ZXJ5IHNlY3Rpb24uIEl0 IGRvZXNuJiM4MjE3O3QgaGF2ZSBhbnkgPGNvZGU+Jmx0O3NjcmlwdCZndDs8L2NvZGU+IG9y IDxjb2RlPiZsdDtsaW5rJmd0OzwvY29kZT4gdGFncywganVzdCB0aGlzOjwvcD4KCjxwcmU+ Jmx0O3R4cDpzb29fcmVxdWlyZWRfZmlsZXMmZ3Q7YmFzZS5jc3MmbHQ7L3R4cDpzb29fcmVx dWlyZWRfZmlsZXMmZ3Q7PC9wcmU+Cgo8cD5CZWNhdXNlIEkgaGF2ZSBlbmFibGVkIHBlci1z ZWN0aW9uIGxvYWRpbmcgaW4gcHJlZmVyZW5jZXMsIGV2ZXJ5IDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBwYWdlIGF1dG9tYXRpY2FsbHkgZ2V0cyBib3RoIHRoZSBiYXNlIHN0 eWxlc2hlZXQgYW5kIHRoZSBzZWN0aW9uLXNwZWNpZmljIHN0eWxlc2hlZXQsIGFuZCBpbmRp dmlkdWFsIGFydGljbGUgcGFnZXMgd2lsbCBhbHNvIGxvYWQgYW55dGhpbmcgbGlzdGVkIGlu IDxzdHJvbmc+UmVxdWlyZXM8L3N0cm9uZz4uPC9wPgoKPGgyIGlkPSJoaXN0b3J5Ij5IaXN0 b3J5PC9oMj4KCjxoMz5WZXJzaW9uIDAuMi43ICgyMDE3LzMvMTQpPC9oMz4KCjx1bD4KCTxs aT5SZW1vdmVzIHRoZSBwcmVmZXJlbmNlIGFkZGVkIGluIDAuMi42IGluIGZhdm9yIG9mIHRo ZSBnbG9iYWwgZG9jdHlwZSBwcmVmZXJlbmNlLiAoTkI6IHNlZSBVcGdyYWRlIG5vdGVzLik8 L2xpPgo8L3VsPgoKPGgzPlZlcnNpb24gMC4yLjYgKDIwMTcvMi8yMyk8L2gzPgoKPHVsPgoJ PGxpPkFkZGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB2ZXJzaW9uIHByZWZl cmVuY2UsIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSA8Y29kZT50eXBlPC9j b2RlPiBhdHRyaWJ1dGUgaXMgYWRkZWQgdG8gPGNvZGU+bGluazwvY29kZT4gYW5kIDxjb2Rl PnNjcmlwdDwvY29kZT4gdGFncy4gKE5COiBzZWUgVXBncmFkZSBub3Rlcy4pPC9saT4KPC91 bD4KCjxoMz5WZXJzaW9uIDAuMi41ICgyMDE3LzIvMTMpPC9oMz4KCjx1bD4KCTxsaT5UeHAg NC42IGNvbXBhdGliaWxpdHkgdXBkYXRlPC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuMi4z ICgyMDEwLzEyLzIwKSwgMC4yLjQgKDIwMTAvMTIvMjcpPC9oMz4KCjx1bD4KCTxsaT5Db2Rl IGNsZWFuaW5nIG9ubHk7IG5vIGZ1bmN0aW9uYWwgY2hhbmdlczwvbGk+CjwvdWw+Cgo8aDM+ VmVyc2lvbiAwLjIuMiAoMjAxMC8wNy8xMCk8L2gzPgoKPHVsPgoJPGxpPlRhZyBjb250ZW50 cyBjYW4gbm93IGluY2x1ZGUgb3RoZXIgVHhwIHRhZ3MsIGFsbG93aW5nIGUuZy4gVHhwIGNv bmRpdGlvbmFsIHRhZ3MgZm9yIGZ1cnRoZXIgYXV0b21hdGlvbiBvcHRpb25zLjwvbGk+Cjwv dWw+Cgo8aDM+VmVyc2lvbiAwLjIuMSAoMjAwOS8xMC8wMyk8L2gzPgoKPHVsPgoJPGxpPkZp eGVkIHRvIHdvcmsgd2l0aCBzdWItZGlyZWN0b3J5IGluc3RhbGxhdGlvbnM8L2xpPgo8L3Vs PgoKPGgzPlZlcnNpb24gMC4yICgyMDA5LzA5LzI1KTwvaDM+Cgo8dWw+Cgk8bGk+TmV3IGZl YXR1cmVzOgoJPHVsPgoJCTxsaT5QZXItc2VjdGlvbiBhbmQvb3IgcGVyLXBhZ2UgZmlsZSBs b2FkaW5nPC9saT4KCQk8bGk+Q29udGFpbmVyIHRhZyBtb2RlIGZvciBhZGRpdGlvbmFsIGZp bGVzL2Zvcm1zPC9saT4KCQk8bGk+QWxsIHByZWZlcmVuY2VzIGNhbiBub3cgYmUgb3ZlcnJp ZGVuIGJ5IHRhZyBhdHRyaWJ1dGVzPC9saT4KCTwvdWw+PC9saT4KCTxsaT5Ob3RlOiBuZXcg YXR0cmlidXRlIG5hbWVzIGZvciBkZWZhdWx0IGpzIGFuZCBjc3MgZGlyZWN0b3JpZXMuIFVz ZXJzIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gMC4xLjEgc2hvdWxkIGNoZWNrIHByZWZlcmVu Y2VzIGFuZCB1cGRhdGUgdGhlc2UgdmFsdWVzIGlmIG5lZWRlZC48L2xpPgo8L3VsPgoKPGgz PlZlcnNpb24gMC4xLjEgKDIwMDkvMDkvMTgpPC9oMz4KCjx1bD4KCTxsaT5BZGRlZCBjb21w YXRpYmlsaXR5IHdpdGggPGEgaHJlZj0iaHR0cDovL2lwc2VkaXhpdC5uZXQvdHhwLzkyL3Nv b19wbHVnaW5fcHJlZiI+c29vX3BsdWdpbl9wcmVmPC9hPiBmb3IgcHJlZmVyZW5jZSBtYW5h Z2VtZW50PC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuMSAoMjAwOS8wNS8xNSk8L2gzPgoK PHVsPgoJPGxpPkluaXRpYWwgcmVsZWFzZS4gUGVyLWFydGljbGUgbG9hZGluZyBvZiBqcy9j c3MgZmlsZXMsIFR4cCBmb3Jtcy48L2xpPgo8L3VsPiI7czo0OiJjb2RlIjtzOjQ1ODE6Igpp ZihjbGFzc19leGlzdHMoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKSkgewogICAgVHhw OjpnZXQoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKQogICAgICAgIC0+cmVnaXN0ZXIo J3Nvb19yZXF1aXJlZF9maWxlcycpCiAgICAgICAgOwp9CgpAcmVxdWlyZV9wbHVnaW4oJ3Nv b19wbHVnaW5fcHJlZicpOyAgICAgLy8gb3B0aW9uYWwKCmlmIChAdHhwaW50ZXJmYWNlID09 ICdhZG1pbicpIHsKICAgIGFkZF9wcml2cygncGx1Z2luX3ByZWZzLnNvb19yZXF1aXJlZF9m aWxlcycsJzEsMicpOwogICAgYWRkX3ByaXZzKCdwbHVnaW5fbGlmZWN5Y2xlLnNvb19yZXF1 aXJlZF9maWxlcycsJzEsMicpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soJ3Nvb19yZXF1aXJl ZF9maWxlc19tYW5hZ2VfcHJlZnMnLCAncGx1Z2luX3ByZWZzLnNvb19yZXF1aXJlZF9maWxl cycpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soJ3Nvb19yZXF1aXJlZF9maWxlc19tYW5hZ2Vf cHJlZnMnLCAncGx1Z2luX2xpZmVjeWNsZS5zb29fcmVxdWlyZWRfZmlsZXMnKTsKfQoKZnVu Y3Rpb24gc29vX3JlcXVpcmVkX2ZpbGVzX21hbmFnZV9wcmVmcygkZXZlbnQsICRzdGVwKQp7 CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdzb29fcGx1Z2luX3ByZWYnKSkKICAgICAgICBy ZXR1cm4gc29vX3BsdWdpbl9wcmVmKCRldmVudCwgJHN0ZXAsIHNvb19yZXF1aXJlZF9maWxl c19wcmVmX3NwZWMoKSk7CgogICAgICAgIC8vIG1lc3NhZ2UgdG8gaW5zdGFsbCBzb29fcGx1 Z2luX3ByZWYKICAgIGlmIChzdWJzdHIoJGV2ZW50LCAwLCAxMikgPT0gJ3BsdWdpbl9wcmVm cycpIHsKICAgICAgICAkcGx1Z2luID0gc3Vic3RyKCRldmVudCwgMTMpOwogICAgICAgICRt ZXNzYWdlID0gJzxwPjxiciAvPjxzdHJvbmc+Jy5nVHh0KCdlZGl0JykuIiAkcGx1Z2luICIu CiAgICAgICAgICAgIGdUeHQoJ2VkaXRfcHJlZmVyZW5jZXMnKS4nOjwvc3Ryb25nPjxiciAv PicuZ1R4dCgnaW5zdGFsbF9wbHVnaW4nKS4KICAgICAgICAgICAgJyA8YSBocmVmPSJodHRw Oi8vaXBzZWRpeGl0Lm5ldC90eHAvOTIvc29vX3BsdWdpbl9wcmVmIj4nLgogICAgICAgICAg ICAnc29vX3BsdWdpbl9wcmVmPC9hPjwvcD4nOwogICAgICAgIHBhZ2V0b3AoZ1R4dCgnZWRp dF9wcmVmZXJlbmNlcycpLiIgJiM4MjUwOyAkcGx1Z2luIiwgJG1lc3NhZ2UpOwogICAgfQp9 CgpmdW5jdGlvbiBzb29fcmVxdWlyZWRfZmlsZXNfcHJlZl9zcGVjKCkKewogICAgcmV0dXJu IGFycmF5KAogICAgICAgICdjdXN0b21fZmllbGQnID0+IGFycmF5KAogICAgICAgICAgICAn dmFsJyAgID0+ICdSZXF1aXJlcycsCiAgICAgICAgICAgICdodG1sJyAgPT4gJ3RleHRfaW5w dXQnLAogICAgICAgICAgICAndGV4dCcgID0+ICdDdXN0b20gZmllbGQgbmFtZScsCiAgICAg ICAgKSwKICAgICAgICAnY3NzX2RpcicgPT4gYXJyYXkoCiAgICAgICAgICAgICd2YWwnICAg PT4gJ2Nzcy8nLAogICAgICAgICAgICAnaHRtbCcgID0+ICd0ZXh0X2lucHV0JywKICAgICAg ICAgICAgJ3RleHQnICA9PiAnRGVmYXVsdCBjc3MgZGlyIChyZWxhdGl2ZSB0byBiYXNlIFVS TCwgd2l0aCBjbG9zaW5nIHNsYXNoKScsCiAgICAgICAgKSwKICAgICAgICAnanNfZGlyJyA9 PiBhcnJheSgKICAgICAgICAgICAgJ3ZhbCcgICA9PiAnanMvJywKICAgICAgICAgICAgJ2h0 bWwnICA9PiAndGV4dF9pbnB1dCcsCiAgICAgICAgICAgICd0ZXh0JyAgPT4gJ0RlZmF1bHQg anMgZGlyIChyZWxhdGl2ZSB0byBiYXNlIFVSTCwgd2l0aCBjbG9zaW5nIHNsYXNoKScsCiAg ICAgICAgKSwKICAgICAgICAnZm9ybV9wcmVmaXgnID0+IGFycmF5KAogICAgICAgICAgICAn dmFsJyAgID0+ICdyZXF1aXJlXycsCiAgICAgICAgICAgICdodG1sJyAgPT4gJ3RleHRfaW5w dXQnLAogICAgICAgICAgICAndGV4dCcgID0+ICdPcHRpb25hbCBwcmVmaXggZm9yIGZvcm0g bmFtZXMnLAogICAgICAgICksCiAgICAgICAgJ3Blcl9wYWdlJyA9PiBhcnJheSgKICAgICAg ICAgICAgJ3ZhbCcgICA9PiAwLAogICAgICAgICAgICAnaHRtbCcgID0+ICd5ZXNub3JhZGlv JywKICAgICAgICAgICAgJ3RleHQnICA9PiAnTG9hZCB7cGFnZX0uY3NzIGFuZCB7cGFnZX0u anM/JywKICAgICAgICApLAogICAgICAgICdwZXJfc2VjdGlvbicgPT4gYXJyYXkoCiAgICAg ICAgICAgICd2YWwnICAgPT4gMCwKICAgICAgICAgICAgJ2h0bWwnICA9PiAneWVzbm9yYWRp bycsCiAgICAgICAgICAgICd0ZXh0JyAgPT4gJ0xvYWQge3NlY3Rpb259LmNzcyBhbmQge3Nl Y3Rpb259LmpzPycsCiAgICAgICAgKSwKICAgICk7Cn0KCmZ1bmN0aW9uIHNvb19yZXF1aXJl ZF9maWxlc19wcmVmcygpCnsKICAgIHN0YXRpYyAkcHJlZnM7CiAgICBpZiAoISAkcHJlZnMp IHsKICAgICAgICBmb3JlYWNoIChzb29fcmVxdWlyZWRfZmlsZXNfcHJlZl9zcGVjKCkgYXMg JG5hbWUgPT4gJHNwZWMpIHsKICAgICAgICAgICAgJHByZWZzWyRuYW1lXSA9ICRzcGVjWyd2 YWwnXTsKICAgICAgICB9CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc29vX3BsdWdp bl9wcmVmX3ZhbHMnKSkgewogICAgICAgICAgICAkcHJlZnMgPSBhcnJheV9tZXJnZSgkcHJl ZnMsIHNvb19wbHVnaW5fcHJlZl92YWxzKCdzb29fcmVxdWlyZWRfZmlsZXMnKSk7CiAgICAg ICAgfQogICAgfQogICAgcmV0dXJuICRwcmVmczsKfQoKZnVuY3Rpb24gc29vX3JlcXVpcmVk X2ZpbGVzKCRhdHRzLCAkdGhpbmcgPSAnJykKewogICAgZ2xvYmFsICRwYWdlLCAkcywgJGlk LCAkZG9jdHlwZTsKICAgICRwcmVmcyA9IHNvb19yZXF1aXJlZF9maWxlc19wcmVmcygpOwog ICAgZXh0cmFjdCgkcHJlZnMpOwogICAgJHJlcXVpcmVkID0gZG9fbGlzdChwYXJzZSgkdGhp bmcpKTsKCiAgICAvLyB0YWcgYXR0cyBvdmVycmlkZSBkZWZhdWx0cy9wcmVmcwogICAgZm9y ZWFjaCAoJGF0dHMgYXMgJGsgPT4gJHYpCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMo JGssICRwcmVmcykpCiAgICAgICAgICAgICQkayA9ICR2OwoKICAgIGlmICgkcGVyX3BhZ2Up CiAgICAgICAgJHJlcXVpcmVkID0gYXJyYXlfbWVyZ2UoJHJlcXVpcmVkLCBfc29vX3JlcXVp cmVkX2ZpbGVzX2FkZCgkcGFnZSkpOwoKICAgIGlmICgkcGVyX3NlY3Rpb24pCiAgICAgICAg JHJlcXVpcmVkID0gYXJyYXlfbWVyZ2UoJHJlcXVpcmVkLCBfc29vX3JlcXVpcmVkX2ZpbGVz X2FkZCgkcykpOwoKICAgIC8vIGlmIGluZGl2aWR1YWwgYXJ0aWNsZSwgZ2V0IGN1c3RvbSBm aWVsZCBjb250ZW50cwogICAgaWYgKCRpZCBhbmQgJGN1c3RvbV9maWVsZCkKICAgICAgICAk cmVxdWlyZWQgPSBhcnJheV9tZXJnZSgkcmVxdWlyZWQsIGRvX2xpc3QoY3VzdG9tX2ZpZWxk KGFycmF5KAogICAgICAgICAgICAnbmFtZScgICAgICA9PiAgJGN1c3RvbV9maWVsZCwKICAg ICAgICAgICAgJ2VzY2FwZScgICAgPT4gICdodG1sJywKICAgICAgICAgICAgJ2RlZmF1bHQn ICAgPT4gICcnLAogICAgICAgICkpKSk7CgogICAgJHJlcXVpcmVkID0gYXJyYXlfdW5pcXVl KCRyZXF1aXJlZCk7CgogICAgJGNzc0F0dHMgPSAkanNBdHRzID0gYXJyYXkoKTsKICAgICRj c3NBdHRzWydyZWwnXSA9ICdzdHlsZXNoZWV0JzsKICAgIGlmICgkZG9jdHlwZSAhPSAnaHRt bDUnKSB7CiAgICAgICAgJGNzc0F0dHNbJ3R5cGUnXSA9ICd0ZXh0L2Nzcyc7CiAgICAgICAg JGpzQXR0c1sndHlwZSddID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICB9CgogICAgZm9yZWFj aCAoJHJlcXVpcmVkIGFzICRyZXEpIHsKICAgICAgICBpZiAoc3Vic3RyKHN0cnRvbG93ZXIo JHJlcSksIC00KSA9PT0gJy5jc3MnKSB7CiAgICAgICAgICAgICRjc3NBdHRzWydocmVmJ10g PSBodS4kY3NzX2Rpci4kcmVxOwogICAgICAgICAgICAkb3V0W10gPSB0YWdfdm9pZCgnbGlu aycsICRjc3NBdHRzKTsKICAgICAgICB9IGVsc2VpZiAoc3Vic3RyKHN0cnRvbG93ZXIoJHJl cSksIC0zKSA9PT0gJy5qcycpIHsKICAgICAgICAgICAgJGpzQXR0c1snc3JjJ10gPSBodS4k anNfZGlyLiRyZXE7CiAgICAgICAgICAgICRvdXRbXSA9IHRhZyhudWxsLCAnc2NyaXB0Jywg JGpzQXR0cyk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoJHJlcSkKICAgICAgICAgICAg JG91dFtdID0gcGFyc2VfZm9ybSgkZm9ybV9wcmVmaXguJHJlcSk7CiAgICB9CgogICAgcmV0 dXJuIGlzc2V0KCRvdXQpID8gaW1wbG9kZSgiXG4iLCAkb3V0KSA6ICcnOwp9CgpmdW5jdGlv biBfc29vX3JlcXVpcmVkX2ZpbGVzX2FkZCgkbmFtZSkKewogICAgZXh0cmFjdChzb29fcmVx dWlyZWRfZmlsZXNfcHJlZnMoKSk7CiAgICAkcGF0aF9yb290ID0gcHJlZ19yZXBsYWNlKCcv aW5kZXgucGhwLycsICcnLCAkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOwogICAgaWYg KGZpbGVfZXhpc3RzKCRwYXRoX3Jvb3QuJGNzc19kaXIuJG5hbWUuJy5jc3MnKSkKICAgICAg ICAkb3V0W10gPSAkbmFtZS4nLmNzcyc7CiAgICBpZiAoZmlsZV9leGlzdHMoJHBhdGhfcm9v dC4kanNfZGlyLiRuYW1lLicuanMnKSkKICAgICAgICAkb3V0W10gPSAkbmFtZS4nLmpzJzsK ICAgIHJldHVybiBpc3NldCgkb3V0KSA/ICRvdXQgOiBhcnJheSgpOwp9CiI7czo0OiJ0eXBl IjtzOjE6IjEiO3M6NToiZmxhZ3MiO3M6MToiMyI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6 Im1kNSI7czozMjoiODc2MjY1YWQ3MTY4ZjA4NDRlYjQ0YmFhMmI2Mjg2ZTEiO30=