# Name: cbe_frontauth v0.9.4 # Type: Client 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 - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEzOiJjYmVfZnJvbnRhdXRoIjtzOjY6ImF1dGhvciI7czox MzoiQ2xhaXJlIEJyaW9uZSI7czoxMDoiYXV0aG9yX3VyaSI7czoyODoiaHR0cDovL3d3dy5j bGFpcmVicmlvbmUuY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuOS40IjtzOjExOiJkZXNj cmlwdGlvbiI7czo0MDoiTWFuYWdlIGJhY2tlbmQgY29ubmVjdGlvbnMgZnJvbSBmcm9udGVu ZCI7czo0OiJoZWxwIjtzOjI0NDczOiI8ZGl2IGlkPSJjYmUtcGx1Z2luLWhlbHAiPg0KPGgx PmNiZV9mcm9udGF1dGg8L2gxPg0KDQo8cD5UaGlzIGNsaWVudC1zaWRlIHBsdWdpbiBsZXRz IHlvdXIgdXNlcnMgKG9yIHlvdSkgbWFuYWdlIGJhY2tlbmQgY29ubmVjdGlvbiBmcm9tIGZy b250ZW5kLCBpLmUuIGNvbm5lY3QgYW5kIGRpc2Nvbm5lY3QgYXMgdGhleSAoeW91KSB3b3Vs ZCBkbyBmcm9tIGJhY2tlbmQuDQo8YnIgLz5Zb3UgY2FuIHRodXMgbWFrZSB0aGluZ3Mgdmlz aWJsZSBhbmQgb3BlbiBhY3Rpb25zIGZvciBjb25uZWN0ZWQgdXNlcnMgb25seS48L3A+DQo8 cD5EZXZlbG9wZWQgYW5kIHRlc3RlZCB3aXRoIFRleHRwYXR0ZXJuIDQuNC4xLCB0aGVuIDQu NS1iZXRhLjwvcD4NCjxwIGNsYXNzPSJyZWFkbWUiPlBsZWFzZSByZWFkIHRoZSBmaXJzdCA8 YSBocmVmPSIjcXVpY2stc3RhcnQiPlF1aWNrIHN0YXJ0PC9hPiBwYXJhZ3JhcGggdG8gYXZv aWQgKGFzIG11Y2ggYXMgcG9zc2libGUpIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLjwvcD4NCjxw PkEgZmV3IGV4YW1wbGVzIChpbiBmcmVuY2gpIGNhbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJl Zj0iaHR0cDovL3d3dy5jbGFpcmVicmlvbmUuY29tL2RlbW8tY2JlX2Zyb250YXV0aCI+ZGVt b25zdHJhdGlvbiBwYWdlPC9hPi48L3A+DQoNCjxoMj5UYWJsZSBvZiBjb250ZW50czwvaDI+ DQo8dWw+DQogIDxsaT48YSBocmVmPSIjZmVhdHVyZXMiPkZlYXR1cmVzPC9hPjwvbGk+DQog IDxsaT48YSBocmVmPSIjZGwtaW5zdGFsbC1zdXBwIj5Eb3dubG9hZCwgaW5zdGFsbGF0aW9u LCBzdXBwb3J0PC9hPjwvbGk+DQogIDxsaT48YSBocmVmPSIjdGFncy1saXN0Ij5UYWdzIGxp c3Q8L2E+PC9saT4NCiAgPGxpPjxhIGhyZWY9IiNub3RhdGlvbnMiPk5vdGF0aW9uczwvYT48 L2xpPg0KICA8bGk+PGEgaHJlZj0iI3F1aWNrLXN0YXJ0Ij5RdWljayBzdGFydDwvYT48L2xp Pg0KICA8bGk+PGEgaHJlZj0iI2luZGl2aWR1YWwtZWxlbWVudHMiPlRha2UgY29udHJvbCBv biBpbmRpdmlkdWFsIGVsZW1lbnRzPC9hPjwvbGk+DQogIDxsaT48YSBocmVmPSIjYWRkaXRp b25hbC10YWdzIj5BZGRpdGlvbmFsIGFuZCBzcGVjaWFsIHRhZ3M8L2E+PC9saT4NCiAgPGxp PjxhIGhyZWY9IiNjYWxsYmFja3MiPkNhbGxiYWNrczwvYT48L2xpPg0KICA8bGk+PGEgaHJl Zj0iI2hvdy10byI+SG93LXRvOiBpZGVhcyBhbmQgc25pcHBldHM8L2E+PC9saT4NCiAgPGxp PjxhIGhyZWY9IiNhZHZhbmNlZC11c2FnZSI+QWR2YW5jZWQgdXNhZ2U8L2E+PC9saT4NCiAg PGxpPjxhIGhyZWY9IiNjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvYT48L2xpPg0KPC91bD4NCg0K PGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVyZXM8L2gyPg0KDQo8dWw+DQogIDxsaT5hdXRvbWF0 aWNhbGx5IGdlbmVyYXRlIGEgPGEgaHJlZj0iI2xvZ2luLWxvZ291dC1ib3giPmxvZ2luL2xv Z291dCBib3g8L2E+Li4uPC9saT4NCiAgPGxpPi4uLiBvciBpbmRlcGVuZGVudCA8YSBocmVm PSIjbG9naW4tYXJlYSI+bG9naW48L2E+IG9yIDxhIGhyZWY9IiNsb2dvdXQtYXJlYSI+bG9n b3V0PC9hPiBmb3JtcyBhbmQgbGlua3M8L2xpPg0KICA8bGk+Y2hvb3NlIGlmIHRoIHVzZXIg bXVzdCBjb25uZWN0IHdpdGggaGlzL2hlciA8YSBocmVmPSIjbG9naW4tbWV0aG9kIj51c2Vy bmFtZSwgb3IgZW1haWwgYWRkcmVzcywgb3Igb25lIG9mIGJvdGg8L2E+PC9saT4NCiAgPGxp PnNob3cvaGlkZSBjb250ZW50IGRlcGVuZGluZyBvbiB3aGV0aGVyIGEgdXNlciBpcyBjb25u ZWN0ZWQgb3Igbm90IChzZWUgPGEgaHJlZj0iI3Byb3RlY3QtcGFydHMiPnByb3RlY3QgcGFy dHMgb2YgYSBwYWdlPC9hPik8L2xpPg0KICA8bGk+c2V0IDxhIGhyZWY9IiNhdXRvbWF0aWMt cmVkaXJlY3QiPmF1dG9tYXRpYyByZWRpcmVjdGlvbnM8L2E+IGFmdGVyIGxvZ2luIGFuZC9v ciBsb2dvdXQ8L2xpPg0KICA8bGk+b3B0aW9uYWw6IGRlZmluZSB5b3VyIG93biBkZWZhdWx0 IHZhbHVlcyBmb3IgPGEgaHJlZj0iI3NldHRpbmctaW52aXRlcyI+bG9naW4vbG9nb3V0IGlu dml0ZXM8L2E+IGFuZCA8YSBocmVmPSIjc2V0dGluZy1sYWJlbHMiPmJ1dHRvbi9saW5rIGxh YmVsczwvYT4sIDxhIGhyZWY9IiNsb2dpbi1tZXRob2QiPmRlZmluZSBsb2dpbiBtZXRob2Q8 L2E+PC9saT4NCiAgPGxpPm92ZXJyaWRlIHRoZXNlIHZhbHVlcyBhbnl3aGVyZSBpbiB0aGUg cGFnZSBpZiB5b3UgbmVlZCB0bzwvbGk+DQogIDxsaT5hbHNvIHByb3ZpZGVzIDxhIGhyZWY9 IiNhZGRpdGlvbmFsLXRhZ3MiPmFkZGl0aW9uYWwgdGFnczwvYT4gdG8gZWFzZSBzY3JpcHRl cidzIGxpZmU8L2xpPg0KICA8bGk+YW5kIDxhIGhyZWY9IiNjYWxsYmFja3MiPmhvb2tzIGZv ciBjYWxsYmFjayBmdW5jdGlvbnM8L2E+IHByaW1hcmlseSBpbiBvcmRlciB0byByZXNldCBv ciBjaGFuZ2UgdXNlcidzIHBhc3N3b3JkPC9saT4NCjwvdWw+DQoNCjxoMiBpZD0iZGwtaW5z dGFsbC1zdXBwIj5Eb3dubG9hZCwgaW5zdGFsbGF0aW9uLCBzdXBwb3J0PC9oMj4NCjxwPkRv d25sb2FkIGZyb20gPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzEy MzQvY2JlX2Zyb250YXV0aCI+dGV4dHBhdHRlcm4gcmVzb3VyY2VzPC9hPiBvciB0aGUgPGEg aHJlZj0iaHR0cDovL3d3dy5jbGFpcmVicmlvbmUuY29tL2NiZV9mcm9udGF1dGgiPnBsdWdp biBwYWdlPC9hPi48L3A+DQo8cD5Db3B5L3Bhc3RlIGluIHRoZSBBZG1pbiA+IFBsdWdpbnMg dGFiIHRvIGluc3RhbGwgb3IgdW5pbnN0YWxsLCBhY3RpdmF0ZSBvciBkZXNhY3RpdmF0ZS48 L3A+DQo8cD5WaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNv bS92aWV3dG9waWMucGhwP2lkPTM2NTUyIj5mb3J1bSB0aHJlYWQ8L2E+IGZvciBzdXBwb3J0 LjwvcD4NCg0KPGgyIGlkPSJ0YWdzLWxpc3QiPlRhZ3MgbGlzdDwvaDI+DQoNCjxwPkFscGhh YmV0aWNhbGx5Og0KPGJyIC8+PGEgaHJlZj0iI2FkdmFuY2VkLXVzYWdlIj5jYmVfZnJvbnRh dXRoPC9hPg0KPGJyIC8+PGEgaHJlZj0iI3BhdGgtYmFja2VuZCI+Y2JlX2Zyb250YXV0aF9i YWNrZW5kPC9hPg0KPGJyIC8+PGEgaHJlZj0iI2xvZ2luLWxvZ291dC1ib3giPmNiZV9mcm9u dGF1dGhfYm94PC9hPg0KPGJyIC8+PGEgaHJlZj0iI2VkaXQtYXJ0aWNsZSI+Y2JlX2Zyb250 YXV0aF9lZGl0X2FydGljbGU8L2E+DQo8YnIgLz48YSBocmVmPSIjcHJvdGVjdC1wYXJ0cyI+ Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQ8L2E+DQo8YnIgLz48YSBocmVmPSIjc2V0dGlu Zy1pbnZpdGVzIj5jYmVfZnJvbnRhdXRoX2ludml0ZTwvYT4NCjxiciAvPjxhIGhyZWY9IiNz ZXR0aW5nLWxhYmVscyI+Y2JlX2Zyb250YXV0aF9sYWJlbDwvYT4NCjxiciAvPjxhIGhyZWY9 IiNsaW5rLWdlbmVyYXRpb24iPmNiZV9mcm9udGF1dGhfbGluazwvYT4NCjxiciAvPjxhIGhy ZWY9IiNwcm90ZWN0LXBhcnRzIj5jYmVfZnJvbnRhdXRoX2lmX2xvZ2dlZDwvYT4NCjxiciAv PjxhIGhyZWY9IiNsb2dpbi1hcmVhIj5jYmVfZnJvbnRhdXRoX2xvZ2luPC9hPg0KPGJyIC8+ PGEgaHJlZj0iI2xvZ2luLW1ldGhvZCI+Y2JlX2Zyb250YXV0aF9sb2dpbndpdGg8L2E+DQo8 YnIgLz48YSBocmVmPSIjZm9ybS1lbGVtZW50cyI+Y2JlX2Zyb250YXV0aF9sb2duYW1lPC9h Pg0KPGJyIC8+PGEgaHJlZj0iI2xvZ291dC1hcmVhIj5jYmVfZnJvbnRhdXRoX2xvZ291dDwv YT4NCjxiciAvPjxhIGhyZWY9IiNmb3JtLWVsZW1lbnRzIj5jYmVfZnJvbnRhdXRoX3Bhc3N3 b3JkPC9hPg0KPGJyIC8+PGEgaHJlZj0iI3Byb3RlY3QtcGFydHMiPmNiZV9mcm9udGF1dGhf cHJvdGVjdDwvYT4NCjxiciAvPjxhIGhyZWY9IiNhdXRvbWF0aWMtcmVkaXJlY3QiPmNiZV9m cm9udGF1dGhfcmVkaXJlY3Q8L2E+DQo8YnIgLz48YSBocmVmPSIjZm9ybS1lbGVtZW50cyI+ Y2JlX2Zyb250YXV0aF9yZXNldDwvYT4NCjxiciAvPjxhIGhyZWY9IiNmb3JtLWVsZW1lbnRz Ij5jYmVfZnJvbnRhdXRoX3N0YXk8L2E+DQo8YnIgLz48YSBocmVmPSIjZm9ybS1lbGVtZW50 cyI+Y2JlX2Zyb250YXV0aF9zdWJtaXQ8L2E+DQo8YnIgLz48YSBocmVmPSIjdXNlci1pbmZv Ij5jYmVfZnJvbnRhdXRoX3dob2lzPC9hPg0KPC9wPg0KDQo8aDIgaWQ9Im5vdGF0aW9ucyI+ Tm90YXRpb25zPC9oMj4NCg0KPHA+PGNvZGU+VGFncyBhbmQgZXhhbXBsZXMgYXJlIHByZXNl bnRlZCB3aXRoIHRoaXMgdHlwb2dyYXBoeTwvY29kZT4gKGZpeGVkIHdpZHRoKS48L3A+DQo8 cD5Qb3NzaWJsZSB2YWx1ZXMgZm9yIGF0dHJpYnV0ZXMgYXJlIHNlcGFyYXRlZCBieSBhICI8 Y29kZT4gfCA8L2NvZGU+IiAocGlwZSkuPC9wPg0KPHA+PGI+Qm9sZDwvYj4gbWVhbnMgZGVm YXVsdCB2YWx1ZS48L3A+DQo8cD4iPGNvZGU+Li4uPC9jb2RlPiIgKGVsbGlwc2lzKSBpcyB0 byBiZSByZXBsYWNlZCBieSBhbnkgY3VzdG9tIHZhbHVlLCB1c3VhbGx5IGEgc3RyaW5nLjwv cD4NCjxwPkF0dHJpYnV0ZXMgc3Vycm91bmRlZCBieSAiPGNvZGU+WzwvY29kZT4iIGFuZCAi PGNvZGU+XTwvY29kZT4iIChzcXVhcmUgYnJhY2tldHMpIGFyZSBvcHRpb25hbC48L3A+DQoN CjxoMiBpZD0icXVpY2stc3RhcnQiPlF1aWNrIHN0YXJ0PC9oMj4NCg0KPHA+TWVzc2FnZSBz dHJpbmdzIGFyZSBjdXN0b21pc2FibGUgYnkgZWRpdGluZyB0aGVtIGluIHRoZSBmdW5jdGlv biBfY2JlX2ZhX2xhbmcoKS4gV2hlbiBwb3NzaWJsZSwgdGhlaXIgZGVmYXVsdCB2YWx1ZXMg YXJlIHB1bGxlZCBmcm9tIHRoZSBsYW5ndWFnZSB0YWJsZS4gSW4gbW9zdCBjYXNlcywgeW91 IHdvbid0IGhhdmUgdG8gZWRpdCB0aGVtIGFzIHRoZXkgYXJlIGFscmVhZHkgbG9jYWxpc2Vk LjwvcD4NCg0KPHAgY2xhc3M9InJlYWRtZSI+V2hhdCB5b3UgaGF2ZSB0byBrbm93IGFuZCBj YXJlIGFib3V0IDo8L3A+DQo8dWw+DQogIDxsaT5UaGUgbG9naW4vbG9nb3V0IG1lY2hhbmlz bSByZWxpZXMgb24gY29va2llcy4gQSBjb29raWUgaXMgYXR0YWNoZWQgdG8gb25lLCBhbmQg b25seSBvbmUsIHN1YmRvbWFpbi48L2xpPg0KICA8bGk+PGNvZGU+aHR0cDovL2RvbWFpbi50 bGQ8L2NvZGU+IGFuZCA8Y29kZT5odHRwOi8vd3d3LmRvbWFpbi50bGQ8L2NvZGU+IGFyZSA8 Yj5kaWZmZXJlbnQ8L2I+IHN1YmRvbWFpbnMsIGV2ZW4gaWYgeW91IHByZXNlbnQgdGhlIHNh bWUgY29udGVudCB0aHJvdWdoIGJvdGggVVJMcy48L2xpPg0KPC91bD4NCjxwPj0+IFlvdSB3 aWxsIGhhdmUgdG8gY2hvb3NlIHdoaWNoIGJhc2UgVVJMIHlvdSB3YW50IHRvIHVzZSAod2l0 aCBvciB3aXRob3V0IHd3dykgYW5kIHN0aWNrIHRvIGl0IGFsb25nIGFsbCB0aGUgbmF2aWdh dGlvbi4gVGhpcyBpcyBhbHNvIGEgZ29vZCBwcmFjdGljZSB0byBhdm9pZCBkdXBsaWNhdGUg Y29udGVudC48L3A+DQoNCjxwPkhlcmUgaXMgaG93IHRvOjwvcD4NCjxwPjEuIFBsdWdpbiBs b2FkIG9yZGVyOiBhcyBpdCBoYW5kbGVzIHJlZGlyZWN0aW9ucywgaXQgaGFzIHRvIGJlIGxv YWRlZCBiZWZvcmUgYW55IG90aGVyIHBsdWdpbi4gU2V0IGJ5IGRlZmF1bHQgdG8gPGI+NDwv Yj4sIGFkanVzdCBhY2NvcmRpbmcgdG8geW91ciBuZWVkcy48L3A+DQo8cD4yLiBBZG1pbiA+ IFByZWZlcmVuY2VzIDogZ2l2ZSAob3IgdmVyaWZ5KSB5b3VyIHNpdGUgVVJMIGFuZCBzYXZl LjwvcD4NCjxwPjMuIEVkaXQgdGhlIDxjb2RlPi5odGFjY2VzczwvY29kZT4gZmlsZSBsb2Nh dGVkIGF0IHRoZSByb290IG9mIHlvdXIgc2l0ZSwgYW5kIGFwcGVuZCBhcyBjbG9zZXIgYXMg cG9zc2libGUgdG8gPGNvZGU+UmV3cml0ZUVuZ2luZSBPbjwvY29kZT4gKHJlcGxhY2UgPGNv ZGU+ZG9tYWluLnRsZDwvY29kZT4gd2l0aCB5b3VyIGFjdHVhbCBVUkwpOjwvcD4NCg0KPHA+ RUlUSEVSLCB3aXRoIHd3dzwvcD4NCjxwcmU+PGNvZGU+UmV3cml0ZUNvbmQgJXtIVFRQX0hP U1R9ICFed3d3XC5kb21haW5cLnRsZCQgW05DXQ0KUmV3cml0ZVJ1bGUgXiguKikgaHR0cDov L3d3dy5kb21haW4udGxkLyQxIFtRU0EsUj0zMDEsTF08L2NvZGU+PC9wcmU+DQoNCjxwPk9S LCB3aXRob3V0IHd3dzwvcD4NCjxwcmU+PGNvZGU+UmV3cml0ZUNvbmQgJXtIVFRQX0hPU1R9 IF53d3dcLmRvbWFpblwudGxkJCBbTkNdDQpSZXdyaXRlUnVsZSBeKC4qKSBodHRwOi8vZG9t YWluLnRsZC8kMSBbUVNBLFI9MzAxLExdPC9jb2RlPjwvcHJlPg0KDQo8cD48c3BhbiBjbGFz cz0iYWNjZW50Ij5JdCdzIHRpbWUgbm93IHRvIHN0YXJ0IHVzaW5nIHRoZSBwbHVnaW48L3Nw YW4+OiA8YSBocmVmPSIjbG9naW4tbG9nb3V0LWJveCI+YWxsb3cgdXNlcnMgdG8gbG9naW4g YW5kIGxvZ291dDwvYT4sIDxhIGhyZWY9IiNhdXRvbWF0aWMtcmVkaXJlY3QiPnJlZGlyZWN0 aW5nIHRoZW08L2E+IChvciBub3QpIGFmdGVyIGxvZ2luIGFuZC9vciBsb2dvdXQsIDxhIGhy ZWY9IiNwcm90ZWN0LXBhcnRzIj5zZXJ2ZSB0aGVtIHNwZWNpYWwgY29udGVudDwvYT4sIDxh IGhyZWY9IiNpbmRpdmlkdWFsLWVsZW1lbnRzIj50aGUgcmVzdCBpcyB1cCB0byB5b3U8L2E+ LjwvcD4NCg0KPHA+PGNvZGU+d3JhcHRhZzwvY29kZT4sIDxjb2RlPmNsYXNzPC9jb2RlPiwg PGNvZGU+YnJlYWs8L2NvZGU+IGFuZCA8Y29kZT5icmVha2NsYXNzPC9jb2RlPiBhcmUgc3Vw cG9ydGVkIGJ5IGV2ZXJ5IHRhZyBhbmQgYm90aCBkZWZhdWx0IHRvIDxiPnVuc2V0PC9iPi48 L3A+DQoNCjxoMyBpZD0ibG9naW4tbG9nb3V0LWJveCI+TG9naW4vbG9nb3V0IGJveDogJmx0 O3R4cDpjYmVfZnJvbnRhdXRoX2JveCAvJmd0OzwvaDM+DQoNCjxwcmU+PGNvZGU+Jmx0O3R4 cDpjYmVfZnJvbnRhdXRoX2JveA0KICBbIGxvZ2luX2ludml0ZT0iPGI+Q29ubmVjdCB0byB0 ZXh0cGF0dGVybjwvYj4gfCAuLi4iDQogICAgbG9nb3V0X2ludml0ZT0iPGI+bm9uZTwvYj4g fCAuLi4iDQogICAgdGFnX2ludml0ZT0iLi4uIg0KICAgIGxvZ2luX2xhYmVsPSIuLi4iDQog ICAgbG9nb3V0X2xhYmVsPSIuLi4iDQogICAgbG9nb3V0X3R5cGU9IjxiPmJ1dHRvbjwvYj4g fCBsaW5rIg0KICAgIHRhZ19lcnJvcj0iPGI+c3BhbjwvYj4iIGNsYXNzX2Vycm9yPSI8Yj5j YmVfZmFfZXJyb3I8L2I+Ig0KICAgIHdyYXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9 Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIiBdIC8mZ3Q7PC9jb2RlPjwvcHJlPg0KDQo8cD5EaXNw bGF5cw0KPGJyIC8+LSBzaW1wbGUgbG9naW4gZm9ybSBpZiBub3QgY29ubmVjdGVkDQo8YnIg Lz4tICJjb25uZWN0ZWQgYXMge2xvZ2luIG5hbWV9IiBhbmQgYSBsb2dvdXQgYnV0dG9uIG9y IGxpbmsgaWYgY29ubmVjdGVkDQo8L3A+DQoNCjxwPklmIGxvZ2luIGZhaWxzLCBhIGJhc2lj IG1lc3NhZ2Ugd2lsbCBhcHBlYXIganVzdCBiZWZvcmUgdGhlIGxvZ2luIGZvcm0uIFlvdSBj YW4gY3VzdG9taXNlIGl0cyB3cmFwcGluZyB0YWcgYW5kIGNsYXNzLjwvcD4NCg0KPHA+SWYg eW91IGRvbid0IHdhbnQgImNvbm5lY3RlZCBhcyIgbWVzc2FnZSwgdXNlIGFzIGEgY29udGFp bmVyIHRhZyBhbmQgcHV0IGEgYmxhbmsgb3IgPGEgaHJlZj0iI2JveC1pZGVhcyI+YW55dGhp bmcgZWxzZTwvYT4gaW4gYmV0d2Vlbjo8L3A+DQo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zy b250YXV0aF9ib3gmZ3Q7ICZsdDsvdHhwOmNiZV9mcm9udGF1dGhfYm94Jmd0OzwvY29kZT48 L3ByZT4NCg0KPGgzIGlkPSJwcm90ZWN0LXBhcnRzIj5Qcm90ZWN0IHBhcnRzIG9mIGEgcGFn ZTogJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3Byb3RlY3QgLyZndDssICZsdDt0eHA6Y2JlX2Zy b250YXV0aF9pZl9sb2dnZWQgLyZndDsgYW5kICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9pZl9j b25uZWN0ZWQgLyZndDs8L2gzPg0KDQo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0 aF9wcm90ZWN0DQogIFsgbmFtZT0iPGI+bm9uZTwvYj4gfCBjb21tYS1zZXBhcmF0ZWQgdmFs dWVzIg0KICAgIGxldmVsPSI8Yj5ub25lPC9iPiB8IGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMi DQogICAgbGluaz0iPGI+bm9uZTwvYj4gfCB1cmwiDQogICAgbGlua2xhYmVsPSI8Yj5ub25l PC9iPiB8IGFuY2hvciINCiAgICB0YXJnZXQ9IjxiPl9zZWxmPC9iPiB8IF9ibGFuayINCiAg ICB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4u LiIgXSZndDsNCiAgV2hhdCB0byBwcm90ZWN0DQombHQ7dHhwOmVsc2UgLyZndDsNCiAgV2hh dCB0byBkaXNwbGF5IGlmIG5vdCBjb25uZWN0ZWQNCiZsdDsvdHhwOmNiZV9mcm9udGF1dGhf cHJvdGVjdCZndDs8L2NvZGU+PC9wcmU+DQo8cD5TeW5vbnltczogPGNvZGU+Jmx0O3R4cDpj YmVfZnJvbnRhdXRoX2lmX2Nvbm5lY3RlZCAvJmd0OzwvY29kZT4gPGNvZGU+Jmx0O3R4cDpj YmVfZnJvbnRhdXRoX2lmX2xvZ2dlZCAvJmd0OzwvY29kZT4gaWYgeW91IGZpbmQgb25lIG9m IHRoZXNlIGZvcm1zIG1vcmUgY29udmVuaWVudDwvcD4NCg0KPHA+SWYgY29ubmVjdGVkLCB5 b3UgY2FuIGF1dG9tYXRpY2FsbHkgYWRkIGEgbGluayB0byBjbGljayB0byBnbyBzb21ld2hl cmUuIFRoaXMgbGluayB3aWxsIHNob3cgZmlyc3QgKGJlZm9yZSBhbnkgb3RoZXIgY29udGVu dCkuDQo8YnIgLz5Zb3UgZG8gdGhpcyB1c2luZyB0aGUgYXR0cmlidXRlcyA8Y29kZT5saW5r PC9jb2RlPiwgPGNvZGU+bGlua2xhYmVsPC9jb2RlPiwgb3B0aW9uYWxseSA8Y29kZT50YXJn ZXQ8L2NvZGU+ICgiX3NlbGYiIG9wZW5zIHRoZSBsaW5rIGluIHRoZSBzYW1lIHdpbmRvdy90 YWIsICJfYmxhbmsiIGluIGEgbmV3IHdpbmRvdy90YWIpLg0KPC9wPg0KDQo8cD5JZiB5b3Ug d2FudCB0byBkaXNwbGF5IHRoZSBsaW5rIGFueXdoZXJlIGVsc2UsIG9yIGRpc3BsYXkgbW9y ZSB0aGFuIG9uZSBsaW5rLCBvciBjb25kaXRpb25hbGx5IHNob3cgYSBsaW5rLCBwcmVmZXIg PGEgaHJlZj0iI2xpbmstZ2VuZXJhdGlvbiI+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xpbmsg LyZndDs8L2E+PC9wPg0KDQo8aDMgaWQ9ImxvZ2luLW1ldGhvZCI+TG9naW4gbWV0aG9kICZs dDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dpbndpdGggLyZndDs8L2gzPg0KDQo8cD5XaGF0IHRv IHVzZSBhcyBsb2dpbiBuYW1lIDogdXNlcm5hbWUgKGFzIHRleHRwYXR0ZXJuIHVzdWFsbHkg ZG9lcyksIGVtYWlsLCBvciBhdXRvIGZvciBhdXRvbWF0aWMgZGV0ZWN0aW9uLjwvcD4NCjxw PjxzcGFuIGNsYXNzPSJyZWFkbWUiPkNhdXRpb24gaWYgdXNpbmcgZW1haWwgbG9naW4gbWV0 aG9kPC9zcGFuPiA6IHRleHRwYXR0ZXJuIGRvZXNuJ3QgY2hlY2sgZm9yIGR1cGxpY2F0ZSBl bWFpbCBhZGRyZXNzZXMgdXBvbiB1c2VyIGNyZWF0aW9uLiBJZiBzb21lb25lIHRyaWVzIHRv IGxvZyBpbiB1c2luZyBzdWNoIGFuIGFkZHJlc3MsIGl0IHdpbGwgZmFpbC48L3A+DQoNCjxw cmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aA0KICAgIHZhbHVlPSI8 Yj5hdXRvPC9iPiB8IHVzZXJuYW1lIHwgZW1haWwiIC8mZ3Q7PC9jb2RlPjwvcHJlPg0KDQo8 aDMgaWQ9ImF1dG9tYXRpYy1yZWRpcmVjdCI+QXV0b21hdGljIHJlZGlyZWN0OiAmbHQ7dHhw OmNiZV9mcm9udGF1dGhfcmVkaXJlY3QgLyZndDs8L2gzPg0KDQo8cD5Vc2VyIHdpbGwgYmUg YXV0b21hdGljYWxseSByZWRpcmVjdGVkIGFmdGVyIHN1Y2Nlc3NmdWwgbG9naW4gYW5kL29y IGxvZ291dC4NCjxiciAvPlVzZSB0aGlzIHRhZyBiZWZvcmUgYW55IG90aGVyIGNiZV9mcm9u dGF1dGhfKiBhcyBpdCBzZXRzIHJlZGlyZWN0aW9uKHMpIGZvciB0aGUgd2hvbGUgcGFnZS48 L3A+DQoNCjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX3JlZGlyZWN0DQogICAg Zm9yPSJsb2dpbiB8IGxvZ291dCB8IGxvZ2luLGxvZ291dCINCiAgICB2YWx1ZT0iYWZ0ZXJf bG9naW5fdXJsIHwgYWZ0ZXJfbG9nb3V0X3VybCB8IGFmdGVyX2xvZ2luX3VybCxhZnRlcl9s b2dvdXRfdXJsIiAvJmd0OzwvY29kZT48L3ByZT4NCg0KPHA+SW4gb3RoZXIgd29yZHMgYW5k IGluIGRldGFpbHM6PC9wPg0KPHA+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX3JlZGly ZWN0IGZvcj0ibG9naW4iIHZhbHVlPSJhZnRlcl9sb2dpbl91cmwiIC8mZ3Q7PC9jb2RlPg0K PGJyIC8+c2V0cyBhdXRvbWF0aWMgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW48L3A+DQo8cD48 Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfcmVkaXJlY3QgZm9yPSJsb2dvdXQiIHZhbHVl PSJhZnRlcl9sb2dvdXRfdXJsIiAvJmd0OzwvY29kZT4NCjxiciAvPnNldHMgYXV0b21hdGlj IHJlZGlyZWN0aW9uIGFmdGVyIGxvZ291dDwvcD4NCjxwPjxjb2RlPiZsdDt0eHA6Y2JlX2Zy b250YXV0aF9yZWRpcmVjdCBmb3I9ImxvZ2luIiB2YWx1ZT0iYWZ0ZXJfbG9naW5fdXJsIiAv Jmd0Ow0KJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3JlZGlyZWN0IGZvcj0ibG9nb3V0IiB2YWx1 ZT0iYWZ0ZXJfbG9nb3V0X3VybCIgLyZndDs8L2NvZGU+DQo8YnIgLz5zZXRzIGF1dG9tYXRp YyByZWRpcmVjdGlvbiBmb3IgYm90aDwvcD4NCjxwPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250 YXV0aF9yZWRpcmVjdCBmb3I9ImxvZ2luLGxvZ291dCIgdmFsdWU9ImFmdGVyX2xvZ2luX3Vy bCxhZnRlcl9sb2dvdXRfdXJsIiAvJmd0OzwvY29kZT4NCjxiciAvPnNldHMgYXV0b21hdGlj IHJlZGlyZWN0aW9uIGZvciBib3RoIHRvbzwvcD4NCg0KPGgzIGlkPSJzZXR0aW5nLWludml0 ZXMiPlNldHRpbmcgaW52aXRlcyBnbG9iYWxseSBmb3IgdGhlIHdob2xlIHBhZ2U6ICZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9pbnZpdGUgLyZndDs8L2gzPg0KDQo8cD5Xb3JrcyB0aGUgc2Ft ZSB3YXkgPGEgaHJlZj0iI2F1dG9tYXRpYy1yZWRpcmVjdCI+YXMgYWJvdmU8L2E+OjwvcD4N CjxwPjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2ludml0ZSBmb3I9Ii4uLiIg dmFsdWU9Ii4uLiIgLyZndDs8L2NvZGU+PC9wcmU+PC9wPg0KPHA+Q29tYmluYXRpb25zOiA8 Y29kZT5sb2dpbiwgbG9nb3V0IChvciBsb2dnZWQpLCB0YWc8L2NvZGU+PC9wPg0KPHA+U3lu b255bTogPGNvZGU+bG9nZ2VkPC9jb2RlPiBmb3IgbG9nb3V0LCBpZiB5b3UgZmluZCB0aGlz IGZvcm0gbW9yZSBjb252ZW5pZW50LiA8c3BhbiBjbGFzcz0iYWNjZW50Ij5BcyBzeW5vbnlt cyB0aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmU8L3NwYW4+IGFuZCBpZiBib3RoIHVzZWQg PGNvZGU+bG9nb3V0PC9jb2RlPiB3aWxsIHRha2UgcHJlY2VkZW5jZS48L3A+DQo8cD5DYW4g YmUgb3ZlcnJpZGRlbiBieSBhbnkgdGFnIHRoYXQgaGFzIDxjb2RlPmludml0ZTwvY29kZT4g YXMgYXR0cmlidXRlLjwvcD4NCg0KPHA+RXhhbXBsZTo8L3A+DQo8cHJlPjxjb2RlPiZsdDt0 eHA6Y2JlX2Zyb250YXV0aF9pbnZpdGUgZm9yPSJsb2dpbixsb2dvdXQsdGFnIiBpbnZpdGU9 IlBsZWFzZSBsb2dpbixZb3UgY2FuIGxvZ291dCBoZXJlLGgyIiAvJmd0Ow0KJmx0O3R4cDpj YmVfZnJvbnRhdXRoX2JveCAvJmd0Ow0KICAuLi4gWW91ciBwYWdlIGhlcmUgLi4uDQogIC4u LiBhbmQgaW4gdGhlIGZvb3RlciwgZm9yIGV4YW1wbGUgLi4uDQombHQ7dHhwOmNiZV9mcm9u dGF1dGhfbG9naW4gaW52aXRlPSJTYXkgaGVsbG8gISIgdGFnX2ludml0ZT0ic3BhbiIgLyZn dDsNCjwvY29kZT48L3ByZT4NCg0KPGgzIGlkPSJzZXR0aW5nLWxhYmVscyI+U2V0dGluZyBi dXR0b24gYW5kIGxpbmsgbGFiZWxzIGdsb2JhbGx5IGZvciB0aGUgd2hvbGUgcGFnZTogJmx0 O3R4cDpjYmVfZnJvbnRhdXRoX2xhYmVsIC8mZ3Q7PC9oMz4NCg0KPHA+V29ya3MgdGhlIHNh bWUgd2F5IDxhIGhyZWY9IiNhdXRvbWF0aWMtcmVkaXJlY3QiPmFzIGFib3ZlPC9hPiB0b286 PC9wPg0KPHA+PHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfbGFiZWwgZm9yPSIu Li4iIHZhbHVlPSIuLi4iIC8mZ3Q7PC9jb2RlPjwvcHJlPjwvcD4NCjxwPkNvbWJpbmF0aW9u czogPGNvZGU+bG9naW4sIGxvZ291dDwvY29kZT48L3A+DQo8cD5DYW4gYmUgb3ZlcnJpZGRl biBieSBhbnkgdGFnIHRoYXQgaGFzIDxjb2RlPmxhYmVsPC9jb2RlPiBhcyBhdHRyaWJ1dGUu PC9wPg0KDQo8aDIgaWQ9ImluZGl2aWR1YWwtZWxlbWVudHMiPlRha2UgY29udHJvbCBvbiBp bmRpdmlkdWFsIGVsZW1lbnRzPC9oMj4NCg0KPGgzIGlkPSJsb2dpbi1hcmVhIj5Mb2dpbiBh cmVhOiAmbHQ7dHhwOmNiZV9mcm9udGF1dGhfbG9naW4gLyZndDs8L2gzPg0KDQo8cHJlPjxj b2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dpbg0KICBbIGludml0ZT0iPGI+Q29ubmVj dCB0byB0ZXh0cGF0dGVybjwvYj4gfCAuLi4iDQogICAgdGFnX2ludml0ZT0iPGI+bm9uZTwv Yj4gfCAuLi4iDQogICAgKCB7bGFiZWw9IjxiPkxvZ2luPC9iPnwuLi4iIHNob3dfc3RheT0i PGI+MDwvYj58MSIgc2hvd19yZXNldD0iMHw8Yj4xPC9iPiJ9IHwgZm9ybT0iPGI+bm9uZTwv Yj58Zm9ybSBuYW1lIiApDQogICAgdGFnX2Vycm9yPSI8Yj5zcGFuPC9iPiIgY2xhc3NfZXJy b3I9IjxiPmNiZV9mYV9lcnJvcjwvYj4iDQogICAgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4u IiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iIF0gLyZndDsNCg0KJmx0O3R4cDpjYmVf ZnJvbnRhdXRoX2xvZ2luDQogIFsgaW52aXRlPSI8Yj5Db25uZWN0IHRvIHRleHRwYXR0ZXJu PC9iPiB8IC4uLiINCiAgICB0YWdfaW52aXRlPSI8Yj5ub25lPC9iPiB8IC4uLiINCiAgICB0 YWdfZXJyb3I9IjxiPnNwYW48L2I+IiBjbGFzc19lcnJvcj0iPGI+Y2JlX2ZhX2Vycm9yPC9i PiINCiAgICB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xh c3M9Ii4uLiIgXSZndDsNCiAgIGZvcm0gZWxlbWVudHMNCiZsdDsvdHhwOmNiZV9mcm9udGF1 dGhfbG9naW4mZ3Q7PC9jb2RlPjwvcHJlPg0KDQo8cD5JZiBsb2dpbiBmYWlscywgYSBiYXNp YyBtZXNzYWdlIHdpbGwgYXBwZWFyIGp1c3QgYmVmb3JlIHRoZSBsb2dpbiBmb3JtLiBZb3Ug Y2FuIGN1c3RvbWlzZSBpdHMgd3JhcHBpbmcgdGFnIGFuZCBjbGFzcy48L3A+DQoNCjxwIGlk PSJmb3JtLWVsZW1lbnRzIiA+V2hlcmUgPGNvZGU+Zm9ybSBlbGVtZW50czwvY29kZT4gYXJl OjwvcD4NCjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJvbnRhdXRoX2xvZ25hbWUgW2xhYmVs PSI8Yj5OYW1lPC9iPnwuLi4iIHdyYXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4u LiIgYnJlYWtjbGFzcz0iLi4uIl0gLyZndDsNCiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9wYXNz d29yZCBbbGFiZWw9IjxiPlBhc3N3b3JkPC9iPnwuLi4iIHdyYXB0YWc9Ii4uLiIgY2xhc3M9 Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIl0gLyZndDsNCiZsdDt0eHA6Y2Jl X2Zyb250YXV0aF9zdGF5IFtsYWJlbD0iPGI+U3RheSBjb25uZWN0ZWQgd2l0aCB0aGlzIGJy b3dzZXI8L2I+fC4uLiIgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBi cmVha2NsYXNzPSIuLi4iXSAvJmd0Ow0KJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3Jlc2V0IFts YWJlbD0iPGI+UGFzc3dvcmQgZm9yZ290dGVuID88L2I+fC4uLiIgd3JhcHRhZz0iLi4uIiBj bGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4iXSAvJmd0Ow0KJmx0O3R4 cDpjYmVfZnJvbnRhdXRoX3N1Ym1pdCBbbGFiZWw9IjxiPkxvZ2luPC9iPnwuLi4iIHdyYXB0 YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIl0gLyZn dDs8L2NvZGU+PC9wcmU+DQoNCjxoMyBpZD0ibG9nb3V0LWFyZWEiPkxvZ291dCBhcmVhOiAm bHQ7dHhwOmNiZV9mcm9udGF1dGhfbG9nb3V0IC8mZ3Q7PC9oMz4NCg0KPHByZT48Y29kZT4m bHQ7dHhwOmNiZV9mcm9udGF1dGhfbG9nb3V0DQogIFsgaW52aXRlPSI8Yj5ub25lPC9iPnwu Li4iDQogICAgdGFnX2ludml0ZT0iPGI+bm9uZTwvYj58Li4uIg0KICAgICgge2xhYmVsPSI8 Yj5Mb2dvdXQ8L2I+fC4uLiIgdHlwZT0iPGI+YnV0dG9uPC9iPnxsaW5rIiBzaG93X2NoYW5n ZT0iMHw8Yj4xPC9iPn0gfCBmb3JtPSI8Yj5ub25lPC9iPnxmb3JtIG5hbWUiKQ0KICAgIHdy YXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIgYnJlYWtjbGFzcz0iLi4uIiBd IC8mZ3Q7DQoNCiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9sb2dvdXQNCiAgWyBpbnZpdGU9Ijxi Pm5vbmU8L2I+fC4uLiINCiAgICB0YWdfaW52aXRlPSI8Yj5ub25lPC9iPnwuLi4iDQogICAg d3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVha2NsYXNzPSIuLi4i IF0mZ3Q7DQogICBmb3JtIGVsZW1lbnRzDQombHQ7L3R4cDpjYmVfZnJvbnRhdXRoX2xvZ291 dCZndDs8L2NvZGU+PC9wcmU+DQoNCjxwPldoZXJlIDxjb2RlPmZvcm0gZWxlbWVudHM8L2Nv ZGU+IGFyZTo8L3A+DQo8cHJlPjxjb2RlPiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9zdWJtaXQg dHlwZT0ibG9nb3V0IiBbbGFiZWw9IjxiPkxvZ291dDwvYj58Li4uIiB3cmFwdGFnPSIuLi4i IGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJyZWFrY2xhc3M9Ii4uLiJdIC8mZ3Q7DQombHQ7 dHhwOmNiZV9mcm9udGF1dGhfbGluayBsaW5rPSJsb2dvdXQ9MSIgdGFyZ2V0PSJfZ2V0IiBb bGFiZWw9Ii4uLiIgd3JhcHRhZz0iLi4uIiBjbGFzcz0iLi4uIiBicmVhaz0iLi4uIiBicmVh a2NsYXNzPSIuLi4iXSAvJmd0OzwvY29kZT48L3ByZT4NCg0KPGgyIGlkPSJhZGRpdGlvbmFs LXRhZ3MiPkFkZGl0aW9uYWwgYW5kIHNwZWNpYWwgdGFnczwvaDI+DQoNCjxoMyBpZD0idXNl ci1pbmZvIj5Db25uZWN0ZWQgdXNlciBpbmZvcm1hdGlvbjogJmx0O3R4cDpjYmVfZnJvbnRh dXRoX3dob2lzIC8mZ3Q7PC9oMz4NCg0KPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1 dGhfd2hvaXMgW3R5cGU9Ils8Yj5uYW1lPC9iPl1bLCBSZWFsTmFtZV1bLCBlbWFpbF1bLCBw cml2c11bLCBsYXN0X2FjY2Vzc10iIGZvcm1hdD0iPGI+YXMgc2V0IGluIHByZWZlcmVuY2Vz PC9iPnxzaW5jZXxyZmM4MjJ8aXNvODYwMXx3M2NkdGZ8c3RyZnRpbWUoKSBzdHJpbmcgdmFs dWUiIHdyYXB0YWc9Ii4uLiIgYnJlYWs9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWtjbGFzcz0i Li4uIl0gLyZndDs8L2NvZGU+PC9wcmU+DQo8cD48Y29kZT5mb3JtYXQ8L2NvZGU+IGFwcGxp ZXMgdG8gPGNvZGU+bGFzdF9hY2Nlc3M8L2NvZGU+IGlmIHByZXNlbnQuPC9wPg0KDQo8aDMg aWQ9InBhdGgtYmFja2VuZCI+UGF0aCB0byBUZXh0cGF0dGVybiBiYWNrZW5kOiAmbHQ7dHhw OmNiZV9mcm9udGF1dGhfYmFja2VuZCAvJmd0OzwvaDM+DQoNCjxwcmU+PGNvZGU+Jmx0O3R4 cDpjYmVfZnJvbnRhdXRoX2JhY2tlbmQgLyZndDs8L2NvZGU+PC9wcmU+DQoNCjxwPlJldHVy bnMgcGF0aCB0byB0ZXh0cGF0dGVybiByb290IChpbiBtb3N0IGNhc2VzIC90ZXh0cGF0dGVy bi9pbmRleC5waHApLjwvcD4NCg0KPGgzIGlkPSJlZGl0LWFydGljbGUiPkRpcmVjdCBidXR0 b24gb3IgbGluayB0byBlZGl0IGN1cnJlbnQgYXJ0aWNsZSAod3JpdGUgYXJ0aWNsZSk8L2gz Pg0KDQo8cD5JbiBhbiBpbmRpdmlkdWFsIGFydGljbGUgZm9ybSBvciBlbmNsb3NlZCBpbiA8 Y29kZT4mbHQ7dHhwOmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsgJmx0Oy90eHA6aWZfaW5k aXZpZHVhbF9hcnRpY2xlJmd0OzwvY29kZT46PC9wPg0KDQo8cHJlPjxjb2RlPiZsdDt0eHA6 Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQmZ3Q7DQogICAgJmx0O3R4cDpjYmVfZnJvbnRh dXRoX2VkaXRfYXJ0aWNsZSBsYWJlbD0iPGI+ZWRpdDwvYj58Li4uIiAgdHlwZT0iPGI+YnV0 dG9uPC9iPnxsaW5rIiB3cmFwdGFnPSIuLi4iIGNsYXNzPSIuLi4iIGJyZWFrPSIuLi4iIGJy ZWFrY2xhc3M9Ii4uLiIgLyZndDsNCiZsdDsvdHhwOmNiZV9mcm9udGF1dGhfaWZfY29ubmVj dGVkJmd0OzwvY29kZT48L3ByZT4NCg0KPHA+PHNwYW4gY2xhc3M9ImFjY2VudCI+V2h5IHVz ZSBhIGJ1dHRvbiByYXRoZXIgdGhhbiBhIGxpbmsgPzwvc3Bhbj4gQW5zd2VyOiBhcyBpdCBp cyBlbmNsb3NlZCBpbiBhbiBIVE1MIGZvcm0sIGl0IGFsbG93cyB0byBnbyB0byB0aGUgZWRp dCBwYWdlIHdpdGhvdXQgc2hvd2luZyBwYXJhbWV0ZXJzIGluIHRoZSBVUkwuPC9wPg0KDQo8 aDMgaWQ9ImxpbmstZ2VuZXJhdGlvbiI+TGluayBnZW5lcmF0aW9uOiAmbHQ7dHhwOmNiZV9m cm9udGF1dGhfbGluayAvJmd0OzwvaDM+DQoNCjxwcmU+PGNvZGU+Jmx0O3R4cDpjYmVfZnJv bnRhdXRoX2xpbmsgbGFiZWw9Ii4uLiIgbGluaz0iLi4uIiBbdGFyZ2V0PSI8Yj5fc2VsZjwv Yj58X2JsYW5rfF9nZXQiIHdyYXB0YWc9Ii4uLiIgY2xhc3M9Ii4uLiIgYnJlYWs9Ii4uLiIg YnJlYWtjbGFzcz0iLi4uIl0gLyZndDs8L2NvZGU+PC9wcmU+DQoNCjxwPjxjb2RlPmNsYXNz PC9jb2RlPiBhcHBsaWVzIHRvIHRoZSBhbmNob3IgaWYgdGhlcmUgaXMgbm8gPGNvZGU+d3Jh cHRhZzwvY29kZT4gc3VwcGxpZWQuPC9wPg0KPHA+PGNvZGU+X2dldDwvY29kZT4gd2lsbCBh ZGQgPGNvZGU+bGluazwvY29kZT4gdG8gdGhlIGN1cnJlbnQgVVJMLCBmb3IgZXhhbXBsZTo8 L3A+DQo8cD5VUkwgOiBodHRwOi8vd3d3LmV4YW1wbGUuY29tL3BhZ2UNCjxiciAvPjxjb2Rl PiZsdDt0eHA6Y2JlX2Zyb250YXV0aF9saW5rIGxhYmVsPSJMb2dvdXQiIGxpbms9ImxvZ291 dD0xIiB0YXJnZXQ9Il9nZXQiIC8mZ3Q7PC9jb2RlPg0KPGJyIC8+VVJMIFJlc3VsdCA6IGh0 dHA6Ly93d3cuZXhhbXBsZS5jb20vcGFnZT9sb2dvdXQ9MTwvcD4NCg0KPGgyIGlkPSJjYWxs YmFja3MiPkNhbGxiYWNrczwvaDI+DQo8cD5UaGV5IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRv IGhvb2sgY2JlX2Zyb250YXV0aCdzIGNvbXBhbmlvbiwgPGEgaHJlZj0iL2NiZV9tZW1iZXJz Ij5jYmVfbWVtYmVyczwvYT4gKHNlZSBkZXRhaWxzIGluIHRoZSB0YWJsZSBiZWxvdykuPC9w Pg0KPHRhYmxlIGNsYXNzPSJsaXN0Ij4NCiAgPHRyPiA8dGg+RXZlbnQ8L3RoPiA8dGg+U3Rl cDwvdGg+IDx0aD5XaGF0IGl0IGlzPC90aD4gPC90cj4NCiAgPHRyPiA8dGQ+PGNvZGU+Y2Jl ZnJvbnRhdXRoLnJlc2V0X3Bhc3N3b3JkPC9jb2RlPjwvdGQ+IDx0ZD48Y29kZT5jYmVfZmFf YmVmb3JlX2xvZ2luPC9jb2RlPjwvdGQ+IDx0ZD5UcmlnZ2VyZWQgYmVmb3JlIHNob3dpbmcg bG9naW4gZm9ybSwgd2hlbiByZXNldHRpbmcgcGFzc3dvcmQgaXMgaW4gcHJvZ3Jlc3MuPGJy IC8+SWYgY2JlX21lbWJlcnMgaXMgaW5zdGFsbGVkLCBkaXNwbGF5cyBoZXJlIHRoZSAicmVz ZXQgcGFzc3dvcmQiIGZvcm0sIG9yIHBlcmZvcm1zIHRoZSBhY3R1YWwgcmVzZXQgaWYgdGhl IGZvcm0gaXMgc3VjY2Vzc2Z1bGx5IGZpbGxlZCBpbi48L3RkPiA8L3RyPg0KICA8dHI+IDx0 ZD48Y29kZT5jYmVmcm9udGF1dGgucmVzZXRfcGFzc3dvcmQ8L2NvZGU+PC90ZD4gPHRkPjxj b2RlPmNiZV9mYV9hZnRlcl9sb2dpbjwvY29kZT48L3RkPiA8dGQ+VHJpZ2dlcmVkIGFmdGVy IHNob3dpbmcgbG9naW4gZm9ybS48YnIgLz5JZiBjYmVfbWVtYmVycyBpcyBpbnN0YWxsZWQs IGRpc3BsYXlzIGEgbGluayB0byB0aGUgInJlc2V0IHBhc3N3b3JkIiBmb3JtLjwvdGQ+IDwv dHI+DQogIDx0cj4gPHRkPjxjb2RlPmNiZWZyb250YXV0aC5jaGFuZ2VfcGFzc3dvcmQ8L2Nv ZGU+PC90ZD4gPHRkPjxjb2RlPmNiZV9mYV9iZWZvcmVfbG9nb3V0PC9jb2RlPjwvdGQ+IDx0 ZD5UcmlnZ2VyZWQgYmVmb3JlIHNob3dpbmcgbG9nb3V0IGZvcm0sIHdoZW4gY2hhbmdpbmcg cGFzc3dvcmQgaXMgaW4gcHJvZ3Jlc3MuPGJyIC8+SWYgY2JlX21lbWJlcnMgaXMgaW5zdGFs bGVkLCBkaXNwbGF5cyB0aGUgImNoYW5nZSBwYXNzd29yZCIgZm9ybSwgb3IgcGVyZm9ybXMg dGhlIGFjdHVhbCBjaGFuZ2UgaWYgdGhlIGZvcm0gaXMgc3VjY2Vzc2Z1bGx5IGZpbGxlZCBp bi48L3RkPiA8L3RyPg0KICA8dHI+IDx0ZD48Y29kZT5jYmVmcm9udGF1dGguY2hhbmdlX3Bh c3N3b3JkPC9jb2RlPjwvdGQ+IDx0ZD48Y29kZT5jYmVfZmFfYWZ0ZXJfbG9nb3V0PC9jb2Rl PjwvdGQ+IDx0ZD5UcmlnZ2VyZWQgYWZ0ZXIgc2hvd2luZyBsb2dvdXQgZm9ybS48YnIgLz5J ZiBjYmVfbWVtYmVycyBpcyBpbnN0YWxsZWQsIGRpc3BsYXlzIGEgbGluayB0byB0aGUgImNo YW5nZSBwYXNzd29yZCIgZm9ybS48L3RkPiA8L3RyPg0KPC90YWJsZT4NCg0KPGgyIGlkPSJo b3ctdG8iPkhvdy10bzogaWRlYXMgYW5kIHNuaXBwZXRzPC9oMj4NCg0KPGgzIGlkPSJib3gt aWRlYXMiPkZvciBsb2dpbi9sb2dvdXQgYm94PC9oMz4NCg0KPHA+UmVwbGFjZSB0aGUgc3Rh bmRhcmQgbWVzc2FnZSB3aXRoIHNvbWV0aGluZyBlbHNlOjwvcD4NCjxwcmU+PGNvZGU+Jmx0 O3R4cDpjYmVfZnJvbnRhdXRoX2JveCZndDtXZWxjb21lICEmbHQ7L3R4cDpjYmVfZnJvbnRh dXRoX2JveCZndDs8L2NvZGU+PC9wcmU+DQoNCjxwPk9yIGV2ZW46PC9wPg0KPHByZT48Y29k ZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfYm94Jmd0O0dyZWV0aW5ncyAmbHQ7dHhwOmNiZV9m cm9udGF1dGhfd2hvaXMgdHlwZT0iUmVhbE5hbWUiIC8mZ3Q7ICEmbHQ7L3R4cDpjYmVfZnJv bnRhdXRoX2JveCZndDs8L2NvZGU+PC9wcmU+DQoNCjxoMyBpZD0iaW52aXRlcy1pZGVhcyI+ Rm9yIGludml0ZXM8L2gzPg0KPHByZT48Y29kZT4mbHQ7dHhwOmNiZV9mcm9udGF1dGhfaW52 aXRlIGZvcj0ibG9nZ2VkIiB2YWx1ZT0nJmx0O3R4cDpjYmVfZnJvbnRhdXRoX3dob2lzIHR5 cGU9IlJlYWxOYW1lIiAvJmd0OycgLyZndDs8L2NvZGU+PC9wcmU+DQo8cD5Ob3RlOiBpZiBh IHVzZXIgaXMgY29ubmVjdGVkLCB0aGUgbG9naW4gaW52aXRlIGRvZXNuJ3Qgc2hvdyBhbmQg dGhlIGxvZ291dCBpbnZpdGUgdGFrZXMgaXRzIHBsYWNlLiBTbyB3ZSBjb3VsZCB1c2UgPGNv ZGU+Zm9yPSJsb2dvdXQiPC9jb2RlPiBhcyB3ZWxsLjwvcD4NCg0KPGgzIGlkPSJncmVldGlu Zy1tZXNzYWdlIj5BIGdyZWV0aW5nIG1lc3NhZ2U8L2gzPg0KPHByZT48Y29kZT5HcmVldGlu Z3MgJmx0O3R4cDpjYmVfZnJvbnRhdXRoX2lmX2Nvbm5lY3RlZCZndDsmbHQ7dHhwOmNiZV9m cm9udGF1dGhfd2hvaXMgdHlwZT0iUmVhbE5hbWUiIC8mZ3Q7Jmx0O3R4cDplbHNlIC8mZ3Q7 ZGVhciBVc2VyJmx0Oy90eHA6Y2JlX2Zyb250YXV0aF9pZl9jb25uZWN0ZWQmZ3Q7ICE8L2Nv ZGU+PC9wcmU+DQoNCjxoMiBpZD0iYWR2YW5jZWQtdXNhZ2UiPkFkdmFuY2VkIHVzYWdlPC9o Mj4NCg0KPHAgY2xhc3M9InJlYWRtZSI+QXMgcHJldmlvdXMgdGFncyBzaG91bGQgY292ZXIg bWFqb3JpdHkncyBuZWVkcywgeW91IGRvbid0IGhhdmUgdG8gcmVhZCB0aGlzIHNlY3Rpb24g aWYgeW91IGFscmVhZHkgYWNoaWV2ZWQgd2hhdCB5b3Ugd2FudGVkIHRvLjwvcD4NCg0KPHA+ VGhpcyBpcyB0aGUgcHJvZ3JhbW1lcidzIGNvcm5lcjogaXQgZGVzY3JpYmVzIGF0dHJpYnV0 ZXMgZm9yIHRoZSBtYWluIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IGFsbW9zdCBldmVy eSBwdWJsaWMgdGFnIGRpc2N1c3NlZCBhYm92ZS48L3A+DQoNCjxwPkhlcmUgYXJlIHRoZSBw YXJhbWV0ZXJzIGZvciB0aGUgbWFpbiBmdW5jdGlvbjo8L3A+DQo8cHJlPjxjb2RlPiZsdDt0 eHA6Y2JlX2Zyb250YXV0aCZndDsNCiAgV2hhdCB0byBkby9kaXNwbGF5IGlmIGNvbm5lY3Rl ZA0KJmx0O3R4cDplbHNlIC8mZ3Q7DQogIFdoYXQgdG8gZG8vZGlzcGxheSBpZiBub3QgY29u bmVjdGVkDQombHQ7L3R4cDpjYmVfZnJvbnRhdXRoJmd0OzwvY29kZT48L3ByZT4NCg0KPHA+ Zm9ybSAoJycpIG9yIHRoaW5nID0gd2hhdCB0byBkaXNwbGF5IGlmIGxvZ2dlZCBpbg0KPGJy IC8+dGFnX2ludml0ZSAoJycpID0gSFRNTCB0YWcgZW5jbG9zaW5nIHRoZSBsYWJlbCwgd2l0 aG91dCBicmFja2V0cw0KPGJyIC8+DQo8YnIgLz5zaG93X2xvZ2luICgxKSA9IHdoZXRoZXIg dG8gZGlzcGxheSBvciBub3QgYSBsb2dpbiBmb3JtLCBhcHBlYXJzIG9ubHkgaWYgbm90IGxv Z2dlZCBpbg0KPGJyIC8+LSBsb2dpbl9pbnZpdGUgKCdsb2dpbl90b190ZXh0cGF0dGVybicp ID0gaW52aXRlIHRvIGxvZ2luDQo8YnIgLz4tIGxvZ2luX2Zvcm0gKCcnKSA9IGZvcm0gdG8g YnVpbGQgeW91ciBvd24gSFRNTCBsb2dpbiBmb3JtIHdpdGggdHhwOmNiZV9mcm9udGF1dGhf bG9naW4sIG9yIHR4cDpjYmVfZnJvbnRhdXRoX2xvZ25hbWUsIGNiZV9mcm9udGF1dGhfcGFz c3dvcmQsIGNiZV9mcm9udGF1dGhfc3RheSwgY2JlX2Zyb250YXV0aF9yZXNldCwgY2JlX2Zy b250YXV0aF9zdWJtaXQuIElmIG5vdCB1c2VkLCBhIGRlZmF1bHQgSFRNTCBmb3JtIGlzIGRp c3BsYXllZA0KPGJyIC8+LSBsb2dpbl9sYWJlbCAoJ2xvZ19pbl9idXR0b24nKSA9IGxhYmVs IGZvciB0aGUgbG9naW4gZm9ybQ0KPGJyIC8+LSBsb2dpbl93aXRoIChhdXRvKSA9IHdoZXRo ZXIgdG8gdXNlIHVzZXJuYW1lLCBvciBlbWFpbCwgb3IgYXV0byBkZXRlY3Rpb24gYXMgdXNl ciBsb2dvbg0KPGJyIC8+LSBsb2dpbl9yZWRpciAoJycpID0gZ28gaW1tZWRpYXRlbHkgdG8g cGF0aCBhZnRlciBzdWNjZXNzZnVsIGxvZ2luDQo8YnIgLz4tIHNob3dfc3RheSAoMCkgPSB1 c2VkIGluIHRoZSBnZW5lcmljIGxvZ2luIGZvcm0sIHdoZXRoZXIgdG8gZGlzcGxheSBvciBu b3QgYSBjaGVja2JveCB0byBzdGF5IGxvZ2dlZCBpbg0KPGJyIC8+LSBzaG93X3Jlc2V0ICgx KSA9IHVzZWQgaW4gdGhlIGdlbmVyaWMgbG9naW4gZm9ybSwgd2hldGhlciB0byBkaXNwbGF5 IG9yIG5vdCBhIGxpbmsgdG8gcmVzZXQgcGFzc3dvcmQNCjxiciAvPg0KPGJyIC8+c2hvd19s b2dvdXQgKDEpID0gd2hldGhlciB0byBkaXNwbGF5IG9yIG5vdCBhIGRlZmF1bHQgYnV0dG9u IHRvIGxvZyBvdXQsIGFwcGVhcnMgb25seSBpZiBsb2dnZWQgaW4NCjxiciAvPi0gbG9nb3V0 X2ludml0ZSAoJycpID0gaW52aXRlIHRvIGxvZ291dA0KPGJyIC8+LSBsb2dvdXRfZm9ybSAo JycpID0gZm9ybSB0byBidWlsZCB5b3VyIG93biBIVE1MIGxvZ291dCBmb3JtLCBvciB5b3Vy IG93biBsaW5rDQo8YnIgLz4tIGxvZ291dF9sYWJlbCAoYXMgc2V0IGluIGxhbmcgcGFjaykg PSBsYWJlbCBmb3IgdGhlIGxvZ291dCBidXR0b24NCjxiciAvPi0gbG9nb3V0X3R5cGUgKCdi dXR0b24nKSwgb3RoZXIgdHlwZSBpcyAnbGluaycNCjxiciAvPi0gbG9nb3V0X3JlZGlyICgn JykgPSBnbyBpbW1lZGlhdGVseSB0byBwYXRoIGFmdGVyIGxvZ291dA0KPGJyIC8+LSBzaG93 X2NoYW5nZSAoMSkgPSB1c2VkIGluIHRoZSBnZW5lcmljIGxvZ291dCBmb3JtLCB3aGV0aGVy IHRvIGRpc3BsYXkgb3Igbm90IGEgbGluayB0byBjaGFuZ2UgcGFzc3dvcmQNCjxiciAvPg0K PGJyIC8+bGluayAoJycpID0gYSBwYWdlIHRvIGdvIHRvIGlmIGNvbm5lY3RlZA0KPGJyIC8+ LSBsaW5rbGFiZWwgKCcnKSA9IHRleHQgYW5jaG9yIGZvciBsaW5rDQo8YnIgLz4tIHRhcmdl dCAoX3NlbGYpID0gX3NlbGYgX2JsYW5rIG9yIF9nZXQsIHdoZXRoZXIgdG8gb3BlbiB0aGUg bGluayBpbiB0aGUgc2FtZSB3aW5kb3cgKG9yIHRhYiksIG9yIGluIGEgbmV3IG9uZSwgb3Ig dG8gZ2VuZXJhdGUgYW4gVVJMIHdpdGggYWRkcmVzcyBsaW5rIGFzIEdFVCBwYXJhbWV0ZXIu IFdvcmtzIG9ubHkgd2l0aCBoeXBlcmxpbmsgKG5vdCBsb2dpbl9yZWRpciwgbm90IGxvZ291 dF9yZWRpcikNCjxiciAvPg0KPGJyIC8+Q2hlY2tpbmcgdXNlcnMgYW5kIHByaXZpbGVnZXMg Og0KPGJyIC8+LSBuYW1lICgnJykgPSBsaXN0IG9mIG5hbWVzIHRvIGNoZWNrDQo8YnIgLz4t IGxldmVsICgnJykgPSBsaXN0IG9mIHByaXZpbGVnZSBsZXZlbHMgdG8gY2hlY2sNCjxiciAv Pg0KPGJyIC8+UHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcyA6DQo8YnIgLz4tIHdyYXB0YWcg KCcnKSwgY2xhc3MgKCcnKQ0KPGJyIC8+DQo8YnIgLz5pbml0ID0gU3BlY2lhbCBhdHRyaWJ1 dGUgZm9yIGludGVybmFsIHVzZSBvbmx5IGFuZCBkb2N1bWVudGVkIG9ubHkgZm9yIHBlb3Bs ZSB3aG8gd2FudCB0byBrbm93IDopDQogPGJyIC8+IFdoZXRoZXIgdG8gc2V0ICgnMScpIG9y IGdldCAoJzAnKSBnbG9iYWwgc2V0dGluZ3MgZm9yIHJlZGlyZWN0aW9ucyAobG9naW5fcmVk aXIsIGxvZ291dF9yZWRpciksIGludml0ZXMgKGxvZ2luX2ludml0ZSwgbG9nb3V0X2ludml0 ZSwgdGFnX2ludml0ZSksIGxhYmVscyAobG9naW5fbGFiZWwsIGxvZ291dF9sYWJlbCksIGxv Z2luIHR5cGUgKGxvZ2luX3dpdGgpIG9yIHVzZXIncyBpbmZvcm1hdGlvbnMuIEltbWVkaWF0 ZWx5IHJldHVybnMgYW5kIGRvZXNuJ3QgZGlzcGxheSBhbnl0aGluZy4NCiA8YnIgLz4gdmFs dWUgPSBzZXR0aW5nIHRvIHNldCBvciBnZXQsIHN0cmluZyBvciBhcnJheS4NCjwvcD4NCg0K PGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+DQo8dWw+DQogIDxsaT4yNyBNYXIg MTMgLSB2MC45LjQNCiAgPGJyIC8+TWlzc2luZyBpbml0aWFsaXphdGlvbiBmb3IgY2JlX2Zy b250YXV0aF93aG9pcw0KICA8YnIgLz5FcnJvciBtZXNzYWdlIHdoZW4gbG9naW4gZmFpbHMN CiAgPGJyIC8+TG9jYWwgbGFuZ3VhZ2Ugc3RyaW5ncw0KICA8L2xpPg0KICA8bGk+MjIgTWFy IDEyIC0gdjAuOS4zIC0gRG9jIHR5cG8gZm9yIGNiZV9mcm9udGF1dGhfaW52aXRlPC9saT4N CiAgPGxpPj8/ID8/PyAxMiAtIHYwLjkuMiAtID8/PC9saT4NCiAgPGxpPjIyIE1hciAxMiAt IHYwLjkuMSAtIGZpeGVkIG1pc3NpbmcgYXR0cmlidXRlcyAoc2hvd19sb2dpbiBhbmQgc2hv d19jaGFuZ2UpIGZvciBjYmVfZnJvbnRhdXRoX2JveDwvbGk+DQogIDxsaT4yMSBNYXIgMTIg LSB2IDAuOSAtIENhbGxiYWNrIGhvb2tzOiBhYmlsaXR5IHRvIGFzayBmb3IgcGFzc3dvcmQg cmVzZXQgaWYgbm90IGNvbm5lY3RlZCwgZm9yIHBhc3N3b3JkIGNoYW5nZSBpZiBjb25uZWN0 ZWQ8L2xpPg0KICA8bGk+MTAgSmFuIDEyIC0gdiAwLjggLSBJbnRyb2R1Y2VzICZsdDt0eHA6 Y2JlX2Zyb250YXV0aF9sb2dpbndpdGggLyZndDssIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50 ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MjU2NjMyI3AyNTY2MzIiPmlkZWEg Y29tZXMgZnJvbSBhbm90aGVyIGRlbWFuZCBpbiB0aGUgdGV4dHBhdHRlcm4gZm9ydW08L2E+ Lg0KICA8L2xpPg0KICA8bGk+MDUgSmFuIDEyIC0gdjAuNy4xIC0gRG9jdW1lbnRhdGlvbiBh ZGRlbmRhPC9saT4NCiAgPGxpPjA2IEF1ZyAxMSAtIHYwLjctYmV0YQ0KICA8YnIgLz4gKiBJ bnRyb2R1Y2VzICZsdDt0eHA6Y2JlX2Zyb250YXV0aF9lZGl0X2FydGljbGUgLyZndA0KICA8 YnIgLz4gKiBDU1JGIHByb3RlY3Rpb24gcmVhZHkNCiAgPGJyIC8+ICogRG9jdW1lbnRhdGlv biBpbXByb3ZlbWVudHMNCiAgPC9saT4NCiAgPGxpPjI5IEp1bCAxMSAtIHYwLjYtYmV0YQ0K ICA8YnIgLz4gKiBPcHRpbWl6YXRpb25zIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIGRh dGFiYXNlIHdoZW4gcmV0cmlldmluZyB1c2VyJ3MgaW5mb3JtYXRpb25zDQogIDxiciAvPiAq IEFkZGVkIG5hbWUgYW5kIHByaXZpbGVnZSBjb250cm9scyDDoCBsYSA8YSBocmVmPSJodHRw Oi8vdmFubWVsaWNrLmNvbS90eHAvIj4mbHQ7dHhwOnJ2bV9pZl9wcml2aWxlZ2VkIC8mZ3Q7 PC9hPg0KICA8YnIgLz4gKiBNaW5vciBjaGFuZ2VzIHRvIGRvY3VtZW50YXRpb24NCiAgPC9s aT4NCiAgPGxpPjI3IEp1bCAxMSAtIHYwLjUtYmV0YS0gRmlyc3QgcHVibGljIGJldGEgcmVs ZWFzZTwvbGk+DQogIDxsaT4yNiBKdWwgMTEgLSB2MC40LWJldGEtIFJlc3RyaWN0ZWQgYmV0 YSByZWxlYXNlPC9saT4NCiAgPGxpPjI0IEp1bCAxMSAtIHYwLjMtZGV2IC0gUmVzdHJpY3Rl ZCBkZXZlbG9wbWVudCByZWxlYXNlPC9saT4NCiAgPGxpPjIzIEp1bCAxMSAtIHYwLjItZGV2 IC0gUmVzdHJpY3RlZCBkZXZlbG9wbWVudCByZWxlYXNlPC9saT4NCiAgPGxpPjIyIEp1bCAx MSAtIHYwLjEtZGV2IC0gUmVzdHJpY3RlZCBkZXZlbG9wbWVudCByZWxlYXNlPC9saT4NCjwv dWw+DQo8L2Rpdj4KPCEtLSAtLS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0 eXBlPSJ0ZXh0L2NzcyI+DQojY2JlLXBsdWdpbi1oZWxwIC5yZWFkbWUgew0KICBjb2xvcjog cmVkOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCiNjYmUtcGx1Z2luLWhlbHAgLmFjY2Vu dCB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KI2NiZS1wbHVnaW4taGVscCAubGlzdCB0 aHsNCgl0ZXh0LWFsaWduOmxlZnQ7DQoJY29sb3I6I2ZmZjsNCgliYWNrZ3JvdW5kOiM1NTU7 DQoJcGFkZGluZzo2cHggMTZweCA2cHggNHB4Ow0KCWJvcmRlci1yaWdodDoxcHggc29saWQg Izk5OTsNCglmb250LXdlaWdodDpub3JtYWw7DQp9DQojY2JlLXBsdWdpbi1oZWxwIC5saXN0 IHRoIGF7DQoJY29sb3I6I2ZmZjsNCglkaXNwbGF5OmJsb2NrOw0KfQ0KI2NiZS1wbHVnaW4t aGVscCAubGlzdCB0aCBoMnsNCgltYXJnaW46MDsNCglmb250LXNpemU6MTFweDsNCn0NCiNj YmUtcGx1Z2luLWhlbHAgLmxpc3QgdGR7DQoJcGFkZGluZzo2cHggNHB4Ow0KfQ0KPC9zdHls ZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0tPiI7czo0OiJjb2RlIjtzOjMzNDQx OiIvKg0KKiogY2JlX2Zyb250YXV0aA0KKiogQ2xpZW50LXNpZGUgdGV4dHBhdHRlcm4gcGx1 Z2luDQoqKiBDb25uZWN0IChhbmQgZGlzY29ubmVjdCkgZnJvbSBmcm9udGVuZCB0byBiYWNr ZW5kDQoqKiBFc3RhYmxpc2hlcyBiaWRpcmVjdGlvbmFsIGxpbmtzIGJldHdlZW4gYXJ0aWNs ZSBkaXNwbGF5IGFuZCBlZGl0aW9uDQoqKiBDbGFpcmUgQnJpb25lIC0gaHR0cDovL3d3dy5j bGFpcmVicmlvbmUuY29tLw0KKioNCioqIDAuMS1kZXYgLSAyMiBKdWwgMjAxMSAtIFJlc3Ry aWN0ZWQgZGV2ZWxvcG1lbnQgcmVsZWFzZQ0KKiogMC4yLWRldiAtIDIzIEp1bCAyMDExIC0g UmVzdHJpY3RlZCBkZXZlbG9wbWVudCByZWxlYXNlDQoqKiAwLjMtZGV2IC0gMjQgSnVsIDIw MTEgLSBSZXN0cmljdGVkIGRldmVsb3BtZW50IHJlbGVhc2UNCioqIDAuNC1iZXRhLSAyNiBK dWwgMjAxMSAtIFJlc3RyaWN0ZWQgYmV0YSByZWxlYXNlDQoqKiAwLjUtYmV0YS0gMjcgSnVs IDIwMTEgLSBGaXJzdCBwdWJsaWMgYmV0YSByZWxlYXNlDQoqKiAwLjYtYmV0YS0gMjkgSnVs IDIwMTEgLSBPcHRpbWl6YXRpb25zIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIGRhdGFi YXNlDQoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcmV0cmlldmluZyB1c2Vy J3MgaW5mb3JtYXRpb25zDQoqKiAgICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBuYW1l IGFuZCBwcml2aWxlZ2UgY29udHJvbHMNCioqICAgICAgICAgICAgICAgICAgICAgICAgICAg w6AgbGEgPHR4cDpydm1faWZfcHJpdmlsZWdlZCAvPiAoaHR0cDovL3Zhbm1lbGljay5jb20v dHhwLykNCioqICAgICAgICAgICAgICAgICAgICAgICAgIE1pbm9yIGNoYW5nZXMgdG8gZG9j dW1lbnRhdGlvbg0KKiogMC43LWJldGEtIDA2IEF1ZyAyMDExIC0gSW50cm9kdWNlcyA8dHhw OmNiZV9mcm9udGF1dGhfZWRpdF9hcnRpY2xlIC8+DQoqKiAgICAgICAgICAgICAgICAgICAg ICAgICBDU1JGIHByb3RlY3Rpb24gcmVhZHkNCioqICAgICAgICAgICAgICAgICAgICAgICAg IERvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzDQoqKiAwLjcuMSAgIC0gMDUgSmFuIDIwMTIg LSBEb2N1bWVudGF0aW9uIGFkZGVuZGENCioqIDAuOCAgICAgLSAxMCBKYW4gMjAxMiAtIElu dHJvZHVjZXMgPHR4cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aCAvPg0KKiogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3Rv cGljLnBocD9waWQ9MjU2NjMyI3AyNTY2MzINCioqICAgICAgICAgICAgICAgICAgICAgICAg IHR4cDpjYmVfZnJvbnRhdXRoX2xvZ2lud2l0aCAoKmF1dG8qfHVzZXJuYW1lfGVtYWlsKQ0K KiogMC45ICAgICAtIDIxIE1hciAyMDEyIC0gQWRkZWQgY2FsbGJhY2sgaG9va3MgKHJlc2V0 IGFuZCBjaGFuZ2UgcGFzc3dvcmQpDQoqKiAwLjkuMSAgIC0gMjIgTWFyIDIwMTIgLSBGaXhl ZCBtaXNzaW5nIGF0dHJpYnV0ZXMgKHNob3dfbG9naW4gYW5kIHNob3dfY2hhbmdlKSBmb3Ig Y2JlX2Zyb250YXV0aF9ib3gNCioqIDAuOS4yICAgLSA/PyA/Pz8gMjAxMiAtID8/DQoqKiAw LjkuMyAgIC0gMjIgQXVnIDIwMTIgLSBEb2MgdHlwbyBmb3IgY2JlX2Zyb250YXV0aF9pbnZp dGUNCioqIDAuOS40ICAgLSAyNyBNYXIgMjAxMyAtIE1pc3NpbmcgaW5pdGlhbGl6YXRpb24g Zm9yIGNiZV9mcm9udGF1dGhfd2hvaXMNCioqICAgICAgICAgICAgICAgICAgICAgICAgIEVy cm9yIG1lc3NhZ2Ugd2hlbiBsb2dpbiBmYWlscw0KKiogICAgICAgICAgICAgICAgICAgICAg ICAgTG9jYWwgbGFuZ3VhZ2Ugc3RyaW5ncw0KKioNCioqIFRPRE8NCioqIC0gYnJlYWssIGJy ZWFrY2xhc3MgLT4gaW4gcHJvZ3Jlc3MsIGZ1bGwgdGVzdHMgbmVlZGVkDQoqKiAtIGVuaGVu Y2UgZXJyb3IgbWVzc2FnZXMgPw0KKioNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCi8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoqDQog KiogTG9jYWwgbGFuZ3VhZ2Ugc3RyaW5ncywgcG9zc2libGUgY3VzdG9taXNhdGlvbiBoZXJl DQogKioNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8NCmZ1bmN0aW9uIF9jYmVfZmFfbGFuZygpDQp7DQogICAgcmV0dXJuKCBhcnJheSgg J2xvZ2luX2ZhaWxlZCcgICAgICAgICA9PiAiTG9naW4gZmFpbGVkIg0KICAgICAgICAgICAg ICAgICAsICdsb2dpbl90b190ZXh0cGF0dGVybicgPT4gZ1R4dCggJ2xvZ2luX3RvX3RleHRw YXR0ZXJuJyApDQogICAgICAgICAgICAgICAgICwgJ25hbWUnICAgICAgICAgICAgICAgICA9 PiBnVHh0KCAnbmFtZScgKQ0KICAgICAgICAgICAgICAgICAsICdwYXNzd29yZCcgICAgICAg ICAgICAgPT4gZ1R4dCggJ3Bhc3N3b3JkJyApDQogICAgICAgICAgICAgICAgICwgJ2xvZ19p bl9idXR0b24nICAgICAgICA9PiBnVHh0KCAnbG9nX2luX2J1dHRvbicgKQ0KICAgICAgICAg ICAgICAgICAsICdzdGF5X2xvZ2dlZF9pbicgICAgICAgPT4gZ1R4dCggJ3N0YXlfbG9nZ2Vk X2luJyApDQogICAgICAgICAgICAgICAgICwgJ2xvZ291dCcgICAgICAgICAgICAgICA9PiBn VHh0KCAnbG9nb3V0JyApDQogICAgICAgICAgICAgICAgICwgJ2VkaXQnICAgICAgICAgICAg ICAgICA9PiBnVHh0KCAnZWRpdCcgKQ0KICAgICAgICAgICAgICAgICAsICdjaGFuZ2VfcGFz c3dvcmQnICAgICAgPT4gZ1R4dCggJ2NoYW5nZV9wYXNzd29yZCcgKQ0KICAgICAgICAgICAg ICAgICAsICdwYXNzd29yZF9yZXNldCcgICAgICAgPT4gZ1R4dCggJ3Bhc3N3b3JkX3Jlc2V0 JyApIA0KICAgICAgICAgICAgICAgICApDQogICAgICAgICAgKSA7DQp9DQovKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqKg0KICoqIERv bid0IGVkaXQgZnVydGhlcg0KICoqDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KICoqDQogKiogQXZhaWxhYmxlIHRhZ3MNCiAqKg0K ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0K DQovKiA9PSBTaG9ydGN1dHMgZm9yIGNiZV9mcm9udGF1dGgoKSA9PSAqLw0KDQovLyAtLSBH bG9iYWwgaW5pdCBmb3IgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW4gYW5kL29yIGxvZ291dA0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9yZWRpcmVjdCggJGF0 dHMgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pbml0KCAkYXR0cywgJ3JlZGlyJyApICkg Ow0KfQ0KDQovLyAtLSBHbG9iYWwgaW5pdCBmb3IgbG9naW4vbG9nb3V0IGludml0ZXMNCi8v IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfaW52aXRlKCAkYXR0cyAp DQp7DQogICAgcmV0dXJuKCBfY2JlX2ZhX2luaXQoICRhdHRzLCAnaW52aXRlJyApICkgOw0K fQ0KDQovLyAtLSBHbG9iYWwgaW5pdCBmb3IgbG9naW4vbG9nb3V0IGJ1dHRvbnMvbGluayBs YWJlbHMNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhfbGFiZWwo ICRhdHRzICkNCnsNCiAgICByZXR1cm4oIF9jYmVfZmFfaW5pdCggJGF0dHMsICdsYWJlbCcg KSApIDsNCn0NCg0KLy8gLS0gR2xvYmFsIGluaXQgZm9yIGxvZ2luIHdpdGggdXNlciBuYW1l LCBlbWFpbCwgb3IgYXV0b21hdGljIGRldGVjdGlvbg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVu Y3Rpb24gY2JlX2Zyb250YXV0aF9sb2dpbndpdGgoICRhdHRzICkNCnsNCiAgICByZXR1cm4o IF9jYmVfZmFfaW5pdCggJGF0dHMsICd3aXRoJyApICkgOw0KfQ0KDQovLyAtLSBMb2dpbiAv IExvZ291dCBib3gNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9mcm9udGF1dGhf Ym94KCAkYXR0cywgJHRoaW5nID0gJycgKQ0Kew0KICAgICRwdWJsaWNfYXR0cyA9IGxBdHRz KCBhcnJheSggJ2xvZ2luX2ludml0ZScgID0+IF9jYmVfZmFfZ1R4dCggJ2xvZ2luX3RvX3Rl eHRwYXR0ZXJuJyApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9nb3V0 X2ludml0ZScgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdzaG93 X2NoYW5nZScgICA9PiAnMScNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdz aG93X3Jlc2V0JyAgICA9PiAnMScNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs ICd0YWdfaW52aXRlJyAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ2xvZ2luX2xhYmVsJyAgID0+IF9jYmVfZmFfZ1R4dCggJ2xvZ19pbl9idXR0b24nICkN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdsb2dvdXRfbGFiZWwnICA9PiBf Y2JlX2ZhX2dUeHQoICdsb2dvdXQnICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsICdsb2dvdXRfdHlwZScgICA9PiAnYnV0dG9uJw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ3RhZ19lcnJvcicgICAgID0+ICdzcGFuJw0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICwgJ2NsYXNzX2Vycm9yJyAgID0+ICdjYmVfZmFfZXJyb3InDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyBfY2JlX2ZhX2Zvcm1hdCgpDQogICAgICAgICAgICAgICAgICAgICAgICAgLCAk YXR0cyApIDsNCg0KICAgIHJldHVybiggY2JlX2Zyb250YXV0aCggJHB1YmxpY19hdHRzDQog ICAgICAgICAgICAgICAgICAgICAgICAgICwgJHRoaW5nID8gJHRoaW5nIDogJzxwPjx0eHA6 dGV4dCBpdGVtPSJsb2dnZWRfaW5fYXMiIC8+IDx0eHA6Y2JlX2Zyb250YXV0aF93aG9pcyB3 cmFwdGFnPSJzcGFuIiBjbGFzcz0idXNlciIvPjwvcD4nDQogICAgICAgICAgICAgICAgICAg ICAgICAgICkgKSA7DQoNCn0NCg0KLy8gLS0gU3RhbmRhbG9uZSBsb2dpbiBmb3JtDQovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX2xvZ2luKCAkYXR0cywgJHRo aW5nID0gJycgKQ0Kew0KICAgIHJldHVybiggX2NiZV9mYV9pbm91dF9wcm9jZXNzKCAnbG9n aW4nLCAkYXR0cywgJHRoaW5nICkgKSA7DQp9DQoNCi8vIC0tIFN0YW5kYWxvbmUgbG9nb3V0 IGZvcm0gLyBsaW5rDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRo X2xvZ291dCggJGF0dHMsICR0aGluZyA9ICcnICkNCnsNCiAgICByZXR1cm4oIF9jYmVfZmFf aW5vdXRfcHJvY2VzcyggJ2xvZ291dCcsICRhdHRzLCAkdGhpbmcgKSApIDsNCn0NCg0KLy8g LS0gUHJvdGVjdCBwYXJ0cyBmcm9tIG5vbi1jb25uZWN0ZWQgdmlld2Vycw0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9wcm90ZWN0KCAkYXR0cywgJHRoaW5n ICkNCnsNCiAgICAkcHVibGljX2F0dHMgPSBsQXR0cyggYXJyYXkoICdsaW5rJyAgICAgID0+ ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbGlua2xhYmVsJyA9PiAn Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3RhcmdldCcgICAgPT4gJ19z ZWxmJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ25hbWUnICAgICAgPT4g JycNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdsZXZlbCcgICAgID0+ICcn DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICwg JGF0dHMgKSA7DQoNCiAgICBpZiggJHB1YmxpY19hdHRzWyd0YXJnZXQnXSA9PSAnX2dldCcg KQ0KICAgICAgICAkcHVibGljX2F0dHNbJ3RhcmdldCddID0gJ19zZWxmJyA7DQoNCiAgICBy ZXR1cm4oIGNiZV9mcm9udGF1dGgoIGFycmF5KCAnbG9naW5faW52aXRlJyA9PiAnJyAsICds b2dvdXRfaW52aXRlJyA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs ICdzaG93X2xvZ2luJyAgID0+ICcwJywgJ3Nob3dfbG9nb3V0JyAgID0+ICcwJw0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAsICdzaG93X3Jlc2V0JyAgID0+ICcwJywgJ3No b3dfY2hhbmdlJyAgID0+ICcwJyApICsgJHB1YmxpY19hdHRzDQogICAgICAgICAgICAgICAg ICAgICAgICAgLCAkdGhpbmcNCiAgICAgICAgICAgICAgICAgICAgICAgICApICkgOw0KfQ0K ZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9pZl9sb2dnZWQoICRhdHRzLCAkdGhpbmcgKQ0Kew0K ICAgIHJldHVybiggY2JlX2Zyb250YXV0aF9wcm90ZWN0KCAkYXR0cywgJHRoaW5nICkgKSA7 DQp9DQpmdW5jdGlvbiBjYmVfZnJvbnRhdXRoX2lmX2Nvbm5lY3RlZCggJGF0dHMsICR0aGlu ZyApDQp7DQogICAgcmV0dXJuKCBjYmVfZnJvbnRhdXRoX3Byb3RlY3QoICRhdHRzLCAkdGhp bmcgKSApIDsNCn0NCg0KLyogPT0gRWxlbWVudHMgPT0gKi8NCg0KLy8gLS0gR2VuZXJhdGVz IGlucHV0IGZpZWxkIGZvciBuYW1lDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVf ZnJvbnRhdXRoX2xvZ25hbWUoICRhdHRzLCAkZGVmdmFsdWU9bnVsbCApDQp7DQogICAgcmV0 dXJuKCBfY2JlX2ZhX2lkZW50aXR5KCAnbmFtZScsICRhdHRzLCAkZGVmdmFsdWUgKSApIDsN Cn0NCg0KLy8gLS0gR2VuZXJhdGVzIGlucHV0IGZpZWxkIGZvciBwYXNzd29yZA0KLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9wYXNzd29yZCggJGF0dHMsICRk ZWZ2YWx1ZT1udWxsICkNCnsNCiAgICByZXR1cm4oIF9jYmVfZmFfaWRlbnRpdHkoICdwYXNz d29yZCcsICRhdHRzLCAkZGVmdmFsdWUgKSApIDsNCn0NCg0KLy8gLS0gR2VuZXJhdGVzIGNo ZWNrYm94IGZvciBzdGF5IChjb25uZWN0ZWQgb24gdGhpcyBicm93c2VyKQ0KLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF9zdGF5KCAkYXR0cyApDQp7DQogICAg ZXh0cmFjdCggbEF0dHMoIGFycmF5ICggJ2xhYmVsJyA9PiBfY2JlX2ZhX2dUeHQoICdzdGF5 X2xvZ2dlZF9pbicgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAg ICAgICAgICArIF9jYmVfZmFfZm9ybWF0KCkNCiAgICAgICAgICAgICAgICAgICwgJGF0dHMN CiAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgKSA7DQoNCiAgICAkb3V0ICA9IGNo ZWNrYm94KCdwX3N0YXknLCAxLCBjcygndHhwX2xvZ2luJyksICcnLCAnc3RheScpIDsNCiAg ICAkb3V0IC49ICc8bGFiZWwgZm9yPSJzdGF5Ij4nLiRsYWJlbC4nPC9sYWJlbD4nIDsNCiAg ICByZXR1cm4oIGRvVGFnKCAkb3V0LCAkd3JhcHRhZywgJGNsYXNzICkgKSA7DQp9DQoNCi8v IC0tIEdlbmVyYXRlcyBzdWJtaXQgYnV0dG9uDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlv biBjYmVfZnJvbnRhdXRoX3N1Ym1pdCggJGF0dHMgKQ0Kew0KICAgICRwdWJsaWNfYXR0cyA9 IGxBdHRzKCBhcnJheSAoICdsYWJlbCcgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLCAndHlwZScgID0+ICdsb2dpbicNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgKyBfY2JlX2ZhX2Zvcm1hdCgp DQogICAgICAgICAgICAgICAgICAgICAgICAsICRhdHRzDQogICAgICAgICAgICAgICAgICAg ICAgICApIDsNCg0KICAgIHJldHVybiggX2NiZV9mYV9idXR0b24oICRwdWJsaWNfYXR0cyAp ICkgOw0KfQ0KDQovLyAtLSBEaXNwbGF5cyBjb25uZWN0ZWQgdXNlcidzIGluZm9ybWF0aW9u cw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aF93aG9pcyggJGF0 dHMgKQ0Kew0KICAgIGV4dHJhY3QoIGxBdHRzKCBhcnJheSAoICd0eXBlJyAgICAgICA9PiAn bmFtZScNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnZm9ybWF0JyAgICAgPT4gJycN CiAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICArIF9j YmVfZmFfZm9ybWF0KCkNCiAgICAgICAgICAgICAgICAgICwgJGF0dHMNCiAgICAgICAgICAg ICAgICAgICkNCiAgICAgICAgICAgKSA7DQoNCiAgICAkdHlwZXMgPSBkb19saXN0KCAkdHlw ZSApIDsNCiAgICAkd2hvaXMgPSBjYmVfZnJvbnRhdXRoKCBhcnJheSggJ2luaXQnID0+ICcw JywgJ3ZhbHVlJyA9PiAkdHlwZXMgKSApIDsNCg0KICAgIGlmKCBpc3NldCggJHdob2lzWyds YXN0X2FjY2VzcyddICkgKQ0KICAgIHsNCiAgICAgICAgZ2xvYmFsICRkYXRlZm9ybWF0IDsN CiAgICAgICAgJHdob2lzWydsYXN0X2FjY2VzcyddID0gc2FmZV9zdHJmdGltZSggJGZvcm1h dCA/ICRmb3JtYXQgOiAkZGF0ZWZvcm1hdCwgc3RydG90aW1lKCAkd2hvaXNbJ2xhc3RfYWNj ZXNzJ10gKSApIDsNCiAgICB9DQoNCiAgICByZXR1cm4oIGRvV3JhcCggJHdob2lzLCAkd3Jh cHRhZywgJGJyZWFrLCAkY2xhc3MsICRicmVha2NsYXNzICkgKSA7DQp9DQoNCi8qID09IE9m Zi10b3BpYywgYnV0IHVzZWZ1bCA9PSAqLw0KDQovLyAtLSBHZW5lcmF0ZXMgYSBsaW5rLCBu b3JtYWwgb3Igd2l0aCBhIEdFVCBwYXJhbWV0ZXINCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0 aW9uIGNiZV9mcm9udGF1dGhfbGluayggJGF0dHMgKQ0KeyAgIC8vICRjbGFzcyBhcHBsaWVz IHRvIGFuY2hvciBpZiBubyAkd3JhcHRhZyBzdXBwbGllZA0KICAgIGV4dHJhY3QoIGxBdHRz KCBhcnJheSAoICdsYWJlbCcgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICwg J2xpbmsnICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCAndGFyZ2V0JyA9 PiAnX3NlbGYnDQogICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAg ICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0KICAg ICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICRsaW5rID0gZG9TdHJp cFRhZ3MoICRsaW5rICkgOw0KICAgICRvdXQgPSBfY2JlX2ZhX2xpbmsoIGNvbXBhY3QoICds aW5rJywgJ3RhcmdldCcgKSApIDsNCiAgICAkb3V0ID0gaHJlZiggJGxhYmVsLCAkb3V0DQog ICAgICAgICAgICAgICAsICgoJHRhcmdldCAhPT0gJ19nZXQnKSAgPyAnIHRhcmdldD0iJy4k dGFyZ2V0LiciJyA6ICcnKQ0KICAgICAgICAgICAgICAgLiAoKCEkd3JhcHRhZyAmJiAkY2xh c3MpID8gJyBjbGFzcz0iJy4kY2xhc3MuJyInICAgOiAnJykgKSA7DQogICAgcmV0dXJuKCBk b1RhZyggJG91dCwgJHdyYXB0YWcsICRjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBSZXR1cm5z IHBhdGggdG8gdGV4dHBhdHRlcm4gYmFja2VuZA0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rp b24gY2JlX2Zyb250YXV0aF9iYWNrZW5kKCkNCnsNCi8vICAgICAgICAgICAgLiBzdWJzdHIo c3RycmNocih0eHBhdGgsICIvIiksIDEpDQogICAgcmV0dXJuKCBwcmVnX3JlcGxhY2UoJ3wv LyR8JywnLycsIHJodS4nLycpDQogICAgICAgICAgICAuIHN1YnN0cihzdHJyY2hyKHR4cGF0 aCwgRFMpLCAxKQ0KICAgICAgICAgICAgLiAnL2luZGV4LnBocCcNCiAgICAgICAgICAgKSA7 DQp9DQoNCi8vIC0tIFJldHVybnMgYnV0dG9uIChzdGFuZGFsb25lKSBvciBsaW5rIHRvIGVk aXQgY3VycmVudCBhcnRpY2xlDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBjYmVfZnJv bnRhdXRoX2VkaXRfYXJ0aWNsZSggJGF0dHMgKQ0Kew0KICAgIGdsb2JhbCAkdGhpc2FydGlj bGUgOw0KICAgIGFzc2VydF9hcnRpY2xlKCkgOw0KDQogICAgZXh0cmFjdCggbEF0dHMoIGFy cmF5ICggJ2xhYmVsJyA9PiBfY2JlX2ZhX2dUeHQoICdlZGl0JyApDQogICAgICAgICAgICAg ICAgICAgICAgICAgICwgJ3R5cGUnICA9PiAnYnV0dG9uJw0KICAgICAgICAgICAgICAgICAg ICAgICAgICApDQogICAgICAgICAgICAgICAgICArIF9jYmVfZmFfZm9ybWF0KCkNCiAgICAg ICAgICAgICAgICAgICwgJGF0dHMNCiAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAg KSA7DQoNCiAgICAkcGF0aF9wYXJ0cyA9IGFycmF5KCAnZXZlbnQnICAgICAgPT4gJ2FydGlj bGUnDQogICAgICAgICAgICAgICAgICAgICAgICwgJ3N0ZXAnICAgICAgID0+ICdlZGl0Jw0K ICAgICAgICAgICAgICAgICAgICAgICAsICdJRCcgICAgICAgICA9PiAkdGhpc2FydGljbGVb J3RoaXNpZCddDQogICAgICAgICAgICAgICAgICAgICAgICkgOw0KDQogICAgaWYoICR0eXBl ID09ICdidXR0b24nICkNCiAgICB7DQogICAgICAgICRvdXQgPSBhcnJheSgpIDsNCg0KICAg ICAgICBmb3JlYWNoKCAkcGF0aF9wYXJ0cyBhcyAkcGFydCA9PiAkdmFsdWUgKQ0KICAgICAg ICAgICAgJG91dFtdID0gaElucHV0KCAkcGFydCwgJHZhbHVlICkgOw0KDQogICAgICAgICRv dXRbXSA9IGNiZV9mcm9udGF1dGhfc3VibWl0KCBhcnJheSggJ2xhYmVsJyA9PiAkbGFiZWws ICd0eXBlJyA9PiAnJywgJ2NsYXNzJyA9PidwdWJsaXNoJyApICkgOw0KDQogICAgICAgICBy ZXR1cm4oIF9jYmVfZmFfZm9ybSggYXJyYXkoICdzdGF0ZW1lbnRzJyA9PiBqb2luKCBuLCAk b3V0ICkgKSApICkgOw0KICAgIH0NCiAgICBlbHNlaWYoICR0eXBlID09ICdsaW5rJyApDQog ICAgew0KICAgICAgICAkcGF0aF9wYXJ0c1sgJ190eHBfdG9rZW4nIF0gPSBmb3JtX3Rva2Vu KCkgOw0KICAgICAgICBhcnJheV93YWxrKCAkcGF0aF9wYXJ0cywgY3JlYXRlX2Z1bmN0aW9u KCAnJiR2LCAkaycsICckdiA9ICRrLiI9Ii4kdiA7JyApICkgOw0KICAgICAgICAkbGluayA9 IGNiZV9mcm9udGF1dGhfYmFja2VuZCgpIC4gJz8nIC4gam9pbiggJyYnLCAkcGF0aF9wYXJ0 cyApIDsNCg0KICAgICAgICByZXR1cm4oIGNiZV9mcm9udGF1dGhfbGluayggY29tcGFjdCgg J2xpbmsnLCAnbGFiZWwnICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr IF9jYmVfZmFfZm9ybWF0KCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp DQogICAgICAgICAgICAgICkgOw0KICAgIH0NCiAgICBlbHNlDQogICAgICAgIHJldHVybiA7 DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KICoqDQogKiogVXRpbGl0aWVzIChraW5kYSBwcml2YXRlIGZ1bmN0aW9ucykNCiAq Kg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lw0KDQovLyAtLSBHZXRzIGFuZCByZXR1cm5zIGxvY2FsIGxhbmcgc3RyaW5ncyAodHhwIGFk bWluICsgcGx1Z2luIHNwZWNpZmljcykNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9j YmVfZmFfZ1R4dCggJHRleHQsICRhdHRzID0gYXJyYXkoKSApDQp7DQogICAgc3RhdGljICRh VGV4dHMgPSBhcnJheSgpIDsNCiAgICBpZiggISAkYVRleHRzICkNCiAgICAgICAgJGFUZXh0 cyA9IF9jYmVfZmFfbGFuZygpIDsNCg0KICAgIHJldHVybiggaXNzZXQoICRhVGV4dHNbICR0 ZXh0IF0gKSA/IHN0cnRyKCAkYVRleHRzWyAkdGV4dCBdLCAkYXR0cyApIDogZ1R4dCggJHRl eHQgKSApIDsNCn0NCg0KLy8gLS0gQ29tbW9uIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMN Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfZm9ybWF0KCkNCnsNCiAgICBy ZXR1cm4oIGFycmF5KCAnd3JhcHRhZycgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgLCAn Y2xhc3MnICAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgLCAnYnJlYWsnICAgICAgPT4g JycNCiAgICAgICAgICAgICAgICAgLCAnYnJlYWtjbGFzcycgPT4gJycNCiAgICAgICAgICAg ICAgICAgKQ0KICAgICAgICAgICkgOw0KfQ0KDQovLyAtLSBHbG9iYWwgaW5pdGlhbGlzYXRp b25zIChyZWRpcmVjdCwgaW52aXRlLCBsYWJlbCwgbG9naW53aXRoKQ0KLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9pbml0KCAkYXR0cywgJHR5cGUgKQ0Kew0KICAgIGV4 dHJhY3QoIGxBdHRzKCBhcnJheSAoICdmb3InID0+ICcnLCAndmFsdWUnID0+ICcnICksICRh dHRzICkgKSA7DQogICAgaWYoICRmb3IgPT09ICcnICkNCiAgICAgICAgJGZvciA9ICdsb2dp bicgOw0KICAgICRpbml0X2ZvciA9IGRvX2xpc3QoICRmb3IgKSA7DQoNCiAgICBpZiggKCRp bmRleD1hcnJheV9zZWFyY2goICdsb2dnZWQnLCAkaW5pdF9mb3IgKSkgIT09IGZhbHNlICkN CiAgICAgICAgJGluaXRfZm9yWyAkaW5kZXggXSA9ICdsb2dvdXQnIDsNCg0KICAgIGFycmF5 X3dhbGsoICRpbml0X2ZvciwgY3JlYXRlX2Z1bmN0aW9uKCAnJiR2LCAkaywgJHAnLCAnJHYg PSAkdi4iXyIuJHAgOycpLCAkdHlwZSApIDsNCg0KICAgIGlmKCAoJGluaXRfbGlzdCA9IEBh cnJheV9jb21iaW5lKCAkaW5pdF9mb3IsIGRvX2xpc3QoICR2YWx1ZSApICkpID09PSBmYWxz ZSApDQogICAgICAgIHJldHVybiA7DQoNCiAgICBjYmVfZnJvbnRhdXRoKCBhcnJheSggJ2lu aXQnID0+ICcxJyApICsgJGluaXRfbGlzdCApIDsNCiAgICByZXR1cm4gOw0KfQ0KDQovLyAt LSBSZXRyaWV2ZSB1c2VyJ3MgaW5mbywgaWYgY29ubmVjdGVkIA0KLy8gLS0gdGV4dHBhdHRl cm4vbGliL3R4cF9taXNjLnBocCAtIGlzX2xvZ2dlZF9pbigpIGFzIGEgc3RhcnRpbmcgcG9p bnQNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfbG9nZ2VkX2luKCAmJHVz ZXIsICR0eHBfdXNlciA9IG51bGwgKQ0Kew0KICAgIGlmKCAkdHhwX3VzZXIgIT09IG51bGwg KQ0KICAgICAgICAkbmFtZSA9ICR0eHBfdXNlciA7DQogICAgZWxzZWlmKCAhKCRuYW1lID0g c3Vic3RyKGNzKCd0eHBfbG9naW5fcHVibGljJyksIDEwKSkgKQ0KICAgIHsNCiAgICAgICAg JHVzZXJbICduYW1lJyBdID0gZmFsc2UgOw0KICAgICAgICByZXR1cm4oIGZhbHNlICkgOw0K ICAgIH0NCg0KICAgICRycyA9IHNhZmVfcm93KCdub25jZSwgbmFtZSwgUmVhbE5hbWUsIGVt YWlsLCBwcml2cywgbGFzdF9hY2Nlc3MnLCAndHhwX3VzZXJzJywgIm5hbWUgPSAnIi5kb1Ns YXNoKCRuYW1lKS4iJyIpOw0KDQogICAgaWYoICRycyAmJiAoJHR4cF91c2VyICE9PSBudWxs IHx8IHN1YnN0cihtZDUoJHJzWydub25jZSddKSwgLTEwKSA9PT0gc3Vic3RyKGNzKCd0eHBf bG9naW5fcHVibGljJyksIDAsIDEwKSApICkNCiAgICB7DQogICAgICAgIHVuc2V0KCAkcnNb ICdub25jZScgXSApIDsNCiAgICAgICAgJHVzZXIgPSAkcnMgOw0KICAgICAgICByZXR1cm4o IHRydWUgKSA7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAgICR1c2VyWyAnbmFt ZScgXSA9IGZhbHNlIDsNCiAgICAgICAgcmV0dXJuKCBmYWxzZSApIDsNCiAgICB9DQp9DQoN Ci8vIC0tIENoZWNrcyBjdXJyZW50IHVzZXIgYWdhaW5zdCByZXF1aXJlZCBwcml2aWxlZ2Vz DQovLyAtLSBUaGFua3MgdG8gUnV1ZCBWYW4gTWVsaWNrJ3MgcnZtX3ByaXZpbGVnZWQgKGh0 dHA6Ly92YW5tZWxpY2suY29tL3R4cC8pDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBf Y2JlX2ZhX3ByaXZpbGVnZWQoICRyX25hbWUsICRyX2xldmVsLCAkdV9uYW1lLCAkdV9sZXZl bCApDQp7DQogICAgJGNoa19uYW1lICA9ICEkcl9uYW1lICB8fCBpbl9hcnJheSggJHVfbmFt ZSAsIGRvX2xpc3QoICRyX25hbWUgICkgKSA7DQogICAgJGNoa19sZXZlbCA9ICEkcl9sZXZl bCB8fCBpbl9hcnJheSggJHVfbGV2ZWwsIGRvX2xpc3QoICRyX2xldmVsICkgKSA7DQogICAg cmV0dXJuKCAkY2hrX25hbWUgJiYgJGNoa19sZXZlbCApIDsNCn0NCg0KLy8gLS0gR2VuZXJh dGVzIGlucHV0IGZpZWxkIGZvciBuYW1lIG9yIHBhc3N3b3JkDQovLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpmdW5jdGlvbiBfY2JlX2ZhX2lkZW50aXR5KCAkZmllbGQsICRhdHRzLCAkdmFsdWU9bnVs bCApDQp7DQogICAgZXh0cmFjdCggbEF0dHMoIGFycmF5ICggJ2xhYmVsJyAgICAgPT4gX2Ni ZV9mYV9nVHh0KCAkZmllbGQgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAsICdsYWJl bF9zZngnID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAg ICAgICAgICsgX2NiZV9mYV9mb3JtYXQoKQ0KICAgICAgICAgICAgICAgICAgLCAkYXR0cw0K ICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICApIDsNCg0KICAgICQkZmllbGQgPSAn JyA7DQogICAgaWYoICRmaWVsZCA9PSAnbmFtZScgJiYgY3MoJ2NiZV9mcm9udGF1dGhfbG9n aW4nKSAhPSAnJyApDQogICAgICAgIGxpc3QoJG5hbWUpID0gZXhwbG9kZSggJywnLCBjcygn Y2JlX2Zyb250YXV0aF9sb2dpbicpICkgOw0KDQogICAgJG91dCA9IGFycmF5KCkgOw0KICAg ICRvdXRbXSA9ICc8bGFiZWwgZm9yPSInLiRmaWVsZC4kbGFiZWxfc2Z4LiciPicuJGxhYmVs Lic8L2xhYmVsPicgOw0KICAgICRvdXRbXSA9ICBmSW5wdXQoICgkZmllbGQgPT0gJ25hbWUn KSAgICA/ICd0ZXh0JyAgICAgOiAncGFzc3dvcmQnDQogICAgICAgICAgICAgICAgICAgICwo KCRmaWVsZCA9PSAnbmFtZScpICAgID8gJ3BfdXNlcmlkJyA6ICdwX3Bhc3N3b3JkJykgLiAk bGFiZWxfc2Z4DQogICAgICAgICAgICAgICAgICAgICwgKCRmaWVsZCA9PSAnbmFtZScpICAg ID8gJG5hbWUgICAgICA6ICgkdmFsdWUgIT09IG51bGwgPyAkdmFsdWUgOiAnJykNCiAgICAg ICAgICAgICAgICAgICAgLCAoISR3cmFwdGFnICYmICRjbGFzcykgPyAkY2xhc3MgICAgIDog JycNCiAgICAgICAgICAgICAgICAgICAgLCAnJywgJycsICcnLCAnJywgJGZpZWxkLiRsYWJl bF9zZnggKSA7DQoNCiAgICByZXR1cm4oIGRvV3JhcCggJG91dCwgJHdyYXB0YWcsICRicmVh aywgJGNsYXNzLCAkYnJlYWtjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBQcmVwYXJlIGNhbGwg dG8gY2JlX2Zyb250YXV0aCgpIGZvciBsb2dpbi9sb2dvdXQgZm9ybS9saW5rDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQpmdW5jdGlvbiBfY2JlX2ZhX2lub3V0X3Byb2Nlc3MoICRpbm91dCwgJGF0 dHMsICR0aGluZyA9ICcnICkNCnsNCiAgICAkcGx1c19hdHRzID0gKCRpbm91dCA9PSAnbG9n b3V0JyApDQogICAgICAgICAgICAgICA/IGFycmF5KCAndHlwZScgICAgICAgID0+ICdidXR0 b24nDQogICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19jaGFuZ2UnID0+ICcxJyAgICAg ICkNCiAgICAgICAgICAgICAgIDogYXJyYXkoICdzaG93X3N0YXknICAgPT4gJzAnDQogICAg ICAgICAgICAgICAgICAgICAgLCAnc2hvd19yZXNldCcgID0+ICcxJyAgICAgICkgOw0KICAg ICRwdWJsaWNfYXR0cyA9IGxBdHRzKCBhcnJheSAoICdpbnZpdGUnICAgICA9PiBfY2JlX2Zh X2dUeHQoICgkaW5vdXQgPT0gJ2xvZ2luJykgPyAnbG9naW5fdG9fdGV4dHBhdHRlcm4nIA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnJyApDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICwgJ3RhZ19pbnZpdGUnID0+ICcnDQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICwgJ2xhYmVsJyAgICAgID0+IF9jYmVfZmFfZ1R4dCggKCRpbm91 dCA9PSAnbG9naW4nKSA/ICdsb2dfaW5fYnV0dG9uJw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAnbG9nb3V0JyApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ2Zvcm0nICAgICAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ3RhZ19lcnJvcicgID0+ICdzcGFuJywgJ2NsYXNzX2Vycm9yJyA9PiAnY2JlX2ZhX2Vy cm9yJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAg ICAgICAgICAgICArICRwbHVzX2F0dHMgKyBfY2JlX2ZhX2Zvcm1hdCgpDQogICAgICAgICAg ICAgICAgICAgICAgICAsICRhdHRzICkgOw0KDQogICAgaWYoIGlzc2V0KCAkcHVibGljX2F0 dHNbJ2ludml0ZSddICkgKQ0KICAgIHsNCiAgICAgICAgJHB1YmxpY19hdHRzWyRpbm91dC4n X2ludml0ZSddID0gJHB1YmxpY19hdHRzWydpbnZpdGUnXSA7DQogICAgICAgIHVuc2V0KCAk cHVibGljX2F0dHNbJ2ludml0ZSddICkgOw0KICAgIH0NCiAgICBpZiggaXNzZXQoICRwdWJs aWNfYXR0c1snbGFiZWwnXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5v dXQuJ19sYWJlbCddID0gJHB1YmxpY19hdHRzWydsYWJlbCddIDsNCiAgICAgICAgdW5zZXQo ICRwdWJsaWNfYXR0c1snbGFiZWwnXSApIDsNCiAgICB9DQogICAgaWYoIGlzc2V0KCAkcHVi bGljX2F0dHNbJ2Zvcm0nXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5v dXQuJ19mb3JtJ10gPSAkcHVibGljX2F0dHNbJ2Zvcm0nXSA7DQogICAgICAgIHVuc2V0KCAk cHVibGljX2F0dHNbJ2Zvcm0nXSApIDsNCiAgICB9DQogICAgaWYoIGlzc2V0KCAkcHVibGlj X2F0dHNbJ3R5cGUnXSApICkNCiAgICB7DQogICAgICAgICRwdWJsaWNfYXR0c1skaW5vdXQu J190eXBlJ10gPSAkcHVibGljX2F0dHNbJ3R5cGUnXSA7DQogICAgICAgIHVuc2V0KCAkcHVi bGljX2F0dHNbJ3R5cGUnXSApIDsNCiAgICB9DQogICAgaWYoICR0aGluZyApDQogICAgICAg ICRwdWJsaWNfYXR0c1skaW5vdXQuJ19mb3JtJ10gPSAkdGhpbmcgOw0KDQogICAgJHNob3cg PSAoJGlub3V0ID09ICdsb2dpbicpID8gJ2xvZ291dCcgOiAnbG9naW4nIDsNCiAgICByZXR1 cm4oIGNiZV9mcm9udGF1dGgoIGFycmF5KCAnc2hvd18nLiRzaG93ID0+ICcwJyApICsgJHB1 YmxpY19hdHRzICkgKSA7DQp9DQoNCi8vIC0tIEVuY2xvc2VzIHN0YXRlbWVudHMgaW4gYSBz dWJtaXQgZm9ybQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9mb3JtKCAk YXR0cyApDQp7DQogICAgZXh0cmFjdCggbEF0dHMoIGFycmF5KCAnc3RhdGVtZW50cycgPT4g JycNCiAgICAgICAgICAgICAgICAgICAgICAgICAsICdhY3Rpb24nICAgICA9PiBjYmVfZnJv bnRhdXRoX2JhY2tlbmQoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICwgJ21ldGhvZCcg ICAgID0+ICdwb3N0Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAg ICAgICAgICwgJGF0dHMNCiAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgKSA7DQoN CiAgICBpZiggISAkc3RhdGVtZW50cyApDQogICAgICAgIHJldHVybiA7DQoNCiAgICByZXR1 cm4oICc8Zm9ybSBhY3Rpb249IicuJGFjdGlvbi4nIiBtZXRob2Q9IicuJG1ldGhvZC4nIj4n DQogICAgICAgICAgICAubi4gJHN0YXRlbWVudHMNCiAgICAgICAgICAgIC5uLiAnPC9mb3Jt PicgKSA7DQp9DQoNCi8vIC0tIEdlbmVyYXRlcyBhIGJ1dHRvbiAocHJpbWFyeSBwdXJwb3Nl IDogbG9naW4vbG9nb3V0IGJ1dHRvbikNCi8vIC0tIEV4dGVuZGVkIHRvICdlZGl0JyAoanVz dCBpbiBjYXNlKSAtIDAuNw0KLy8gLS0gTm90ZTogcHJvdmlkaW5nIGEgbGFiZWwgYW5kIHNl dHRpbmcgdHlwZSB0byBibGFuayB3b3JrcyB0b28NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0 aW9uIF9jYmVfZmFfYnV0dG9uKCAkYXR0cyApDQp7DQogICAgZXh0cmFjdCggJGF0dHMgKSA7 IC8vICdsYWJlbCcsICd0eXBlJywgJ3dyYXB0YWcnLCBjbGFzcycNCg0KICAgIGlmKCAhICRs YWJlbCBhbmQgISAoJGxhYmVsID0gY2JlX2Zyb250YXV0aCggYXJyYXkoICdpbml0JyA9PiAn MCcsICd2YWx1ZScgPT4gJHR5cGUuJ19sYWJlbCcgKSApKSApDQogICAgICAgICRsYWJlbCA9 IF9jYmVfZmFfZ1R4dCggKCR0eXBlID09ICdsb2dvdXQnIHx8ICR0eXBlID09ICdlZGl0JyAp ID8gJHR5cGUgOiAnbG9nX2luX2J1dHRvbicgKSA7DQoNCiAgICAkb3V0ID0gZklucHV0KCAn c3VibWl0JywgJycsICRsYWJlbCwgKCEkd3JhcHRhZyAmJiAkY2xhc3MpID8gJGNsYXNzIDog JycgKSA7DQogDQogICAgaWYoICR0eXBlID09ICdsb2dvdXQnICkNCiAgICAgICAgJG91dCAu PSBoSW5wdXQoICdwX2xvZ291dCcsICcxJyApIDsNCiAgICBlbHNlaWYoICR0eXBlID09ICdl ZGl0JyApDQogICAgICAgICRvdXQgLj0gdElucHV0KCkgOw0KDQogICAgcmV0dXJuKCBkb1Rh ZyggJG91dCwgJHdyYXB0YWcsICRjbGFzcyApICkgOw0KfQ0KDQovLyAtLSBHZW5lcmF0ZXMg YSBsaW5rIChwcmltYXJ5IHB1cnBvc2UgOiBsb2dvdXQgbGluaykNCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCmZ1bmN0aW9uIF9jYmVfZmFfbGluayggJGF0dHMgKQ0Kew0KICAgIGV4dHJhY3QoICRh dHRzICkgOyAvLyAnbGluaycsICd0YXJnZXQnDQogICAgDQogICAgaWYoICR0YXJnZXQgPT0g J19nZXQnICkNCiAgICB7DQogICAgICAgICR1cmkgPSBzZXJ2ZXJTZXQoICdSRVFVRVNUX1VS SScgICkgOw0KICAgICAgICAkcXVzID0gc2VydmVyU2V0KCAnUVVFUllfU1RSSU5HJyApIDsN Cg0KICAgICAgICAkbGVuX3VyaSA9IHN0cmxlbiggJHVyaSApIDsNCiAgICAgICAgJGxlbl9x dXMgPSBzdHJsZW4oICRxdXMgKSA7DQoNCiAgICAgICAgJHVyaSA9ICgkbGVuX3F1cyA+IDAp ID8gc3Vic3RyKCAkdXJpLCAwLCAkbGVuX3VyaS0kbGVuX3F1cy0xICkgOiAkdXJpIDsNCiAg ICAgICAgJHF1cyA9ICRxdXMgLiAoJGxlbl9xdXMgPiAwID8gJyYnIDogJycpIC4gJGxpbmsg Ow0KDQogICAgICAgICRvdXQgPSAoc3Vic3RyKCAkdXJpLCAtMSApICE9PSAnPycgKSA/ICgk dXJpLic/Jy4kcXVzKSA6ICgkdXJpLiRxdXMpIDsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsN CiAgICAgICAgJG91dCA9ICRsaW5rIDsNCiAgICB9DQoNCiAgICByZXR1cm4oICRvdXQgKSA7 DQp9DQoNCi8vIC0tIEdlbmVyYXRlcyBsb2dpbi9sb2dvdXQgZm9ybSBvciBsb2dvdXQgbGlu aw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9mYV9pbm91dCggJGF0dHMgKQ0K ew0KICAgIGV4dHJhY3QoICRhdHRzICkgOw0KDQogICAgJG91dCA9IGFycmF5KCkgOw0KDQog ICAgaWYoICRmb3JtICkNCiAgICAgICAgJG91dFtdID0gKCRmPUBmZXRjaF9mb3JtKCAkZm9y bSApKSA/IHBhcnNlKCAkZiApIDogcGFyc2UoICRmb3JtICkgOyAvLyBsYWJlbCB0YWtlcyBw cmVjZWRlbmNlIGhlcmUNCiAgICBlbHNlDQogICAgew0KICAgICAgICBpZiggaXNzZXQoICRz aG93X3N0YXkgKSApDQogICAgICAgIHsgICAvLyBsb2dpbg0KDQogICAgICAgICAgICAkb3V0 W10gPSBjYmVfZnJvbnRhdXRoX2xvZ25hbWUoICBhcnJheSggJ2NsYXNzJyA9PiAnZWRpdCcp DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICBjb21wYWN0 KCAnYnJlYWsnLCAnYnJlYWtjbGFzcycgKSApIDsNCiAgICAgICAgICAgICRvdXRbXSA9IGNi ZV9mcm9udGF1dGhfcGFzc3dvcmQoIGFycmF5KCAnY2xhc3MnID0+ICdlZGl0JykNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBhY3QoICdicmVh aycsICdicmVha2NsYXNzJyApICkgOw0KICAgICAgICAgICAgaWYoICRzaG93X3N0YXkgKQ0K ICAgICAgICAgICAgICAgICRvdXRbXSA9IGNiZV9mcm9udGF1dGhfc3RheSggYXJyYXkoKSAp IDsNCg0KICAgICAgICAgICAgJG91dFtdID0gY2JlX2Zyb250YXV0aF9zdWJtaXQoIGFycmF5 KCAnbGFiZWwnID0+ICRsYWJlbCwgJ2NsYXNzJyA9PiAncHVibGlzaCcgKSApIDsNCg0KICAg ICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgeyAgIC8vIGxvZ291dA0KICAgICAgICAg ICAgJG91dFtdID0gKCR0eXBlID09ICdidXR0b24nKQ0KICAgICAgICAgICAgICAgICAgID8g Y2JlX2Zyb250YXV0aF9zdWJtaXQoIGFycmF5KCAnbGFiZWwnID0+ICRsYWJlbCwgJ3R5cGUn ID0+ICdsb2dvdXQnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsICdjbGFzcycgPT4gJGNsYXNzID8gJGNsYXNzIDogJ3B1Ymxpc2gnICkgKQ0K ICAgICAgICAgICAgICAgICAgIDogY2JlX2Zyb250YXV0aF9saW5rKCBhcnJheSggJ2xhYmVs JyA9PiAkbGFiZWwsICdsaW5rJyA9PiAnbG9nb3V0PTEnLCAndGFyZ2V0JyA9PiAnX2dldCcN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdjbGFz cycgPT4gJGNsYXNzID8gJGNsYXNzIDogJ3B1Ymxpc2gnICkgKSA7DQogICAgICAgIH0NCiAg ICB9DQoNCi8vICAgICRvdXQgPSBqb2luKCBuLCAkb3V0ICkgOw0KICAgICRvdXQgPSBkb1dy YXAoICRvdXQsICR3cmFwdGFnLCAkYnJlYWssICcnLCAkYnJlYWtjbGFzcyApIDsNCiAgICBy ZXR1cm4oIChpc3NldCggJHR5cGUgKSAmJiAkdHlwZT09J2xpbmsnKQ0KICAgICAgICAgICAg PyAkb3V0DQogICAgICAgICAgICA6IF9jYmVfZmFfZm9ybSggYXJyYXkoICdzdGF0ZW1lbnRz JyA9PiAkb3V0LCAnYWN0aW9uJyA9PiBwYWdlX3VybCggYXJyYXkoKSApICkgKSApIDsNCn0N Cg0KLyogPT0gQmFja2JvbmUgPT0gKi8NCg0KLy8gLS0gQ29va2llIG1lY2hhbmlzbSAtIGZy b20gdGV4dHBhdHRlcm4vaW5jbHVkZS90eHBfYXV0aC5waHAgLSBkb1R4cFZhbGlkYXRlKCkN Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVfZmFfYXV0aCggJHJlZGlyLCAkcF9s b2dvdXQsICRwX3VzZXJpZD0nJywgJHBfcGFzc3dvcmQ9JycsICRwX3N0YXk9JycgKQ0Kew0K ICAgIGRlZmluZWQoJ0xPR0lOX0NPT0tJRV9IVFRQX09OTFknKSB8fCBkZWZpbmUoJ0xPR0lO X0NPT0tJRV9IVFRQX09OTFknLCB0cnVlKTsNCiAgICAkaGFzaCAgPSBtZDUodW5pcWlkKG10 X3JhbmQoKSwgVFJVRSkpOw0KICAgICRub25jZSA9IG1kNSgkcF91c2VyaWQucGFjaygnSCon LCRoYXNoKSk7DQogICAgJHB1Yl9wYXRoID0gcHJlZ19yZXBsYWNlKCd8Ly8kfCcsJy8nLCBy aHUuJy8nKSA7DQogICAgJGFkbV9wYXRoID0gJHB1Yl9wYXRoIC4gc3Vic3RyKHN0cnJjaHIo dHhwYXRoLCBEUyksIDEpIC4gJy8nIDsNCg0KICAgIGlmKCAkcF9sb2dvdXQgKQ0KICAgIHsN CiAgICAgICAgJGxvZ19uYW1lID0gZmFsc2UgOw0KDQogICAgICAgIHNhZmVfdXBkYXRlKCAn dHhwX3VzZXJzJw0KICAgICAgICAgICAgICAgICAgICwgIm5vbmNlID0gJyIuZG9TbGFzaCgk aGFzaCkuIiciDQogICAgICAgICAgICAgICAgICAgLCAibmFtZSA9ICciLmRvU2xhc2goJHBf dXNlcmlkKS4iJyINCiAgICAgICAgICAgICAgICAgICApIDsNCg0KICAgICAgICBzZXRjb29r aWUoICd0eHBfbG9naW4nDQogICAgICAgICAgICAgICAgICwgJycNCiAgICAgICAgICAgICAg ICAgLCB0aW1lKCktMzYwMA0KICAgICAgICAgICAgICAgICAsICRhZG1fcGF0aA0KICAgICAg ICAgICAgICAgICApIDsNCg0KICAgICAgICBzZXRjb29raWUoICd0eHBfbG9naW5fcHVibGlj Jw0KICAgICAgICAgICAgICAgICAsICcnDQogICAgICAgICAgICAgICAgICwgdGltZSgpLTM2 MDANCiAgICAgICAgICAgICAgICAgLCAkcHViX3BhdGgNCiAgICAgICAgICAgICAgICAgKSA7 DQoNCiAgICAgICAgc2V0Y29va2llKCAnY2JlX2Zyb250YXV0aF9sb2dpbicNCiAgICAgICAg ICAgICAgICAgLCAnJw0KICAgICAgICAgICAgICAgICAsIHRpbWUoKS0zNjAwDQogICAgICAg ICAgICAgICAgICwgJHB1Yl9wYXRoDQogICAgICAgICAgICAgICAgICkgOw0KICAgIH0NCiAg ICBlbHNlaWYoICgkbG9nX25hbWUgPSB0eHBfdmFsaWRhdGUoICRwX3VzZXJpZCwgJHBfcGFz c3dvcmQsIGZhbHNlICkpICE9PSBmYWxzZSApDQogICAgew0KICAgICAgICBzYWZlX3VwZGF0 ZSggJ3R4cF91c2VycycNCiAgICAgICAgICAgICAgICAgICAsICJub25jZSA9ICciLmRvU2xh c2goJG5vbmNlKS4iJyINCiAgICAgICAgICAgICAgICAgICAsICJuYW1lID0gJyIuZG9TbGFz aCgkcF91c2VyaWQpLiInIg0KICAgICAgICAgICAgICAgICAgICkgOw0KDQogICAgICAgIHNl dGNvb2tpZSggJ3R4cF9sb2dpbicNCiAgICAgICAgICAgICAgICAgLCAkcF91c2VyaWQuJywn LiRoYXNoDQogICAgICAgICAgICAgICAgICwgKCRwX3N0YXkgPyB0aW1lKCkrMzYwMCoyNCoz NjUgOiAwKQ0KICAgICAgICAgICAgICAgICAsICRhZG1fcGF0aA0KICAgICAgICAgICAgICAg ICAsIG51bGwNCiAgICAgICAgICAgICAgICAgLCBudWxsDQogICAgICAgICAgICAgICAgICwg TE9HSU5fQ09PS0lFX0hUVFBfT05MWQ0KICAgICAgICAgICAgICAgICApIDsNCg0KICAgICAg ICBzZXRjb29raWUoICd0eHBfbG9naW5fcHVibGljJw0KICAgICAgICAgICAgICAgICAsIHN1 YnN0cihtZDUoJG5vbmNlKSwgLTEwKS4kcF91c2VyaWQNCiAgICAgICAgICAgICAgICAgLCAo JHBfc3RheSA/IHRpbWUoKSszNjAwKjI0KjMwIDogMCkNCiAgICAgICAgICAgICAgICAgLCAk cHViX3BhdGgNCiAgICAgICAgICAgICAgICAgKSA7DQoNCiAgICAgICAgaWYoICRwX3N0YXkg KQ0KICAgICAgICAgICAgc2V0Y29va2llKCAnY2JlX2Zyb250YXV0aF9sb2dpbicNCiAgICAg ICAgICAgICAgICAgICAgICwgJHBfdXNlcmlkLicsJy4kaGFzaA0KICAgICAgICAgICAgICAg ICAgICAgLCB0aW1lKCkrMzYwMCoyNCozNjUNCiAgICAgICAgICAgICAgICAgICAgICwgJHB1 Yl9wYXRoDQogICAgICAgICAgICAgICAgICAgICApIDsNCiAgICB9DQoNCiAgICBpZiggJHJl ZGlyICYmICggJHBfbG9nb3V0IHx8ICRsb2dfbmFtZSAhPT0gZmFsc2UgKSApDQogICAgew0K ICAgICAgICBoZWFkZXIoICJMb2NhdGlvbjokcmVkaXIiICkgOw0KICAgICAgICBleGl0IDsN CiAgICB9DQoNCiAgICByZXR1cm4oICRsb2dfbmFtZSApIDsNCn0NCg0KLy8gLS0gR2V0IHRo ZSBqb2IgZG9uZQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX2Zyb250YXV0aCgg JGF0dHMsICR0aGluZyA9IG51bGwgKQ0Kew0KICAgIGluY2x1ZGVfb25jZSggdHhwYXRoLicv aW5jbHVkZS90eHBfYXV0aC5waHAnICkgOw0KICAgIGdsb2JhbCAkdHhwX3VzZXIgOw0KICAg IHN0YXRpYyAkaW5pdHMgPSBhcnJheSggJ2xvZ2luX2ludml0ZScgPT4gJycgLCAnbG9nb3V0 X2ludml0ZScgPT4gJycgLCAndGFnX2ludml0ZScgPT4gJycNCiAgICAgICAgICAgICAgICAg ICAgICAgICAsICdsb2dpbl9sYWJlbCcgID0+ICcnICwgJ2xvZ291dF9sYWJlbCcgID0+ICcn DQogICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9naW5fcmVkaXInICA9PiAnJyAsICds b2dvdXRfcmVkaXInICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2xvZ2lu X3dpdGgnICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICAgICApIDsNCiAgICBzdGF0 aWMgJGNiZV9mYV91c2VyID0gYXJyYXkoICduYW1lJyAgPT4gZmFsc2UgLCAnUmVhbE5hbWUn ICAgID0+ICcnICwgJ2VtYWlsJyA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICwgJ3ByaXZzJyA9PiAnJyAgICAsICdsYXN0X2FjY2VzcycgPT4gJycNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApIDsNCg0KICAgIGlmKCBpc3NldCggJGF0dHNbJ2lu aXQnXSApICkNCiAgICB7DQogICAgICAgIGlmKCAkYXR0c1snaW5pdCddICkNCiAgICAgICAg ew0KICAgICAgICAgICAgdW5zZXQoICRhdHRzWydpbml0J10gKSA7DQoNCiAgICAgICAgICAg IGZvcmVhY2goICRhdHRzIGFzICRwYXJhbSA9PiAkdmFsdWUgKQ0KICAgICAgICAgICAgICAg ICRpbml0c1skcGFyYW1dID0gJHZhbHVlIDsNCg0KICAgICAgICAgICAgcmV0dXJuIDsNCiAg ICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmKCBpc19h cnJheSggJGF0dHNbICd2YWx1ZScgXSApICkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg ICAgICAkd2hvaXMgPSBhcnJheSgpIDsNCiAgICAgICAgICAgICAgICBpZiggISAkY2JlX2Zh X3VzZXJbICduYW1lJyBdICkgX2NiZV9mYV9sb2dnZWRfaW4oICRjYmVfZmFfdXNlciApIDsN CiAgICAgICAgICAgICAgICBmb3JlYWNoKCAkYXR0c1sgJ3ZhbHVlJyBdIGFzICR0eXBlICkN CiAgICAgICAgICAgICAgICAgICAgJHdob2lzWyAkdHlwZSBdID0gJGNiZV9mYV91c2VyWyAk dHlwZSBdIDsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICByZXR1cm4oICR3 aG9pcyApIDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAg ICAgICByZXR1cm4oIGlzc2V0KCAkaW5pdHNbICRhdHRzWyAndmFsdWUnIF0gXSApID8gJGlu aXRzWyAkYXR0c1sgJ3ZhbHVlJyBdIF0gOiAnJyApIDsNCiAgICAgICAgfQ0KICAgIH0NCg0K ICAgICRkZWZfYXR0cyA9IGFycmF5KCAnZm9ybScgICAgICAgICAgPT4gJycNCiAgICAgICAg ICAgICAgICAgICAgICwgJ3RhZ19pbnZpdGUnICAgID0+ICcnDQogICAgICAgICAgICAgICAg ICAgICAsICdzaG93X2xvZ2luJyAgICA9PiAnMScNCiAgICAgICAgICAgICAgICAgICAgICwg J2xvZ2luX2ludml0ZScgID0+IF9jYmVfZmFfZ1R4dCggJ2xvZ2luX3RvX3RleHRwYXR0ZXJu JyApDQogICAgICAgICAgICAgICAgICAgICAsICdsb2dpbl9mb3JtJyAgICA9PiAnJw0KICAg ICAgICAgICAgICAgICAgICAgLCAnbG9naW5fbGFiZWwnICAgPT4gX2NiZV9mYV9nVHh0KCAn bG9nX2luX2J1dHRvbicgKQ0KICAgICAgICAgICAgICAgICAgICAgLCAnbG9naW5fd2l0aCcg ICAgPT4gJ2F1dG8nDQogICAgICAgICAgICAgICAgICAgICAsICdsb2dpbl9yZWRpcicgICA9 PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAnc2hvd19sb2dvdXQnICAgPT4gJzEnDQog ICAgICAgICAgICAgICAgICAgICAsICdsb2dvdXRfaW52aXRlJyA9PiAnJw0KICAgICAgICAg ICAgICAgICAgICAgLCAnbG9nb3V0X2Zvcm0nICAgPT4gJycNCiAgICAgICAgICAgICAgICAg ICAgICwgJ2xvZ291dF9sYWJlbCcgID0+IF9jYmVfZmFfZ1R4dCggJ2xvZ291dCcgKQ0KICAg ICAgICAgICAgICAgICAgICAgLCAnbG9nb3V0X3R5cGUnICAgPT4gJ2J1dHRvbicNCiAgICAg ICAgICAgICAgICAgICAgICwgJ2xvZ291dF9yZWRpcicgID0+ICcnDQogICAgICAgICAgICAg ICAgICAgICAsICdzaG93X3N0YXknICAgICA9PiAnMCcNCiAgICAgICAgICAgICAgICAgICAg ICwgJ3Nob3dfcmVzZXQnICAgID0+ICcxJw0KICAgICAgICAgICAgICAgICAgICAgLCAnc2hv d19jaGFuZ2UnICAgPT4gJzEnDQogICAgICAgICAgICAgICAgICAgICAsICdsaW5rJyAgICAg ICAgICA9PiAnJw0KICAgICAgICAgICAgICAgICAgICAgLCAnbGlua2xhYmVsJyAgICAgPT4g JycNCiAgICAgICAgICAgICAgICAgICAgICwgJ3RhcmdldCcgICAgICAgID0+ICdfc2VsZicN CiAgICAgICAgICAgICAgICAgICAgICwgJ25hbWUnICAgICAgICAgID0+ICcnDQogICAgICAg ICAgICAgICAgICAgICAsICdsZXZlbCcgICAgICAgICA9PiAnJw0KICAgICAgICAgICAgICAg ICAgICAgLCAndGFnX2Vycm9yJyAgICAgPT4gJycNCiAgICAgICAgICAgICAgICAgICAgICwg J2NsYXNzX2Vycm9yJyAgID0+ICcnDQogICAgICAgICAgICAgICAgICAgICApIDsNCg0KICAg ICRpbmlfYXR0cyA9IGFycmF5KCkgOw0KICAgIGZvcmVhY2goICRpbml0cyBhcyAkcGFyYW0g PT4gJHZhbHVlICkNCiAgICB7ICAgLyogSW5pdHMgdGFrZSBwcmVjZWRlbmNlIG9uIGRlZmF1 bHQgdmFsdWVzICovDQogICAgICAgIGlmKCAhaXNzZXQoICRhdHRzWyRwYXJhbV0gKSB8fCAk YXR0c1skcGFyYW1dID09PSAkZGVmX2F0dHNbJHBhcmFtXSApDQogICAgICAgICAgICAkaW5p X2F0dHNbJHBhcmFtXSA9ICR2YWx1ZSA7DQogICAgfQ0KDQogICAgZXh0cmFjdCggbEF0dHMo ICRkZWZfYXR0cyArIF9jYmVfZmFfZm9ybWF0KCksIGFycmF5X21lcmdlKCAkYXR0cywgYXJy YXlfZmlsdGVyKCAkaW5pX2F0dHMgKSApICkgKSA7DQoNCiAgICBleHRyYWN0KCBwc2EoIGFy cmF5KCAncF91c2VyaWQnLCAncF9wYXNzd29yZCcsICdwX3N0YXknLCAncF9yZXNldCcsICdw X2xvZ291dCcsICdwX2NoYW5nZScgKSApICkgOw0KICAgICRsb2dvdXQgPSBncHMoICdsb2dv dXQnICkgOw0KICAgICRwX2xvZ291dCA9ICRwX2xvZ291dCB8fCAkbG9nb3V0IDsNCiAgICAk cmVzZXQgPSBncHMoICdyZXNldCcgKSA7DQogICAgJHBfcmVzZXQgPSAkcF9yZXNldCB8fCAk cmVzZXQgOw0KICAgICRjaGFuZ2UgPSBncHMoICdjaGFuZ2UnICkgOw0KICAgICRwX2NoYW5n ZSA9ICRwX2NoYW5nZSB8fCAkY2hhbmdlIDsNCg0KICAgIGlmKCAkcF91c2VyaWQgJiYgJHBf cGFzc3dvcmQgKQ0KICAgIHsNCiAgICAgICAgJHVzZXJuYW1lID0gKCRsb2dpbl93aXRoID09 ICdhdXRvJykgPyBzYWZlX2NvdW50KCAndHhwX3VzZXJzJywgIm5hbWU9JyRwX3VzZXJpZCci ICkgOiAwIDsNCg0KICAgICAgICBpZiggJHVzZXJuYW1lID09IDAgJiYgJGxvZ2luX3dpdGgg IT0gJ3VzZXJuYW1lJyApDQogICAgICAgIHsgLy8gRW1haWwgcHJvYmFibHkgZ2l2ZW4sIHJl dHJpZXZlIHVzZXIgbmFtZSBpZiBwb3NzaWJsZQ0KICAgICAgICAgICAgJHBfdXNlcmlkID0g c2FmZV9yb3dzKCAnbmFtZScsICd0eHBfdXNlcnMnLCAiZW1haWw9JyRwX3VzZXJpZCciICkg Ow0KICAgICAgICAgICAgJHBfdXNlcmlkID0gKGNvdW50KCAkcF91c2VyaWQgKSA9PSAxKSA/ ICRwX3VzZXJpZFsgMCBdWyAnbmFtZScgXSA6ICcnIDsNCiAgICAgICAgfQ0KDQogICAgICAg ICRsb2dpbl9yZWRpciA9ICgkbG9naW5fcmVkaXI9PT0nbGluaycpID8gJGxpbmsgOiAkbG9n aW5fcmVkaXIgOw0KICAgICAgICAkbG9naW5fZmFpbGVkID0gKCR0eHBfdXNlciA9IF9jYmVf ZmFfYXV0aCggJGxvZ2luX3JlZGlyLCAwLCAkcF91c2VyaWQsICRwX3Bhc3N3b3JkLCAkcF9z dGF5ICkpID09PSBmYWxzZSA7DQogICAgICAgIF9jYmVfZmFfbG9nZ2VkX2luKCAkY2JlX2Zh X3VzZXIsICR0eHBfdXNlciApIDsNCiAgICB9DQogICAgZWxzZWlmKCAkcF9sb2dvdXQgKQ0K ICAgIHsNCiAgICAgICAgaWYoICRsb2dvdXQgJiYgISRsb2dvdXRfcmVkaXIgKQ0KICAgICAg ICAgICAgJGxvZ291dF9yZWRpciA9IHByZWdfcmVwbGFjZSggIi9bPyZdbG9nb3V0PTEvIiwg IiIsIHNlcnZlclNldCgnUkVRVUVTVF9VUkknKSApIDsNCg0KICAgICAgICAkdHhwX3VzZXIg PSBfY2JlX2ZhX2F1dGgoICRsb2dvdXRfcmVkaXIsIDEgKSA7DQogICAgICAgIF9jYmVfZmFf bG9nZ2VkX2luKCAkY2JlX2ZhX3VzZXIsIGZhbHNlICkgOw0KICAgIH0NCiAgICBlbHNlDQog ICAgICAgICR0eHBfdXNlciA9IF9jYmVfZmFfbG9nZ2VkX2luKCAkY2JlX2ZhX3VzZXIgKSA/ ICRjYmVfZmFfdXNlclsgJ25hbWUnIF0gOiBmYWxzZSA7DQoNCiAgICAkb3V0ID0gYXJyYXko KSA7DQogICAgJGludml0ZSA9ICcnIDsNCiAgICAkcGFydF8wID0gRXZhbEVsc2UoICR0aGlu ZywgMCApIDsNCiAgICAkcGFydF8xID0gRXZhbEVsc2UoICR0aGluZywgMSApIDsNCiAgICBp ZiggJHR4cF91c2VyID09PSBmYWxzZSApDQogICAgew0KICAgICAgICAkb3V0W10gPSBwYXJz ZSggJHBhcnRfMCApIDsNCg0KICAgICAgICBpZiggJHNob3dfbG9naW4gKQ0KICAgICAgICB7 DQogICAgICAgICAgICBpZiggJHBfcmVzZXQgKQ0KICAgICAgICAgICAgeyAgIC8vIFJlc2V0 dGluZyBwYXNzd29yZCBpbiBwcm9ncmVzcw0KICAgICAgICAgICAgICAgICRpbnZpdGUgPSBf Y2JlX2ZhX2dUeHQoICdwYXNzd29yZF9yZXNldCcgKSA7DQogICAgICAgICAgICAgICAgJG91 dFtdICA9IGNhbGxiYWNrX2V2ZW50KCAnY2JlZnJvbnRhdXRoLnJlc2V0X3Bhc3N3b3JkJywg J2NiZV9mYV9iZWZvcmVfbG9naW4nLCAwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLCBwcygnc3RlcCcpID8gYXJyYXkoICdwX3VzZXJpZCcgICA9PiAkcF91 c2VyaWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICwgJ2xvZ2luX3dpdGgnID0+ICRsb2dpbl93aXRoDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICd0 YWdfZXJyb3InICA9PiAkdGFnX2Vycm9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdjbGFzc19lcnJvcicgPT4gJGNs YXNzX2Vycm9yICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiBudWxsICkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxz ZQ0KICAgICAgICAgICAgeyAgIC8vIFdlIGFyZSBub3QgcmVzZXR0aW5nIHRoZSBwYXNzd29y ZCBhdCB0aGUgbW9tZW50LCBkaXNwbGF5IGxvZ2luIGZvcm0NCiAgICAgICAgICAgICAgICBp ZiggaXNzZXQoICRsb2dpbl9mYWlsZWQgKSAmJiAkbG9naW5fZmFpbGVkICkNCiAgICAgICAg ICAgICAgICAgICAgJG91dFtdID0gZG9UYWcoIF9jYmVfZmFfZ1R4dCggJ2xvZ2luX2ZhaWxl ZCcgKSwgJHRhZ19lcnJvciwgJGNsYXNzX2Vycm9yICkgOw0KICAgICAgICAgICAgICAgICRp bnZpdGUgPSAkbG9naW5faW52aXRlIDsNCiAgICAgICAgICAgICAgICAkb3V0W10gID0gX2Ni ZV9mYV9pbm91dCggYXJyYXkoICdsYWJlbCcgICAgICA9PiAkbG9naW5fbGFiZWwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdmb3JtJyAgICAg ICA9PiAkbG9naW5fZm9ybQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ3Nob3dfc3RheScgID0+ICRzaG93X3N0YXkNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdzaG93X3Jlc2V0JyA9PiAkc2hv d19yZXNldA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICkgKyBjb21wYWN0KCAnd3JhcHRhZycsICdjbGFzcycsICdicmVhaycsICdicmVha2NsYXNz JyApICkgOw0KICAgICAgICAgICAgICAgIGlmKCAkc2hvd19yZXNldCApDQogICAgICAgICAg ICAgICAgICAgICRvdXRbXSA9IGNhbGxiYWNrX2V2ZW50KCAnY2JlZnJvbnRhdXRoLnJlc2V0 X3Bhc3N3b3JkJywgJ2NiZV9mYV9hZnRlcl9sb2dpbicgKSA7DQogICAgICAgICAgICB9DQog ICAgICAgIH0NCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICAgaWYoICghJG5hbWUg JiYgISRsZXZlbCkNCiAgICAgICAgICAgIHx8DQogICAgICAgICAgICBfY2JlX2ZhX3ByaXZp bGVnZWQoICRuYW1lLCAkbGV2ZWwsICRjYmVfZmFfdXNlclsgJ25hbWUnIF0sICRjYmVfZmFf dXNlclsgJ3ByaXZzJyBdICkNCiAgICAgICAgICApDQogICAgICAgIHsNCiAgICAgICAgICAg IGlmKCAkbGluayApDQogICAgICAgICAgICAgICAgJG91dFtdID0gY2JlX2Zyb250YXV0aF9s aW5rKCBhcnJheSggJ2xhYmVsJyA9PiAkbGlua2xhYmVsICkgKyBjb21wYWN0KCAnbGluaycs ICd0YXJnZXQnICkgKSA7DQoNCiAgICAgICAgICAgIGlmKCAkdGhpbmcgKQ0KICAgICAgICAg ICAgICAgICRvdXRbXSA9IHBhcnNlKCAkcGFydF8xICkgOw0KICAgICAgICAgICAgZWxzZWlm KCAkZm9ybSApDQogICAgICAgICAgICAgICAgJG91dFtdID0gcGFyc2VfZm9ybSggJGZvcm0g KSA7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICAgICAgJG91dFtdID0gcGFy c2UoICRwYXJ0XzAgKSA7DQoNCiAgICAgICAgaWYoICRzaG93X2xvZ291dCApDQogICAgICAg IHsNCiAgICAgICAgICAgIGlmKCAkcF9jaGFuZ2UgKQ0KICAgICAgICAgICAgeyAgIC8vIENo YW5naW5nIHBhc3N3b3JkIGluIHByb2dyZXNzDQogICAgICAgICAgICAgICAgJGludml0ZSA9 IF9jYmVfZmFfZ1R4dCggJ2NoYW5nZV9wYXNzd29yZCcgKSA7DQogICAgICAgICAgICAgICAg JG91dFtdICA9IGNhbGxiYWNrX2V2ZW50KCAnY2JlZnJvbnRhdXRoLmNoYW5nZV9wYXNzd29y ZCcsICdjYmVfZmFfYmVmb3JlX2xvZ291dCcsIDANCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAsIHBzKCdzdGVwJykgPyBhcnJheSggJ3BfdXNlcmlkJyAgICAg PT4gJHR4cF91c2VyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAsICdwX3Bhc3N3b3JkJyAgID0+ICRwX3Bhc3N3b3JkDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAsICdwX3Bhc3N3b3JkXzEnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBzdHJpcF90YWdzKCBwcyggJ3Bf cGFzc3dvcmRfMScgKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAsICdwX3Bhc3N3b3JkXzInDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBz dHJpcF90YWdzKCBwcyggJ3BfcGFzc3dvcmRfMicgKSApDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICd0YWdfZXJyb3In ICAgID0+ICR0YWdfZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2NsYXNzX2Vycm9yJyAgPT4gJGNsYXNzX2Vy cm9yICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBudWxsICkgOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAg ICAgICAgICAgeyAgIC8vIFdlIGFyZSBub3QgY2hhbmdpbmcgdGhlIHBhc3N3b3JkIGF0IHRo ZSBtb21lbnQsIGRpc3BsYXkgbG9nb3V0IGZvcm0NCiAgICAgICAgICAgICAgICAkaW52aXRl ID0gJGxvZ291dF9pbnZpdGUgOw0KICAgICAgICAgICAgICAgICRvdXRbXSA9IF9jYmVfZmFf aW5vdXQoIGFycmF5KCAnbGFiZWwnICAgICAgID0+ICRsb2dvdXRfbGFiZWwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ2Zvcm0nICAgICAgICA9 PiAkbG9nb3V0X2Zvcm0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICwgJ3R5cGUnICAgICAgICA9PiAkbG9nb3V0X3R5cGUNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Nob3dfY2hhbmdlJyA9PiAkc2hv d19jaGFuZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICwgJ3BfY2hhbmdlJyAgICA9PiAkcF9jaGFuZ2UNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICwgJ3RhZ19lcnJvcicgICA9PiAkdGFnX2Vycm9yDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdjbGFzc19l cnJvcicgPT4gJGNsYXNzX2Vycm9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApICsgY29tcGFjdCggJ3dyYXB0YWcnLCAnY2xhc3MnLCAnYnJlYWsn LCAnYnJlYWtjbGFzcycgKSApIDsNCiAgICAgICAgICAgICAgICBpZiggJHNob3dfY2hhbmdl ICkNCiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gY2FsbGJhY2tfZXZlbnQoICdjYmVm cm9udGF1dGguY2hhbmdlX3Bhc3N3b3JkJywgJ2NiZV9mYV9hZnRlcl9sb2dvdXQnICkgOw0K ICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQovLyAgICByZXR1cm4oIGRvTGFi ZWwoICRpbnZpdGUsICR0YWdfaW52aXRlICkgLiBkb1dyYXAoICRvdXQsICR3cmFwdGFnLCAk YnJlYWssICRjbGFzcywgJGJyZWFrY2xhc3MgKSApIDsNCiAgICByZXR1cm4oIGRvTGFiZWwo ICRpbnZpdGUsICR0YWdfaW52aXRlICkgLiBkb1dyYXAoICRvdXQsICR3cmFwdGFnLCAnJywg JGNsYXNzICkgKSA7DQp9DQoiO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6ImZsYWdzIjtzOjE6 IjAiO3M6NToib3JkZXIiO3M6MToiNCI7czozOiJtZDUiO3M6MzI6IjVlOGY3NzE2NWE1OTQ4 ZDY0OTM0OTg4OTk2OWQ0YTUxIjt9