OSDN Git Service

Update initial joy home dir contents BLOB.
authorSimon Forman <sforman@hushmail.com>
Mon, 6 May 2019 20:28:44 +0000 (13:28 -0700)
committerSimon Forman <sforman@hushmail.com>
Mon, 6 May 2019 20:28:44 +0000 (13:28 -0700)
joy/vui/init_joy_home.py

index b721bf1..b0c2ad0 100644 (file)
@@ -43,7 +43,7 @@ IGNvbnMgaW5mcmENCiBfQlRyZWUtVDwgPT0gW2NvbnMgY29ucyBkaXBkXSBjb25zIGNvbnMgY29u
 cyBpbmZyYQ0KIF9CVHJlZS1FID09IHBvcCBzd2FwIHJvbGw8IHJlc3QgcmVzdCBjb25zIGNvbnMN\r
 CiBfQlRyZWUtcmVjdXIgPT0gX0JUcmVlLVAgW19CVHJlZS1UPl0gW19CVHJlZS1FXSBbX0JUcmVl\r
 LVQ8XSBjbXANCkJUcmVlLWFkZCA9PSBbcG9wb3Agbm90XSBbW3BvcF0gZGlwZCBCVHJlZS1uZXdd\r
-IFtdIFtfQlRyZWUtcmVjdXJdIGdlbnJlYw0KUEsDBBQAAAAAAAVjpk4zTskZFBYAABQWAAAKAAAA\r
+IFtdIFtfQlRyZWUtcmVjdXJdIGdlbnJlYw0KUEsDBBQAAAAAACFrpk7/HHjxGBYAABgWAAAKAAAA\r
 bGlicmFyeS5weScnJw0KVGhpcyBmaWxlIGlzIGV4ZWNmaWxlKCknZCB3aXRoIGEgbmFtZXNwYWNl\r
 IGNvbnRhaW5pbmc6DQoNCiAgRCAtIHRoZSBKb3kgZGljdGlvbmFyeQ0KICBkIC0gdGhlIERpc3Bs\r
 YXkgb2JqZWN0DQogIHB0IC0gdGhlIFBlcnNpc3RUYXNrIG9iamVjdA0KICBsb2cgLSB0aGUgbG9n\r
@@ -52,204 +52,204 @@ Y2tfaG9sZGVyIC0gdGhlIFB5dGhvbiBsaXN0IG9iamVjdCB0aGF0IGhvbGRzIHRoZSBKb3kgc3Rh
 Y2sgdHVwbGUNCiAgd29ybGQgLSB0aGUgSm95IGVudmlyb25tZW50DQoNCicnJw0KZnJvbSBqb3ku\r
 bGlicmFyeSBpbXBvcnQgKA0KICAgIERlZmluaXRpb25XcmFwcGVyLA0KICAgIEZ1bmN0aW9uV3Jh\r
 cHBlciwNCiAgICBTaW1wbGVGdW5jdGlvbldyYXBwZXIsDQogICAgKQ0KZnJvbSBqb3kudXRpbHMu\r
