# Name: cbe_frontauth v0.9.7 # Type: Public side plugin # Manage backend connections from frontend # Author: Claire Brione # URL: http://www.clairebrione.com/ # Recommended load order: 4 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJjYmVfZnJvbnRhdXRoIjtzOjY6ImF1dGhvciI7czox MzoiQ2xhaXJlIEJyaW9uZSI7czoxMDoiYXV0aG9yX3VyaSI7czoyODoiaHR0cDovL3d3dy5j bGFpcmVicmlvbmUuY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuOS43IjtzOjExOiJkZXNj cmlwdGlvbiI7czo0MDoiTWFuYWdlIGJhY2tlbmQgY29ubmVjdGlvbnMgZnJvbSBmcm9udGVu ZCI7czo0OiJjb2RlIjtzOjMzODY2OiIvKg0KKiogY2JlX2Zyb250YXV0aA0KKiogQ2xpZW50 LXNpZGUgdGV4dHBhdHRlcm4gcGx1Z2luDQoqKiBDb25uZWN0IChhbmQgZGlzY29ubmVjdCkg ZnJvbSBmcm9udGVuZCB0byBiYWNrZW5kDQoqKiBFc3RhYmxpc2hlcyBiaWRpcmVjdGlvbmFs IGxpbmtzIGJldHdlZW4gYXJ0aWNsZSBkaXNwbGF5IGFuZCBlZGl0aW9uDQoqKiBDbGFpcmUg QnJpb25lIC0gaHR0cDovL3d3dy5jbGFpcmVicmlvbmUuY29tLw0KKioNCioqIDAuMS1kZXYg LSAyMiBKdWwgMjAxMSAtIFJlc3RyaWN0ZWQgZGV2ZWxvcG1lbnQgcmVsZWFzZQ0KKiogMC4y LWRldiAtIDIzIEp1bCAyMDExIC0gUmVzdHJpY3RlZCBkZXZlbG9wbWVudCByZWxlYXNlDQoq KiAwLjMtZGV2IC0gMjQgSnVsIDIwMTEgLSBSZXN0cmljdGVkIGRldmVsb3BtZW50IHJlbGVh c2UNCioqIDAuNC1iZXRhLSAyNiBKdWwgMjAxMSAtIFJlc3RyaWN0ZWQgYmV0YSByZWxlYXNl DQoqKiAwLjUtYmV0YS0gMjcgSnVsIDIwMTEgLSBGaXJzdCBwdWJsaWMgYmV0YSByZWxlYXNl DQoqKiAwLjYtYmV0YS0gMjkgSnVsIDIwMTEgLSBPcHRpbWl6YXRpb25zIHRvIGF2b2lkIG11 bHRpcGxlIGNhbGxzIHRvIGRhdGFiYXNlDQoqKiAgICAgICAgICAgICAgICAgICAgICAgICAg IHdoZW4gcmV0cmlldmluZyB1c2VyJ3MgaW5mb3JtYXRpb25zDQoqKiAgICAgICAgICAgICAg ICAgICAgICAgICBBZGRlZCBuYW1lIGFuZCBwcml2aWxlZ2UgY29udHJvbHMNCioqICAgICAg ICAgICAgICAgICAgICAgICAgICAgw6AgbGEgPHR4cDpydm1faWZfcHJpdmlsZWdlZCAvPiAo aHR0cDovL3Zhbm1lbGljay5jb20vdHhwLykNCioqICAgICAgICAgICAgICAgICAgICAgICAg IE1pbm9yIGNoYW5nZXMgdG8gZG9jdW1lbnRhdGlvbg0KKiogMC43LWJldGEtIDA2IEF1ZyAy MDExIC0gSW50cm9kdWNlcyA8dHhwOmNiZV9mcm9udGF1dGhfZWRpdF9hcnRpY2xlIC8+DQoq KiAgICAgICAgICAgICAgICAgICAgICAgICBDU1JGIHByb3RlY3Rpb24gcmVhZHkNCioqICAg ICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzDQoqKiAw LjcuMSAgIC0gMDUgSmFuIDIwMTIgLSBEb2N1bWVudGF0aW9uIGFkZGVuZGENCioqIDAuOCAg ICAgLSAxMCBKYW4gMjAxMiAtIEludHJvZHVjZXMgPHR4cDpjYmVfZnJvbnRhdXRoX2xvZ2lu d2l0aCAvPg0KKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9mb3J1bS50 ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MjU2NjMyI3AyNTY2MzINCioqICAg ICAgICAgICAgICAgICAgICAgICAgIHR4cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aCAoKmF1 dG8qfHVzZXJuYW1lfGVtYWlsKQ0KKiogMC45ICAgICAtIDIxIE1hciAyMDEyIC0gQWRkZWQg Y2FsbGJhY2sgaG9va3MgKHJlc2V0IGFuZCBjaGFuZ2UgcGFzc3dvcmQpDQoqKiAwLjkuMSAg IC0gMjIgTWFyIDIwMTIgLSBGaXhlZCBtaXNzaW5nIGF0dHJpYnV0ZXMgKHNob3dfbG9naW4g YW5kIHNob3dfY2hhbmdlKSBmb3IgY2JlX2Zyb250YXV0aF9ib3gNCioqIDAuOS4yICAgLSA/ PyA/Pz8gMjAxMiAtID8/DQoqKiAwLjkuMyAgIC0gMjIgQXVnIDIwMTIgLSBEb2MgdHlwbyBm b3IgY2JlX2Zyb250YXV0aF9pbnZpdGUNCioqIDAuOS40ICAgLSAyNyBNYXIgMjAxMyAtIE1p c3NpbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNiZV9mcm9udGF1dGhfd2hvaXMNCioqICAgICAg ICAgICAgICAgICAgICAgICAgIEVycm9yIG1lc3NhZ2Ugd2hlbiBsb2dpbiBmYWlscw0KKiog ICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWwgbGFuZ3VhZ2Ugc3RyaW5ncw0KKiogMC45 LjUgICAtIDA0IEFwciAyMDE0IC0gTWlzc2luZyBsYXN0IGFjY2VzcyBzdG9yYWdlDQoqKiAw LjkuNiAgIC0gMDcgQXByIDIwMTQgLSBFcnJvciB3aGVuIHBhc3NpbmcgcHJlc2VudGF0aW9u YWwgYXR0cmlidXRlcyBmcm9tIGNiZV9mcm9udGF1dGhfZWRpdF9hcnRpY2xlIHRvIGNiZV9m cm9udGF1dGhfbGluaw0KKiogMC45LjcgICAtIDIwIE5vdiAyMDE1IC0gZml4OiBodHRwOi8v Zm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTI5NjcyMCNwMjk2NzIw DQoqKg0KKiogVE9ETw0KKiogLSBicmVhaywgYnJlYWtjbGFzcyAtPiBpbiBwcm9ncmVzcywg ZnVsbCB0ZXN0cyBuZWVkZWQNCioqIC0gZW5oZW5jZSBlcnJvciBtZXNzYWdlcyA/DQoqKg0K ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqDQogKioNCiAqKiBMb2NhbCBsYW5ndWFnZSBzdHJpbmdz LCBwb3NzaWJsZSBjdXN0b21pc2F0aW9uIGhlcmUNCiAqKg0KICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KZnVuY3Rpb24gX2NiZV9mYV9s YW5nKCkNCnsNCiAgICByZXR1cm4oIGFycmF5KCAnbG9naW5fZmFpbGVkJyAgICAgICAgID0+ ICJMb2dpbiBmYWlsZWQiDQogICAgICAgICAgICAgICAgICwgJ2xvZ2luX3RvX3RleHRwYXR0 ZXJuJyA9PiBnVHh0KCAnbG9naW5fdG9fdGV4dHBhdHRlcm4nICkNCiAgICAgICAgICAgICAg ICAgLCAnbmFtZScgICAgICAgICAgICAgICAgID0+IGdUeHQoICduYW1lJyApDQogICAgICAg ICAgICAgICAgICwgJ3Bhc3N3b3JkJyAgICAgICAgICAgICA9PiBnVHh0KCAncGFzc3dvcmQn ICkNCiAgICAgICAgICAgICAgICAgLCAnbG9nX2luX2J1dHRvbicgICAgICAgID0+IGdUeHQo ICdsb2dfaW5fYnV0dG9uJyApDQogICAgICAgICAgICAgICAgICwgJ3N0YXlfbG9nZ2VkX2lu JyAgICAgICA9PiBnVHh0KCAnc3RheV9sb2dnZWRfaW4nICkNCiAgICAgICAgICAgICAgICAg LCAnbG9nb3V0JyAgICAgICAgICAgICAgID0+IGdUeHQoICdsb2dvdXQnICkNCiAgICAgICAg ICAgICAgICAgLCAnZWRpdCcgICAgICAgICAgICAgICAgID0+IGdUeHQoICdlZGl0JyApDQog ICAgICAgICAgICAgICAgICwgJ2NoYW5nZV9wYXNzd29yZCcgICAgICA9PiBnVHh0KCAnY2hh bmdlX3Bhc3N3b3JkJyApDQogICAgICAgICAgICAgICAgICwgJ3Bhc3N3b3JkX3Jlc2V0JyAg ICAgICA9PiBnVHh0KCAncGFzc3dvcmRfcmVzZXQnICkgDQogICAgICAgICAgICAgICAgICkN CiAgICAgICAgICApIDsNCn0NCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKg0KICoqDQogKiogRG9uJ3QgZWRpdCBmdXJ0aGVyDQogKioNCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0K LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQog KioNCiAqKiBBdmFpbGFibGUgdGFncw0KICoqDQogKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCi8qID09IFNob3J0Y3V0cyBmb3IgY2Jl X2Zyb250YXV0aCgpID09ICovDQoNCi8vIC0tIEdsb2JhbCBpbml0IGZvciByZWRpcmVjdGlv biBhZnRlciBsb2dpbiBhbmQvb3IgbG9nb3V0DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBjYmVfZnJvbnRhdXRoX3JlZGlyZWN0KCAkYXR0cyApDQp7DQogICAgcmV0dXJuKCBfY2Jl X2ZhX2luaXQoICRhdHRzLCAncmVkaXInICkgKSA7DQp9DQoNCi8vIC0tIEdsb2JhbCBpbml0 IGZvciBsb2dpbi9sb2dvdXQgaW52aXRlcw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g Y2JlX2Zyb250YXV0aF9pbnZpdGUoICRhdHRzICkNCnsNCiAgICByZXR1cm4oIF9jYmVfZmFf aW5pdCggJGF0dHMsICdpbnZpdGUnICkgKSA7DQp9DQoNCi8vIC0tIEdsb2JhbCBpbml0IGZv ciBsb2dpbi9sb2dvdXQgYnV0dG9ucy9saW5rIGxhYmVscw0KLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K ZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9sYWJlbCggJGF0dHMgKQ0Kew0KICAgIHJldHVybigg X2NiZV9mYV9pbml0KCAkYXR0cywgJ2xhYmVsJyApICkgOw0KfQ0KDQovLyAtLSBHbG9iYWwg aW5pdCBmb3IgbG9naW4gd2l0aCB1c2VyIG5hbWUsIGVtYWlsLCBvciBhdXRvbWF0aWMgZGV0 ZWN0aW9uDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX2xvZ2lu d2l0aCggJGF0dHMgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pbml0KCAkYXR0cywgJ3dp dGgnICkgKSA7DQp9DQoNCi8vIC0tIExvZ2luIC8gTG9nb3V0IGJveA0KLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9ib3goICRhdHRzLCAkdGhpbmcgPSAnJyAp DQp7DQogICAgJHB1YmxpY19hdHRzID0gbEF0dHMoIGFycmF5KCAnbG9naW5faW52aXRlJyAg PT4gX2NiZV9mYV9nVHh0KCAnbG9naW5fdG9fdGV4dHBhdHRlcm4nICkNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAsICdsb2dvdXRfaW52aXRlJyA9PiAnJw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfY2hhbmdlJyAgID0+ICcxJw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfcmVzZXQnICAgID0+ICcxJw0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3RhZ19pbnZpdGUnICAgID0+ICcnDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9naW5fbGFiZWwnICAgPT4gX2Ni ZV9mYV9nVHh0KCAnbG9nX2luX2J1dHRvbicgKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICwgJ2xvZ291dF9sYWJlbCcgID0+IF9jYmVfZmFfZ1R4dCggJ2xvZ291dCcgKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ291dF90eXBlJyAgID0+ICdi dXR0b24nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAndGFnX2Vycm9yJyAg ICAgPT4gJ3NwYW4nDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnY2xhc3Nf ZXJyb3InICAgPT4gJ2NiZV9mYV9lcnJvcicNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAgICArIF9jYmVfZmFfZm9ybWF0KCkN CiAgICAgICAgICAgICAgICAgICAgICAgICAsICRhdHRzICkgOw0KDQogICAgcmV0dXJuKCBj YmVfZnJvbnRhdXRoKCAkcHVibGljX2F0dHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAg LCAkdGhpbmcgPyAkdGhpbmcgOiAnPHA+PHR4cDp0ZXh0IGl0ZW09ImxvZ2dlZF9pbl9hcyIg Lz4gPHR4cDpjYmVfZnJvbnRhdXRoX3dob2lzIHdyYXB0YWc9InNwYW4iIGNsYXNzPSJ1c2Vy Ii8+PC9wPicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgKSApIDsNCg0KfQ0KDQovLyAt LSBTdGFuZGFsb25lIGxvZ2luIGZvcm0NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNi ZV9mcm9udGF1dGhfbG9naW4oICRhdHRzLCAkdGhpbmcgPSAnJyApDQp7DQogICAgcmV0dXJu KCBfY2JlX2ZhX2lub3V0X3Byb2Nlc3MoICdsb2dpbicsICRhdHRzLCAkdGhpbmcgKSApIDsN Cn0NCg0KLy8gLS0gU3RhbmRhbG9uZSBsb2dvdXQgZm9ybSAvIGxpbmsNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfbG9nb3V0KCAkYXR0cywgJHRoaW5nID0g JycgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pbm91dF9wcm9jZXNzKCAnbG9nb3V0Jywg JGF0dHMsICR0aGluZyApICkgOw0KfQ0KDQovLyAtLSBQcm90ZWN0IHBhcnRzIGZyb20gbm9u LWNvbm5lY3RlZCB2aWV3ZXJzDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJv bnRhdXRoX3Byb3RlY3QoICRhdHRzLCAkdGhpbmcgKQ0Kew0KICAgICRwdWJsaWNfYXR0cyA9 IGxBdHRzKCBhcnJheSggJ2xpbmsnICAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAsICdsaW5rbGFiZWwnID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLCAndGFyZ2V0JyAgICA9PiAnX3NlbGYnDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLCAnbmFtZScgICAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ2xldmVsJyAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAgKyBfY2JlX2ZhX2Zvcm1hdCgp DQogICAgICAgICAgICAgICAgICAgICAgICAgLCAkYXR0cyApIDsNCg0KICAgIGlmKCAkcHVi bGljX2F0dHNbJ3RhcmdldCddID09ICdfZ2V0JyApDQogICAgICAgICRwdWJsaWNfYXR0c1sn dGFyZ2V0J10gPSAnX3NlbGYnIDsNCg0KICAgIHJldHVybiggY2JlX2Zyb250YXV0aCggYXJy YXkoICdsb2dpbl9pbnZpdGUnID0+ICcnICwgJ2xvZ291dF9pbnZpdGUnID0+ICcnDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfbG9naW4nICAgPT4gJzAnLCAn c2hvd19sb2dvdXQnICAgPT4gJzAnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ3Nob3dfcmVzZXQnICAgPT4gJzAnLCAnc2hvd19jaGFuZ2UnICAgPT4gJzAnICkgKyAk cHVibGljX2F0dHMNCiAgICAgICAgICAgICAgICAgICAgICAgICAsICR0aGluZw0KICAgICAg ICAgICAgICAgICAgICAgICAgICkgKSA7DQp9DQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX2lm X2xvZ2dlZCggJGF0dHMsICR0aGluZyApDQp7DQogICAgcmV0dXJuKCBjYmVfZnJvbnRhdXRo X3Byb3RlY3QoICRhdHRzLCAkdGhpbmcgKSApIDsNCn0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1 dGhfaWZfY29ubmVjdGVkKCAkYXR0cywgJHRoaW5nICkNCnsNCiAgICByZXR1cm4oIGNiZV9m cm9udGF1dGhfcHJvdGVjdCggJGF0dHMsICR0aGluZyApICkgOw0KfQ0KDQovKiA9PSBFbGVt ZW50cyA9PSAqLw0KDQovLyAtLSBHZW5lcmF0ZXMgaW5wdXQgZmllbGQgZm9yIG5hbWUNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfbG9nbmFtZSggJGF0dHMs ICRkZWZ2YWx1ZT1udWxsICkNCnsNCiAgICByZXR1cm4oIF9jYmVfZmFfaWRlbnRpdHkoICdu YW1lJywgJGF0dHMsICRkZWZ2YWx1ZSApICkgOw0KfQ0KDQovLyAtLSBHZW5lcmF0ZXMgaW5w dXQgZmllbGQgZm9yIHBhc3N3b3JkDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVf ZnJvbnRhdXRoX3Bhc3N3b3JkKCAkYXR0cywgJGRlZnZhbHVlPW51bGwgKQ0Kew0KICAgIHJl dHVybiggX2NiZV9mYV9pZGVudGl0eSggJ3Bhc3N3b3JkJywgJGF0dHMsICRkZWZ2YWx1ZSAp ICkgOw0KfQ0KDQovLyAtLSBHZW5lcmF0ZXMgY2hlY2tib3ggZm9yIHN0YXkgKGNvbm5lY3Rl ZCBvbiB0aGlzIGJyb3dzZXIpDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJv bnRhdXRoX3N0YXkoICRhdHRzICkNCnsNCiAgICBleHRyYWN0KCBsQXR0cyggYXJyYXkgKCAn bGFiZWwnID0+IF9jYmVfZmFfZ1R4dCggJ3N0YXlfbG9nZ2VkX2luJyApDQogICAgICAgICAg ICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICsgX2NiZV9mYV9mb3JtYXQo KQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0KICAgICAgICAgICAgICAgICAgKQ0KICAg ICAgICAgICApIDsNCg0KICAgICRvdXQgID0gY2hlY2tib3goJ3Bfc3RheScsIDEsIGNzKCd0 eHBfbG9naW4nKSwgJycsICdzdGF5JykgOw0KICAgICRvdXQgLj0gJzxsYWJlbCBmb3I9InN0 YXkiPicuJGxhYmVsLic8L2xhYmVsPicgOw0KICAgIHJldHVybiggZG9UYWcoICRvdXQsICR3 cmFwdGFnLCAkY2xhc3MgKSApIDsNCn0NCg0KLy8gLS0gR2VuZXJhdGVzIHN1Ym1pdCBidXR0 b24NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfc3VibWl0KCAk YXR0cyApDQp7DQogICAgJHB1YmxpY19hdHRzID0gbEF0dHMoIGFycmF5ICggJ2xhYmVsJyA9 PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICd0eXBlJyAgPT4gJ2xv Z2luJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAg ICAgICAgICAgICArIF9jYmVfZmFfZm9ybWF0KCkNCiAgICAgICAgICAgICAgICAgICAgICAg ICwgJGF0dHMNCiAgICAgICAgICAgICAgICAgICAgICAgICkgOw0KDQogICAgcmV0dXJuKCBf Y2JlX2ZhX2J1dHRvbiggJHB1YmxpY19hdHRzICkgKSA7DQp9DQoNCi8vIC0tIERpc3BsYXlz IGNvbm5lY3RlZCB1c2VyJ3MgaW5mb3JtYXRpb25zDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5j dGlvbiBjYmVfZnJvbnRhdXRoX3dob2lzKCAkYXR0cyApDQp7DQogICAgZXh0cmFjdCggbEF0 dHMoIGFycmF5ICggJ3R5cGUnICAgICAgID0+ICduYW1lJw0KICAgICAgICAgICAgICAgICAg ICAgICAgICAsICdmb3JtYXQnICAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAg ICApDQogICAgICAgICAgICAgICAgICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAg ICAgICAgICAgLCAkYXR0cw0KICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsN Cg0KICAgICR0eXBlcyA9IGRvX2xpc3QoICR0eXBlICkgOw0KICAgICR3aG9pcyA9IGNiZV9m cm9udGF1dGgoIGFycmF5KCAnaW5pdCcgPT4gJzAnLCAndmFsdWUnID0+ICR0eXBlcyApICkg Ow0KDQogICAgaWYoIGlzc2V0KCAkd2hvaXNbJ2xhc3RfYWNjZXNzJ10gKSApDQogICAgew0K ICAgICAgICBnbG9iYWwgJGRhdGVmb3JtYXQgOw0KICAgICAgICAkd2hvaXNbJ2xhc3RfYWNj ZXNzJ10gPSBzYWZlX3N0cmZ0aW1lKCAkZm9ybWF0ID8gJGZvcm1hdCA6ICRkYXRlZm9ybWF0 LCBzdHJ0b3RpbWUoICR3aG9pc1snbGFzdF9hY2Nlc3MnXSApICkgOw0KICAgIH0NCg0KICAg IHJldHVybiggZG9XcmFwKCAkd2hvaXMsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcywgJGJy ZWFrY2xhc3MgKSApIDsNCn0NCg0KLyogPT0gT2ZmLXRvcGljLCBidXQgdXNlZnVsID09ICov DQoNCi8vIC0tIEdlbmVyYXRlcyBhIGxpbmssIG5vcm1hbCBvciB3aXRoIGEgR0VUIHBhcmFt ZXRlcg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9saW5rKCAk YXR0cyApDQp7ICAgLy8gJGNsYXNzIGFwcGxpZXMgdG8gYW5jaG9yIGlmIG5vICR3cmFwdGFn IHN1cHBsaWVkDQogICAgZXh0cmFjdCggbEF0dHMoIGFycmF5ICggJ2xhYmVsJyAgPT4gJycN CiAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbGluaycgICA9PiAnJw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAsICd0YXJnZXQnID0+ICdfc2VsZicNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgKyBfY2JlX2ZhX2Zvcm1hdCgpDQog ICAgICAgICAgICAgICAgICAsICRhdHRzDQogICAgICAgICAgICAgICAgICApDQogICAgICAg ICAgICkgOw0KDQogICAgJGxpbmsgPSBkb1N0cmlwVGFncyggJGxpbmsgKSA7DQogICAgJG91 dCA9IF9jYmVfZmFfbGluayggY29tcGFjdCggJ2xpbmsnLCAndGFyZ2V0JyApICkgOw0KICAg ICRvdXQgPSBocmVmKCAkbGFiZWwsICRvdXQNCiAgICAgICAgICAgICAgICwgKCgkdGFyZ2V0 ICE9PSAnX2dldCcpICA/ICcgdGFyZ2V0PSInLiR0YXJnZXQuJyInIDogJycpDQogICAgICAg ICAgICAgICAuICgoISR3cmFwdGFnICYmICRjbGFzcykgPyAnIGNsYXNzPSInLiRjbGFzcy4n IicgICA6ICcnKSApIDsNCiAgICByZXR1cm4oIGRvVGFnKCAkb3V0LCAkd3JhcHRhZywgJGNs YXNzICkgKSA7DQp9DQoNCi8vIC0tIFJldHVybnMgcGF0aCB0byB0ZXh0cGF0dGVybiBiYWNr ZW5kDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX2JhY2tlbmQo KQ0Kew0KLy8gICAgICAgICAgICAuIHN1YnN0cihzdHJyY2hyKHR4cGF0aCwgIi8iKSwgMSkN CiAgICByZXR1cm4oIHByZWdfcmVwbGFjZSgnfC8vJHwnLCcvJywgcmh1LicvJykNCiAgICAg ICAgICAgIC4gc3Vic3RyKHN0cnJjaHIodHhwYXRoLCBEUyksIDEpDQogICAgICAgICAgICAu ICcvaW5kZXgucGhwJw0KICAgICAgICAgICApIDsNCn0NCg0KLy8gLS0gUmV0dXJucyBidXR0 b24gKHN0YW5kYWxvbmUpIG9yIGxpbmsgdG8gZWRpdCBjdXJyZW50IGFydGljbGUNCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfZWRpdF9hcnRpY2xlKCAkYXR0 cyApDQp7DQogICAgZ2xvYmFsICR0aGlzYXJ0aWNsZSA7DQogICAgYXNzZXJ0X2FydGljbGUo KSA7DQoNCiAgICBleHRyYWN0KCBsQXR0cyggYXJyYXkgKCAnbGFiZWwnID0+IF9jYmVfZmFf Z1R4dCggJ2VkaXQnICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCAndHlwZScgID0+ ICdidXR0b24nDQogICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAg ICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0KICAg ICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICRwYXRoX3BhcnRzID0g YXJyYXkoICdldmVudCcgICAgICA9PiAnYXJ0aWNsZScNCiAgICAgICAgICAgICAgICAgICAg ICAgLCAnc3RlcCcgICAgICAgPT4gJ2VkaXQnDQogICAgICAgICAgICAgICAgICAgICAgICwg J0lEJyAgICAgICAgID0+ICR0aGlzYXJ0aWNsZVsndGhpc2lkJ10NCiAgICAgICAgICAgICAg ICAgICAgICAgKSA7DQoNCiAgICBpZiggJHR5cGUgPT0gJ2J1dHRvbicgKQ0KICAgIHsNCiAg ICAgICAgJG91dCA9IGFycmF5KCkgOw0KDQogICAgICAgIGZvcmVhY2goICRwYXRoX3BhcnRz IGFzICRwYXJ0ID0+ICR2YWx1ZSApDQogICAgICAgICAgICAkb3V0W10gPSBoSW5wdXQoICRw YXJ0LCAkdmFsdWUgKSA7DQoNCiAgICAgICAgJG91dFtdID0gY2JlX2Zyb250YXV0aF9zdWJt aXQoIGFycmF5KCAnbGFiZWwnID0+ICRsYWJlbCwgJ3R5cGUnID0+ICcnLCAnY2xhc3MnID0+ J3B1Ymxpc2gnICkgKSA7DQoNCiAgICAgICAgIHJldHVybiggX2NiZV9mYV9mb3JtKCBhcnJh eSggJ3N0YXRlbWVudHMnID0+IGpvaW4oIG4sICRvdXQgKSApICkgKSA7DQogICAgfQ0KICAg IGVsc2VpZiggJHR5cGUgPT0gJ2xpbmsnICkNCiAgICB7DQogICAgICAgICRwYXRoX3BhcnRz WyAnX3R4cF90b2tlbicgXSA9IGZvcm1fdG9rZW4oKSA7DQogICAgICAgIGFycmF5X3dhbGso ICRwYXRoX3BhcnRzLCBjcmVhdGVfZnVuY3Rpb24oICcmJHYsICRrJywgJyR2ID0gJGsuIj0i LiR2IDsnICkgKSA7DQogICAgICAgICRsaW5rID0gY2JlX2Zyb250YXV0aF9iYWNrZW5kKCkg LiAnPycgLiBqb2luKCAnJicsICRwYXRoX3BhcnRzICkgOw0KDQogICAgICAgIHJldHVybigg Y2JlX2Zyb250YXV0aF9saW5rKCBjb21wYWN0KCAnbGluaycsICdsYWJlbCcNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGFycmF5X2tleXMoIF9jYmVf ZmFfZm9ybWF0KCkgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAg ICAgICkgOw0KICAgIH0NCiAgICBlbHNlDQogICAgICAgIHJldHVybiA7DQp9DQoNCi8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoqDQog KiogVXRpbGl0aWVzIChraW5kYSBwcml2YXRlIGZ1bmN0aW9ucykNCiAqKg0KICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQovLyAtLSBH ZXRzIGFuZCByZXR1cm5zIGxvY2FsIGxhbmcgc3RyaW5ncyAodHhwIGFkbWluICsgcGx1Z2lu IHNwZWNpZmljcykNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfZ1R4dCgg JHRleHQsICRhdHRzID0gYXJyYXkoKSApDQp7DQogICAgc3RhdGljICRhVGV4dHMgPSBhcnJh eSgpIDsNCiAgICBpZiggISAkYVRleHRzICkNCiAgICAgICAgJGFUZXh0cyA9IF9jYmVfZmFf bGFuZygpIDsNCg0KICAgIHJldHVybiggaXNzZXQoICRhVGV4dHNbICR0ZXh0IF0gKSA/IHN0 cnRyKCAkYVRleHRzWyAkdGV4dCBdLCAkYXR0cyApIDogZ1R4dCggJHRleHQgKSApIDsNCn0N Cg0KLy8gLS0gQ29tbW9uIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfZm9ybWF0KCkNCnsNCiAgICByZXR1cm4oIGFycmF5 KCAnd3JhcHRhZycgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgLCAnY2xhc3MnICAgICAg PT4gJycNCiAgICAgICAgICAgICAgICAgLCAnYnJlYWsnICAgICAgPT4gJycNCiAgICAgICAg ICAgICAgICAgLCAnYnJlYWtjbGFzcycgPT4gJycNCiAgICAgICAgICAgICAgICAgKQ0KICAg ICAgICAgICkgOw0KfQ0KDQovLyAtLSBHbG9iYWwgaW5pdGlhbGlzYXRpb25zIChyZWRpcmVj dCwgaW52aXRlLCBsYWJlbCwgbG9naW53aXRoKQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rp b24gX2NiZV9mYV9pbml0KCAkYXR0cywgJHR5cGUgKQ0Kew0KICAgIGV4dHJhY3QoIGxBdHRz KCBhcnJheSAoICdmb3InID0+ICcnLCAndmFsdWUnID0+ICcnICksICRhdHRzICkgKSA7DQog ICAgaWYoICRmb3IgPT09ICcnICkNCiAgICAgICAgJGZvciA9ICdsb2dpbicgOw0KICAgICRp bml0X2ZvciA9IGRvX2xpc3QoICRmb3IgKSA7DQoNCiAgICBpZiggKCRpbmRleD1hcnJheV9z ZWFyY2goICdsb2dnZWQnLCAkaW5pdF9mb3IgKSkgIT09IGZhbHNlICkNCiAgICAgICAgJGlu aXRfZm9yWyAkaW5kZXggXSA9ICdsb2dvdXQnIDsNCg0KICAgIGFycmF5X3dhbGsoICRpbml0 X2ZvciwgY3JlYXRlX2Z1bmN0aW9uKCAnJiR2LCAkaywgJHAnLCAnJHYgPSAkdi4iXyIuJHAg OycpLCAkdHlwZSApIDsNCg0KICAgIGlmKCAoJGluaXRfbGlzdCA9IEBhcnJheV9jb21iaW5l KCAkaW5pdF9mb3IsIGRvX2xpc3QoICR2YWx1ZSApICkpID09PSBmYWxzZSApDQogICAgICAg IHJldHVybiA7DQoNCiAgICBjYmVfZnJvbnRhdXRoKCBhcnJheSggJ2luaXQnID0+ICcxJyAp ICsgJGluaXRfbGlzdCApIDsNCiAgICByZXR1cm4gOw0KfQ0KDQovLyAtLSBSZXRyaWV2ZSB1 c2VyJ3MgaW5mbywgaWYgY29ubmVjdGVkIA0KLy8gLS0gdGV4dHBhdHRlcm4vbGliL3R4cF9t aXNjLnBocCAtIGlzX2xvZ2dlZF9pbigpIGFzIGEgc3RhcnRpbmcgcG9pbnQNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfbG9nZ2VkX2luKCAmJHVzZXIsICR0eHBfdXNl ciA9IG51bGwgKQ0Kew0KICAgIGlmKCAkdHhwX3VzZXIgIT09IG51bGwgKQ0KICAgICAgICAk bmFtZSA9ICR0eHBfdXNlciA7DQogICAgZWxzZWlmKCAhKCRuYW1lID0gc3Vic3RyKGNzKCd0 eHBfbG9naW5fcHVibGljJyksIDEwKSkgKQ0KICAgIHsNCiAgICAgICAgJHVzZXJbICduYW1l JyBdID0gZmFsc2UgOw0KICAgICAgICByZXR1cm4oIGZhbHNlICkgOw0KICAgIH0NCg0KICAg ICRycyA9IHNhZmVfcm93KCdub25jZSwgbmFtZSwgUmVhbE5hbWUsIGVtYWlsLCBwcml2cywg bGFzdF9hY2Nlc3MnLCAndHhwX3VzZXJzJywgIm5hbWUgPSAnIi5kb1NsYXNoKCRuYW1lKS4i JyIpOw0KDQogICAgaWYoICRycyAmJiAoJHR4cF91c2VyICE9PSBudWxsIHx8IHN1YnN0ciht ZDUoJHJzWydub25jZSddKSwgLTEwKSA9PT0gc3Vic3RyKGNzKCd0eHBfbG9naW5fcHVibGlj JyksIDAsIDEwKSApICkNCiAgICB7DQogICAgICAgIHVuc2V0KCAkcnNbICdub25jZScgXSAp IDsNCiAgICAgICAgJHVzZXIgPSAkcnMgOw0KICAgICAgICByZXR1cm4oIHRydWUgKSA7DQog ICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICR1c2VyWyAnbmFtZScgXSA9IGZhbHNl IDsNCiAgICAgICAgcmV0dXJuKCBmYWxzZSApIDsNCiAgICB9DQp9DQoNCi8vIC0tIENoZWNr cyBjdXJyZW50IHVzZXIgYWdhaW5zdCByZXF1aXJlZCBwcml2aWxlZ2VzDQovLyAtLSBUaGFu a3MgdG8gUnV1ZCBWYW4gTWVsaWNrJ3MgcnZtX3ByaXZpbGVnZWQgKGh0dHA6Ly92YW5tZWxp Y2suY29tL3R4cC8pDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfY2JlX2ZhX3ByaXZp bGVnZWQoICRyX25hbWUsICRyX2xldmVsLCAkdV9uYW1lLCAkdV9sZXZlbCApDQp7DQogICAg JGNoa19uYW1lICA9ICEkcl9uYW1lICB8fCBpbl9hcnJheSggJHVfbmFtZSAsIGRvX2xpc3Qo ICRyX25hbWUgICkgKSA7DQogICAgJGNoa19sZXZlbCA9ICEkcl9sZXZlbCB8fCBpbl9hcnJh eSggJHVfbGV2ZWwsIGRvX2xpc3QoICRyX2xldmVsICkgKSA7DQogICAgcmV0dXJuKCAkY2hr X25hbWUgfHwgJGNoa19sZXZlbCApIDsNCn0NCg0KLy8gLS0gR2VuZXJhdGVzIGlucHV0IGZp ZWxkIGZvciBuYW1lIG9yIHBhc3N3b3JkDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBf Y2JlX2ZhX2lkZW50aXR5KCAkZmllbGQsICRhdHRzLCAkdmFsdWU9bnVsbCApDQp7DQogICAg ZXh0cmFjdCggbEF0dHMoIGFycmF5ICggJ2xhYmVsJyAgICAgPT4gX2NiZV9mYV9nVHh0KCAk ZmllbGQgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAsICdsYWJlbF9zZngnID0+ICcn DQogICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICsgX2Ni ZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0KICAgICAgICAgICAg ICAgICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICQkZmllbGQgPSAnJyA7DQogICAgaWYo ICRmaWVsZCA9PSAnbmFtZScgJiYgY3MoJ2NiZV9mcm9udGF1dGhfbG9naW4nKSAhPSAnJyAp DQogICAgICAgIGxpc3QoJG5hbWUpID0gZXhwbG9kZSggJywnLCBjcygnY2JlX2Zyb250YXV0 aF9sb2dpbicpICkgOw0KDQogICAgJG91dCA9IGFycmF5KCkgOw0KICAgICRvdXRbXSA9ICc8 bGFiZWwgZm9yPSInLiRmaWVsZC4kbGFiZWxfc2Z4LiciPicuJGxhYmVsLic8L2xhYmVsPicg Ow0KICAgICRvdXRbXSA9ICBmSW5wdXQoICgkZmllbGQgPT0gJ25hbWUnKSAgICA/ICd0ZXh0 JyAgICAgOiAncGFzc3dvcmQnDQogICAgICAgICAgICAgICAgICAgICwoKCRmaWVsZCA9PSAn bmFtZScpICAgID8gJ3BfdXNlcmlkJyA6ICdwX3Bhc3N3b3JkJykgLiAkbGFiZWxfc2Z4DQog ICAgICAgICAgICAgICAgICAgICwgKCRmaWVsZCA9PSAnbmFtZScpICAgID8gJG5hbWUgICAg ICA6ICgkdmFsdWUgIT09IG51bGwgPyAkdmFsdWUgOiAnJykNCiAgICAgICAgICAgICAgICAg ICAgLCAoISR3cmFwdGFnICYmICRjbGFzcykgPyAkY2xhc3MgICAgIDogJycNCiAgICAgICAg ICAgICAgICAgICAgLCAnJywgJycsICcnLCAnJywgJGZpZWxkLiRsYWJlbF9zZnggKSA7DQoN CiAgICByZXR1cm4oIGRvV3JhcCggJG91dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAk YnJlYWtjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBQcmVwYXJlIGNhbGwgdG8gY2JlX2Zyb250 YXV0aCgpIGZvciBsb2dpbi9sb2dvdXQgZm9ybS9saW5rDQovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpm dW5jdGlvbiBfY2JlX2ZhX2lub3V0X3Byb2Nlc3MoICRpbm91dCwgJGF0dHMsICR0aGluZyA9 ICcnICkNCnsNCiAgICAkcGx1c19hdHRzID0gKCRpbm91dCA9PSAnbG9nb3V0JyApDQogICAg ICAgICAgICAgICA/IGFycmF5KCAndHlwZScgICAgICAgID0+ICdidXR0b24nDQogICAgICAg ICAgICAgICAgICAgICAgLCAnc2hvd19jaGFuZ2UnID0+ICcxJyAgICAgICkNCiAgICAgICAg ICAgICAgIDogYXJyYXkoICdzaG93X3N0YXknICAgPT4gJzAnDQogICAgICAgICAgICAgICAg ICAgICAgLCAnc2hvd19yZXNldCcgID0+ICcxJyAgICAgICkgOw0KICAgICRwdWJsaWNfYXR0 cyA9IGxBdHRzKCBhcnJheSAoICdpbnZpdGUnICAgICA9PiBfY2JlX2ZhX2dUeHQoICgkaW5v dXQgPT0gJ2xvZ2luJykgPyAnbG9naW5fdG9fdGV4dHBhdHRlcm4nIA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiAnJyApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwgJ3RhZ19pbnZpdGUnID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwgJ2xhYmVsJyAgICAgID0+IF9jYmVfZmFfZ1R4dCggKCRpbm91dCA9PSAnbG9naW4n KSA/ICdsb2dfaW5fYnV0dG9uJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAn bG9nb3V0JyApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2Zvcm0nICAg ICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3RhZ19lcnJv cicgID0+ICdzcGFuJywgJ2NsYXNzX2Vycm9yJyA9PiAnY2JlX2ZhX2Vycm9yJw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgICAgICAgICAr ICRwbHVzX2F0dHMgKyBfY2JlX2ZhX2Zvcm1hdCgpDQogICAgICAgICAgICAgICAgICAgICAg ICAsICRhdHRzICkgOw0KDQogICAgaWYoIGlzc2V0KCAkcHVibGljX2F0dHNbJ2ludml0ZSdd ICkgKQ0KICAgIHsNCiAgICAgICAgJHB1YmxpY19hdHRzWyRpbm91dC4nX2ludml0ZSddID0g JHB1YmxpY19hdHRzWydpbnZpdGUnXSA7DQogICAgICAgIHVuc2V0KCAkcHVibGljX2F0dHNb J2ludml0ZSddICkgOw0KICAgIH0NCiAgICBpZiggaXNzZXQoICRwdWJsaWNfYXR0c1snbGFi ZWwnXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5vdXQuJ19sYWJlbCdd ID0gJHB1YmxpY19hdHRzWydsYWJlbCddIDsNCiAgICAgICAgdW5zZXQoICRwdWJsaWNfYXR0 c1snbGFiZWwnXSApIDsNCiAgICB9DQogICAgaWYoIGlzc2V0KCAkcHVibGljX2F0dHNbJ2Zv cm0nXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5vdXQuJ19mb3JtJ10g PSAkcHVibGljX2F0dHNbJ2Zvcm0nXSA7DQogICAgICAgIHVuc2V0KCAkcHVibGljX2F0dHNb J2Zvcm0nXSApIDsNCiAgICB9DQogICAgaWYoIGlzc2V0KCAkcHVibGljX2F0dHNbJ3R5cGUn XSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5vdXQuJ190eXBlJ10gPSAk cHVibGljX2F0dHNbJ3R5cGUnXSA7DQogICAgICAgIHVuc2V0KCAkcHVibGljX2F0dHNbJ3R5 cGUnXSApIDsNCiAgICB9DQogICAgaWYoICR0aGluZyApDQogICAgICAgICRwdWJsaWNfYXR0 c1skaW5vdXQuJ19mb3JtJ10gPSAkdGhpbmcgOw0KDQogICAgJHNob3cgPSAoJGlub3V0ID09 ICdsb2dpbicpID8gJ2xvZ291dCcgOiAnbG9naW4nIDsNCiAgICByZXR1cm4oIGNiZV9mcm9u dGF1dGgoIGFycmF5KCAnc2hvd18nLiRzaG93ID0+ICcwJyApICsgJHB1YmxpY19hdHRzICkg KSA7DQp9DQoNCi8vIC0tIEVuY2xvc2VzIHN0YXRlbWVudHMgaW4gYSBzdWJtaXQgZm9ybQ0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9mb3JtKCAkYXR0cyApDQp7DQog ICAgZXh0cmFjdCggbEF0dHMoIGFycmF5KCAnc3RhdGVtZW50cycgPT4gJycNCiAgICAgICAg ICAgICAgICAgICAgICAgICAsICdhY3Rpb24nICAgICA9PiBjYmVfZnJvbnRhdXRoX2JhY2tl bmQoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICwgJ21ldGhvZCcgICAgID0+ICdwb3N0 Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICwgJGF0 dHMNCiAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgKSA7DQoNCiAgICBpZiggISAk c3RhdGVtZW50cyApDQogICAgICAgIHJldHVybiA7DQoNCiAgICByZXR1cm4oICc8Zm9ybSBh Y3Rpb249IicuJGFjdGlvbi4nIiBtZXRob2Q9IicuJG1ldGhvZC4nIj4nDQogICAgICAgICAg ICAubi4gJHN0YXRlbWVudHMNCiAgICAgICAgICAgIC5uLiAnPC9mb3JtPicgKSA7DQp9DQoN Ci8vIC0tIEdlbmVyYXRlcyBhIGJ1dHRvbiAocHJpbWFyeSBwdXJwb3NlIDogbG9naW4vbG9n b3V0IGJ1dHRvbikNCi8vIC0tIEV4dGVuZGVkIHRvICdlZGl0JyAoanVzdCBpbiBjYXNlKSAt IDAuNw0KLy8gLS0gTm90ZTogcHJvdmlkaW5nIGEgbGFiZWwgYW5kIHNldHRpbmcgdHlwZSB0 byBibGFuayB3b3JrcyB0b28NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFf YnV0dG9uKCAkYXR0cyApDQp7DQogICAgZXh0cmFjdCggJGF0dHMgKSA7IC8vICdsYWJlbCcs ICd0eXBlJywgJ3dyYXB0YWcnLCBjbGFzcycNCg0KICAgIGlmKCAhICRsYWJlbCBhbmQgISAo JGxhYmVsID0gY2JlX2Zyb250YXV0aCggYXJyYXkoICdpbml0JyA9PiAnMCcsICd2YWx1ZScg PT4gJHR5cGUuJ19sYWJlbCcgKSApKSApDQogICAgICAgICRsYWJlbCA9IF9jYmVfZmFfZ1R4 dCggKCR0eXBlID09ICdsb2dvdXQnIHx8ICR0eXBlID09ICdlZGl0JyApID8gJHR5cGUgOiAn bG9nX2luX2J1dHRvbicgKSA7DQoNCiAgICAkb3V0ID0gZklucHV0KCAnc3VibWl0JywgJycs ICRsYWJlbCwgKCEkd3JhcHRhZyAmJiAkY2xhc3MpID8gJGNsYXNzIDogJycgKSA7DQogDQog ICAgaWYoICR0eXBlID09ICdsb2dvdXQnICkNCiAgICAgICAgJG91dCAuPSBoSW5wdXQoICdw X2xvZ291dCcsICcxJyApIDsNCiAgICBlbHNlaWYoICR0eXBlID09ICdlZGl0JyApDQogICAg ICAgICRvdXQgLj0gdElucHV0KCkgOw0KDQogICAgcmV0dXJuKCBkb1RhZyggJG91dCwgJHdy YXB0YWcsICRjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBHZW5lcmF0ZXMgYSBsaW5rIChwcmlt YXJ5IHB1cnBvc2UgOiBsb2dvdXQgbGluaykNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9u IF9jYmVfZmFfbGluayggJGF0dHMgKQ0Kew0KICAgIGV4dHJhY3QoICRhdHRzICkgOyAvLyAn bGluaycsICd0YXJnZXQnDQogICAgDQogICAgaWYoICR0YXJnZXQgPT0gJ19nZXQnICkNCiAg ICB7DQogICAgICAgICR1cmkgPSBzZXJ2ZXJTZXQoICdSRVFVRVNUX1VSSScgICkgOw0KICAg ICAgICAkcXVzID0gc2VydmVyU2V0KCAnUVVFUllfU1RSSU5HJyApIDsNCg0KICAgICAgICAk bGVuX3VyaSA9IHN0cmxlbiggJHVyaSApIDsNCiAgICAgICAgJGxlbl9xdXMgPSBzdHJsZW4o ICRxdXMgKSA7DQoNCiAgICAgICAgJHVyaSA9ICgkbGVuX3F1cyA+IDApID8gc3Vic3RyKCAk dXJpLCAwLCAkbGVuX3VyaS0kbGVuX3F1cy0xICkgOiAkdXJpIDsNCiAgICAgICAgJHF1cyA9 ICRxdXMgLiAoJGxlbl9xdXMgPiAwID8gJyYnIDogJycpIC4gJGxpbmsgOw0KDQogICAgICAg ICRvdXQgPSAoc3Vic3RyKCAkdXJpLCAtMSApICE9PSAnPycgKSA/ICgkdXJpLic/Jy4kcXVz KSA6ICgkdXJpLiRxdXMpIDsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgJG91 dCA9ICRsaW5rIDsNCiAgICB9DQoNCiAgICByZXR1cm4oICRvdXQgKSA7DQp9DQoNCi8vIC0t IEdlbmVyYXRlcyBsb2dpbi9sb2dvdXQgZm9ybSBvciBsb2dvdXQgbGluaw0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9pbm91dCggJGF0dHMgKQ0Kew0KICAgIGV4dHJh Y3QoICRhdHRzICkgOw0KDQogICAgJG91dCA9IGFycmF5KCkgOw0KDQogICAgaWYoICRmb3Jt ICkNCiAgICAgICAgJG91dFtdID0gKCRmPUBmZXRjaF9mb3JtKCAkZm9ybSApKSA/IHBhcnNl KCAkZiApIDogcGFyc2UoICRmb3JtICkgOyAvLyBsYWJlbCB0YWtlcyBwcmVjZWRlbmNlIGhl cmUNCiAgICBlbHNlDQogICAgew0KICAgICAgICBpZiggaXNzZXQoICRzaG93X3N0YXkgKSAp DQogICAgICAgIHsgICAvLyBsb2dpbg0KDQogICAgICAgICAgICAkb3V0W10gPSBjYmVfZnJv bnRhdXRoX2xvZ25hbWUoICBhcnJheSggJ2NsYXNzJyA9PiAnZWRpdCcpDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICBjb21wYWN0KCAnYnJlYWsnLCAn YnJlYWtjbGFzcycgKSApIDsNCiAgICAgICAgICAgICRvdXRbXSA9IGNiZV9mcm9udGF1dGhf cGFzc3dvcmQoIGFycmF5KCAnY2xhc3MnID0+ICdlZGl0JykNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBhY3QoICdicmVhaycsICdicmVha2Ns YXNzJyApICkgOw0KICAgICAgICAgICAgaWYoICRzaG93X3N0YXkgKQ0KICAgICAgICAgICAg ICAgICRvdXRbXSA9IGNiZV9mcm9udGF1dGhfc3RheSggYXJyYXkoKSApIDsNCg0KICAgICAg ICAgICAgJG91dFtdID0gY2JlX2Zyb250YXV0aF9zdWJtaXQoIGFycmF5KCAnbGFiZWwnID0+ ICRsYWJlbCwgJ2NsYXNzJyA9PiAncHVibGlzaCcgKSApIDsNCg0KICAgICAgICB9DQogICAg ICAgIGVsc2UNCiAgICAgICAgeyAgIC8vIGxvZ291dA0KICAgICAgICAgICAgJG91dFtdID0g KCR0eXBlID09ICdidXR0b24nKQ0KICAgICAgICAgICAgICAgICAgID8gY2JlX2Zyb250YXV0 aF9zdWJtaXQoIGFycmF5KCAnbGFiZWwnID0+ICRsYWJlbCwgJ3R5cGUnID0+ICdsb2dvdXQn DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdj bGFzcycgPT4gJGNsYXNzID8gJGNsYXNzIDogJ3B1Ymxpc2gnICkgKQ0KICAgICAgICAgICAg ICAgICAgIDogY2JlX2Zyb250YXV0aF9saW5rKCBhcnJheSggJ2xhYmVsJyA9PiAkbGFiZWws ICdsaW5rJyA9PiAnbG9nb3V0PTEnLCAndGFyZ2V0JyA9PiAnX2dldCcNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdjbGFzcycgPT4gJGNsYXNz ID8gJGNsYXNzIDogJ3B1Ymxpc2gnICkgKSA7DQogICAgICAgIH0NCiAgICB9DQoNCi8vICAg ICRvdXQgPSBqb2luKCBuLCAkb3V0ICkgOw0KICAgICRvdXQgPSBkb1dyYXAoICRvdXQsICR3 cmFwdGFnLCAkYnJlYWssICcnLCAkYnJlYWtjbGFzcyApIDsNCiAgICByZXR1cm4oIChpc3Nl dCggJHR5cGUgKSAmJiAkdHlwZT09J2xpbmsnKQ0KICAgICAgICAgICAgPyAkb3V0DQogICAg ICAgICAgICA6IF9jYmVfZmFfZm9ybSggYXJyYXkoICdzdGF0ZW1lbnRzJyA9PiAkb3V0LCAn YWN0aW9uJyA9PiBwYWdlX3VybCggYXJyYXkoKSApICkgKSApIDsNCn0NCg0KLyogPT0gQmFj a2JvbmUgPT0gKi8NCg0KLy8gLS0gQ29va2llIG1lY2hhbmlzbSAtIGZyb20gdGV4dHBhdHRl cm4vaW5jbHVkZS90eHBfYXV0aC5waHAgLSBkb1R4cFZhbGlkYXRlKCkNCi8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfYXV0aCggJHJlZGlyLCAkcF9sb2dvdXQsICRwX3Vz ZXJpZD0nJywgJHBfcGFzc3dvcmQ9JycsICRwX3N0YXk9JycgKQ0Kew0KICAgIGRlZmluZWQo J0xPR0lOX0NPT0tJRV9IVFRQX09OTFknKSB8fCBkZWZpbmUoJ0xPR0lOX0NPT0tJRV9IVFRQ X09OTFknLCB0cnVlKTsNCiAgICAkaGFzaCAgPSBtZDUodW5pcWlkKG10X3JhbmQoKSwgVFJV RSkpOw0KICAgICRub25jZSA9IG1kNSgkcF91c2VyaWQucGFjaygnSConLCRoYXNoKSk7DQog ICAgJHB1Yl9wYXRoID0gcHJlZ19yZXBsYWNlKCd8Ly8kfCcsJy8nLCByaHUuJy8nKSA7DQog ICAgJGFkbV9wYXRoID0gJHB1Yl9wYXRoIC4gc3Vic3RyKHN0cnJjaHIodHhwYXRoLCBEUyks IDEpIC4gJy8nIDsNCg0KICAgIGlmKCAkcF9sb2dvdXQgKQ0KICAgIHsNCiAgICAgICAgJGxv Z19uYW1lID0gZmFsc2UgOw0KDQogICAgICAgIHNhZmVfdXBkYXRlKCAndHhwX3VzZXJzJw0K ICAgICAgICAgICAgICAgICAgICwgIm5vbmNlID0gJyIuZG9TbGFzaCgkaGFzaCkuIiciDQog ICAgICAgICAgICAgICAgICAgLCAibmFtZSA9ICciLmRvU2xhc2goJHBfdXNlcmlkKS4iJyIN CiAgICAgICAgICAgICAgICAgICApIDsNCg0KICAgICAgICBzZXRjb29raWUoICd0eHBfbG9n aW4nDQogICAgICAgICAgICAgICAgICwgJycNCiAgICAgICAgICAgICAgICAgLCB0aW1lKCkt MzYwMA0KICAgICAgICAgICAgICAgICAsICRhZG1fcGF0aA0KICAgICAgICAgICAgICAgICAp IDsNCg0KICAgICAgICBzZXRjb29raWUoICd0eHBfbG9naW5fcHVibGljJw0KICAgICAgICAg ICAgICAgICAsICcnDQogICAgICAgICAgICAgICAgICwgdGltZSgpLTM2MDANCiAgICAgICAg ICAgICAgICAgLCAkcHViX3BhdGgNCiAgICAgICAgICAgICAgICAgKSA7DQoNCiAgICAgICAg c2V0Y29va2llKCAnY2JlX2Zyb250YXV0aF9sb2dpbicNCiAgICAgICAgICAgICAgICAgLCAn Jw0KICAgICAgICAgICAgICAgICAsIHRpbWUoKS0zNjAwDQogICAgICAgICAgICAgICAgICwg JHB1Yl9wYXRoDQogICAgICAgICAgICAgICAgICkgOw0KICAgIH0NCi8vICAgIGVsc2VpZigg KCRsb2dfbmFtZSA9IHR4cF92YWxpZGF0ZSggJHBfdXNlcmlkLCAkcF9wYXNzd29yZCwgZmFs c2UgKSkgIT09IGZhbHNlICkNCiAgICBlbHNlaWYoICgkbG9nX25hbWUgPSB0eHBfdmFsaWRh dGUoICRwX3VzZXJpZCwgJHBfcGFzc3dvcmQgKSkgIT09IGZhbHNlICkNCiAgICB7DQogICAg ICAgIHNhZmVfdXBkYXRlKCAndHhwX3VzZXJzJw0KICAgICAgICAgICAgICAgICAgICwgIm5v bmNlID0gJyIuZG9TbGFzaCgkbm9uY2UpLiInIg0KICAgICAgICAgICAgICAgICAgICwgIm5h bWUgPSAnIi5kb1NsYXNoKCRwX3VzZXJpZCkuIiciDQogICAgICAgICAgICAgICAgICAgKSA7 DQoNCiAgICAgICAgc2V0Y29va2llKCAndHhwX2xvZ2luJw0KICAgICAgICAgICAgICAgICAs ICRwX3VzZXJpZC4nLCcuJGhhc2gNCiAgICAgICAgICAgICAgICAgLCAoJHBfc3RheSA/IHRp bWUoKSszNjAwKjI0KjM2NSA6IDApDQogICAgICAgICAgICAgICAgICwgJGFkbV9wYXRoDQog ICAgICAgICAgICAgICAgICwgbnVsbA0KICAgICAgICAgICAgICAgICAsIG51bGwNCiAgICAg ICAgICAgICAgICAgLCBMT0dJTl9DT09LSUVfSFRUUF9PTkxZDQogICAgICAgICAgICAgICAg ICkgOw0KDQogICAgICAgIHNldGNvb2tpZSggJ3R4cF9sb2dpbl9wdWJsaWMnDQogICAgICAg ICAgICAgICAgICwgc3Vic3RyKG1kNSgkbm9uY2UpLCAtMTApLiRwX3VzZXJpZA0KICAgICAg ICAgICAgICAgICAsICgkcF9zdGF5ID8gdGltZSgpKzM2MDAqMjQqMzAgOiAwKQ0KICAgICAg ICAgICAgICAgICAsICRwdWJfcGF0aA0KICAgICAgICAgICAgICAgICApIDsNCg0KICAgICAg ICBpZiggJHBfc3RheSApDQogICAgICAgICAgICBzZXRjb29raWUoICdjYmVfZnJvbnRhdXRo X2xvZ2luJw0KICAgICAgICAgICAgICAgICAgICAgLCAkcF91c2VyaWQuJywnLiRoYXNoDQog ICAgICAgICAgICAgICAgICAgICAsIHRpbWUoKSszNjAwKjI0KjM2NQ0KICAgICAgICAgICAg ICAgICAgICAgLCAkcHViX3BhdGgNCiAgICAgICAgICAgICAgICAgICAgICkgOw0KICAgIH0N Cg0KICAgIGlmKCAkcmVkaXIgJiYgKCAkcF9sb2dvdXQgfHwgJGxvZ19uYW1lICE9PSBmYWxz ZSApICkNCiAgICB7DQogICAgICAgIGhlYWRlciggIkxvY2F0aW9uOiRyZWRpciIgKSA7DQog ICAgICAgIGV4aXQgOw0KICAgIH0NCg0KICAgIHJldHVybiggJGxvZ19uYW1lICkgOw0KfQ0K DQovLyAtLSBHZXQgdGhlIGpvYiBkb25lDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBj YmVfZnJvbnRhdXRoKCAkYXR0cywgJHRoaW5nID0gbnVsbCApDQp7DQogICAgaW5jbHVkZV9v bmNlKCB0eHBhdGguJy9pbmNsdWRlL3R4cF9hdXRoLnBocCcgKSA7DQogICAgZ2xvYmFsICR0 eHBfdXNlciA7DQogICAgc3RhdGljICRpbml0cyA9IGFycmF5KCAnbG9naW5faW52aXRlJyA9 PiAnJyAsICdsb2dvdXRfaW52aXRlJyA9PiAnJyAsICd0YWdfaW52aXRlJyA9PiAnJw0KICAg ICAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ2luX2xhYmVsJyAgPT4gJycgLCAnbG9nb3V0 X2xhYmVsJyAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAsICdsb2dpbl9yZWRp cicgID0+ICcnICwgJ2xvZ291dF9yZWRpcicgID0+ICcnDQogICAgICAgICAgICAgICAgICAg ICAgICAgLCAnbG9naW5fd2l0aCcgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAg ICkgOw0KICAgIHN0YXRpYyAkY2JlX2ZhX3VzZXIgPSBhcnJheSggJ25hbWUnICA9PiBmYWxz ZSAsICdSZWFsTmFtZScgICAgPT4gJycgLCAnZW1haWwnID0+ICcnDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLCAncHJpdnMnID0+ICcnICAgICwgJ2xhc3RfYWNjZXNzJyA9 PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOw0KDQogICAgaWYoIGlz c2V0KCAkYXR0c1snaW5pdCddICkgKQ0KICAgIHsNCiAgICAgICAgaWYoICRhdHRzWydpbml0 J10gKQ0KICAgICAgICB7DQogICAgICAgICAgICB1bnNldCggJGF0dHNbJ2luaXQnXSApIDsN Cg0KICAgICAgICAgICAgZm9yZWFjaCggJGF0dHMgYXMgJHBhcmFtID0+ICR2YWx1ZSApDQog ICAgICAgICAgICAgICAgJGluaXRzWyRwYXJhbV0gPSAkdmFsdWUgOw0KDQogICAgICAgICAg ICByZXR1cm4gOw0KICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgew0KICAgICAg ICAgICAgaWYoIGlzX2FycmF5KCAkYXR0c1sgJ3ZhbHVlJyBdICkgKQ0KICAgICAgICAgICAg ew0KICAgICAgICAgICAgICAgICR3aG9pcyA9IGFycmF5KCkgOw0KICAgICAgICAgICAgICAg IGlmKCAhICRjYmVfZmFfdXNlclsgJ25hbWUnIF0gKSBfY2JlX2ZhX2xvZ2dlZF9pbiggJGNi ZV9mYV91c2VyICkgOw0KICAgICAgICAgICAgICAgIGZvcmVhY2goICRhdHRzWyAndmFsdWUn IF0gYXMgJHR5cGUgKQ0KICAgICAgICAgICAgICAgICAgICAkd2hvaXNbICR0eXBlIF0gPSAk Y2JlX2ZhX3VzZXJbICR0eXBlIF0gOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg ICAgIHJldHVybiggJHdob2lzICkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxz ZQ0KICAgICAgICAgICAgICAgIHJldHVybiggaXNzZXQoICRpbml0c1sgJGF0dHNbICd2YWx1 ZScgXSBdICkgPyAkaW5pdHNbICRhdHRzWyAndmFsdWUnIF0gXSA6ICcnICkgOw0KICAgICAg ICB9DQogICAgfQ0KDQogICAgJGRlZl9hdHRzID0gYXJyYXkoICdmb3JtJyAgICAgICAgICA9 PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAndGFnX2ludml0ZScgICAgPT4gJycNCiAg ICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfbG9naW4nICAgID0+ICcxJw0KICAgICAgICAg ICAgICAgICAgICAgLCAnbG9naW5faW52aXRlJyAgPT4gX2NiZV9mYV9nVHh0KCAnbG9naW5f dG9fdGV4dHBhdHRlcm4nICkNCiAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ2luX2Zvcm0n ICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAsICdsb2dpbl9sYWJlbCcgICA9PiBf Y2JlX2ZhX2dUeHQoICdsb2dfaW5fYnV0dG9uJyApDQogICAgICAgICAgICAgICAgICAgICAs ICdsb2dpbl93aXRoJyAgICA9PiAnYXV0bycNCiAgICAgICAgICAgICAgICAgICAgICwgJ2xv Z2luX3JlZGlyJyAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAsICdzaG93X2xvZ291 dCcgICA9PiAnMScNCiAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ291dF9pbnZpdGUnID0+ ICcnDQogICAgICAgICAgICAgICAgICAgICAsICdsb2dvdXRfZm9ybScgICA9PiAnJw0KICAg ICAgICAgICAgICAgICAgICAgLCAnbG9nb3V0X2xhYmVsJyAgPT4gX2NiZV9mYV9nVHh0KCAn bG9nb3V0JyApDQogICAgICAgICAgICAgICAgICAgICAsICdsb2dvdXRfdHlwZScgICA9PiAn YnV0dG9uJw0KICAgICAgICAgICAgICAgICAgICAgLCAnbG9nb3V0X3JlZGlyJyAgPT4gJycN CiAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfc3RheScgICAgID0+ICcwJw0KICAgICAg ICAgICAgICAgICAgICAgLCAnc2hvd19yZXNldCcgICAgPT4gJzEnDQogICAgICAgICAgICAg ICAgICAgICAsICdzaG93X2NoYW5nZScgICA9PiAnMScNCiAgICAgICAgICAgICAgICAgICAg ICwgJ2xpbmsnICAgICAgICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAsICdsaW5r bGFiZWwnICAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAndGFyZ2V0JyAgICAg ICAgPT4gJ19zZWxmJw0KICAgICAgICAgICAgICAgICAgICAgLCAnbmFtZScgICAgICAgICAg PT4gJycNCiAgICAgICAgICAgICAgICAgICAgICwgJ2xldmVsJyAgICAgICAgID0+ICcnDQog ICAgICAgICAgICAgICAgICAgICAsICd0YWdfZXJyb3InICAgICA9PiAnJw0KICAgICAgICAg ICAgICAgICAgICAgLCAnY2xhc3NfZXJyb3InICAgPT4gJycNCiAgICAgICAgICAgICAgICAg ICAgICkgOw0KDQogICAgJGluaV9hdHRzID0gYXJyYXkoKSA7DQogICAgZm9yZWFjaCggJGlu aXRzIGFzICRwYXJhbSA9PiAkdmFsdWUgKQ0KICAgIHsgICAvKiBJbml0cyB0YWtlIHByZWNl ZGVuY2Ugb24gZGVmYXVsdCB2YWx1ZXMgKi8NCiAgICAgICAgaWYoICFpc3NldCggJGF0dHNb JHBhcmFtXSApIHx8ICRhdHRzWyRwYXJhbV0gPT09ICRkZWZfYXR0c1skcGFyYW1dICkNCiAg ICAgICAgICAgICRpbmlfYXR0c1skcGFyYW1dID0gJHZhbHVlIDsNCiAgICB9DQoNCiAgICBl eHRyYWN0KCBsQXR0cyggJGRlZl9hdHRzICsgX2NiZV9mYV9mb3JtYXQoKSwgYXJyYXlfbWVy Z2UoICRhdHRzLCBhcnJheV9maWx0ZXIoICRpbmlfYXR0cyApICkgKSApIDsNCg0KICAgIGV4 dHJhY3QoIHBzYSggYXJyYXkoICdwX3VzZXJpZCcsICdwX3Bhc3N3b3JkJywgJ3Bfc3RheScs ICdwX3Jlc2V0JywgJ3BfbG9nb3V0JywgJ3BfY2hhbmdlJyApICkgKSA7DQogICAgJGxvZ291 dCA9IGdwcyggJ2xvZ291dCcgKSA7DQogICAgJHBfbG9nb3V0ID0gJHBfbG9nb3V0IHx8ICRs b2dvdXQgOw0KICAgICRyZXNldCA9IGdwcyggJ3Jlc2V0JyApIDsNCiAgICAkcF9yZXNldCA9 ICRwX3Jlc2V0IHx8ICRyZXNldCA7DQogICAgJGNoYW5nZSA9IGdwcyggJ2NoYW5nZScgKSA7 DQogICAgJHBfY2hhbmdlID0gJHBfY2hhbmdlIHx8ICRjaGFuZ2UgOw0KDQogICAgaWYoICRw X3VzZXJpZCAmJiAkcF9wYXNzd29yZCApDQogICAgew0KICAgICAgICAkdXNlcm5hbWUgPSAo JGxvZ2luX3dpdGggPT0gJ2F1dG8nKSA/IHNhZmVfY291bnQoICd0eHBfdXNlcnMnLCAibmFt ZT0nJHBfdXNlcmlkJyIgKSA6IDAgOw0KDQogICAgICAgIGlmKCAkdXNlcm5hbWUgPT0gMCAm JiAkbG9naW5fd2l0aCAhPSAndXNlcm5hbWUnICkNCiAgICAgICAgeyAvLyBFbWFpbCBwcm9i YWJseSBnaXZlbiwgcmV0cmlldmUgdXNlciBuYW1lIGlmIHBvc3NpYmxlDQogICAgICAgICAg ICAkcF91c2VyaWQgPSBzYWZlX3Jvd3MoICduYW1lJywgJ3R4cF91c2VycycsICJlbWFpbD0n JHBfdXNlcmlkJyIgKSA7DQogICAgICAgICAgICAkcF91c2VyaWQgPSAoY291bnQoICRwX3Vz ZXJpZCApID09IDEpID8gJHBfdXNlcmlkWyAwIF1bICduYW1lJyBdIDogJycgOw0KICAgICAg ICB9DQoNCiAgICAgICAgJGxvZ2luX3JlZGlyID0gKCRsb2dpbl9yZWRpcj09PSdsaW5rJykg PyAkbGluayA6ICRsb2dpbl9yZWRpciA7DQogICAgICAgICRsb2dpbl9mYWlsZWQgPSAoJHR4 cF91c2VyID0gX2NiZV9mYV9hdXRoKCAkbG9naW5fcmVkaXIsIDAsICRwX3VzZXJpZCwgJHBf cGFzc3dvcmQsICRwX3N0YXkgKSkgPT09IGZhbHNlIDsNCiAgICAgICAgX2NiZV9mYV9sb2dn ZWRfaW4oICRjYmVfZmFfdXNlciwgJHR4cF91c2VyICkgOw0KICAgIH0NCiAgICBlbHNlaWYo ICRwX2xvZ291dCApDQogICAgew0KICAgICAgICBpZiggJGxvZ291dCAmJiAhJGxvZ291dF9y ZWRpciApDQogICAgICAgICAgICAkbG9nb3V0X3JlZGlyID0gcHJlZ19yZXBsYWNlKCAiL1s/ Jl1sb2dvdXQ9MS8iLCAiIiwgc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpICkgOw0KDQogICAg ICAgICR0eHBfdXNlciA9IF9jYmVfZmFfYXV0aCggJGxvZ291dF9yZWRpciwgMSApIDsNCiAg ICAgICAgX2NiZV9mYV9sb2dnZWRfaW4oICRjYmVfZmFfdXNlciwgZmFsc2UgKSA7DQogICAg fQ0KICAgIGVsc2UNCiAgICAgICAgJHR4cF91c2VyID0gX2NiZV9mYV9sb2dnZWRfaW4oICRj YmVfZmFfdXNlciApID8gJGNiZV9mYV91c2VyWyAnbmFtZScgXSA6IGZhbHNlIDsNCg0KICAg ICRvdXQgPSBhcnJheSgpIDsNCiAgICAkaW52aXRlID0gJycgOw0KICAgICRwYXJ0XzAgPSBF dmFsRWxzZSggJHRoaW5nLCAwICkgOw0KICAgICRwYXJ0XzEgPSBFdmFsRWxzZSggJHRoaW5n LCAxICkgOw0KICAgIGlmKCAkdHhwX3VzZXIgPT09IGZhbHNlICkNCiAgICB7DQogICAgICAg ICRvdXRbXSA9IHBhcnNlKCAkcGFydF8wICkgOw0KDQogICAgICAgIGlmKCAkc2hvd19sb2dp biApDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmKCAkcF9yZXNldCApDQogICAgICAgICAg ICB7ICAgLy8gUmVzZXR0aW5nIHBhc3N3b3JkIGluIHByb2dyZXNzDQogICAgICAgICAgICAg ICAgJGludml0ZSA9IF9jYmVfZmFfZ1R4dCggJ3Bhc3N3b3JkX3Jlc2V0JyApIDsNCiAgICAg ICAgICAgICAgICAkb3V0W10gID0gY2FsbGJhY2tfZXZlbnQoICdjYmVmcm9udGF1dGgucmVz ZXRfcGFzc3dvcmQnLCAnY2JlX2ZhX2JlZm9yZV9sb2dpbicsIDANCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAsIHBzKCdzdGVwJykgPyBhcnJheSggJ3BfdXNl cmlkJyAgID0+ICRwX3VzZXJpZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9naW5fd2l0aCcgPT4gJGxvZ2luX3dp dGgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ3RhZ19lcnJvcicgID0+ICR0YWdfZXJyb3INCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2NsYXNz X2Vycm9yJyA9PiAkY2xhc3NfZXJyb3IgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwgKSA7DQogICAgICAgICAgICB9DQog ICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7ICAgLy8gV2UgYXJlIG5vdCByZXNldHRp bmcgdGhlIHBhc3N3b3JkIGF0IHRoZSBtb21lbnQsIGRpc3BsYXkgbG9naW4gZm9ybQ0KICAg ICAgICAgICAgICAgIGlmKCBpc3NldCggJGxvZ2luX2ZhaWxlZCApICYmICRsb2dpbl9mYWls ZWQgKQ0KICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSBkb1RhZyggX2NiZV9mYV9nVHh0 KCAnbG9naW5fZmFpbGVkJyApLCAkdGFnX2Vycm9yLCAkY2xhc3NfZXJyb3IgKSA7DQogICAg ICAgICAgICAgICAgJGludml0ZSA9ICRsb2dpbl9pbnZpdGUgOw0KICAgICAgICAgICAgICAg ICRvdXRbXSAgPSBfY2JlX2ZhX2lub3V0KCBhcnJheSggJ2xhYmVsJyAgICAgID0+ICRsb2dp bl9sYWJlbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ2Zvcm0nICAgICAgID0+ICRsb2dpbl9mb3JtDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19zdGF5JyAgPT4gJHNob3dfc3RheQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3df cmVzZXQnID0+ICRzaG93X3Jlc2V0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKSArIGNvbXBhY3QoICd3cmFwdGFnJywgJ2NsYXNzJywgJ2JyZWFr JywgJ2JyZWFrY2xhc3MnICkgKSA7DQogICAgICAgICAgICAgICAgaWYoICRzaG93X3Jlc2V0 ICkNCiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gY2FsbGJhY2tfZXZlbnQoICdjYmVm cm9udGF1dGgucmVzZXRfcGFzc3dvcmQnLCAnY2JlX2ZhX2FmdGVyX2xvZ2luJyApIDsNCiAg ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAg ICBpZiggKCEkbmFtZSAmJiAhJGxldmVsKQ0KICAgICAgICAgICAgfHwNCiAgICAgICAgICAg IF9jYmVfZmFfcHJpdmlsZWdlZCggJG5hbWUsICRsZXZlbCwgJGNiZV9mYV91c2VyWyAnbmFt ZScgXSwgJGNiZV9mYV91c2VyWyAncHJpdnMnIF0gKQ0KICAgICAgICAgICkNCiAgICAgICAg ew0KICAgICAgICAgICAgaWYoICRsaW5rICkNCiAgICAgICAgICAgICAgICAkb3V0W10gPSBj YmVfZnJvbnRhdXRoX2xpbmsoIGFycmF5KCAnbGFiZWwnID0+ICRsaW5rbGFiZWwgKSArIGNv bXBhY3QoICdsaW5rJywgJ3RhcmdldCcgKSApIDsNCg0KICAgICAgICAgICAgaWYoICR0aGlu ZyApDQogICAgICAgICAgICAgICAgJG91dFtdID0gcGFyc2UoICRwYXJ0XzEgKSA7DQogICAg ICAgICAgICBlbHNlaWYoICRmb3JtICkNCiAgICAgICAgICAgICAgICAkb3V0W10gPSBwYXJz ZV9mb3JtKCAkZm9ybSApIDsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgICAg ICAkb3V0W10gPSBwYXJzZSggJHBhcnRfMCApIDsNCg0KICAgICAgICBpZiggJHNob3dfbG9n b3V0ICkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYoICRwX2NoYW5nZSApDQogICAgICAg ICAgICB7ICAgLy8gQ2hhbmdpbmcgcGFzc3dvcmQgaW4gcHJvZ3Jlc3MNCiAgICAgICAgICAg ICAgICAkaW52aXRlID0gX2NiZV9mYV9nVHh0KCAnY2hhbmdlX3Bhc3N3b3JkJyApIDsNCiAg ICAgICAgICAgICAgICAkb3V0W10gID0gY2FsbGJhY2tfZXZlbnQoICdjYmVmcm9udGF1dGgu Y2hhbmdlX3Bhc3N3b3JkJywgJ2NiZV9mYV9iZWZvcmVfbG9nb3V0JywgMA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcHMoJ3N0ZXAnKSA/IGFycmF5KCAn cF91c2VyaWQnICAgICA9PiAkdHhwX3VzZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3BfcGFzc3dvcmQnICAgPT4g JHBfcGFzc3dvcmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICwgJ3BfcGFzc3dvcmRfMScNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHN0cmlw X3RhZ3MoIHBzKCAncF9wYXNzd29yZF8xJyApICkNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3BfcGFzc3dvcmRfMicN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0+IHN0cmlwX3RhZ3MoIHBzKCAncF9wYXNzd29yZF8yJyApICkNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ3RhZ19lcnJvcicgICAgPT4gJHRhZ19lcnJvcg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnY2xhc3NfZXJyb3In ICA9PiAkY2xhc3NfZXJyb3IgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IG51bGwgKSA7DQogICAgICAgICAgICB9DQogICAgICAg ICAgICBlbHNlDQogICAgICAgICAgICB7ICAgLy8gV2UgYXJlIG5vdCBjaGFuZ2luZyB0aGUg cGFzc3dvcmQgYXQgdGhlIG1vbWVudCwgZGlzcGxheSBsb2dvdXQgZm9ybQ0KICAgICAgICAg ICAgICAgICRpbnZpdGUgPSAkbG9nb3V0X2ludml0ZSA7DQogICAgICAgICAgICAgICAgJG91 dFtdID0gX2NiZV9mYV9pbm91dCggYXJyYXkoICdsYWJlbCcgICAgICAgPT4gJGxvZ291dF9s YWJlbA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAn Zm9ybScgICAgICAgID0+ICRsb2dvdXRfZm9ybQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCAndHlwZScgICAgICAgID0+ICRsb2dvdXRfdHlwZQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19j aGFuZ2UnID0+ICRzaG93X2NoYW5nZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLCAncF9jaGFuZ2UnICAgID0+ICRwX2NoYW5nZQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAndGFnX2Vycm9yJyAgID0+ ICR0YWdfZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwgJ2NsYXNzX2Vycm9yJyA9PiAkY2xhc3NfZXJyb3INCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgKyBjb21wYWN0KCAnd3JhcHRhZycsICdj bGFzcycsICdicmVhaycsICdicmVha2NsYXNzJyApICkgOw0KICAgICAgICAgICAgICAgIGlm KCAkc2hvd19jaGFuZ2UgKQ0KICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSBjYWxsYmFj a19ldmVudCggJ2NiZWZyb250YXV0aC5jaGFuZ2VfcGFzc3dvcmQnLCAnY2JlX2ZhX2FmdGVy X2xvZ291dCcgKSA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCi8vICAg IHJldHVybiggZG9MYWJlbCggJGludml0ZSwgJHRhZ19pbnZpdGUgKSAuIGRvV3JhcCggJG91 dCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzLCAkYnJlYWtjbGFzcyApICkgOw0KICAgIHJl dHVybiggZG9MYWJlbCggJGludml0ZSwgJHRhZ19pbnZpdGUgKSAuIGRvV3JhcCggJG91dCwg JHdyYXB0YWcsICcnLCAkY2xhc3MgKSApIDsNCn0NCiI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6 NToib3JkZXIiO3M6MToiNCI7czo1OiJmbGFncyI7czoxOiIwIjtzOjQ6ImhlbHAiO3M6MjQz NzE6IjxkaXYgaWQ9ImNiZS1wbHVnaW4taGVscCI+CjxoMT5jYmVfZnJvbnRhdXRoPC9oMT4K CjxwPlRoaXMgY2xpZW50LXNpZGUgcGx1Z2luIGxldHMgeW91ciB1c2VycyAob3IgeW91KSBt YW5hZ2UgYmFja2VuZCBjb25uZWN0aW9uIGZyb20gZnJvbnRlbmQsIGkuZS4gY29ubmVjdCBh bmQgZGlzY29ubmVjdCBhcyB0aGV5ICh5b3UpIHdvdWxkIGRvIGZyb20gYmFja2VuZC4KPGJy IC8+WW91IGNhbiB0aHVzIG1ha2UgdGhpbmdzIHZpc2libGUgYW5kIG9wZW4gYWN0aW9ucyBm b3IgY29ubmVjdGVkIHVzZXJzIG9ubHkuPC9wPgo8cD5EZXZlbG9wZWQgYW5kIHRlc3RlZCB3 aXRoIFRleHRwYXR0ZXJuIDQuNC4xLCB0aGVuIDQuNS1iZXRhLjwvcD4KPHAgY2xhc3M9InJl YWRtZSI+UGxlYXNlIHJlYWQgdGhlIGZpcnN0IDxhIGhyZWY9IiNxdWljay1zdGFydCI+UXVp Y2sgc3RhcnQ8L2E+IHBhcmFncmFwaCB0byBhdm9pZCAoYXMgbXVjaCBhcyBwb3NzaWJsZSkg dW5leHBlY3RlZCBiZWhhdmlvcnMuPC9wPgo8cD5BIGZldyBleGFtcGxlcyAoaW4gZnJlbmNo KSBjYW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2xhaXJlYnJpb25l LmNvbS9kZW1vLWNiZV9mcm9udGF1dGgiPmRlbW9uc3RyYXRpb24gcGFnZTwvYT4uPC9wPgoK PGgyPlRhYmxlIG9mIGNvbnRlbnRzPC9oMj4KPHVsPgogIDxsaT48YSBocmVmPSIjZmVhdHVy ZXMiPkZlYXR1cmVzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNkbC1pbnN0YWxsLXN1cHAi PkRvd25sb2FkLCBpbnN0YWxsYXRpb24sIHN1cHBvcnQ8L2E+PC9saT4KICA8bGk+PGEgaHJl Zj0iI3RhZ3MtbGlzdCI+VGFncyBsaXN0PC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNub3Rh dGlvbnMiPk5vdGF0aW9uczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjcXVpY2stc3RhcnQi PlF1aWNrIHN0YXJ0PC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNpbmRpdmlkdWFsLWVsZW1l bnRzIj5UYWtlIGNvbnRyb2wgb24gaW5kaXZpZHVhbCBlbGVtZW50czwvYT48L2xpPgogIDxs aT48YSBocmVmPSIjYWRkaXRpb25hbC10YWdzIj5BZGRpdGlvbmFsIGFuZCBzcGVjaWFsIHRh Z3M8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI2NhbGxiYWNrcyI+Q2FsbGJhY2tzPC9hPjwv bGk+CiAgPGxpPjxhIGhyZWY9IiNob3ctdG8iPkhvdy10bzogaWRlYXMgYW5kIHNuaXBwZXRz PC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNhZHZhbmNlZC11c2FnZSI+QWR2YW5jZWQgdXNh Z2U8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI2NoYW5nZWxvZyI+Q2hhbmdlbG9nPC9hPjwv bGk+CjwvdWw+Cgo8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+Cgo8dWw+CiAgPGxp PmF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSA8YSBocmVmPSIjbG9naW4tbG9nb3V0LWJveCI+ bG9naW4vbG9nb3V0IGJveDwvYT4uLi48L2xpPgogIDxsaT4uLi4gb3IgaW5kZXBlbmRlbnQg PGEgaHJlZj0iI2xvZ2luLWFyZWEiPmxvZ2luPC9hPiBvciA8YSBocmVmPSIjbG9nb3V0LWFy ZWEiPmxvZ291dDwvYT4gZm9ybXMgYW5kIGxpbmtzPC9saT4KICA8bGk+Y2hvb3NlIGlmIHRo IHVzZXIgbXVzdCBjb25uZWN0IHdpdGggaGlzL2hlciA8YSBocmVmPSIjbG9naW4tbWV0aG9k Ij51c2VybmFtZSwgb3IgZW1haWwgYWRkcmVzcywgb3Igb25lIG9mIGJvdGg8L2E+PC9saT4K ICA8bGk+c2hvdy9oaWRlIGNvbnRlbnQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYSB1c2VyIGlz IGNvbm5lY3RlZCBvciBub3QgKHNlZSA8YSBocmVmPSIjcHJvdGVjdC1wYXJ0cyI+cHJvdGVj dCBwYXJ0cyBvZiBhIHBhZ2U8L2E+KTwvbGk+CiAgPGxpPnNldCA8YSBocmVmPSIjYXV0b21h dGljLXJlZGlyZWN0Ij5hdXRvbWF0aWMgcmVkaXJlY3Rpb25zPC9hPiBhZnRlciBsb2dpbiBh bmQvb3IgbG9nb3V0PC9saT4KICA8bGk+b3B0aW9uYWw6IGRlZmluZSB5b3VyIG93biBkZWZh dWx0IHZhbHVlcyBmb3IgPGEgaHJlZj0iI3NldHRpbmctaW52aXRlcyI+bG9naW4vbG9nb3V0 IGludml0ZXM8L2E+IGFuZCA8YSBocmVmPSIjc2V0dGluZy1sYWJlbHMiPmJ1dHRvbi9saW5r IGxhYmVsczwvYT4sIDxhIGhyZWY9IiNsb2dpbi1tZXRob2QiPmRlZmluZSBsb2dpbiBtZXRo b2Q8L2E+PC9saT4KICA8bGk+b3ZlcnJpZGUgdGhlc2UgdmFsdWVzIGFueXdoZXJlIGluIHRo ZSBwYWdlIGlmIHlvdSBuZWVkIHRvPC9saT4KICA8bGk+YWxzbyBwcm92aWRlcyA8YSBocmVm PSIjYWRkaXRpb25hbC10YWdzIj5hZGRpdGlvbmFsIHRhZ3M8L2E+IHRvIGVhc2Ugc2NyaXB0 ZXIncyBsaWZlPC9saT4KICA8bGk+YW5kIDxhIGhyZWY9IiNjYWxsYmFja3MiPmhvb2tzIGZv ciBjYWxsYmFjayBmdW5jdGlvbnM8L2E+IHByaW1hcmlseSBpbiBvcmRlciB0byByZXNldCBv ciBjaGFuZ2UgdXNlcidzIHBhc3N3b3JkPC9saT4KPC91bD4KCjxoMiBpZD0iZGwtaW5zdGFs bC1zdXBwIj5Eb3dubG9hZCwgaW5zdGFsbGF0aW9uLCBzdXBwb3J0PC9oMj4KPHA+RG93bmxv YWQgZnJvbSA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTIzNC9j YmVfZnJvbnRhdXRoIj50ZXh0cGF0dGVybiByZXNvdXJjZXM8L2E+IG9yIHRoZSA8YSBocmVm PSJodHRwOi8vd3d3LmNsYWlyZWJyaW9uZS5jb20vY2JlX2Zyb250YXV0aCI+cGx1Z2luIHBh Z2U8L2E+LjwvcD4KPHA+Q29weS9wYXN0ZSBpbiB0aGUgQWRtaW4gPiBQbHVnaW5zIHRhYiB0 byBpbnN0YWxsIG9yIHVuaW5zdGFsbCwgYWN0aXZhdGUgb3IgZGVzYWN0aXZhdGUuPC9wPgo8 cD5WaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3 dG9waWMucGhwP2lkPTM2NTUyIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBzdXBwb3J0LjwvcD4K CjxoMiBpZD0idGFncy1saXN0Ij5UYWdzIGxpc3Q8L2gyPgoKPHA+QWxwaGFiZXRpY2FsbHk6 CjxiciAvPjxhIGhyZWY9IiNhZHZhbmNlZC11c2FnZSI+Y2JlX2Zyb250YXV0aDwvYT4KPGJy IC8+PGEgaHJlZj0iI3BhdGgtYmFja2VuZCI+Y2JlX2Zyb250YXV0aF9iYWNrZW5kPC9hPgo8 YnIgLz48YSBocmVmPSIjbG9naW4tbG9nb3V0LWJveCI+Y2JlX2Zyb250YXV0aF9ib3g8L2E+ CjxiciAvPjxhIGhyZWY9IiNlZGl0LWFydGljbGUiPmNiZV9mcm9udGF1dGhfZWRpdF9hcnRp Y2xlPC9hPgo8YnIgLz48YSBocmVmPSIjcHJvdGVjdC1wYXJ0cyI+Y2JlX2Zyb250YXV0aF9p Zl9jb25uZWN0ZWQ8L2E+CjxiciAvPjxhIGhyZWY9IiNzZXR0aW5nLWludml0ZXMiPmNiZV9m cm9udGF1dGhfaW52aXRlPC9hPgo8YnIgLz48YSBocmVmPSIjc2V0dGluZy1sYWJlbHMiPmNi ZV9mcm9udGF1dGhfbGFiZWw8L2E+CjxiciAvPjxhIGhyZWY9IiNsaW5rLWdlbmVyYXRpb24i PmNiZV9mcm9udGF1dGhfbGluazwvYT4KPGJyIC8+PGEgaHJlZj0iI3Byb3RlY3QtcGFydHMi PmNiZV9mcm9udGF1dGhfaWZfbG9nZ2VkPC9hPgo8YnIgLz48YSBocmVmPSIjbG9naW4tYXJl YSI+Y2JlX2Zyb250YXV0aF9sb2dpbjwvYT4KPGJyIC8+PGEgaHJlZj0iI2xvZ2luLW1ldGhv ZCI+Y2JlX2Zyb250YXV0aF9sb2dpbndpdGg8L2E+CjxiciAvPjxhIGhyZWY9IiNmb3JtLWVs ZW1lbnRzIj5jYmVfZnJvbnRhdXRoX2xvZ25hbWU8L2E+CjxiciAvPjxhIGhyZWY9IiNsb2dv dXQtYXJlYSI+Y2JlX2Zyb250YXV0aF9sb2dvdXQ8L2E+CjxiciAvPjxhIGhyZWY9IiNmb3Jt LWVsZW1lbnRzIj5jYmVfZnJvbnRhdXRoX3Bhc3N3b3JkPC9hPgo8YnIgLz48YSBocmVmPSIj cHJvdGVjdC1wYXJ0cyI+Y2JlX2Zyb250YXV0aF9wcm90ZWN0PC9hPgo8YnIgLz48YSBocmVm PSIjYXV0b21hdGljLXJlZGlyZWN0Ij5jYmVfZnJvbnRhdXRoX3JlZGlyZWN0PC9hPgo8YnIg Lz48YSBocmVmPSIjZm9ybS1lbGVtZW50cyI+Y2JlX2Zyb250YXV0aF9yZXNldDwvYT4KPGJy IC8+PGEgaHJlZj0iI2Zvcm0tZWxlbWVudHMiPmNiZV9mcm9udGF1dGhfc3RheTwvYT4KPGJy IC8+PGEgaHJlZj0iI2Zvcm0tZWxlbWVudHMiPmNiZV9mcm9udGF1dGhfc3VibWl0PC9hPgo8 YnIgLz48YSBocmVmPSIjdXNlci1pbmZvIj5jYmVfZnJvbnRhdXRoX3dob2lzPC9hPgo8L3A+ Cgo8aDIgaWQ9Im5vdGF0aW9ucyI+Tm90YXRpb25zPC9oMj4KCjxwPjxjb2RlPlRhZ3MgYW5k IGV4YW1wbGVzIGFyZSBwcmVzZW50ZWQgd2l0aCB0aGlzIHR5cG9ncmFwaHk8L2NvZGU+IChm aXhlZCB3aWR0aCkuPC9wPgo8cD5Qb3NzaWJsZSB2YWx1ZXMgZm9yIGF0dHJpYnV0ZXMgYXJl IHNlcGFyYXRlZCBieSBhICI8Y29kZT4gfCA8L2NvZGU+IiAocGlwZSkuPC9wPgo8cD48Yj5C b2xkPC9iPiBtZWFucyBkZWZhdWx0IHZhbHVlLjwvcD4KPHA+Ijxjb2RlPi4uLjwvY29kZT4i IChlbGxpcHNpcykgaXMgdG8gYmUgcmVwbGFjZWQgYnkgYW55IGN1c3RvbSB2YWx1ZSwgdXN1 YWxseSBhIHN0cmluZy48L3A+CjxwPkF0dHJpYnV0ZXMgc3Vycm91bmRlZCBieSAiPGNvZGU+ WzwvY29kZT4iIGFuZCAiPGNvZGU+XTwvY29kZT4iIChzcXVhcmUgYnJhY2tldHMpIGFyZSBv cHRpb25hbC48L3A+Cgo8aDIgaWQ9InF1aWNrLXN0YXJ0Ij5RdWljayBzdGFydDwvaDI+Cgo8 cD5NZXNzYWdlIHN0cmluZ3MgYXJlIGN1c3RvbWlzYWJsZSBieSBlZGl0aW5nIHRoZW0gaW4g dGhlIGZ1bmN0aW9uIF9jYmVfZmFfbGFuZygpLiBXaGVuIHBvc3NpYmxlLCB0aGVpciBkZWZh dWx0IHZhbHVlcyBhcmUgcHVsbGVkIGZyb20gdGhlIGxhbmd1YWdlIHRhYmxlLiBJbiBtb3N0 IGNhc2VzLCB5b3Ugd29uJ3QgaGF2ZSB0byBlZGl0IHRoZW0gYXMgdGhleSBhcmUgYWxyZWFk eSBsb2NhbGlzZWQuPC9wPgoKPHAgY2xhc3M9InJlYWRtZSI+V2hhdCB5b3UgaGF2ZSB0byBr bm93IGFuZCBjYXJlIGFib3V0IDo8L3A+Cjx1bD4KICA8bGk+VGhlIGxvZ2luL2xvZ291dCBt ZWNoYW5pc20gcmVsaWVzIG9uIGNvb2tpZXMuIEEgY29va2llIGlzIGF0dGFjaGVkIHRvIG9u ZSwgYW5kIG9ubHkgb25lLCBzdWJkb21haW4uPC9saT4KICA8bGk+PGNvZGU+aHR0cDovL2Rv bWFpbi50bGQ8L2NvZGU+IGFuZCA8Y29kZT5odHRwOi8vd3d3LmRvbWFpbi50bGQ8L2NvZGU+ IGFyZSA8Yj5kaWZmZXJlbnQ8L2I+IHN1YmRvbWFpbnMsIGV2ZW4gaWYgeW91IHByZXNlbnQg dGhlIHNhbWUgY29udGVudCB0aHJvdWdoIGJvdGggVVJMcy48L2xpPgo8L3VsPgo8cD49PiBZ b3Ugd2lsbCBoYXZlIHRvIGNob29zZSB3aGljaCBiYXNlIFVSTCB5b3Ugd2FudCB0byB1c2Ug KHdpdGggb3Igd2l0aG91dCB3d3cpIGFuZCBzdGljayB0byBpdCBhbG9uZyBhbGwgdGhlIG5h dmlnYXRpb24uIFRoaXMgaXMgYWxzbyBhIGdvb2QgcHJhY3RpY2UgdG8gYXZvaWQgZHVwbGlj YXRlIGNvbnRlbnQuPC9wPgoKPHA+SGVyZSBpcyBob3cgdG86PC9wPgo8cD4xLiBQbHVnaW4g bG9hZCBvcmRlcjogYXMgaXQgaGFuZGxlcyByZWRpcmVjdGlvbnMsIGl0IGhhcyB0byBiZSBs b2FkZWQgYmVmb3JlIGFueSBvdGhlciBwbHVnaW4uIFNldCBieSBkZWZhdWx0IHRvIDxiPjQ8 L2I+LCBhZGp1c3QgYWNjb3JkaW5nIHRvIHlvdXIgbmVlZHMuPC9wPgo8cD4yLiBBZG1pbiA+ IFByZWZlcmVuY2VzIDogZ2l2ZSAob3IgdmVyaWZ5KSB5b3VyIHNpdGUgVVJMIGFuZCBzYXZl LjwvcD4KPHA+My4gRWRpdCB0aGUgPGNvZGU+Lmh0YWNjZXNzPC9jb2RlPiBmaWxlIGxvY2F0 ZWQgYXQgdGhlIHJvb3Qgb2YgeW91ciBzaXRlLCBhbmQgYXBwZW5kIGFzIGNsb3NlciBhcyBw b3NzaWJsZSB0byA8Y29kZT5SZXdyaXRlRW5naW5lIE9uPC9jb2RlPiAocmVwbGFjZSA8Y29k ZT5kb21haW4udGxkPC9jb2RlPiB3aXRoIHlvdXIgYWN0dWFsIFVSTCk6PC9wPgoKPHA+RUlU SEVSLCB3aXRoIHd3dzwvcD4KPHByZT48Y29kZT5SZXdyaXRlQ29uZCAle0hUVFBfSE9TVH0g IV53d3dcLmRvbWFpblwudGxkJCBbTkNdClJld3JpdGVSdWxlIF4oLiopIGh0dHA6Ly93d3cu ZG9tYWluLnRsZC8kMSBbUVNBLFI9MzAxLExdPC9jb2RlPjwvcHJlPgoKPHA+T1IsIHdpdGhv dXQgd3d3PC9wPgo8cHJlPjxjb2RlPlJld3JpdGVDb25kICV7SFRUUF9IT1NUfSBed3d3XC5k b21haW5cLnRsZCQgW05DXQpSZXdyaXRlUnVsZSBeKC4qKSBodHRwOi8vZG9tYWluLnRsZC8k MSBbUVNBLFI9MzAxLExdPC9jb2RlPjwvcHJlPgoKPHA+PHNwYW4gY2xhc3M9ImFjY2VudCI+ SXQncyB0aW1lIG5vdyB0byBzdGFydCB1c2luZyB0aGUgcGx1Z2luPC9zcGFuPjogPGEgaHJl Zj0iI2xvZ2luLWxvZ291dC1ib3giPmFsbG93IHVzZXJzIHRvIGxvZ2luIGFuZCBsb2dvdXQ8 L2E+LCA8YSBocmVmPSIjYXV0b21hdGljLXJlZGlyZWN0Ij5yZWRpcmVjdGluZyB0aGVtPC9h PiAob3Igbm90KSBhZnRlciBsb2dpbiBhbmQvb3IgbG9nb3V0LCA8YSBocmVmPSIjcHJvdGVj dC1wYXJ0cyI+c2VydmUgdGhlbSBzcGVjaWFsIGNvbnRlbnQ8L2E+LCA8YSBocmVmPSIjaW5k aXZpZHVhbC1lbGVtZW50cyI+dGhlIHJlc3QgaXMgdXAgdG8geW91PC9hPi48L3A+Cgo8cD48 Y29kZT53cmFwdGFnPC9jb2RlPiwgPGNvZGU+Y2xhc3M8L2NvZGU+LCA8Y29kZT5icmVhazwv Y29kZT4gYW5kIDxjb2RlPmJyZWFrY2xhc3M8L2NvZGU+IGFyZSBzdXBwb3J0ZWQgYnkgZXZl cnkgdGFnIGFuZCBib3RoIGRlZmF1bHQgdG8gPGI+dW5zZXQ8L2I+LjwvcD4KCjxoMyBpZD0i bG9naW4tbG9nb3V0LWJveCI+TG9naW4vbG9nb3V0IGJveDogJmx0O3R4cDpjYmVfZnJvbnRh dXRoX2JveCAvJmd0OzwvaDM+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9i b3gKICBbIGxvZ2luX2ludml0ZT0iPGI+Q29ubmVjdCB0byB0ZXh0cGF0dGVybjwvYj4gfCAu Li4iCiAgICBsb2dvdXRfaW52aXRlPSI8Yj5ub25lPC9iPiB8IC4uLiIKICAgIHRhZ19pbnZp dGU9Ii4uLiIKICAgIGxvZ2luX2xhYmVsPSIuLi4iCiAgICBsb2dvdXRfbGFiZWw9Ii4uLiIK ICAgIGxvZ291dF90eXBlPSI8Yj5idXR0b248L2I+IHwgbGluayIKICAgIHRhZ19lcnJvcj0i PGI+c3BhbjwvYj4iIGNsYXNzX2Vycm9yPSI8Yj5jYmVfZmFfZXJyb3I8L2I+IgogICAgd3Jh cHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iIF0g LyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5EaXNwbGF5cwo8YnIgLz4tIHNpbXBsZSBsb2dpbiBm b3JtIGlmIG5vdCBjb25uZWN0ZWQKPGJyIC8+LSAiY29ubmVjdGVkIGFzIHtsb2dpbiBuYW1l fSIgYW5kIGEgbG9nb3V0IGJ1dHRvbiBvciBsaW5rIGlmIGNvbm5lY3RlZAo8L3A+Cgo8cD5J ZiBsb2dpbiBmYWlscywgYSBiYXNpYyBtZXNzYWdlIHdpbGwgYXBwZWFyIGp1c3QgYmVmb3Jl IHRoZSBsb2dpbiBmb3JtLiBZb3UgY2FuIGN1c3RvbWlzZSBpdHMgd3JhcHBpbmcgdGFnIGFu ZCBjbGFzcy48L3A+Cgo8cD5JZiB5b3UgZG9uJ3Qgd2FudCAiY29ubmVjdGVkIGFzIiBtZXNz YWdlLCB1c2UgYXMgYSBjb250YWluZXIgdGFnIGFuZCBwdXQgYSBibGFuayBvciA8YSBocmVm PSIjYm94LWlkZWFzIj5hbnl0aGluZyBlbHNlPC9hPiBpbiBiZXR3ZWVuOjwvcD4KPHByZT48 Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfYm94Jmd0OyAmbHQ7L3R4cDpjYmVfZnJvbnRh dXRoX2JveCZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9InByb3RlY3QtcGFydHMiPlByb3Rl Y3QgcGFydHMgb2YgYSBwYWdlOiAmbHQ7dHhwOmNiZV9mcm9udGF1dGhfcHJvdGVjdCAvJmd0 OywgJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2lmX2xvZ2dlZCAvJmd0OyBhbmQgJmx0O3R4cDpj YmVfZnJvbnRhdXRoX2lmX2Nvbm5lY3RlZCAvJmd0OzwvaDM+Cgo8cHJlPjxjb2RlPiZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9wcm90ZWN0CiAgWyBuYW1lPSI8Yj5ub25lPC9iPiB8IGNvbW1h LXNlcGFyYXRlZCB2YWx1ZXMiCiAgICBsZXZlbD0iPGI+bm9uZTwvYj4gfCBjb21tYS1zZXBh cmF0ZWQgdmFsdWVzIgogICAgbGluaz0iPGI+bm9uZTwvYj4gfCB1cmwiCiAgICBsaW5rbGFi ZWw9IjxiPm5vbmU8L2I+IHwgYW5jaG9yIgogICAgdGFyZ2V0PSI8Yj5fc2VsZjwvYj4gfCBf YmxhbmsiCiAgICB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFr Y2xhc3M9Ii4uLiIgXSZndDsKICBXaGF0IHRvIHByb3RlY3QKJmx0O3R4cDplbHNlIC8mZ3Q7 CiAgV2hhdCB0byBkaXNwbGF5IGlmIG5vdCBjb25uZWN0ZWQKJmx0Oy90eHA6Y2JlX2Zyb250 YXV0aF9wcm90ZWN0Jmd0OzwvY29kZT48L3ByZT4KPHA+U3lub255bXM6IDxjb2RlPiZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQgLyZndDs8L2NvZGU+IDxjb2RlPiZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9pZl9sb2dnZWQgLyZndDs8L2NvZGU+IGlmIHlvdSBmaW5kIG9u ZSBvZiB0aGVzZSBmb3JtcyBtb3JlIGNvbnZlbmllbnQ8L3A+Cgo8cD5JZiBjb25uZWN0ZWQs IHlvdSBjYW4gYXV0b21hdGljYWxseSBhZGQgYSBsaW5rIHRvIGNsaWNrIHRvIGdvIHNvbWV3 aGVyZS4gVGhpcyBsaW5rIHdpbGwgc2hvdyBmaXJzdCAoYmVmb3JlIGFueSBvdGhlciBjb250 ZW50KS4KPGJyIC8+WW91IGRvIHRoaXMgdXNpbmcgdGhlIGF0dHJpYnV0ZXMgPGNvZGU+bGlu azwvY29kZT4sIDxjb2RlPmxpbmtsYWJlbDwvY29kZT4sIG9wdGlvbmFsbHkgPGNvZGU+dGFy Z2V0PC9jb2RlPiAoIl9zZWxmIiBvcGVucyB0aGUgbGluayBpbiB0aGUgc2FtZSB3aW5kb3cv dGFiLCAiX2JsYW5rIiBpbiBhIG5ldyB3aW5kb3cvdGFiKS4KPC9wPgoKPHA+SWYgeW91IHdh bnQgdG8gZGlzcGxheSB0aGUgbGluayBhbnl3aGVyZSBlbHNlLCBvciBkaXNwbGF5IG1vcmUg dGhhbiBvbmUgbGluaywgb3IgY29uZGl0aW9uYWxseSBzaG93IGEgbGluaywgcHJlZmVyIDxh IGhyZWY9IiNsaW5rLWdlbmVyYXRpb24iPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9saW5rIC8m Z3Q7PC9hPjwvcD4KCjxoMyBpZD0ibG9naW4tbWV0aG9kIj5Mb2dpbiBtZXRob2QgJmx0O3R4 cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aCAvJmd0OzwvaDM+Cgo8cD5XaGF0IHRvIHVzZSBh cyBsb2dpbiBuYW1lIDogdXNlcm5hbWUgKGFzIHRleHRwYXR0ZXJuIHVzdWFsbHkgZG9lcyks IGVtYWlsLCBvciBhdXRvIGZvciBhdXRvbWF0aWMgZGV0ZWN0aW9uLjwvcD4KPHA+PHNwYW4g Y2xhc3M9InJlYWRtZSI+Q2F1dGlvbiBpZiB1c2luZyBlbWFpbCBsb2dpbiBtZXRob2Q8L3Nw YW4+IDogdGV4dHBhdHRlcm4gZG9lc24ndCBjaGVjayBmb3IgZHVwbGljYXRlIGVtYWlsIGFk ZHJlc3NlcyB1cG9uIHVzZXIgY3JlYXRpb24uIElmIHNvbWVvbmUgdHJpZXMgdG8gbG9nIGlu IHVzaW5nIHN1Y2ggYW4gYWRkcmVzcywgaXQgd2lsbCBmYWlsLjwvcD4KCjxwcmU+PGNvZGU+ Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aAogICAgdmFsdWU9IjxiPmF1dG88L2I+ IHwgdXNlcm5hbWUgfCBlbWFpbCIgLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9ImF1dG9t YXRpYy1yZWRpcmVjdCI+QXV0b21hdGljIHJlZGlyZWN0OiAmbHQ7dHhwOmNiZV9mcm9udGF1 dGhfcmVkaXJlY3QgLyZndDs8L2gzPgoKPHA+VXNlciB3aWxsIGJlIGF1dG9tYXRpY2FsbHkg cmVkaXJlY3RlZCBhZnRlciBzdWNjZXNzZnVsIGxvZ2luIGFuZC9vciBsb2dvdXQuCjxiciAv PlVzZSB0aGlzIHRhZyBiZWZvcmUgYW55IG90aGVyIGNiZV9mcm9udGF1dGhfKiBhcyBpdCBz ZXRzIHJlZGlyZWN0aW9uKHMpIGZvciB0aGUgd2hvbGUgcGFnZS48L3A+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9yZWRpcmVjdAogICAgZm9yPSJsb2dpbiB8IGxvZ291 dCB8IGxvZ2luLGxvZ291dCIKICAgIHZhbHVlPSJhZnRlcl9sb2dpbl91cmwgfCBhZnRlcl9s b2dvdXRfdXJsIHwgYWZ0ZXJfbG9naW5fdXJsLGFmdGVyX2xvZ291dF91cmwiIC8mZ3Q7PC9j b2RlPjwvcHJlPgoKPHA+SW4gb3RoZXIgd29yZHMgYW5kIGluIGRldGFpbHM6PC9wPgo8cD48 Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfcmVkaXJlY3QgZm9yPSJsb2dpbiIgdmFsdWU9 ImFmdGVyX2xvZ2luX3VybCIgLyZndDs8L2NvZGU+CjxiciAvPnNldHMgYXV0b21hdGljIHJl ZGlyZWN0aW9uIGFmdGVyIGxvZ2luPC9wPgo8cD48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1 dGhfcmVkaXJlY3QgZm9yPSJsb2dvdXQiIHZhbHVlPSJhZnRlcl9sb2dvdXRfdXJsIiAvJmd0 OzwvY29kZT4KPGJyIC8+c2V0cyBhdXRvbWF0aWMgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9nb3V0 PC9wPgo8cD48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfcmVkaXJlY3QgZm9yPSJsb2dp biIgdmFsdWU9ImFmdGVyX2xvZ2luX3VybCIgLyZndDsKJmx0O3R4cDpjYmVfZnJvbnRhdXRo X3JlZGlyZWN0IGZvcj0ibG9nb3V0IiB2YWx1ZT0iYWZ0ZXJfbG9nb3V0X3VybCIgLyZndDs8 L2NvZGU+CjxiciAvPnNldHMgYXV0b21hdGljIHJlZGlyZWN0aW9uIGZvciBib3RoPC9wPgo8 cD48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfcmVkaXJlY3QgZm9yPSJsb2dpbixsb2dv dXQiIHZhbHVlPSJhZnRlcl9sb2dpbl91cmwsYWZ0ZXJfbG9nb3V0X3VybCIgLyZndDs8L2Nv ZGU+CjxiciAvPnNldHMgYXV0b21hdGljIHJlZGlyZWN0aW9uIGZvciBib3RoIHRvbzwvcD4K CjxoMyBpZD0ic2V0dGluZy1pbnZpdGVzIj5TZXR0aW5nIGludml0ZXMgZ2xvYmFsbHkgZm9y IHRoZSB3aG9sZSBwYWdlOiAmbHQ7dHhwOmNiZV9mcm9udGF1dGhfaW52aXRlIC8mZ3Q7PC9o Mz4KCjxwPldvcmtzIHRoZSBzYW1lIHdheSA8YSBocmVmPSIjYXV0b21hdGljLXJlZGlyZWN0 Ij5hcyBhYm92ZTwvYT46PC9wPgo8cD48cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0 aF9pbnZpdGUgZm9yPSIuLi4iIHZhbHVlPSIuLi4iIC8mZ3Q7PC9jb2RlPjwvcHJlPjwvcD4K PHA+Q29tYmluYXRpb25zOiA8Y29kZT5sb2dpbiwgbG9nb3V0IChvciBsb2dnZWQpLCB0YWc8 L2NvZGU+PC9wPgo8cD5TeW5vbnltOiA8Y29kZT5sb2dnZWQ8L2NvZGU+IGZvciBsb2dvdXQs IGlmIHlvdSBmaW5kIHRoaXMgZm9ybSBtb3JlIGNvbnZlbmllbnQuIDxzcGFuIGNsYXNzPSJh Y2NlbnQiPkFzIHN5bm9ueW1zIHRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZTwvc3Bhbj4g YW5kIGlmIGJvdGggdXNlZCA8Y29kZT5sb2dvdXQ8L2NvZGU+IHdpbGwgdGFrZSBwcmVjZWRl bmNlLjwvcD4KPHA+Q2FuIGJlIG92ZXJyaWRkZW4gYnkgYW55IHRhZyB0aGF0IGhhcyA8Y29k ZT5pbnZpdGU8L2NvZGU+IGFzIGF0dHJpYnV0ZS48L3A+Cgo8cD5FeGFtcGxlOjwvcD4KPHBy ZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfaW52aXRlIGZvcj0ibG9naW4sbG9nb3V0 LHRhZyIgaW52aXRlPSJQbGVhc2UgbG9naW4sWW91IGNhbiBsb2dvdXQgaGVyZSxoMiIgLyZn dDsKJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2JveCAvJmd0OwogIC4uLiBZb3VyIHBhZ2UgaGVy ZSAuLi4KICAuLi4gYW5kIGluIHRoZSBmb290ZXIsIGZvciBleGFtcGxlIC4uLgombHQ7dHhw OmNiZV9mcm9udGF1dGhfbG9naW4gaW52aXRlPSJTYXkgaGVsbG8gISIgdGFnX2ludml0ZT0i c3BhbiIgLyZndDsKPC9jb2RlPjwvcHJlPgoKPGgzIGlkPSJzZXR0aW5nLWxhYmVscyI+U2V0 dGluZyBidXR0b24gYW5kIGxpbmsgbGFiZWxzIGdsb2JhbGx5IGZvciB0aGUgd2hvbGUgcGFn ZTogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xhYmVsIC8mZ3Q7PC9oMz4KCjxwPldvcmtzIHRo ZSBzYW1lIHdheSA8YSBocmVmPSIjYXV0b21hdGljLXJlZGlyZWN0Ij5hcyBhYm92ZTwvYT4g dG9vOjwvcD4KPHA+PHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfbGFiZWwgZm9y PSIuLi4iIHZhbHVlPSIuLi4iIC8mZ3Q7PC9jb2RlPjwvcHJlPjwvcD4KPHA+Q29tYmluYXRp b25zOiA8Y29kZT5sb2dpbiwgbG9nb3V0PC9jb2RlPjwvcD4KPHA+Q2FuIGJlIG92ZXJyaWRk ZW4gYnkgYW55IHRhZyB0aGF0IGhhcyA8Y29kZT5sYWJlbDwvY29kZT4gYXMgYXR0cmlidXRl LjwvcD4KCjxoMiBpZD0iaW5kaXZpZHVhbC1lbGVtZW50cyI+VGFrZSBjb250cm9sIG9uIGlu ZGl2aWR1YWwgZWxlbWVudHM8L2gyPgoKPGgzIGlkPSJsb2dpbi1hcmVhIj5Mb2dpbiBhcmVh OiAmbHQ7dHhwOmNiZV9mcm9udGF1dGhfbG9naW4gLyZndDs8L2gzPgoKPHByZT48Y29kZT4m bHQ7dHhwOmNiZV9mcm9udGF1dGhfbG9naW4KICBbIGludml0ZT0iPGI+Q29ubmVjdCB0byB0 ZXh0cGF0dGVybjwvYj4gfCAuLi4iCiAgICB0YWdfaW52aXRlPSI8Yj5ub25lPC9iPiB8IC4u LiIKICAgICgge2xhYmVsPSI8Yj5Mb2dpbjwvYj58Li4uIiBzaG93X3N0YXk9IjxiPjA8L2I+ fDEiIHNob3dfcmVzZXQ9IjB8PGI+MTwvYj4ifSB8IGZvcm09IjxiPm5vbmU8L2I+fGZvcm0g bmFtZSIgKQogICAgdGFnX2Vycm9yPSI8Yj5zcGFuPC9iPiIgY2xhc3NfZXJyb3I9IjxiPmNi ZV9mYV9lcnJvcjwvYj4iCiAgICB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIu Li4iIGJyZWFrY2xhc3M9Ii4uLiIgXSAvJmd0OwoKJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xv Z2luCiAgWyBpbnZpdGU9IjxiPkNvbm5lY3QgdG8gdGV4dHBhdHRlcm48L2I+IHwgLi4uIgog ICAgdGFnX2ludml0ZT0iPGI+bm9uZTwvYj4gfCAuLi4iCiAgICB0YWdfZXJyb3I9IjxiPnNw YW48L2I+IiBjbGFzc19lcnJvcj0iPGI+Y2JlX2ZhX2Vycm9yPC9iPiIKICAgIHdyYXB0YWc9 Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIiBdJmd0Owog ICBmb3JtIGVsZW1lbnRzCiZsdDsvdHhwOmNiZV9mcm9udGF1dGhfbG9naW4mZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+SWYgbG9naW4gZmFpbHMsIGEgYmFzaWMgbWVzc2FnZSB3aWxsIGFwcGVh ciBqdXN0IGJlZm9yZSB0aGUgbG9naW4gZm9ybS4gWW91IGNhbiBjdXN0b21pc2UgaXRzIHdy YXBwaW5nIHRhZyBhbmQgY2xhc3MuPC9wPgoKPHAgaWQ9ImZvcm0tZWxlbWVudHMiID5XaGVy ZSA8Y29kZT5mb3JtIGVsZW1lbnRzPC9jb2RlPiBhcmU6PC9wPgo8cHJlPjxjb2RlPiZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9sb2duYW1lIFtsYWJlbD0iPGI+TmFtZTwvYj58Li4uIiB3cmFw dGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4uLiJdIC8m Z3Q7CiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9wYXNzd29yZCBbbGFiZWw9IjxiPlBhc3N3b3Jk PC9iPnwuLi4iIHdyYXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtj bGFzcz0iLi4uIl0gLyZndDsKJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3N0YXkgW2xhYmVsPSI8 Yj5TdGF5IGNvbm5lY3RlZCB3aXRoIHRoaXMgYnJvd3NlcjwvYj58Li4uIiB3cmFwdGFnPSIu Li4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4uLiJdIC8mZ3Q7CiZs dDt0eHA6Y2JlX2Zyb250YXV0aF9yZXNldCBbbGFiZWw9IjxiPlBhc3N3b3JkIGZvcmdvdHRl biA/PC9iPnwuLi4iIHdyYXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJl YWtjbGFzcz0iLi4uIl0gLyZndDsKJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3N1Ym1pdCBbbGFi ZWw9IjxiPkxvZ2luPC9iPnwuLi4iIHdyYXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9 Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIl0gLyZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9Imxv Z291dC1hcmVhIj5Mb2dvdXQgYXJlYTogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ291dCAv Jmd0OzwvaDM+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dvdXQKICBb IGludml0ZT0iPGI+bm9uZTwvYj58Li4uIgogICAgdGFnX2ludml0ZT0iPGI+bm9uZTwvYj58 Li4uIgogICAgKCB7bGFiZWw9IjxiPkxvZ291dDwvYj58Li4uIiB0eXBlPSI8Yj5idXR0b248 L2I+fGxpbmsiIHNob3dfY2hhbmdlPSIwfDxiPjE8L2I+fSB8IGZvcm09IjxiPm5vbmU8L2I+ fGZvcm0gbmFtZSIpCiAgICB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4i IGJyZWFrY2xhc3M9Ii4uLiIgXSAvJmd0OwoKJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ291 dAogIFsgaW52aXRlPSI8Yj5ub25lPC9iPnwuLi4iCiAgICB0YWdfaW52aXRlPSI8Yj5ub25l PC9iPnwuLi4iCiAgICB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJy ZWFrY2xhc3M9Ii4uLiIgXSZndDsKICAgZm9ybSBlbGVtZW50cwombHQ7L3R4cDpjYmVfZnJv bnRhdXRoX2xvZ291dCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5XaGVyZSA8Y29kZT5mb3JtIGVs ZW1lbnRzPC9jb2RlPiBhcmU6PC9wPgo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0 aF9zdWJtaXQgdHlwZT0ibG9nb3V0IiBbbGFiZWw9IjxiPkxvZ291dDwvYj58Li4uIiB3cmFw dGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4uLiJdIC8m Z3Q7CiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9saW5rIGxpbms9ImxvZ291dD0xIiB0YXJnZXQ9 Il9nZXQiIFtsYWJlbD0iLi4uIiB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIu Li4iIGJyZWFrY2xhc3M9Ii4uLiJdIC8mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgyIGlkPSJhZGRp dGlvbmFsLXRhZ3MiPkFkZGl0aW9uYWwgYW5kIHNwZWNpYWwgdGFnczwvaDI+Cgo8aDMgaWQ9 InVzZXItaW5mbyI+Q29ubmVjdGVkIHVzZXIgaW5mb3JtYXRpb246ICZsdDt0eHA6Y2JlX2Zy b250YXV0aF93aG9pcyAvJmd0OzwvaDM+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250 YXV0aF93aG9pcyBbdHlwZT0iWzxiPm5hbWU8L2I+XVssIFJlYWxOYW1lXVssIGVtYWlsXVss IHByaXZzXVssIGxhc3RfYWNjZXNzXSIgZm9ybWF0PSI8Yj5hcyBzZXQgaW4gcHJlZmVyZW5j ZXM8L2I+fHNpbmNlfHJmYzgyMnxpc284NjAxfHczY2R0ZnxzdHJmdGltZSgpIHN0cmluZyB2 YWx1ZSIgd3JhcHRhZz0iLi4uIiBicmVhaz0iLi4uIiBjbGFzcz0iLi4uIiBicmVha2NsYXNz PSIuLi4iXSAvJmd0OzwvY29kZT48L3ByZT4KPHA+PGNvZGU+Zm9ybWF0PC9jb2RlPiBhcHBs aWVzIHRvIDxjb2RlPmxhc3RfYWNjZXNzPC9jb2RlPiBpZiBwcmVzZW50LjwvcD4KCjxoMyBp ZD0icGF0aC1iYWNrZW5kIj5QYXRoIHRvIFRleHRwYXR0ZXJuIGJhY2tlbmQ6ICZsdDt0eHA6 Y2JlX2Zyb250YXV0aF9iYWNrZW5kIC8mZ3Q7PC9oMz4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpj YmVfZnJvbnRhdXRoX2JhY2tlbmQgLyZndDs8L2NvZGU+PC9wcmU+Cgo8cD5SZXR1cm5zIHBh dGggdG8gdGV4dHBhdHRlcm4gcm9vdCAoaW4gbW9zdCBjYXNlcyAvdGV4dHBhdHRlcm4vaW5k ZXgucGhwKS48L3A+Cgo8aDMgaWQ9ImVkaXQtYXJ0aWNsZSI+RGlyZWN0IGJ1dHRvbiBvciBs aW5rIHRvIGVkaXQgY3VycmVudCBhcnRpY2xlICh3cml0ZSBhcnRpY2xlKTwvaDM+Cgo8cD5J biBhbiBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSBvciBlbmNsb3NlZCBpbiA8Y29kZT4mbHQ7 dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsgJmx0Oy90eHA6aWZfaW5kaXZpZHVhbF9h cnRpY2xlJmd0OzwvY29kZT46PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1 dGhfaWZfY29ubmVjdGVkJmd0OwogICAgJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2VkaXRfYXJ0 aWNsZSBsYWJlbD0iPGI+ZWRpdDwvYj58Li4uIiAgdHlwZT0iPGI+YnV0dG9uPC9iPnxsaW5r IiB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4u LiIgLyZndDsKJmx0Oy90eHA6Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQmZ3Q7PC9jb2Rl PjwvcHJlPgoKPHA+PHNwYW4gY2xhc3M9ImFjY2VudCI+V2h5IHVzZSBhIGJ1dHRvbiByYXRo ZXIgdGhhbiBhIGxpbmsgPzwvc3Bhbj4gQW5zd2VyOiBhcyBpdCBpcyBlbmNsb3NlZCBpbiBh biBIVE1MIGZvcm0sIGl0IGFsbG93cyB0byBnbyB0byB0aGUgZWRpdCBwYWdlIHdpdGhvdXQg c2hvd2luZyBwYXJhbWV0ZXJzIGluIHRoZSBVUkwuPC9wPgoKPGgzIGlkPSJsaW5rLWdlbmVy YXRpb24iPkxpbmsgZ2VuZXJhdGlvbjogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xpbmsgLyZn dDs8L2gzPgoKPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfbGluayBsYWJlbD0i Li4uIiBsaW5rPSIuLi4iIFt0YXJnZXQ9IjxiPl9zZWxmPC9iPnxfYmxhbmt8X2dldCIgd3Jh cHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iXSAv Jmd0OzwvY29kZT48L3ByZT4KCjxwPjxjb2RlPmNsYXNzPC9jb2RlPiBhcHBsaWVzIHRvIHRo ZSBhbmNob3IgaWYgdGhlcmUgaXMgbm8gPGNvZGU+d3JhcHRhZzwvY29kZT4gc3VwcGxpZWQu PC9wPgo8cD48Y29kZT5fZ2V0PC9jb2RlPiB3aWxsIGFkZCA8Y29kZT5saW5rPC9jb2RlPiB0 byB0aGUgY3VycmVudCBVUkwsIGZvciBleGFtcGxlOjwvcD4KPHA+VVJMIDogaHR0cDovL3d3 dy5leGFtcGxlLmNvbS9wYWdlCjxiciAvPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9s aW5rIGxhYmVsPSJMb2dvdXQiIGxpbms9ImxvZ291dD0xIiB0YXJnZXQ9Il9nZXQiIC8mZ3Q7 PC9jb2RlPgo8YnIgLz5VUkwgUmVzdWx0IDogaHR0cDovL3d3dy5leGFtcGxlLmNvbS9wYWdl P2xvZ291dD0xPC9wPgoKPGgyIGlkPSJjYWxsYmFja3MiPkNhbGxiYWNrczwvaDI+CjxwPlRo ZXkgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gaG9vayBjYmVfZnJvbnRhdXRoJ3MgY29tcGFu aW9uLCA8YSBocmVmPSIvY2JlX21lbWJlcnMiPmNiZV9tZW1iZXJzPC9hPiAoc2VlIGRldGFp bHMgaW4gdGhlIHRhYmxlIGJlbG93KS48L3A+Cjx0YWJsZSBjbGFzcz0ibGlzdCI+CiAgPHRy PiA8dGg+RXZlbnQ8L3RoPiA8dGg+U3RlcDwvdGg+IDx0aD5XaGF0IGl0IGlzPC90aD4gPC90 cj4KICA8dHI+IDx0ZD48Y29kZT5jYmVmcm9udGF1dGgucmVzZXRfcGFzc3dvcmQ8L2NvZGU+ PC90ZD4gPHRkPjxjb2RlPmNiZV9mYV9iZWZvcmVfbG9naW48L2NvZGU+PC90ZD4gPHRkPlRy aWdnZXJlZCBiZWZvcmUgc2hvd2luZyBsb2dpbiBmb3JtLCB3aGVuIHJlc2V0dGluZyBwYXNz d29yZCBpcyBpbiBwcm9ncmVzcy48YnIgLz5JZiBjYmVfbWVtYmVycyBpcyBpbnN0YWxsZWQs IGRpc3BsYXlzIGhlcmUgdGhlICJyZXNldCBwYXNzd29yZCIgZm9ybSwgb3IgcGVyZm9ybXMg dGhlIGFjdHVhbCByZXNldCBpZiB0aGUgZm9ybSBpcyBzdWNjZXNzZnVsbHkgZmlsbGVkIGlu LjwvdGQ+IDwvdHI+CiAgPHRyPiA8dGQ+PGNvZGU+Y2JlZnJvbnRhdXRoLnJlc2V0X3Bhc3N3 b3JkPC9jb2RlPjwvdGQ+IDx0ZD48Y29kZT5jYmVfZmFfYWZ0ZXJfbG9naW48L2NvZGU+PC90 ZD4gPHRkPlRyaWdnZXJlZCBhZnRlciBzaG93aW5nIGxvZ2luIGZvcm0uPGJyIC8+SWYgY2Jl X21lbWJlcnMgaXMgaW5zdGFsbGVkLCBkaXNwbGF5cyBhIGxpbmsgdG8gdGhlICJyZXNldCBw YXNzd29yZCIgZm9ybS48L3RkPiA8L3RyPgogIDx0cj4gPHRkPjxjb2RlPmNiZWZyb250YXV0 aC5jaGFuZ2VfcGFzc3dvcmQ8L2NvZGU+PC90ZD4gPHRkPjxjb2RlPmNiZV9mYV9iZWZvcmVf bG9nb3V0PC9jb2RlPjwvdGQ+IDx0ZD5UcmlnZ2VyZWQgYmVmb3JlIHNob3dpbmcgbG9nb3V0 IGZvcm0sIHdoZW4gY2hhbmdpbmcgcGFzc3dvcmQgaXMgaW4gcHJvZ3Jlc3MuPGJyIC8+SWYg Y2JlX21lbWJlcnMgaXMgaW5zdGFsbGVkLCBkaXNwbGF5cyB0aGUgImNoYW5nZSBwYXNzd29y ZCIgZm9ybSwgb3IgcGVyZm9ybXMgdGhlIGFjdHVhbCBjaGFuZ2UgaWYgdGhlIGZvcm0gaXMg c3VjY2Vzc2Z1bGx5IGZpbGxlZCBpbi48L3RkPiA8L3RyPgogIDx0cj4gPHRkPjxjb2RlPmNi ZWZyb250YXV0aC5jaGFuZ2VfcGFzc3dvcmQ8L2NvZGU+PC90ZD4gPHRkPjxjb2RlPmNiZV9m YV9hZnRlcl9sb2dvdXQ8L2NvZGU+PC90ZD4gPHRkPlRyaWdnZXJlZCBhZnRlciBzaG93aW5n IGxvZ291dCBmb3JtLjxiciAvPklmIGNiZV9tZW1iZXJzIGlzIGluc3RhbGxlZCwgZGlzcGxh eXMgYSBsaW5rIHRvIHRoZSAiY2hhbmdlIHBhc3N3b3JkIiBmb3JtLjwvdGQ+IDwvdHI+Cjwv dGFibGU+Cgo8aDIgaWQ9Imhvdy10byI+SG93LXRvOiBpZGVhcyBhbmQgc25pcHBldHM8L2gy PgoKPGgzIGlkPSJib3gtaWRlYXMiPkZvciBsb2dpbi9sb2dvdXQgYm94PC9oMz4KCjxwPlJl cGxhY2UgdGhlIHN0YW5kYXJkIG1lc3NhZ2Ugd2l0aCBzb21ldGhpbmcgZWxzZTo8L3A+Cjxw cmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2JveCZndDtXZWxjb21lICEmbHQ7L3R4 cDpjYmVfZnJvbnRhdXRoX2JveCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5PciBldmVuOjwvcD4K PHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfYm94Jmd0O0dyZWV0aW5ncyAmbHQ7 dHhwOmNiZV9mcm9udGF1dGhfd2hvaXMgdHlwZT0iUmVhbE5hbWUiIC8mZ3Q7ICEmbHQ7L3R4 cDpjYmVfZnJvbnRhdXRoX2JveCZndDs8L2NvZGU+PC9wcmU+Cgo8aDMgaWQ9Imludml0ZXMt aWRlYXMiPkZvciBpbnZpdGVzPC9oMz4KPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1 dGhfaW52aXRlIGZvcj0ibG9nZ2VkIiB2YWx1ZT0nJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3do b2lzIHR5cGU9IlJlYWxOYW1lIiAvJmd0OycgLyZndDs8L2NvZGU+PC9wcmU+CjxwPk5vdGU6 IGlmIGEgdXNlciBpcyBjb25uZWN0ZWQsIHRoZSBsb2dpbiBpbnZpdGUgZG9lc24ndCBzaG93 IGFuZCB0aGUgbG9nb3V0IGludml0ZSB0YWtlcyBpdHMgcGxhY2UuIFNvIHdlIGNvdWxkIHVz ZSA8Y29kZT5mb3I9ImxvZ291dCI8L2NvZGU+IGFzIHdlbGwuPC9wPgoKPGgzIGlkPSJncmVl dGluZy1tZXNzYWdlIj5BIGdyZWV0aW5nIG1lc3NhZ2U8L2gzPgo8cHJlPjxjb2RlPkdyZWV0 aW5ncyAmbHQ7dHhwOmNiZV9mcm9udGF1dGhfaWZfY29ubmVjdGVkJmd0OyZsdDt0eHA6Y2Jl X2Zyb250YXV0aF93aG9pcyB0eXBlPSJSZWFsTmFtZSIgLyZndDsmbHQ7dHhwOmVsc2UgLyZn dDtkZWFyIFVzZXImbHQ7L3R4cDpjYmVfZnJvbnRhdXRoX2lmX2Nvbm5lY3RlZCZndDsgITwv Y29kZT48L3ByZT4KCjxoMiBpZD0iYWR2YW5jZWQtdXNhZ2UiPkFkdmFuY2VkIHVzYWdlPC9o Mj4KCjxwIGNsYXNzPSJyZWFkbWUiPkFzIHByZXZpb3VzIHRhZ3Mgc2hvdWxkIGNvdmVyIG1h am9yaXR5J3MgbmVlZHMsIHlvdSBkb24ndCBoYXZlIHRvIHJlYWQgdGhpcyBzZWN0aW9uIGlm IHlvdSBhbHJlYWR5IGFjaGlldmVkIHdoYXQgeW91IHdhbnRlZCB0by48L3A+Cgo8cD5UaGlz IGlzIHRoZSBwcm9ncmFtbWVyJ3MgY29ybmVyOiBpdCBkZXNjcmliZXMgYXR0cmlidXRlcyBm b3IgdGhlIG1haW4gZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHB1 YmxpYyB0YWcgZGlzY3Vzc2VkIGFib3ZlLjwvcD4KCjxwPkhlcmUgYXJlIHRoZSBwYXJhbWV0 ZXJzIGZvciB0aGUgbWFpbiBmdW5jdGlvbjo8L3A+CjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVf ZnJvbnRhdXRoJmd0OwogIFdoYXQgdG8gZG8vZGlzcGxheSBpZiBjb25uZWN0ZWQKJmx0O3R4 cDplbHNlIC8mZ3Q7CiAgV2hhdCB0byBkby9kaXNwbGF5IGlmIG5vdCBjb25uZWN0ZWQKJmx0 Oy90eHA6Y2JlX2Zyb250YXV0aCZndDs8L2NvZGU+PC9wcmU+Cgo8cD5mb3JtICgnJykgb3Ig dGhpbmcgPSB3aGF0IHRvIGRpc3BsYXkgaWYgbG9nZ2VkIGluCjxiciAvPnRhZ19pbnZpdGUg KCcnKSA9IEhUTUwgdGFnIGVuY2xvc2luZyB0aGUgbGFiZWwsIHdpdGhvdXQgYnJhY2tldHMK PGJyIC8+CjxiciAvPnNob3dfbG9naW4gKDEpID0gd2hldGhlciB0byBkaXNwbGF5IG9yIG5v dCBhIGxvZ2luIGZvcm0sIGFwcGVhcnMgb25seSBpZiBub3QgbG9nZ2VkIGluCjxiciAvPi0g bG9naW5faW52aXRlICgnbG9naW5fdG9fdGV4dHBhdHRlcm4nKSA9IGludml0ZSB0byBsb2dp bgo8YnIgLz4tIGxvZ2luX2Zvcm0gKCcnKSA9IGZvcm0gdG8gYnVpbGQgeW91ciBvd24gSFRN TCBsb2dpbiBmb3JtIHdpdGggdHhwOmNiZV9mcm9udGF1dGhfbG9naW4sIG9yIHR4cDpjYmVf ZnJvbnRhdXRoX2xvZ25hbWUsIGNiZV9mcm9udGF1dGhfcGFzc3dvcmQsIGNiZV9mcm9udGF1 dGhfc3RheSwgY2JlX2Zyb250YXV0aF9yZXNldCwgY2JlX2Zyb250YXV0aF9zdWJtaXQuIElm IG5vdCB1c2VkLCBhIGRlZmF1bHQgSFRNTCBmb3JtIGlzIGRpc3BsYXllZAo8YnIgLz4tIGxv Z2luX2xhYmVsICgnbG9nX2luX2J1dHRvbicpID0gbGFiZWwgZm9yIHRoZSBsb2dpbiBmb3Jt CjxiciAvPi0gbG9naW5fd2l0aCAoYXV0bykgPSB3aGV0aGVyIHRvIHVzZSB1c2VybmFtZSwg b3IgZW1haWwsIG9yIGF1dG8gZGV0ZWN0aW9uIGFzIHVzZXIgbG9nb24KPGJyIC8+LSBsb2dp bl9yZWRpciAoJycpID0gZ28gaW1tZWRpYXRlbHkgdG8gcGF0aCBhZnRlciBzdWNjZXNzZnVs IGxvZ2luCjxiciAvPi0gc2hvd19zdGF5ICgwKSA9IHVzZWQgaW4gdGhlIGdlbmVyaWMgbG9n aW4gZm9ybSwgd2hldGhlciB0byBkaXNwbGF5IG9yIG5vdCBhIGNoZWNrYm94IHRvIHN0YXkg bG9nZ2VkIGluCjxiciAvPi0gc2hvd19yZXNldCAoMSkgPSB1c2VkIGluIHRoZSBnZW5lcmlj IGxvZ2luIGZvcm0sIHdoZXRoZXIgdG8gZGlzcGxheSBvciBub3QgYSBsaW5rIHRvIHJlc2V0 IHBhc3N3b3JkCjxiciAvPgo8YnIgLz5zaG93X2xvZ291dCAoMSkgPSB3aGV0aGVyIHRvIGRp c3BsYXkgb3Igbm90IGEgZGVmYXVsdCBidXR0b24gdG8gbG9nIG91dCwgYXBwZWFycyBvbmx5 IGlmIGxvZ2dlZCBpbgo8YnIgLz4tIGxvZ291dF9pbnZpdGUgKCcnKSA9IGludml0ZSB0byBs b2dvdXQKPGJyIC8+LSBsb2dvdXRfZm9ybSAoJycpID0gZm9ybSB0byBidWlsZCB5b3VyIG93 biBIVE1MIGxvZ291dCBmb3JtLCBvciB5b3VyIG93biBsaW5rCjxiciAvPi0gbG9nb3V0X2xh YmVsIChhcyBzZXQgaW4gbGFuZyBwYWNrKSA9IGxhYmVsIGZvciB0aGUgbG9nb3V0IGJ1dHRv bgo8YnIgLz4tIGxvZ291dF90eXBlICgnYnV0dG9uJyksIG90aGVyIHR5cGUgaXMgJ2xpbmsn CjxiciAvPi0gbG9nb3V0X3JlZGlyICgnJykgPSBnbyBpbW1lZGlhdGVseSB0byBwYXRoIGFm dGVyIGxvZ291dAo8YnIgLz4tIHNob3dfY2hhbmdlICgxKSA9IHVzZWQgaW4gdGhlIGdlbmVy aWMgbG9nb3V0IGZvcm0sIHdoZXRoZXIgdG8gZGlzcGxheSBvciBub3QgYSBsaW5rIHRvIGNo YW5nZSBwYXNzd29yZAo8YnIgLz4KPGJyIC8+bGluayAoJycpID0gYSBwYWdlIHRvIGdvIHRv IGlmIGNvbm5lY3RlZAo8YnIgLz4tIGxpbmtsYWJlbCAoJycpID0gdGV4dCBhbmNob3IgZm9y IGxpbmsKPGJyIC8+LSB0YXJnZXQgKF9zZWxmKSA9IF9zZWxmIF9ibGFuayBvciBfZ2V0LCB3 aGV0aGVyIHRvIG9wZW4gdGhlIGxpbmsgaW4gdGhlIHNhbWUgd2luZG93IChvciB0YWIpLCBv ciBpbiBhIG5ldyBvbmUsIG9yIHRvIGdlbmVyYXRlIGFuIFVSTCB3aXRoIGFkZHJlc3MgbGlu ayBhcyBHRVQgcGFyYW1ldGVyLiBXb3JrcyBvbmx5IHdpdGggaHlwZXJsaW5rIChub3QgbG9n aW5fcmVkaXIsIG5vdCBsb2dvdXRfcmVkaXIpCjxiciAvPgo8YnIgLz5DaGVja2luZyB1c2Vy cyBhbmQgcHJpdmlsZWdlcyA6CjxiciAvPi0gbmFtZSAoJycpID0gbGlzdCBvZiBuYW1lcyB0 byBjaGVjawo8YnIgLz4tIGxldmVsICgnJykgPSBsaXN0IG9mIHByaXZpbGVnZSBsZXZlbHMg dG8gY2hlY2sKPGJyIC8+CjxiciAvPlByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMgOgo8YnIg Lz4tIHdyYXB0YWcgKCcnKSwgY2xhc3MgKCcnKQo8YnIgLz4KPGJyIC8+aW5pdCA9IFNwZWNp YWwgYXR0cmlidXRlIGZvciBpbnRlcm5hbCB1c2Ugb25seSBhbmQgZG9jdW1lbnRlZCBvbmx5 IGZvciBwZW9wbGUgd2hvIHdhbnQgdG8ga25vdyA6KQogPGJyIC8+IFdoZXRoZXIgdG8gc2V0 ICgnMScpIG9yIGdldCAoJzAnKSBnbG9iYWwgc2V0dGluZ3MgZm9yIHJlZGlyZWN0aW9ucyAo bG9naW5fcmVkaXIsIGxvZ291dF9yZWRpciksIGludml0ZXMgKGxvZ2luX2ludml0ZSwgbG9n b3V0X2ludml0ZSwgdGFnX2ludml0ZSksIGxhYmVscyAobG9naW5fbGFiZWwsIGxvZ291dF9s YWJlbCksIGxvZ2luIHR5cGUgKGxvZ2luX3dpdGgpIG9yIHVzZXIncyBpbmZvcm1hdGlvbnMu IEltbWVkaWF0ZWx5IHJldHVybnMgYW5kIGRvZXNuJ3QgZGlzcGxheSBhbnl0aGluZy4KIDxi ciAvPiB2YWx1ZSA9IHNldHRpbmcgdG8gc2V0IG9yIGdldCwgc3RyaW5nIG9yIGFycmF5Lgo8 L3A+Cgo8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KPHVsPgogIDxsaT4yMCBO b3YgMTUgLSB2MC45LjcgLSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29t L3ZpZXd0b3BpYy5waHA/cGlkPTI5NjcyMCNwMjk2NzIwIj5GaXggdGhpczwvYT48L2xpPgog IDxsaT4wNyBBcHIgMTQgLSB2MC45LjYgLSBFcnJvciB3aGVuIHBhc3NpbmcgcHJlc2VudGF0 aW9uYWwgYXR0cmlidXRlcyBmcm9tIGNiZV9mcm9udGF1dGhfZWRpdF9hcnRpY2xlIHRvIGNi ZV9mcm9udGF1dGhfbGluazwvbGk+CiAgPGxpPjA0IEFwciAxNCAtIHYwLjkuNSAtIE1pc3Np bmcgbGFzdCBhY2Nlc3Mgc3RvcmFnZTwvbGk+CiAgPGxpPjI3IE1hciAxMyAtIHYwLjkuNAog IDxiciAvPk1pc3NpbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNiZV9mcm9udGF1dGhfd2hvaXMK ICA8YnIgLz5FcnJvciBtZXNzYWdlIHdoZW4gbG9naW4gZmFpbHMKICA8YnIgLz5Mb2NhbCBs YW5ndWFnZSBzdHJpbmdzCiAgPC9saT4KICA8bGk+MjIgTWFyIDEyIC0gdjAuOS4zIC0gRG9j IHR5cG8gZm9yIGNiZV9mcm9udGF1dGhfaW52aXRlPC9saT4KICA8bGk+Pz8gPz8/IDEyIC0g djAuOS4yIC0gPz88L2xpPgogIDxsaT4yMiBNYXIgMTIgLSB2MC45LjEgLSBmaXhlZCBtaXNz aW5nIGF0dHJpYnV0ZXMgKHNob3dfbG9naW4gYW5kIHNob3dfY2hhbmdlKSBmb3IgY2JlX2Zy b250YXV0aF9ib3g8L2xpPgogIDxsaT4yMSBNYXIgMTIgLSB2IDAuOSAtIENhbGxiYWNrIGhv b2tzOiBhYmlsaXR5IHRvIGFzayBmb3IgcGFzc3dvcmQgcmVzZXQgaWYgbm90IGNvbm5lY3Rl ZCwgZm9yIHBhc3N3b3JkIGNoYW5nZSBpZiBjb25uZWN0ZWQ8L2xpPgogIDxsaT4xMCBKYW4g MTIgLSB2IDAuOCAtIEludHJvZHVjZXMgJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0 aCAvJmd0OywgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9w aWMucGhwP3BpZD0yNTY2MzIjcDI1NjYzMiI+aWRlYSBjb21lcyBmcm9tIGFub3RoZXIgZGVt YW5kIGluIHRoZSB0ZXh0cGF0dGVybiBmb3J1bTwvYT4uCiAgPC9saT4KICA8bGk+MDUgSmFu IDEyIC0gdjAuNy4xIC0gRG9jdW1lbnRhdGlvbiBhZGRlbmRhPC9saT4KICA8bGk+MDYgQXVn IDExIC0gdjAuNy1iZXRhCiAgPGJyIC8+ICogSW50cm9kdWNlcyAmbHQ7dHhwOmNiZV9mcm9u dGF1dGhfZWRpdF9hcnRpY2xlIC8mZ3QKICA8YnIgLz4gKiBDU1JGIHByb3RlY3Rpb24gcmVh ZHkKICA8YnIgLz4gKiBEb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cwogIDwvbGk+CiAgPGxp PjI5IEp1bCAxMSAtIHYwLjYtYmV0YQogIDxiciAvPiAqIE9wdGltaXphdGlvbnMgdG8gYXZv aWQgbXVsdGlwbGUgY2FsbHMgdG8gZGF0YWJhc2Ugd2hlbiByZXRyaWV2aW5nIHVzZXIncyBp bmZvcm1hdGlvbnMKICA8YnIgLz4gKiBBZGRlZCBuYW1lIGFuZCBwcml2aWxlZ2UgY29udHJv bHMgw6AgbGEgPGEgaHJlZj0iaHR0cDovL3Zhbm1lbGljay5jb20vdHhwLyI+Jmx0O3R4cDpy dm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvYT4KICA8YnIgLz4gKiBNaW5vciBjaGFuZ2VzIHRv IGRvY3VtZW50YXRpb24KICA8L2xpPgogIDxsaT4yNyBKdWwgMTEgLSB2MC41LWJldGEtIEZp cnN0IHB1YmxpYyBiZXRhIHJlbGVhc2U8L2xpPgogIDxsaT4yNiBKdWwgMTEgLSB2MC40LWJl dGEtIFJlc3RyaWN0ZWQgYmV0YSByZWxlYXNlPC9saT4KICA8bGk+MjQgSnVsIDExIC0gdjAu My1kZXYgLSBSZXN0cmljdGVkIGRldmVsb3BtZW50IHJlbGVhc2U8L2xpPgogIDxsaT4yMyBK dWwgMTEgLSB2MC4yLWRldiAtIFJlc3RyaWN0ZWQgZGV2ZWxvcG1lbnQgcmVsZWFzZTwvbGk+ CiAgPGxpPjIyIEp1bCAxMSAtIHYwLjEtZGV2IC0gUmVzdHJpY3RlZCBkZXZlbG9wbWVudCBy ZWxlYXNlPC9saT4KPC91bD4KPC9kaXY+CjwhLS0gKioqIEJFR0lOIFBMVUdJTiBDU1MgKioq IC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojY2JlLXBsdWdpbi1oZWxwIC5yZWFkbWUg ewogIGNvbG9yOiByZWQ7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KI2NiZS1wbHVnaW4taGVs cCAuYWNjZW50IHsKICBmb250LXdlaWdodDogYm9sZDsKfQojY2JlLXBsdWdpbi1oZWxwIC5s aXN0IHRoewoJdGV4dC1hbGlnbjpsZWZ0OwoJY29sb3I6I2ZmZjsKCWJhY2tncm91bmQ6IzU1 NTsKCXBhZGRpbmc6NnB4IDE2cHggNnB4IDRweDsKCWJvcmRlci1yaWdodDoxcHggc29saWQg Izk5OTsKCWZvbnQtd2VpZ2h0Om5vcm1hbDsKfQojY2JlLXBsdWdpbi1oZWxwIC5saXN0IHRo IGF7Cgljb2xvcjojZmZmOwoJZGlzcGxheTpibG9jazsKfQojY2JlLXBsdWdpbi1oZWxwIC5s aXN0IHRoIGgyewoJbWFyZ2luOjA7Cglmb250LXNpemU6MTFweDsKfQojY2JlLXBsdWdpbi1o ZWxwIC5saXN0IHRkewoJcGFkZGluZzo2cHggNHB4Owp9Cjwvc3R5bGU+CjwhLS0gKioqIEVO RCBQTFVHSU4gQ1NTICoqKiAtLT4KIjtzOjM6Im1kNSI7czozMjoiMDI3YWMwYjIzYTIxNzcx YWY4OWYwNzE0YzhmMjM0NTYiO30=