-c3RhY2sgaW1wb3J0IGxpc3RfdG9fc3RhY2ssIGNvbmNhdA0KZnJvbSB2dWkgaW1wb3J0IGNvcmUs\r
-IHRleHRfdmlld2VyLCBzdGFja192aWV3ZXINCg0KDQpkZWYgaW5zdGFsbChjb21tYW5kKTogRFtj\r
-b21tYW5kLm5hbWVdID0gY29tbWFuZA0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFw\r
-cGVyDQpkZWYgbGlzdF9yZXNvdXJjZXMoc3RhY2spOg0KICAgICcnJw0KICAgIFB1dCBhIHN0cmlu\r
-ZyBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgbmFtZXMgb2YgYWxsIHRoZSBrbm93biByZXNvdXJjZXMN\r
-CiAgICBvbmUtcGVyLWxpbmUuDQogICAgJycnDQogICAgcmV0dXJuICdcbicuam9pbihwdC5zY2Fu\r
-KCkpLCBzdGFjaw0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFwcGVyDQpkZWYgb3Bl\r
-bl9zdGFjayhzdGFjayk6DQogICAgJycnDQogICAgR2l2ZW4gYSBjb29yZGluYXRlIHBhaXIgW3gg\r
-eV0gKGluIHBpeGVscykgb3BlbiBhIFN0YWNrVmlld2VyIHRoZXJlLg0KICAgICcnJw0KICAgICh4\r
-LCAoeSwgXykpLCBzdGFjayA9IHN0YWNrDQogICAgViA9IGQub3Blbl92aWV3ZXIoeCwgeSwgc3Rh\r
-Y2tfdmlld2VyLlN0YWNrVmlld2VyKQ0KICAgIFYuZHJhdygpDQogICAgcmV0dXJuIHN0YWNrDQoN\r
-Cg0KQGluc3RhbGwNCkBTaW1wbGVGdW5jdGlvbldyYXBwZXINCmRlZiBvcGVuX3Jlc291cmNlKHN0\r
-YWNrKToNCiAgICAnJycNCiAgICBHaXZlbiBhIGNvb3JkaW5hdGUgcGFpciBbeCB5XSAoaW4gcGl4\r
-ZWxzKSBhbmQgdGhlIG5hbWUgb2YgYSByZXNvdXJjZQ0KICAgIChmcm9tIGxpc3RfcmVzb3VyY2Vz\r
-IGNvbW1hbmQpIG9wZW4gYSB2aWV3ZXIgb24gdGhhdCByZXNvdXJjZSBhdCB0aGF0DQogICAgbG9j\r
-YXRpb24uDQogICAgJycnDQogICAgKCh4LCAoeSwgXykpLCAobmFtZSwgc3RhY2spKSA9IHN0YWNr\r
-DQogICAgb20gPSBjb3JlLk9wZW5NZXNzYWdlKHdvcmxkLCBuYW1lKQ0KICAgIGQuYnJvYWRjYXN0\r
-KG9tKQ0KICAgIGlmIG9tLnN0YXR1cyA9PSBjb3JlLlNVQ0NFU1M6DQogICAgICAgIFYgPSBkLm9w\r
-ZW5fdmlld2VyKHgsIHksIHRleHRfdmlld2VyLlRleHRWaWV3ZXIpDQogICAgICAgIFYuY29udGVu\r
-dF9pZCwgVi5saW5lcyA9IG9tLmNvbnRlbnRfaWQsIG9tLnRoaW5nDQogICAgICAgIFYuZHJhdygp\r
-DQogICAgcmV0dXJuIHN0YWNrDQoNCg0KQGluc3RhbGwNCkBTaW1wbGVGdW5jdGlvbldyYXBwZXIN\r
-CmRlZiBuYW1lX3ZpZXdlcihzdGFjayk6DQogICAgJycnDQogICAgR2l2ZW4gYSBzdHJpbmcgbmFt\r
-ZSBvbiB0aGUgc3RhY2ssIGlmIHRoZSBjdXJyZW50bHkgZm9jdXNlZCB2aWV3ZXIgaXMNCiAgICBh\r
-bm9ueW1vdXMsIG5hbWUgdGhlIHZpZXdlciBhbmQgcGVyc2lzdCBpdCBpbiB0aGUgcmVzb3VyY2Ug\r
-c3RvcmUgdW5kZXINCiAgICB0aGF0IG5hbWUuDQogICAgJycnDQogICAgbmFtZSwgc3RhY2sgPSBz\r
-dGFjaw0KICAgIGFzc2VydCBpc2luc3RhbmNlKG5hbWUsIHN0ciksIHJlcHIobmFtZSkNCiAgICBp\r
-ZiBkLmZvY3VzZWRfdmlld2VyIGFuZCBub3QgZC5mb2N1c2VkX3ZpZXdlci5jb250ZW50X2lkOg0K\r
-ICAgICAgICBkLmZvY3VzZWRfdmlld2VyLmNvbnRlbnRfaWQgPSBuYW1lDQogICAgICAgIHBtID0g\r
-Y29yZS5QZXJzaXN0TWVzc2FnZSh3b3JsZCwgbmFtZSwgdGhpbmc9ZC5mb2N1c2VkX3ZpZXdlci5s\r
-aW5lcykNCiAgICAgICAgZC5icm9hZGNhc3QocG0pDQogICAgICAgIGQuZm9jdXNlZF92aWV3ZXIu\r
-ZHJhd19tZW51KCkNCiAgICByZXR1cm4gc3RhY2sNCg0KDQojI0BpbnN0YWxsDQojI0BTaW1wbGVG\r
-dW5jdGlvbldyYXBwZXINCiMjZGVmIHBlcnNpc3Rfdmlld2VyKHN0YWNrKToNCiMjICAgIGlmIHNl\r
-bGYuZm9jdXNlZF92aWV3ZXI6DQojIyAgICAgICAgDQojIyAgICAgICAgc2VsZi5mb2N1c2VkX3Zp\r
-ZXdlci5jb250ZW50X2lkID0gbmFtZQ0KIyMgICAgICAgIHNlbGYuZm9jdXNlZF92aWV3ZXIuZHJh\r
-d19tZW51KCkNCiMjICAgIHJldHVybiBzdGFjaw0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rp\r
-b25XcmFwcGVyDQpkZWYgaW5zY3JpYmUoc3RhY2spOg0KICAgICcnJw0KICAgIENyZWF0ZSBhIG5l\r
-dyBKb3kgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiB0aGUgSm95IGRpY3Rpb25hcnkuICBBDQogICAg\r
-ZGVmaW5pdGlvbiBpcyBnaXZlbiBhcyBhIHN0cmluZyB3aXRoIGEgbmFtZSBmb2xsb3dlZCBieSBh\r
-IGRvdWJsZQ0KICAgIGVxdWFsIHNpZ24gdGhlbiBvbmUgb3IgbW9yZSBKb3kgZnVuY3Rpb25zLCB0\r
-aGUgYm9keS4gZm9yIGV4YW1wbGU6DQoNCiAgICAgICAgc3FyID09IGR1cCBtdWwNCg0KICAgIElm\r
-IHlvdSB3YW50IHRoZSBkZWZpbml0aW9uIHRvIHBlcnNpc3Qgb3ZlciByZXN0YXJ0cywgZW50ZXIg\r
-aXQgaW50bw0KICAgIHRoZSBkZWZpbml0aW9ucy50eHQgcmVzb3VyY2UuDQogICAgJycnDQogICAg\r
-ZGVmaW5pdGlvbiwgc3RhY2sgPSBzdGFjaw0KICAgIERlZmluaXRpb25XcmFwcGVyLmFkZF9kZWYo\r
-ZGVmaW5pdGlvbiwgRCkNCiAgICByZXR1cm4gc3RhY2sNCg0KDQpAaW5zdGFsbA0KQFNpbXBsZUZ1\r
-bmN0aW9uV3JhcHBlcg0KZGVmIG9wZW5fdmlld2VyKHN0YWNrKToNCiAgICAnJycNCiAgICBHaXZl\r
-biBhIGNvb3JkaW5hdGUgcGFpciBbeCB5XSAoaW4gcGl4ZWxzKSBhbmQgYSBzdHJpbmcsIG9wZW4g\r
-YSBuZXcNCiAgICB1bm5hbWVkIHZpZXdlciBvbiB0aGF0IHN0cmluZyBhdCB0aGF0IGxvY2F0aW9u\r
-Lg0KICAgICcnJw0KICAgICgoeCwgKHksIF8pKSwgKGNvbnRlbnQsIHN0YWNrKSkgPSBzdGFjaw0K\r
-ICAgIFYgPSBkLm9wZW5fdmlld2VyKHgsIHksIHRleHRfdmlld2VyLlRleHRWaWV3ZXIpDQogICAg\r
-Vi5saW5lcyA9IGNvbnRlbnQuc3BsaXRsaW5lcygpDQogICAgVi5kcmF3KCkNCiAgICByZXR1cm4g\r
-c3RhY2sNCg0KDQpAaW5zdGFsbA0KQFNpbXBsZUZ1bmN0aW9uV3JhcHBlcg0KZGVmIGdvb2Rfdmll\r
-d2VyX2xvY2F0aW9uKHN0YWNrKToNCiAgICAnJycNCiAgICBMZWF2ZSBhIGNvb3JkaW5hdGUgcGFp\r
-ciBbeCB5XSAoaW4gcGl4ZWxzKSBvbiB0aGUgc3RhY2sgdGhhdCB3b3VsZA0KICAgIGJlIGEgZ29v\r
-ZCBsb2NhdGlvbiBhdCB3aGljaCB0byBvcGVuIGEgbmV3IHZpZXdlci4gIChUaGUgaGV1cmlzdGlj\r
-DQogICAgZW1wbG95ZWQgaXMgdG8gdGFrZSB1cCB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIGN1cnJl\r
-bnRseSBvcGVuIHZpZXdlcg0KICAgIHdpdGggdGhlIGdyZWF0ZXN0IGFyZWEuKQ0KICAgICcnJw0K\r
-ICAgIHZpZXdlcnMgPSBsaXN0KGQuaXRlcl92aWV3ZXJzKCkpDQogICAgaWYgdmlld2VyczoNCiAg\r
-ICAgICAgdmlld2Vycy5zb3J0KGtleT1sYW1iZGEgKFYsIHgsIHkpOiBWLncgKiBWLmgpDQogICAg\r
-ICAgIFYsIHgsIHkgPSB2aWV3ZXJzWy0xXQ0KICAgICAgICBjb29yZHMgPSAoeCArIDEsICh5ICsg\r
-Vi5oIC8gMiwgKCkpKQ0KICAgIGVsc2U6DQogICAgICAgIGNvb3JkcyA9ICgwLCAoMCwgKCkpKQ0K\r
-ICAgIHJldHVybiBjb29yZHMsIHN0YWNrDQoNCg0KQGluc3RhbGwNCkBGdW5jdGlvbldyYXBwZXIN\r
-CmRlZiBjbXBfKHN0YWNrLCBleHByZXNzaW9uLCBkaWN0aW9uYXJ5KToNCiAgICAnJycNCiAgICBU\r
-aGUgY21wIGNvbWJpbmF0b3IgdGFrZXMgdHdvIHZhbHVlcyBhbmQgdGhyZWUgcXVvdGVkIHByb2dy\r
-YW1zIG9uIHRoZQ0KICAgIHN0YWNrIGFuZCBydW5zIG9uZSBvZiB0aGUgdGhyZWUgZGVwZW5kaW5n\r
-IG9uIHRoZSByZXN1bHRzIG9mIGNvbXBhcmluZw0KICAgIHRoZSB0d28gdmFsdWVzOg0KDQogICAg\r
-ICAgICAgIGEgYiBbR10gW0VdIFtMXSBjbXANCiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t\r
-LS0tLSBhID4gYg0KICAgICAgICAgICAgICAgIEcNCg0KICAgICAgICAgICBhIGIgW0ddIFtFXSBb\r
-TF0gY21wDQogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYSA9IGINCiAgICAgICAg\r
-ICAgICAgICAgICAgRQ0KDQogICAgICAgICAgIGEgYiBbR10gW0VdIFtMXSBjbXANCiAgICAgICAg\r
-LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhIDwgYg0KICAgICAgICAgICAgICAgICAgICAgICAg\r
-TA0KDQogICAgJycnDQogICAgTCwgKEUsIChHLCAoYiwgKGEsIHN0YWNrKSkpKSA9IHN0YWNrDQog\r
-ICAgZXhwcmVzc2lvbiA9IGNvbmNhdChHIGlmIGEgPiBiIGVsc2UgTCBpZiBhIDwgYiBlbHNlIEUs\r
-IGV4cHJlc3Npb24pDQogICAgcmV0dXJuIHN0YWNrLCBleHByZXNzaW9uLCBkaWN0aW9uYXJ5DQoN\r
-Cg0KQGluc3RhbGwNCkBTaW1wbGVGdW5jdGlvbldyYXBwZXINCmRlZiBsaXN0X3ZpZXdlcnMoc3Rh\r
-Y2spOg0KICAgICcnJw0KICAgIFB1dCBhIHN0cmluZyBvbiB0aGUgc3RhY2sgd2l0aCBzb21lIGlu\r
-Zm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkNCiAgICBvcGVuIHZpZXdlcnMsIG9uZS1wZXIt\r
-bGluZS4gIFRoaXMgaXMga2luZCBvZiBhIGRlbW8gZnVuY3Rpb24sIHJhdGhlcg0KICAgIHRoYW4g\r
-c29tZXRoaW5nIHJlYWxseSB1c2VmdWwuDQogICAgJycnDQogICAgbGluZXMgPSBbXQ0KICAgIGZv\r
-ciB4LCBUIGluIGQudHJhY2tzOg0KICAgICAgICAjbGluZXMuYXBwZW5kKCd4OiAlaSwgdzogJWks\r
-ICVyJyAlICh4LCBULncsIFQpKQ0KICAgICAgICBmb3IgeSwgViBpbiBULnZpZXdlcnM6DQogICAg\r
-ICAgICAgICBsaW5lcy5hcHBlbmQoJ3g6ICVpIHk6ICVpIGg6ICVpICVyICVyJyAlICh4LCB5LCBW\r
-LmgsIFYuY29udGVudF9pZCwgVikpDQogICAgcmV0dXJuICdcbicuam9pbihsaW5lcyksIHN0YWNr\r
-DQoNCg0KQGluc3RhbGwNCkBTaW1wbGVGdW5jdGlvbldyYXBwZXINCmRlZiBzcGxpdGxpbmVzKHN0\r
-YWNrKToNCiAgICAnJycNCiAgICBHaXZlbiBhIHN0cmluZyBvbiB0aGUgc3RhY2sgcmVwbGFjZSBp\r
-dCB3aXRoIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4NCiAgICB0aGUgc3RyaW5nLg0KICAgICcnJw0K\r
-ICAgIHRleHQsIHN0YWNrID0gc3RhY2sNCiAgICBhc3NlcnQgaXNpbnN0YW5jZSh0ZXh0LCBzdHIp\r
-LCByZXByKHRleHQpDQogICAgcmV0dXJuIGxpc3RfdG9fc3RhY2sodGV4dC5zcGxpdGxpbmVzKCkp\r
-LCBzdGFjaw0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFwcGVyDQpkZWYgaGl5YShz\r
-dGFjayk6DQogICAgJycnDQogICAgRGVtbyBmdW5jdGlvbiB0byBpbnNlcnQgIkhpIFdvcmxkISIg\r
-aW50byB0aGUgY3VycmVudCB2aWV3ZXIsIGlmIGFueS4NCiAgICAnJycNCiAgICBpZiBkLmZvY3Vz\r
-ZWRfdmlld2VyOg0KICAgICAgICBkLmZvY3VzZWRfdmlld2VyLmluc2VydCgnSGkgV29ybGQhJykN\r
-CiAgICByZXR1cm4gc3RhY2sNClBLAwQUAAAAAADkZnhORezk1gsAAAALAAAABwAAAGxvZy50eHRK\r
-b3lweSBsb2cNClBLAwQUAAAAAADkZnhOZ/a7zQIFAAACBQAACAAAAG1lbnUudHh0ICBuYW1lX3Zp\r
-ZXdlcg0KICBsaXN0X3Jlc291cmNlcw0KICBvcGVuX3Jlc291cmNlX2F0X2dvb2RfbG9jYXRpb24N\r
-CiAgZ29vZF92aWV3ZXJfbG9jYXRpb24NCiAgb3Blbl92aWV3ZXINCiAgc2VlX3N0YWNrDQogIHNl\r
-ZV9yZXNvdXJjZXMNCiAgc2VlX2RlZmluaXRpb25zDQogIHNlZV9sb2cNCiAgcmVzZXRfbG9nDQoN\r
-CiAgaW5zY3JpYmUNCiAgZXZhbHVhdGUNCg0KICBwb3AgY2xlYXIgICAgZHVwIHN3YXANCg0KICBh\r
-ZGQgc3ViIG11bCBkaXYgdHJ1ZWRpdiBtb2R1bHVzIGRpdm1vZA0KICBwbSArKyAtLSBzdW0gcHJv\r
-ZHVjdCBwb3cgc3FyIHNxcnQNCiAgPCA8PSA9ID49ID4gPD4NCiAgJiA8PCA+Pg0KDQogIGkgZHVw\r
-ZGlwDQoNCiE9ICUgJiAqICpmcmFjdGlvbiAqZnJhY3Rpb24wICsgKysgLSAtLSAvIDwgPDwgPD0g\r
-PD4gPSA+ID49ID4+ID8gXg0KYWJzIGFkZCBhbmFtb3JwaGlzbSBhbmQgYXBwMSBhcHAyIGFwcDMg\r
-YXQgYXZlcmFnZQ0KYiBiaW5hcnkgYnJhbmNoDQpjaG9pY2UgY2xlYXIgY2xlYXZlIGNvbmNhdCBj\r
-b25zDQpkaW5mcmlyc3QgZGlwIGRpcGQgZGlwZGQgZGlzZW5zdGFja2VuIGRpdiBkaXZtb2QgZG93\r
-bl90b196ZXJvIGRyb3ANCmR1ZGlwZCBkdXAgZHVwZCBkdXBkaXANCmVuc3RhY2tlbiBlcQ0KZmly\r
-c3QgZmxhdHRlbiBmbG9vciBmbG9vcmRpdg0KZ2NkIGdlIGdlbnJlYyBnZXRpdGVtIGdyYW5kX3Jl\r
-c2V0IGd0DQpoZWxwDQppIGlkIGlmdGUgaW5mcmEgaW5zY3JpYmUNCmtleV9iaW5kaW5ncw0KbGUg\r
-bGVhc3RfZnJhY3Rpb24gbG9vcCBsc2hpZnQgbHQNCm1hcCBtYXggbWluIG1vZCBtb2R1bHVzIG1v\r
-dXNlX2JpbmRpbmdzIG11bA0KbmUgbmVnIG5vdCBudWxsYXJ5DQpvZiBvciBvdmVyDQpwYW0gcGFy\r
-c2UgcGljayBwbSBwb3AgcG9wZCBwb3BkZCBwb3BvcCBwb3cgcHJlZCBwcmltcmVjIHByb2R1Y3QN\r
-CnF1b3RlZA0KcmFuZ2UgcmFuZ2VfdG9femVybyByZW0gcmVtYWluZGVyIHJlbW92ZSByZXNldF9s\r
-b2cgcmVzdCByZXZlcnNlDQpyb2xsPCByb2xsPiByb2xsZG93biByb2xsdXAgcnNoaWZ0IHJ1bg0K\r
-c2Vjb25kIHNlbGVjdCBzaGFyaW5nIHNob3dfbG9nIHNodW50IHNpemUgc29ydCBzcXIgc3FydCBz\r
-dGFjayBzdGVwDQpzdGVwX3plcm8gc3ViIHN1Y2Mgc3VtIHN3YWFjayBzd2FwIHN3b25jYXQgc3dv\r
-bnMNCnRha2UgdGVybmFyeSB0aGlyZCB0aW1lcyB0cnVlZGl2IHRydXRoeSB0dWNrDQp1bmFyeSB1\r
-bmNvbnMgdW5pcXVlIHVuaXQgdW5xdW90ZWQgdW5zdGFjaw0Kdm9pZA0Kd2FycmFudHkgd2hpbGUg\r
-d29yZHMNCnggeG9yDQp6aXANClBLAwQUAAAAAADkZnhOAKs9xo4QAACOEAAACwAAAHNjcmF0Y2gu\r
-dHh0V2hhdCBpcyBpdD8NCg0KQSBzaW1wbGUgR3JhcGhpY2FsIFVzZXIgSW50ZXJmYWNlIGZvciB0\r
-aGUgSm95IHByb2dyYW1taW5nIGxhbmd1YWdlLA0Kd3JpdHRlbiB1c2luZyBQeWdhbWUgdG8gYnlw\r
-YXNzIFgxMSBldC4gYWwuLCBtb2RlbGVkIG9uIHRoZSBPYmVyb24gT1MsIGFuZA0KaW50ZW5kZWQg\r
-dG8gYmUganVzdCBmdW5jdGlvbmFsIGVub3VnaCB0byBzdXBwb3J0IGJvb3RzdHJhcHBpbmcgZnVy\r
-dGhlciBKb3kNCmRldmVsb3BtZW50Lg0KDQpJdCdzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMgbW9y\r
-ZS1vci1sZXNzIGFzIGEgY3J1ZGUgdGV4dCBlZGl0b3IgYWxvbmcgd2l0aA0KYSBzaW1wbGUgSm95\r
-IHJ1bnRpbWUgKGludGVycHJldGVyLCBzdGFjaywgYW5kIGRpY3Rpb25hcnkuKSAgSXQgYXV0by0g\r
-c2F2ZXMNCmFueSBuYW1lZCBmaWxlcyAoaW4gYSB2ZXJzaW9uZWQgaG9tZSBkaXJlY3RvcnkpIGFu\r
-ZCB5b3UgY2FuIHdyaXRlIG5ldyBKb3kNCnByaW1pdGl2ZXMgaW4gUHl0aG9uIGFuZCBKb3kgZGVm\r
-aW5pdGlvbnMgYW5kIGltbWVkaWF0ZWx5IGluc3RhbGwgYW5kIHVzZQ0KdGhlbSwgYXMgd2VsbCBh\r
-cyByZWNvcmRpbmcgdGhlbSBmb3IgcmV1c2UgKGFmdGVyIHJlc3RhcnRzLikNCg0KQ3VycmVudGx5\r
-LCB0aGVyZSBhcmUgb25seSB0d28ga2luZHMgb2YgKGludGVyZXN0aW5nKSB2aWV3ZXJzOiBUZXh0\r
-Vmlld2Vycw0KYW5kIFN0YWNrVmlld2VyLiBUaGUgVGV4dFZpZXdlcnMgYXJlIGNydWRlIHRleHQg\r
-ZWRpdG9ycy4gIFRoZXkgcHJvdmlkZQ0KanVzdCBlbm91Z2ggZnVuY3Rpb25hbGl0eSB0byBsZXQg\r
-dGhlIHVzZXIgd3JpdGUgdGV4dCBhbmQgY29kZSAoUHl0aG9uIGFuZA0KSm95KSBhbmQgZXhlY3V0\r
-ZSBKb3kgZnVuY3Rpb25zLiAgT25lIGltcG9ydGFudCB0aGluZyB0aGV5IGRvIGlzDQphdXRvbWF0\r
-aWNhbGx5IHNhdmUgdGhlaXIgY29udGVudCBhZnRlciBjaGFuZ2VzLiAgTm8gbW9yZSBsb3N0IHdv\r
-cmsuDQoNClRoZSBTdGFja1ZpZXdlciBpcyBhIHNwZWNpYWxpemVkIFRleHRWaWV3ZXIgdGhhdCBz\r
-aG93cyB0aGUgY29udGVudHMgb2YgdGhlDQpKb3kgc3RhY2sgb25lIGxpbmUgcGVyIHN0YWNrIGl0\r
-ZW0uICBJdCdzIGEgdmVyeSBoYW5keSB2aXN1YWwgYWlkIHRvIGtlZXANCnRyYWNrIG9mIHdoYXQn\r
-cyBnb2luZyBvbi4gIFRoZXJlJ3MgYWxzbyBhIGxvZy50eHQgZmlsZSB0aGF0IGdldHMgd3JpdHRl\r
-bg0KdG8gd2hlbiBjb21tYW5kcyBhcmUgZXhlY3V0ZWQsIGFuZCBzbyByZWNvcmRzIHRoZSBsb2cg\r
-b2YgdXNlciBhY3Rpb25zIGFuZA0Kc3lzdGVtIGV2ZW50cy4gIEl0IHRlbmRzIHRvIGZpbGwgdXAg\r
-cXVpY2tseSBzbyB0aGVyZSdzIGEgcmVzZXRfbG9nIGNvbW1hbmQNCnRoYXQgY2xlYXJzIGl0IG91\r
-dC4NCg0KVmlld2VycyBoYXZlICJncm93IiBhbmQgImNsb3NlIiBpbiB0aGVpciBtZW51IGJhcnMu\r
-ICBUaGVzZSBhcmUgYnV0dG9ucy4NCldoZW4geW91IHJpZ2h0LWNsaWNrIG9uIGdyb3cgYSB2aWV3\r
-ZXIgYSBjb3B5IGlzIGNyZWF0ZWQgdGhhdCBjb3ZlcnMgdGhhdA0Kdmlld2VyJ3MgZW50aXJlIHRy\r
-YWNrLiAgSWYgeW91IGdyb3cgYSB2aWV3ZXIgdGhhdCBhbHJlYWR5IHRha2VzIHVwIGl0cw0Kd2hv\r
-bGUgdHJhY2sgdGhlbiBhIGNvcHkgaXMgY3JlYXRlZCB0aGF0IHRha2VzIHVwIGFuIGFkZGl0aW9u\r
-YWwgdHJhY2ssIHVwDQp0byB0aGUgd2hvbGUgc2NyZWVuLiAgQ2xvc2luZyBhIHZpZXdlciBqdXN0\r
-IGRlbGV0ZXMgdGhhdCB2aWV3ZXIsIGFuZCB3aGVuDQphIHRyYWNrIGhhcyBubyBtb3JlIHZpZXdl\r
-cnMsIGl0IGlzIGRlbGV0ZWQgYW5kIHRoYXQgZXhwb3NlcyBhbnkgcHJldmlvdXMNCnRyYWNrcyBh\r
-bmQgdmlld2VycyB0aGF0IHdlcmUgaGlkZGVuLg0KDQooTm90ZTogaWYgeW91IGV2ZXIgY2xvc2Ug\r
-YWxsIHRoZSB2aWV3ZXJzIGFuZCBhcmUgc2l0dGluZyBhdCBhIGJsYW5rIHNjcmVlbg0Kd2l0aCAg\r
-bm93aGVyZSB0byB0eXBlIGFuZCBleGVjdXRlIGNvbW1hbmRzLCBwcmVzcyB0aGUgUGF1c2UvQnJl\r
-YWsga2V5Lg0KVGhpcyB3aWxsIG9wZW4gYSBuZXcgInRyYXAiIHZpZXdlciB3aGljaCB5b3UgY2Fu\r
-IHRoZW4gdXNlIHRvIHJlY292ZXIuKQ0KDQpDb3BpZXMgb2YgYSB2aWV3ZXIgYWxsIHNoYXJlIHRo\r
-ZSBzYW1lIG1vZGVsIGFuZCB1cGRhdGUgdGhlaXIgZGlzcGxheSBhcyBpdA0KY2hhbmdlcy4gKElm\r
-IHlvdSBoYXZlIHR3byB2aWV3ZXJzIG9wZW4gb24gdGhlIHNhbWUgbmFtZWQgcmVzb3VyY2UgYW5k\r
-IGVkaXQNCm9uZSB5b3UnbGwgc2VlIHRoZSBvdGhlciB1cGRhdGUgYXMgeW91IHR5cGUuKQ0KDQpV\r
-SSBHdWlkZQ0KDQpsZWZ0IG1vdXNlIHNldHMgY3Vyc29yIGluIHRleHQsIGluIG1lbnUgYmFyIHJl\r
-c2l6ZXMgdmlld2VyIGludGVyYWN0aXZlbHkNCih0aGlzIGlzIGEgbGl0dGxlIGJ1Z2d5IGluIHRo\r
-YXQgeW91IGNhbiBtb3ZlIHRoZSBtb3VzZSBxdWlja2x5IGFuZCBnZXQNCm91dHNpZGUgdGhlIG1l\r
-bnUsIGxlYXZpbmcgdGhlIHZpZXdlciBpbiB0aGUgInJlc2l6aW5nIiBzdGF0ZS4gVW50aWwgSSBm\r
-aXgNCnRoaXMsIHRoZSB3b3JrYXJvdW5kIGlzIHRvIGp1c3QgZ3JhYiB0aGUgbWVudSBiYXIgYWdh\r
-aW4gYW5kIHdpZ2dsZSBpdCBhDQpmZXcgcGl4ZWxzIGFuZCBsZXQgZ28uICBUaGlzIHdpbGwgcmVz\r
-ZXQgdGhlIG1hY2hpbmVyeS4pDQoNClJpZ2h0IG1vdXNlIGV4ZWN1dGVzIEpveSBjb21tYW5kIChm\r
-dW5jdGlvbnMpLCBhbmQgeW91IGNhbiBkcmFnIHdpdGggdGhlDQpyaWdodCBidXR0b24gdG8gaGln\r
-aGxpZ2h0ICh3ZWxsLCB1bmRlcmxpbmUpIGNvbW1hbmRzLiAgV29yZHMgdGhhdCBhcmVuJ3QNCm5h\r
-bWVzIG9mIEpveSBjb21tYW5kcyB3b24ndCBiZSB1bmRlcmxpbmVkLiAgUmVsZWFzZSB0aGUgYnV0\r
-dG9uIHRvIGV4ZWN1dGUNCnRoZSBjb21tYW5kLg0KDQpUaGUgbWlkZGxlIG1vdXNlIGJ1dHRvbiAo\r
-dXN1YWxseSBhIHdoZWVsIHRoZXNlIGRheXMpIHNjcm9sbHMgdGhlIHRleHQgYnV0DQp5b3UgY2Fu\r
-IGFsc28gY2xpY2sgYW5kIGRyYWcgYW55IHZpZXdlciB3aXRoIGl0IHRvIG1vdmUgdGhhdCB2aWV3\r
-ZXIgdG8NCmFub3RoZXIgdHJhY2sgb3IgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24gaW4gdGhlIHNh\r
-bWUgdHJhY2suICBUaGVyZSdzIG5vDQpkaXJlY3QgdmlzdWFsIGZlZWRiYWNrIGZvciB0aGlzICh5\r
-ZXQpIGJ1dCB0aGF0IGRvc2VuJ3Qgc2VlbSB0byBpbXBhaXIgaXRzDQp1c2VmdWxuZXNzLg0KDQpG\r
-MSwgRjIgLSBzZXQgc2VsZWN0aW9uIGJlZ2luIGFuZCBlbmQgbWFya2VycyAoY3J1ZGUgYnV0IHVz\r
-YWJsZS4pDQoNCkYzIC0gY29weSBzZWxlY3RlZCB0ZXh0IHRvIHRoZSB0b3Agb2YgdGhlIHN0YWNr\r
-Lg0KDQpTaGlmdC1GMyAtIGFzIGNvcHkgdGhlbiBydW4gInBhcnNlIiBjb21tYW5kIG9uIHRoZSBz\r
-dHJpbmcuDQoNCkY0IC0gY3V0IHNlbGVjdGVkIHRleHQgdG8gdGhlIHRvcCBvZiB0aGUgc3RhY2su\r
-DQoNClNoaWZ0LUY0IC0gYXMgY3V0IHRoZW4gcnVuICJwb3AiIChkZWxldGUgc2VsZWN0aW9uLikN\r
-Cg0KSm95DQoNClByZXR0eSBtdWNoIGFsbCBvZiB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb25hbGl0\r
-eSBvZiB0aGUgc3lzdGVtIGlzIHByb3ZpZGVkDQpieSBleGVjdXRpbmcgSm95IGNvbW1hbmRzIChh\r
-a2EgZnVuY3Rpb25zLCBha2EgIndvcmRzIiBpbiBGb3J0aCkgYnkgcmlnaHQtDQpjbGlja2luZyBv\r
-biB0aGVpciBuYW1lcyBpbiBhbnkgdGV4dC4NCg0KVG8gZ2V0IGhlbHAgb24gYSBKb3kgZnVuY3Rp\r
-b24gc2VsZWN0IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBpbiBhDQpUZXh0Vmlld2VyIHVzaW5n\r
-IEYxIGFuZCBGMiwgdGhlbiBwcmVzcyBzaGlmdC1GMyB0byBwYXJzZSB0aGUgc2VsZWN0aW9uLg0K\r
-VGhlIGZ1bmN0aW9uIChyZWFsbHkgaXRzIFN5bWJvbCkgd2lsbCBhcHBlYXIgb24gdGhlIHN0YWNr\r
-IGluIGJyYWNrZXRzIChhDQoicXVvdGVkIHByb2dyYW0iIHN1Y2ggYXMgIltwb3BdIi4pICBUaGVu\r
-IHJpZ2h0LWNsaWNrIG9uIHRoZSB3b3JkIGhlbHAgaW4NCmFueSBUZXh0Vmlld2VyIChpZiBpdCdz\r
-IG5vdCBhbHJlYWR5IHRoZXJlLCBqdXN0IHR5cGUgaXQgaW4gc29tZXdoZXJlLikNClRoaXMgd2ls\r
-bCBwcmludCB0aGUgZG9jc3RyaW5nIG9yIGRlZmluaXRpb24gb2YgdGhlIHdvcmQgKGZ1bmN0aW9u\r
-KSB0bw0Kc3Rkb3V0LiAgQXQgc29tZSBwb2ludCBJJ2xsIHdyaXRlIGEgdGhpbmcgdG8gc2VuZCB0\r
-aGF0IHRvIHRoZSBsb2cudHh0IGZpbGUNCmluc3RlYWQsIGJ1dCBmb3Igbm93IGxvb2sgZm9yIG91\r
-dHB1dCBpbiB0aGUgdGVybWluYWwuDQpQSwMEFAAAAAAA5GZ4Tnd/ml4DAAAAAwAAAAwAAABzdGFj\r
-ay5waWNrbGUodC5QSwECFAAUAAAAAADkZnhO/eAZUX4DAAB+AwAADwAAAAAAAAAAAAAAtoEAAAAA\r
-ZGVmaW5pdGlvbnMudHh0UEsBAhQAFAAAAAAABWOmTjNOyRkUFgAAFBYAAAoAAAAAAAAAAAAAALaB\r
-qwMAAGxpYnJhcnkucHlQSwECFAAUAAAAAADkZnhORezk1gsAAAALAAAABwAAAAAAAAAAAAAAtoHn\r
-GQAAbG9nLnR4dFBLAQIUABQAAAAAAORmeE5n9rvNAgUAAAIFAAAIAAAAAAAAAAAAAAC2gRcaAABt\r
-ZW51LnR4dFBLAQIUABQAAAAAAORmeE4Aqz3GjhAAAI4QAAALAAAAAAAAAAAAAAC2gT8fAABzY3Jh\r
-dGNoLnR4dFBLAQIUABQAAAAAAORmeE53f5peAwAAAAMAAAAMAAAAAAAAAAAAAAC2gfYvAABzdGFj\r
-ay5waWNrbGVQSwUGAAAAAAYABgBTAQAAIzAAAAAA''')))\r
+c3RhY2sgaW1wb3J0IGxpc3RfdG9fc3RhY2ssIGNvbmNhdA0KZnJvbSBqb3kudnVpIGltcG9ydCBj\r
+b3JlLCB0ZXh0X3ZpZXdlciwgc3RhY2tfdmlld2VyDQoNCg0KZGVmIGluc3RhbGwoY29tbWFuZCk6\r
+IERbY29tbWFuZC5uYW1lXSA9IGNvbW1hbmQNCg0KDQpAaW5zdGFsbA0KQFNpbXBsZUZ1bmN0aW9u\r
+V3JhcHBlcg0KZGVmIGxpc3RfcmVzb3VyY2VzKHN0YWNrKToNCiAgICAnJycNCiAgICBQdXQgYSBz\r
+dHJpbmcgb24gdGhlIHN0YWNrIHdpdGggdGhlIG5hbWVzIG9mIGFsbCB0aGUga25vd24gcmVzb3Vy\r
+Y2VzDQogICAgb25lLXBlci1saW5lLg0KICAgICcnJw0KICAgIHJldHVybiAnXG4nLmpvaW4ocHQu\r
+c2NhbigpKSwgc3RhY2sNCg0KDQpAaW5zdGFsbA0KQFNpbXBsZUZ1bmN0aW9uV3JhcHBlcg0KZGVm\r
+IG9wZW5fc3RhY2soc3RhY2spOg0KICAgICcnJw0KICAgIEdpdmVuIGEgY29vcmRpbmF0ZSBwYWly\r
+IFt4IHldIChpbiBwaXhlbHMpIG9wZW4gYSBTdGFja1ZpZXdlciB0aGVyZS4NCiAgICAnJycNCiAg\r
+ICAoeCwgKHksIF8pKSwgc3RhY2sgPSBzdGFjaw0KICAgIFYgPSBkLm9wZW5fdmlld2VyKHgsIHks\r
+IHN0YWNrX3ZpZXdlci5TdGFja1ZpZXdlcikNCiAgICBWLmRyYXcoKQ0KICAgIHJldHVybiBzdGFj\r
+aw0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFwcGVyDQpkZWYgb3Blbl9yZXNvdXJj\r
+ZShzdGFjayk6DQogICAgJycnDQogICAgR2l2ZW4gYSBjb29yZGluYXRlIHBhaXIgW3ggeV0gKGlu\r
+IHBpeGVscykgYW5kIHRoZSBuYW1lIG9mIGEgcmVzb3VyY2UNCiAgICAoZnJvbSBsaXN0X3Jlc291\r
+cmNlcyBjb21tYW5kKSBvcGVuIGEgdmlld2VyIG9uIHRoYXQgcmVzb3VyY2UgYXQgdGhhdA0KICAg\r
+IGxvY2F0aW9uLg0KICAgICcnJw0KICAgICgoeCwgKHksIF8pKSwgKG5hbWUsIHN0YWNrKSkgPSBz\r
+dGFjaw0KICAgIG9tID0gY29yZS5PcGVuTWVzc2FnZSh3b3JsZCwgbmFtZSkNCiAgICBkLmJyb2Fk\r
+Y2FzdChvbSkNCiAgICBpZiBvbS5zdGF0dXMgPT0gY29yZS5TVUNDRVNTOg0KICAgICAgICBWID0g\r
+ZC5vcGVuX3ZpZXdlcih4LCB5LCB0ZXh0X3ZpZXdlci5UZXh0Vmlld2VyKQ0KICAgICAgICBWLmNv\r
+bnRlbnRfaWQsIFYubGluZXMgPSBvbS5jb250ZW50X2lkLCBvbS50aGluZw0KICAgICAgICBWLmRy\r
+YXcoKQ0KICAgIHJldHVybiBzdGFjaw0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFw\r
+cGVyDQpkZWYgbmFtZV92aWV3ZXIoc3RhY2spOg0KICAgICcnJw0KICAgIEdpdmVuIGEgc3RyaW5n\r
+IG5hbWUgb24gdGhlIHN0YWNrLCBpZiB0aGUgY3VycmVudGx5IGZvY3VzZWQgdmlld2VyIGlzDQog\r
+ICAgYW5vbnltb3VzLCBuYW1lIHRoZSB2aWV3ZXIgYW5kIHBlcnNpc3QgaXQgaW4gdGhlIHJlc291\r
+cmNlIHN0b3JlIHVuZGVyDQogICAgdGhhdCBuYW1lLg0KICAgICcnJw0KICAgIG5hbWUsIHN0YWNr\r
+ID0gc3RhY2sNCiAgICBhc3NlcnQgaXNpbnN0YW5jZShuYW1lLCBzdHIpLCByZXByKG5hbWUpDQog\r
+ICAgaWYgZC5mb2N1c2VkX3ZpZXdlciBhbmQgbm90IGQuZm9jdXNlZF92aWV3ZXIuY29udGVudF9p\r
+ZDoNCiAgICAgICAgZC5mb2N1c2VkX3ZpZXdlci5jb250ZW50X2lkID0gbmFtZQ0KICAgICAgICBw\r
+bSA9IGNvcmUuUGVyc2lzdE1lc3NhZ2Uod29ybGQsIG5hbWUsIHRoaW5nPWQuZm9jdXNlZF92aWV3\r
+ZXIubGluZXMpDQogICAgICAgIGQuYnJvYWRjYXN0KHBtKQ0KICAgICAgICBkLmZvY3VzZWRfdmll\r
+d2VyLmRyYXdfbWVudSgpDQogICAgcmV0dXJuIHN0YWNrDQoNCg0KIyNAaW5zdGFsbA0KIyNAU2lt\r
+cGxlRnVuY3Rpb25XcmFwcGVyDQojI2RlZiBwZXJzaXN0X3ZpZXdlcihzdGFjayk6DQojIyAgICBp\r
+ZiBzZWxmLmZvY3VzZWRfdmlld2VyOg0KIyMgICAgICAgIA0KIyMgICAgICAgIHNlbGYuZm9jdXNl\r
+ZF92aWV3ZXIuY29udGVudF9pZCA9IG5hbWUNCiMjICAgICAgICBzZWxmLmZvY3VzZWRfdmlld2Vy\r
+LmRyYXdfbWVudSgpDQojIyAgICByZXR1cm4gc3RhY2sNCg0KDQpAaW5zdGFsbA0KQFNpbXBsZUZ1\r
+bmN0aW9uV3JhcHBlcg0KZGVmIGluc2NyaWJlKHN0YWNrKToNCiAgICAnJycNCiAgICBDcmVhdGUg\r
+YSBuZXcgSm95IGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpveSBkaWN0aW9uYXJ5LiAgQQ0K\r
+ICAgIGRlZmluaXRpb24gaXMgZ2l2ZW4gYXMgYSBzdHJpbmcgd2l0aCBhIG5hbWUgZm9sbG93ZWQg\r
+YnkgYSBkb3VibGUNCiAgICBlcXVhbCBzaWduIHRoZW4gb25lIG9yIG1vcmUgSm95IGZ1bmN0aW9u\r
+cywgdGhlIGJvZHkuIGZvciBleGFtcGxlOg0KDQogICAgICAgIHNxciA9PSBkdXAgbXVsDQoNCiAg\r
+ICBJZiB5b3Ugd2FudCB0aGUgZGVmaW5pdGlvbiB0byBwZXJzaXN0IG92ZXIgcmVzdGFydHMsIGVu\r
+dGVyIGl0IGludG8NCiAgICB0aGUgZGVmaW5pdGlvbnMudHh0IHJlc291cmNlLg0KICAgICcnJw0K\r
+ICAgIGRlZmluaXRpb24sIHN0YWNrID0gc3RhY2sNCiAgICBEZWZpbml0aW9uV3JhcHBlci5hZGRf\r
+ZGVmKGRlZmluaXRpb24sIEQpDQogICAgcmV0dXJuIHN0YWNrDQoNCg0KQGluc3RhbGwNCkBTaW1w\r
+bGVGdW5jdGlvbldyYXBwZXINCmRlZiBvcGVuX3ZpZXdlcihzdGFjayk6DQogICAgJycnDQogICAg\r
+R2l2ZW4gYSBjb29yZGluYXRlIHBhaXIgW3ggeV0gKGluIHBpeGVscykgYW5kIGEgc3RyaW5nLCBv\r
+cGVuIGEgbmV3DQogICAgdW5uYW1lZCB2aWV3ZXIgb24gdGhhdCBzdHJpbmcgYXQgdGhhdCBsb2Nh\r
+dGlvbi4NCiAgICAnJycNCiAgICAoKHgsICh5LCBfKSksIChjb250ZW50LCBzdGFjaykpID0gc3Rh\r
+Y2sNCiAgICBWID0gZC5vcGVuX3ZpZXdlcih4LCB5LCB0ZXh0X3ZpZXdlci5UZXh0Vmlld2VyKQ0K\r
+ICAgIFYubGluZXMgPSBjb250ZW50LnNwbGl0bGluZXMoKQ0KICAgIFYuZHJhdygpDQogICAgcmV0\r
+dXJuIHN0YWNrDQoNCg0KQGluc3RhbGwNCkBTaW1wbGVGdW5jdGlvbldyYXBwZXINCmRlZiBnb29k\r
+X3ZpZXdlcl9sb2NhdGlvbihzdGFjayk6DQogICAgJycnDQogICAgTGVhdmUgYSBjb29yZGluYXRl\r
+IHBhaXIgW3ggeV0gKGluIHBpeGVscykgb24gdGhlIHN0YWNrIHRoYXQgd291bGQNCiAgICBiZSBh\r
+IGdvb2QgbG9jYXRpb24gYXQgd2hpY2ggdG8gb3BlbiBhIG5ldyB2aWV3ZXIuICAoVGhlIGhldXJp\r
+c3RpYw0KICAgIGVtcGxveWVkIGlzIHRvIHRha2UgdXAgdGhlIGJvdHRvbSBoYWxmIG9mIHRoZSBj\r
+dXJyZW50bHkgb3BlbiB2aWV3ZXINCiAgICB3aXRoIHRoZSBncmVhdGVzdCBhcmVhLikNCiAgICAn\r
+JycNCiAgICB2aWV3ZXJzID0gbGlzdChkLml0ZXJfdmlld2VycygpKQ0KICAgIGlmIHZpZXdlcnM6\r
+DQogICAgICAgIHZpZXdlcnMuc29ydChrZXk9bGFtYmRhIChWLCB4LCB5KTogVi53ICogVi5oKQ0K\r
+ICAgICAgICBWLCB4LCB5ID0gdmlld2Vyc1stMV0NCiAgICAgICAgY29vcmRzID0gKHggKyAxLCAo\r
+eSArIFYuaCAvIDIsICgpKSkNCiAgICBlbHNlOg0KICAgICAgICBjb29yZHMgPSAoMCwgKDAsICgp\r
+KSkNCiAgICByZXR1cm4gY29vcmRzLCBzdGFjaw0KDQoNCkBpbnN0YWxsDQpARnVuY3Rpb25XcmFw\r
+cGVyDQpkZWYgY21wXyhzdGFjaywgZXhwcmVzc2lvbiwgZGljdGlvbmFyeSk6DQogICAgJycnDQog\r
+ICAgVGhlIGNtcCBjb21iaW5hdG9yIHRha2VzIHR3byB2YWx1ZXMgYW5kIHRocmVlIHF1b3RlZCBw\r
+cm9ncmFtcyBvbiB0aGUNCiAgICBzdGFjayBhbmQgcnVucyBvbmUgb2YgdGhlIHRocmVlIGRlcGVu\r
+ZGluZyBvbiB0aGUgcmVzdWx0cyBvZiBjb21wYXJpbmcNCiAgICB0aGUgdHdvIHZhbHVlczoNCg0K\r
+ICAgICAgICAgICBhIGIgW0ddIFtFXSBbTF0gY21wDQogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t\r
+LS0tLS0tLS0gYSA+IGINCiAgICAgICAgICAgICAgICBHDQoNCiAgICAgICAgICAgYSBiIFtHXSBb\r
+RV0gW0xdIGNtcA0KICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGEgPSBiDQogICAg\r
+ICAgICAgICAgICAgICAgIEUNCg0KICAgICAgICAgICBhIGIgW0ddIFtFXSBbTF0gY21wDQogICAg\r
+ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYSA8IGINCiAgICAgICAgICAgICAgICAgICAg\r
+ICAgIEwNCg0KICAgICcnJw0KICAgIEwsIChFLCAoRywgKGIsIChhLCBzdGFjaykpKSkgPSBzdGFj\r
+aw0KICAgIGV4cHJlc3Npb24gPSBjb25jYXQoRyBpZiBhID4gYiBlbHNlIEwgaWYgYSA8IGIgZWxz\r
+ZSBFLCBleHByZXNzaW9uKQ0KICAgIHJldHVybiBzdGFjaywgZXhwcmVzc2lvbiwgZGljdGlvbmFy\r
+eQ0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFwcGVyDQpkZWYgbGlzdF92aWV3ZXJz\r
+KHN0YWNrKToNCiAgICAnJycNCiAgICBQdXQgYSBzdHJpbmcgb24gdGhlIHN0YWNrIHdpdGggc29t\r
+ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5DQogICAgb3BlbiB2aWV3ZXJzLCBvbmUt\r
+cGVyLWxpbmUuICBUaGlzIGlzIGtpbmQgb2YgYSBkZW1vIGZ1bmN0aW9uLCByYXRoZXINCiAgICB0\r
+aGFuIHNvbWV0aGluZyByZWFsbHkgdXNlZnVsLg0KICAgICcnJw0KICAgIGxpbmVzID0gW10NCiAg\r
+ICBmb3IgeCwgVCBpbiBkLnRyYWNrczoNCiAgICAgICAgI2xpbmVzLmFwcGVuZCgneDogJWksIHc6\r
+ICVpLCAlcicgJSAoeCwgVC53LCBUKSkNCiAgICAgICAgZm9yIHksIFYgaW4gVC52aWV3ZXJzOg0K\r
+ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCd4OiAlaSB5OiAlaSBoOiAlaSAlciAlcicgJSAoeCwg\r
+eSwgVi5oLCBWLmNvbnRlbnRfaWQsIFYpKQ0KICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpLCBz\r
+dGFjaw0KDQoNCkBpbnN0YWxsDQpAU2ltcGxlRnVuY3Rpb25XcmFwcGVyDQpkZWYgc3BsaXRsaW5l\r
+cyhzdGFjayk6DQogICAgJycnDQogICAgR2l2ZW4gYSBzdHJpbmcgb24gdGhlIHN0YWNrIHJlcGxh\r
+Y2UgaXQgd2l0aCBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluDQogICAgdGhlIHN0cmluZy4NCiAgICAn\r
+JycNCiAgICB0ZXh0LCBzdGFjayA9IHN0YWNrDQogICAgYXNzZXJ0IGlzaW5zdGFuY2UodGV4dCwg\r
+c3RyKSwgcmVwcih0ZXh0KQ0KICAgIHJldHVybiBsaXN0X3RvX3N0YWNrKHRleHQuc3BsaXRsaW5l\r
+cygpKSwgc3RhY2sNCg0KDQpAaW5zdGFsbA0KQFNpbXBsZUZ1bmN0aW9uV3JhcHBlcg0KZGVmIGhp\r
+eWEoc3RhY2spOg0KICAgICcnJw0KICAgIERlbW8gZnVuY3Rpb24gdG8gaW5zZXJ0ICJIaSBXb3Js\r
+ZCEiIGludG8gdGhlIGN1cnJlbnQgdmlld2VyLCBpZiBhbnkuDQogICAgJycnDQogICAgaWYgZC5m\r
+b2N1c2VkX3ZpZXdlcjoNCiAgICAgICAgZC5mb2N1c2VkX3ZpZXdlci5pbnNlcnQoJ0hpIFdvcmxk\r
+IScpDQogICAgcmV0dXJuIHN0YWNrDQpQSwMEFAAAAAAA5GZ4TkXs5NYLAAAACwAAAAcAAABsb2cu\r
+dHh0Sm95cHkgbG9nDQpQSwMEFAAAAAAA5GZ4Tmf2u80CBQAAAgUAAAgAAABtZW51LnR4dCAgbmFt\r
+ZV92aWV3ZXINCiAgbGlzdF9yZXNvdXJjZXMNCiAgb3Blbl9yZXNvdXJjZV9hdF9nb29kX2xvY2F0\r
+aW9uDQogIGdvb2Rfdmlld2VyX2xvY2F0aW9uDQogIG9wZW5fdmlld2VyDQogIHNlZV9zdGFjaw0K\r
+ICBzZWVfcmVzb3VyY2VzDQogIHNlZV9kZWZpbml0aW9ucw0KICBzZWVfbG9nDQogIHJlc2V0X2xv\r
+Zw0KDQogIGluc2NyaWJlDQogIGV2YWx1YXRlDQoNCiAgcG9wIGNsZWFyICAgIGR1cCBzd2FwDQoN\r
+CiAgYWRkIHN1YiBtdWwgZGl2IHRydWVkaXYgbW9kdWx1cyBkaXZtb2QNCiAgcG0gKysgLS0gc3Vt\r
+IHByb2R1Y3QgcG93IHNxciBzcXJ0DQogIDwgPD0gPSA+PSA+IDw+DQogICYgPDwgPj4NCg0KICBp\r
+IGR1cGRpcA0KDQohPSAlICYgKiAqZnJhY3Rpb24gKmZyYWN0aW9uMCArICsrIC0gLS0gLyA8IDw8\r
+IDw9IDw+ID0gPiA+PSA+PiA/IF4NCmFicyBhZGQgYW5hbW9ycGhpc20gYW5kIGFwcDEgYXBwMiBh\r
+cHAzIGF0IGF2ZXJhZ2UNCmIgYmluYXJ5IGJyYW5jaA0KY2hvaWNlIGNsZWFyIGNsZWF2ZSBjb25j\r
+YXQgY29ucw0KZGluZnJpcnN0IGRpcCBkaXBkIGRpcGRkIGRpc2Vuc3RhY2tlbiBkaXYgZGl2bW9k\r
+IGRvd25fdG9femVybyBkcm9wDQpkdWRpcGQgZHVwIGR1cGQgZHVwZGlwDQplbnN0YWNrZW4gZXEN\r
+CmZpcnN0IGZsYXR0ZW4gZmxvb3IgZmxvb3JkaXYNCmdjZCBnZSBnZW5yZWMgZ2V0aXRlbSBncmFu\r
+ZF9yZXNldCBndA0KaGVscA0KaSBpZCBpZnRlIGluZnJhIGluc2NyaWJlDQprZXlfYmluZGluZ3MN\r
+CmxlIGxlYXN0X2ZyYWN0aW9uIGxvb3AgbHNoaWZ0IGx0DQptYXAgbWF4IG1pbiBtb2QgbW9kdWx1\r
+cyBtb3VzZV9iaW5kaW5ncyBtdWwNCm5lIG5lZyBub3QgbnVsbGFyeQ0Kb2Ygb3Igb3Zlcg0KcGFt\r
+IHBhcnNlIHBpY2sgcG0gcG9wIHBvcGQgcG9wZGQgcG9wb3AgcG93IHByZWQgcHJpbXJlYyBwcm9k\r
+dWN0DQpxdW90ZWQNCnJhbmdlIHJhbmdlX3RvX3plcm8gcmVtIHJlbWFpbmRlciByZW1vdmUgcmVz\r
+ZXRfbG9nIHJlc3QgcmV2ZXJzZQ0Kcm9sbDwgcm9sbD4gcm9sbGRvd24gcm9sbHVwIHJzaGlmdCBy\r
+dW4NCnNlY29uZCBzZWxlY3Qgc2hhcmluZyBzaG93X2xvZyBzaHVudCBzaXplIHNvcnQgc3FyIHNx\r
+cnQgc3RhY2sgc3RlcA0Kc3RlcF96ZXJvIHN1YiBzdWNjIHN1bSBzd2FhY2sgc3dhcCBzd29uY2F0\r
+IHN3b25zDQp0YWtlIHRlcm5hcnkgdGhpcmQgdGltZXMgdHJ1ZWRpdiB0cnV0aHkgdHVjaw0KdW5h\r
+cnkgdW5jb25zIHVuaXF1ZSB1bml0IHVucXVvdGVkIHVuc3RhY2sNCnZvaWQNCndhcnJhbnR5IHdo\r
+aWxlIHdvcmRzDQp4IHhvcg0KemlwDQpQSwMEFAAAAAAA5GZ4TgCrPcaOEAAAjhAAAAsAAABzY3Jh\r
+dGNoLnR4dFdoYXQgaXMgaXQ/DQoNCkEgc2ltcGxlIEdyYXBoaWNhbCBVc2VyIEludGVyZmFjZSBm\r
+b3IgdGhlIEpveSBwcm9ncmFtbWluZyBsYW5ndWFnZSwNCndyaXR0ZW4gdXNpbmcgUHlnYW1lIHRv\r
+IGJ5cGFzcyBYMTEgZXQuIGFsLiwgbW9kZWxlZCBvbiB0aGUgT2Jlcm9uIE9TLCBhbmQNCmludGVu\r
+ZGVkIHRvIGJlIGp1c3QgZnVuY3Rpb25hbCBlbm91Z2ggdG8gc3VwcG9ydCBib290c3RyYXBwaW5n\r
+IGZ1cnRoZXIgSm95DQpkZXZlbG9wbWVudC4NCg0KSXQncyBiYXNpYyBmdW5jdGlvbmFsaXR5IGlz\r
+IG1vcmUtb3ItbGVzcyBhcyBhIGNydWRlIHRleHQgZWRpdG9yIGFsb25nIHdpdGgNCmEgc2ltcGxl\r
+IEpveSBydW50aW1lIChpbnRlcnByZXRlciwgc3RhY2ssIGFuZCBkaWN0aW9uYXJ5LikgIEl0IGF1\r
+dG8tIHNhdmVzDQphbnkgbmFtZWQgZmlsZXMgKGluIGEgdmVyc2lvbmVkIGhvbWUgZGlyZWN0b3J5\r
+KSBhbmQgeW91IGNhbiB3cml0ZSBuZXcgSm95DQpwcmltaXRpdmVzIGluIFB5dGhvbiBhbmQgSm95\r
+IGRlZmluaXRpb25zIGFuZCBpbW1lZGlhdGVseSBpbnN0YWxsIGFuZCB1c2UNCnRoZW0sIGFzIHdl\r
+bGwgYXMgcmVjb3JkaW5nIHRoZW0gZm9yIHJldXNlIChhZnRlciByZXN0YXJ0cy4pDQoNCkN1cnJl\r
+bnRseSwgdGhlcmUgYXJlIG9ubHkgdHdvIGtpbmRzIG9mIChpbnRlcmVzdGluZykgdmlld2Vyczog\r
+VGV4dFZpZXdlcnMNCmFuZCBTdGFja1ZpZXdlci4gVGhlIFRleHRWaWV3ZXJzIGFyZSBjcnVkZSB0\r
+ZXh0IGVkaXRvcnMuICBUaGV5IHByb3ZpZGUNCmp1c3QgZW5vdWdoIGZ1bmN0aW9uYWxpdHkgdG8g\r
+bGV0IHRoZSB1c2VyIHdyaXRlIHRleHQgYW5kIGNvZGUgKFB5dGhvbiBhbmQNCkpveSkgYW5kIGV4\r
+ZWN1dGUgSm95IGZ1bmN0aW9ucy4gIE9uZSBpbXBvcnRhbnQgdGhpbmcgdGhleSBkbyBpcw0KYXV0\r
+b21hdGljYWxseSBzYXZlIHRoZWlyIGNvbnRlbnQgYWZ0ZXIgY2hhbmdlcy4gIE5vIG1vcmUgbG9z\r
+dCB3b3JrLg0KDQpUaGUgU3RhY2tWaWV3ZXIgaXMgYSBzcGVjaWFsaXplZCBUZXh0Vmlld2VyIHRo\r
+YXQgc2hvd3MgdGhlIGNvbnRlbnRzIG9mIHRoZQ0KSm95IHN0YWNrIG9uZSBsaW5lIHBlciBzdGFj\r
+ayBpdGVtLiAgSXQncyBhIHZlcnkgaGFuZHkgdmlzdWFsIGFpZCB0byBrZWVwDQp0cmFjayBvZiB3\r
+aGF0J3MgZ29pbmcgb24uICBUaGVyZSdzIGFsc28gYSBsb2cudHh0IGZpbGUgdGhhdCBnZXRzIHdy\r
+aXR0ZW4NCnRvIHdoZW4gY29tbWFuZHMgYXJlIGV4ZWN1dGVkLCBhbmQgc28gcmVjb3JkcyB0aGUg\r
+bG9nIG9mIHVzZXIgYWN0aW9ucyBhbmQNCnN5c3RlbSBldmVudHMuICBJdCB0ZW5kcyB0byBmaWxs\r
+IHVwIHF1aWNrbHkgc28gdGhlcmUncyBhIHJlc2V0X2xvZyBjb21tYW5kDQp0aGF0IGNsZWFycyBp\r
+dCBvdXQuDQoNClZpZXdlcnMgaGF2ZSAiZ3JvdyIgYW5kICJjbG9zZSIgaW4gdGhlaXIgbWVudSBi\r
+YXJzLiAgVGhlc2UgYXJlIGJ1dHRvbnMuDQpXaGVuIHlvdSByaWdodC1jbGljayBvbiBncm93IGEg\r
+dmlld2VyIGEgY29weSBpcyBjcmVhdGVkIHRoYXQgY292ZXJzIHRoYXQNCnZpZXdlcidzIGVudGly\r
+ZSB0cmFjay4gIElmIHlvdSBncm93IGEgdmlld2VyIHRoYXQgYWxyZWFkeSB0YWtlcyB1cCBpdHMN\r
+Cndob2xlIHRyYWNrIHRoZW4gYSBjb3B5IGlzIGNyZWF0ZWQgdGhhdCB0YWtlcyB1cCBhbiBhZGRp\r
+dGlvbmFsIHRyYWNrLCB1cA0KdG8gdGhlIHdob2xlIHNjcmVlbi4gIENsb3NpbmcgYSB2aWV3ZXIg\r
+anVzdCBkZWxldGVzIHRoYXQgdmlld2VyLCBhbmQgd2hlbg0KYSB0cmFjayBoYXMgbm8gbW9yZSB2\r
+aWV3ZXJzLCBpdCBpcyBkZWxldGVkIGFuZCB0aGF0IGV4cG9zZXMgYW55IHByZXZpb3VzDQp0cmFj\r
+a3MgYW5kIHZpZXdlcnMgdGhhdCB3ZXJlIGhpZGRlbi4NCg0KKE5vdGU6IGlmIHlvdSBldmVyIGNs\r
+b3NlIGFsbCB0aGUgdmlld2VycyBhbmQgYXJlIHNpdHRpbmcgYXQgYSBibGFuayBzY3JlZW4NCndp\r
+dGggIG5vd2hlcmUgdG8gdHlwZSBhbmQgZXhlY3V0ZSBjb21tYW5kcywgcHJlc3MgdGhlIFBhdXNl\r
+L0JyZWFrIGtleS4NClRoaXMgd2lsbCBvcGVuIGEgbmV3ICJ0cmFwIiB2aWV3ZXIgd2hpY2ggeW91\r
+IGNhbiB0aGVuIHVzZSB0byByZWNvdmVyLikNCg0KQ29waWVzIG9mIGEgdmlld2VyIGFsbCBzaGFy\r
+ZSB0aGUgc2FtZSBtb2RlbCBhbmQgdXBkYXRlIHRoZWlyIGRpc3BsYXkgYXMgaXQNCmNoYW5nZXMu\r
+IChJZiB5b3UgaGF2ZSB0d28gdmlld2VycyBvcGVuIG9uIHRoZSBzYW1lIG5hbWVkIHJlc291cmNl\r
+IGFuZCBlZGl0DQpvbmUgeW91J2xsIHNlZSB0aGUgb3RoZXIgdXBkYXRlIGFzIHlvdSB0eXBlLikN\r
+Cg0KVUkgR3VpZGUNCg0KbGVmdCBtb3VzZSBzZXRzIGN1cnNvciBpbiB0ZXh0LCBpbiBtZW51IGJh\r
+ciByZXNpemVzIHZpZXdlciBpbnRlcmFjdGl2ZWx5DQoodGhpcyBpcyBhIGxpdHRsZSBidWdneSBp\r
+biB0aGF0IHlvdSBjYW4gbW92ZSB0aGUgbW91c2UgcXVpY2tseSBhbmQgZ2V0DQpvdXRzaWRlIHRo\r
+ZSBtZW51LCBsZWF2aW5nIHRoZSB2aWV3ZXIgaW4gdGhlICJyZXNpemluZyIgc3RhdGUuIFVudGls\r
+IEkgZml4DQp0aGlzLCB0aGUgd29ya2Fyb3VuZCBpcyB0byBqdXN0IGdyYWIgdGhlIG1lbnUgYmFy\r
+IGFnYWluIGFuZCB3aWdnbGUgaXQgYQ0KZmV3IHBpeGVscyBhbmQgbGV0IGdvLiAgVGhpcyB3aWxs\r
+IHJlc2V0IHRoZSBtYWNoaW5lcnkuKQ0KDQpSaWdodCBtb3VzZSBleGVjdXRlcyBKb3kgY29tbWFu\r
+ZCAoZnVuY3Rpb25zKSwgYW5kIHlvdSBjYW4gZHJhZyB3aXRoIHRoZQ0KcmlnaHQgYnV0dG9uIHRv\r
+IGhpZ2hsaWdodCAod2VsbCwgdW5kZXJsaW5lKSBjb21tYW5kcy4gIFdvcmRzIHRoYXQgYXJlbid0\r
+DQpuYW1lcyBvZiBKb3kgY29tbWFuZHMgd29uJ3QgYmUgdW5kZXJsaW5lZC4gIFJlbGVhc2UgdGhl\r
+IGJ1dHRvbiB0byBleGVjdXRlDQp0aGUgY29tbWFuZC4NCg0KVGhlIG1pZGRsZSBtb3VzZSBidXR0\r
+b24gKHVzdWFsbHkgYSB3aGVlbCB0aGVzZSBkYXlzKSBzY3JvbGxzIHRoZSB0ZXh0IGJ1dA0KeW91\r
+IGNhbiBhbHNvIGNsaWNrIGFuZCBkcmFnIGFueSB2aWV3ZXIgd2l0aCBpdCB0byBtb3ZlIHRoYXQg\r
+dmlld2VyIHRvDQphbm90aGVyIHRyYWNrIG9yIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIGluIHRo\r
+ZSBzYW1lIHRyYWNrLiAgVGhlcmUncyBubw0KZGlyZWN0IHZpc3VhbCBmZWVkYmFjayBmb3IgdGhp\r
+cyAoeWV0KSBidXQgdGhhdCBkb3Nlbid0IHNlZW0gdG8gaW1wYWlyIGl0cw0KdXNlZnVsbmVzcy4N\r
+Cg0KRjEsIEYyIC0gc2V0IHNlbGVjdGlvbiBiZWdpbiBhbmQgZW5kIG1hcmtlcnMgKGNydWRlIGJ1\r
+dCB1c2FibGUuKQ0KDQpGMyAtIGNvcHkgc2VsZWN0ZWQgdGV4dCB0byB0aGUgdG9wIG9mIHRoZSBz\r
+dGFjay4NCg0KU2hpZnQtRjMgLSBhcyBjb3B5IHRoZW4gcnVuICJwYXJzZSIgY29tbWFuZCBvbiB0\r
+aGUgc3RyaW5nLg0KDQpGNCAtIGN1dCBzZWxlY3RlZCB0ZXh0IHRvIHRoZSB0b3Agb2YgdGhlIHN0\r
+YWNrLg0KDQpTaGlmdC1GNCAtIGFzIGN1dCB0aGVuIHJ1biAicG9wIiAoZGVsZXRlIHNlbGVjdGlv\r
+bi4pDQoNCkpveQ0KDQpQcmV0dHkgbXVjaCBhbGwgb2YgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9u\r
+YWxpdHkgb2YgdGhlIHN5c3RlbSBpcyBwcm92aWRlZA0KYnkgZXhlY3V0aW5nIEpveSBjb21tYW5k\r
+cyAoYWthIGZ1bmN0aW9ucywgYWthICJ3b3JkcyIgaW4gRm9ydGgpIGJ5IHJpZ2h0LQ0KY2xpY2tp\r
+bmcgb24gdGhlaXIgbmFtZXMgaW4gYW55IHRleHQuDQoNClRvIGdldCBoZWxwIG9uIGEgSm95IGZ1\r
+bmN0aW9uIHNlbGVjdCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gaW4gYQ0KVGV4dFZpZXdlciB1\r
+c2luZyBGMSBhbmQgRjIsIHRoZW4gcHJlc3Mgc2hpZnQtRjMgdG8gcGFyc2UgdGhlIHNlbGVjdGlv\r
+bi4NClRoZSBmdW5jdGlvbiAocmVhbGx5IGl0cyBTeW1ib2wpIHdpbGwgYXBwZWFyIG9uIHRoZSBz\r
+dGFjayBpbiBicmFja2V0cyAoYQ0KInF1b3RlZCBwcm9ncmFtIiBzdWNoIGFzICJbcG9wXSIuKSAg\r
+VGhlbiByaWdodC1jbGljayBvbiB0aGUgd29yZCBoZWxwIGluDQphbnkgVGV4dFZpZXdlciAoaWYg\r
+aXQncyBub3QgYWxyZWFkeSB0aGVyZSwganVzdCB0eXBlIGl0IGluIHNvbWV3aGVyZS4pDQpUaGlz\r
+IHdpbGwgcHJpbnQgdGhlIGRvY3N0cmluZyBvciBkZWZpbml0aW9uIG9mIHRoZSB3b3JkIChmdW5j\r
+dGlvbikgdG8NCnN0ZG91dC4gIEF0IHNvbWUgcG9pbnQgSSdsbCB3cml0ZSBhIHRoaW5nIHRvIHNl\r
+bmQgdGhhdCB0byB0aGUgbG9nLnR4dCBmaWxlDQppbnN0ZWFkLCBidXQgZm9yIG5vdyBsb29rIGZv\r
+ciBvdXRwdXQgaW4gdGhlIHRlcm1pbmFsLg0KUEsDBBQAAAAAAORmeE53f5peAwAAAAMAAAAMAAAA\r
+c3RhY2sucGlja2xlKHQuUEsBAhQAFAAAAAAA5GZ4Tv3gGVF+AwAAfgMAAA8AAAAAAAAAAAAAALaB\r
+AAAAAGRlZmluaXRpb25zLnR4dFBLAQIUABQAAAAAACFrpk7/HHjxGBYAABgWAAAKAAAAAAAAAAAA\r
+AAC2gasDAABsaWJyYXJ5LnB5UEsBAhQAFAAAAAAA5GZ4TkXs5NYLAAAACwAAAAcAAAAAAAAAAAAA\r
+ALaB6xkAAGxvZy50eHRQSwECFAAUAAAAAADkZnhOZ/a7zQIFAAACBQAACAAAAAAAAAAAAAAAtoEb\r
+GgAAbWVudS50eHRQSwECFAAUAAAAAADkZnhOAKs9xo4QAACOEAAACwAAAAAAAAAAAAAAtoFDHwAA\r
+c2NyYXRjaC50eHRQSwECFAAUAAAAAADkZnhOd3+aXgMAAAADAAAADAAAAAAAAAAAAAAAtoH6LwAA\r
+c3RhY2sucGlja2xlUEsFBgAAAAAGAAYAUwEAACcwAAAAAA==''')))\r
 \r
 \r
 if __name__ == '__main__':\r