# mem_form v0.8 # A library plugin that provides support for html forms. # Michael Manfre # http://manfre.net/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMDp7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuOCI7czo2OiJhdXRob3IiO3M6MTQ6Ik1pY2hh ZWwgTWFuZnJlIjtzOjEwOiJhdXRob3JfdXJpIjtzOjE4OiJodHRwOi8vbWFuZnJlLm5ldC8i O3M6MTE6ImRlc2NyaXB0aW9uIjtzOjU0OiJBIGxpYnJhcnkgcGx1Z2luIHRoYXQgcHJvdmlk ZXMgc3VwcG9ydCBmb3IgaHRtbCBmb3Jtcy4iO3M6NDoidHlwZSI7aToyO3M6NDoibmFtZSI7 czo4OiJtZW1fZm9ybSI7czo0OiJoZWxwIjtzOjI4MjgyOiIJPGgxIGNsYXNzPSJ0aXRsZSI+ bWVtX2Zvcm0gcGx1Z2luPC9oMT4KCgk8aDIgY2xhc3M9InNlY3Rpb24gc3VtbWFyeSI+U3Vt bWFyeTwvaDI+CgoJPHA+VGhpcyBwbHVnaW4gcHJvdmlkZXMgPHNwYW4gY2xhc3M9ImNhcHMi PkhUTUw8L3NwYW4+IGZvcm0gY2FwYWJpbGl0aWVzIGZvciBvdGhlciBwbHVnaW5zLiBUaGlz IGFsbG93cyBmb3IgY29uc2lzdGVudCBmb3JtIHRhZ3MgYW5kIGJlaGF2aW9ycywgd2hpbGUg cmVkdWNpbmcgb3ZlcmFsbCBwbHVnaW4gc2l6ZSBhbmQgZGV2ZWxvcG1lbnQgdGltZS48L3A+ CgoJPGgyIGNsYXNzPSJzZWN0aW9uIGNvbnRhY3QiPkF1dGhvciBDb250YWN0PC9oMj4KCgk8 cD48YSBocmVmPSJtYWlsdG86bW1hbmZyZUBnbWFpbC5jb20/c3ViamVjdD1UZXh0cGF0dGVy biUyMG1lbV9mb3JtJTIwcGx1Z2luIj5NaWNoYWVsIE1hbmZyZTwvYT48YnIgLz4KPGEgaHJl Zj0iaHR0cDovL21hbmZyZS5uZXQiPmh0dHA6Ly9tYW5mcmUubmV0PC9hPjwvcD4KCgk8aDIg Y2xhc3M9InNlY3Rpb24gbGljZW5zZSI+TGljZW5zZTwvaDI+CgoJPHA+VGhpcyBwbHVnaW4g aXMgbGljZW5zZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnNmLm9yZy9saWNl bnNpbmcvbGljZW5zZXMvaW5mby9HUEx2Mi5odG1sIj5HUEx2MjwvYT4uPC9wPgoKCTxoMiBj bGFzcz0ic2VjdGlvbiB0YWdzIj5UYWdzPC9oMj4KCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNt ZW1fZm9ybSI+bWVtX2Zvcm08L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI21lbV9mb3JtX2No ZWNrYm94Ij5tZW1fZm9ybV9jaGVja2JveDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjbWVt X2Zvcm1fZW1haWwiPm1lbV9mb3JtX2VtYWlsPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNt ZW1fZm9ybV9maWxlIj5tZW1fZm9ybV9maWxlPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNt ZW1fZm9ybV9oaWRkZW4iPm1lbV9mb3JtX2hpZGRlbjwvYT48L2xpPgoJCTxsaT48YSBocmVm PSIjbWVtX2Zvcm1fcmFkaW8iPm1lbV9mb3JtX3JhZGlvPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiNtZW1fZm9ybV9zZWNyZXQiPm1lbV9mb3JtX3NlY3JldDwvYT48L2xpPgoJCTxsaT48 YSBocmVmPSIjbWVtX2Zvcm1fc2VsZWN0Ij5tZW1fZm9ybV9zZWxlY3Q8L2E+PC9saT4KCQk8 bGk+PGEgaHJlZj0iI21lbV9mb3JtX3NlbGVjdF9jYXRlZ29yeSI+bWVtX2Zvcm1fc2VsZWN0 X2NhdGVnb3J5PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNtZW1fZm9ybV9zZWxlY3Rfc2Vj dGlvbiI+bWVtX2Zvcm1fc2VsZWN0X3NlY3Rpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I21lbV9mb3JtX3NlcnZlcmluZm8iPm1lbV9mb3JtX3NlcnZlcmluZm88L2E+PC9saT4KCQk8 bGk+PGEgaHJlZj0iI21lbV9mb3JtX3N1Ym1pdCI+bWVtX2Zvcm1fc3VibWl0PC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNtZW1fZm9ybV90ZXh0Ij5tZW1fZm9ybV90ZXh0PC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNtZW1fZm9ybV90ZXh0YXJlYSI+bWVtX2Zvcm1fdGV4dGFyZWE8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI21lbV9mb3JtX3ZhbHVlIj5tZW1fZm9ybV92YWx1 ZTwvYT48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyIgaWQ9Im1lbV9mb3JtIj5tZW1f Zm9ybTwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHRhZyB3aWxsIGNyZWF0 ZSBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gZm9ybSBhbmQgY29udGFpbnMg YWxsIG9mIHRoZSBwcm9jZXNzaW5nIGFuZCB2YWxpZGF0aW9uLjwvcD4KCgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5mb3JtPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IE5hbWUgb2YgYSBmb3JtIHRoYXQg d2lsbCBiZSBwYXJzZWQgdG8gZGlzcGxheSB0aGUgZm9ybS48L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0cy1uYW1lIj50aGFua3NfZm9ybTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMt dHlwZSI+c3RyaW5nPC9zcGFuPiBOYW1lIG9mIGEgZm9ybSB0aGF0IHdpbGwgYmUgcGFyc2Vk IHVwb24gc3VjY2Vzc2Z1bCBmb3JtIHN1Ym1pc3Npb24uPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0 cmluZzwvc3Bhbj4gQWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgZm9ybS48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIHJlcXVpcmVkIj50eXBlPC9zcGFuPiA8c3BhbiBjbGFz cz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IE5hbWUgb2YgdGhlIGZvcm0gdG8gaWRlbnRp ZnkgaXRzZWxmIHRvIGJvdW5kIHBsdWdpbi48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 cy1uYW1lIj50aGFua3M8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwv c3Bhbj4gTWVzc2FnZSB0byBkaXNwbGF5IHRvIHVzZXIgdXBvbiBzdWNjZXNzZnVsIGZvcm0g c3VibWlzc2lvbi48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZWRpcmVj dDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+dXJsPC9zcGFuPiA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB0byByZWRpcmVjdCB1cG9uIHN1Y2Nlc3NmdWwgZm9ybSBz dWJtaXNzaW9uLiBPdmVycmlkZXMgJiM4MjIwO3RoYW5rcyYjODIyMTsgYW5kICYjODIyMDt0 aGFua3NfZm9ybSYjODIyMTsuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ cmVkaXJlY3RfZm9ybTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9z cGFuPiBOYW1lIG9mIGEgZm9ybSB0aGF0IHdpbGwgYmUgcGFyc2VkIGFzIGRpc3BsYXllZCB0 byB0aGUgdXNlciBvbiBhIHJlZGlyZWN0LiBUaGUgc3RyaW5nICYjODIyMDs8ZW0+e3VyaX08 L2VtPiYjODIyMDsgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSByZWRpcmVjdCB1cmwuPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ZW5jdHlwZTwvc3Bhbj4gPHNwYW4g Y2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRN TDwvc3Bhbj4gZW5jb2RpbmcgdHlwZSB1c2VkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVk LiA8Y29kZT5lbmN0eXBlPSZxdW90O211bHRpcGFydC9mb3JtLWRhdGEmcXVvdDs8L2NvZGU+ IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgbWVtX2Zvcm1fZmlsZS48L2xpPgoJPC91bD4KCgk8 aDMgY2xhc3M9InRhZyIgaWQ9Im1lbV9mb3JtX2NoZWNrYm94Ij5tZW1fZm9ybV9jaGVja2Jv eDwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBjaGVja2JveCBmaWVsZC48L3A+CgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YnJlYWs8L3Nw YW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gU2VwYXJhdG9yIGJl dHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dHMtbmFtZSI+Y2hlY2tlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50 PC9zcGFuPiBJcyB0aGlzIGJveCBjaGVja2VkLiBEZWZhdWx0ICYjODIyMDswJiM4MjIxOy48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4gPHNwYW4g Y2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBuYW1lIGZvciB0aGUg aW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0i Y2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVs ZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZpZWxkIG5hbWUuPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+cmVxdWlyZWQ8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJl cXVpcmVkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFu PiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0 YWciIGlkPSJtZW1fZm9ybV9lbWFpbCI+bWVtX2Zvcm1fZW1haWw8L2gzPgoKCTxwIGNsYXNz PSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gdGV4dCBpbnB1dCBmaWVsZCBhbmQgdmFsaWRhdGVzIHRoZSBzdWJtaXR0 ZWQgdmFsdWUgYXMgYW4gZW1haWwgYWRkcmVzcy48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YnJlYWs8L3NwYW4+IDxzcGFuIGNsYXNz PSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFn IGFuZCBpbnB1dCB0YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFi ZWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5k bHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQg YW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0 byB0aGUgaW5wdXQgZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ bmFtZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1 dCBmaWVsZCBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnJlcXVp cmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNwZWNpZmll cyBpZiBpbnB1dCBpcyByZXF1aXJlZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1u YW1lIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFu PiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmRlZmF1bHQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJh dHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIGRlZmF1bHQgdmFsdWUuPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bWF4PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlIj5pbnQ8L3NwYW4+IE1heCBjaGFyYWN0ZXIgbGVuZ3RoLjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHRzLW5hbWUiPm1pbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+ aW50PC9zcGFuPiBNaW4gY2hhcmFjdGVyIGxlbmd0aC48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0cy1uYW1lIj5zaXplPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8 L3NwYW4+IFNpemUgb2YgaW5wdXQgZmllbGQuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0 YWciIGlkPSJtZW1fZm9ybV9maWxlIj5tZW1fZm9ybV9maWxlPC9oMz4KCgk8cD4rcCh0YWct c3VtbWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8 L3NwYW4+IGZpbGUgaW5wdXQgZmllbGQuIFlvdSBtdXN0IGFkZCB0aGUgPGNvZGU+ZW5jdHlw ZT0mcXVvdDttdWx0aXBhcnQvZm9ybS1kYXRhJnF1b3Q7PC9jb2RlPiBhdHRyaWJ1dGUgdG8g eW91ciBlbmNsb3NpbmcgbWVtX2Zvcm0gZm9yIHRoaXMgdG8gd29yay48L3A+CgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+ IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBm b3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5w dXQgZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBu YW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFuPiA8 c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBz Ij5DU1M8L3NwYW4+IGNsYXNzIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMt bmFtZSI+YnJlYWs8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bh bj4gU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcuPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bm9fcmVwbGFjZTwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgd2hldGhlciBhIHVzZXIgY2Fu IHVwbG9hZCBhbm90aGVyIGZpbGUgYW5kIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGZpbGUgdGhh dCB3aWxsIGJlIHN1Ym1pdHRlZCBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhlIGZv cm0uIElmICYjODIyMDsxJiM4MjIxOywgdGhlIGZpbGUgaW5wdXQgZmllbGQgd2lsbCBiZSBy ZXBsYWNlZCB3aXRoIGRldGFpbHMgYWJvdXQgdGhlIGFscmVhZHkgdXBsb2FkZWQgZmlsZS48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZXF1aXJlZDwvc3Bhbj4gPHNw YW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgaWYgaW5wdXQgaXMg cmVxdWlyZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c2l6ZTwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTaXplIG9mIGlucHV0IGZp ZWxkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm1heF9maWxlX3NpemU8 L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gTWF4aW11bSBzaXpl IGZvciB0aGUgdXBsb2FkZWQgZmlsZS4gQ2hlY2tlZCBzZXJ2ZXItc2lkZS48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5hY2NlcHQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJh dHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiBmaWxlIGlucHV0IGZpZWxkJiM4MjE3O3MgJiM4MjIwO2FjY2VwdCYjODIyMTsgYXJn dW1lbnQgdGhhdCBzcGVjaWZpZXMgd2hpY2ggZmlsZSB0eXBlcyB0aGUgZmllbGQgc2hvdWxk IHBlcm1pdC48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyIgaWQ9Im1lbV9mb3JtX2hp ZGRlbiI+bWVtX2Zvcm1faGlkZGVuPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRo aXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGhpZGRl biB0ZXh0IGlucHV0IGZpZWxkLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElm IHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZpZWxkIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dHMtbmFtZSI+dmFsdWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUi PnN0cmluZzwvc3Bhbj4gVGhlIGlucHV0IHZhbHVlLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHRzLW5hbWUiPnJlcXVpcmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5p bnQ8L3NwYW4+IFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMt dHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFz cyBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmVzY2FwZV92YWx1 ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTZXQgdG8gJiM4 MjIwOzAmIzgyMjE7IHRvIHByZXZlbnQgaHRtbCBlc2NhcGluZyB0aGUgdmFsdWUuIERlZmF1 bHQgJiM4MjIwOzEmIzgyMjE7LjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0i bWVtX2Zvcm1fcmFkaW8iPm1lbV9mb3JtX3JhZGlvPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1 bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3Nw YW4+IHJhZGlvIGJ1dHRvbi48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dHMtbmFtZSI+YnJlYWs8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUi PnN0cmluZzwvc3Bhbj4gU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0 YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBmb3Ig dGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xh c3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQg ZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4g PHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBuYW1l LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmNsYXNzPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+IGNsYXNzIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFt ZSI+Z3JvdXA8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4g QSBuYW1lIHRoYXQgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJhZGlvIGJ1dHRvbnMuPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Y2hlY2tlZDwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBJcyB0aGlzIGJveCBjaGVja2VkLiBEZWZhdWx0 ICYjODIyMDswJiM4MjIxOy48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyIgaWQ9Im1l bV9mb3JtX3NlY3JldCI+bWVtX2Zvcm1fc2VjcmV0PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1 bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgbm90aGluZyBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gYW5kIGlzIG1lYW50IHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIHN1 bWJpdCBoYW5kbGVyIHBsdWdpbnMuPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10 eXBlIj5zdHJpbmc8L3NwYW4+IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4g SWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9z cGFuPiA8bGFiZWw+IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRz LXR5cGUiPnN0cmluZzwvc3Bhbj4gSW5wdXQgZmllbGQgbmFtZS48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0cy1uYW1lIj52YWx1ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+c3RyaW5nPC9zcGFuPiBUaGUgaW5wdXQgdmFsdWUuPC9saT4KCTwvdWw+CgoJPGgzIGNs YXNzPSJ0YWciIGlkPSJtZW1fZm9ybV9zZWxlY3QiPm1lbV9mb3JtX3NlbGVjdDwvaDM+CgoJ PHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNz PSJjYXBzIj5IVE1MPC9zcGFuPiBzZWxlY3QgZmllbGQuPC9wPgoKCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBp bnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiA8bGFiZWw+IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxk LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gSW5wdXQgZmllbGQgbmFtZS48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5icmVhazwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0 YWcgYW5kIGlucHV0IHRhZy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5k ZWxpbWl0ZXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4g TGlzdCBzZXBhcmF0b3IuIERlZmF1bHQgJiM4MjIwOywmIzgyMjE7PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dHMtbmFtZSI+aXRlbXM8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5 cGUiPnN0cmluZzwvc3Bhbj4gRGVsaW1pdGVkIGxpc3QgY29udGFpbmluZyBhIHNlbGVjdCBs aXN0IGRpc3BsYXkgdmFsdWVzLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUi PnZhbHVlczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBE ZWxpbWl0ZWQgbGlzdCBjb250YWluaW5nIGEgc2VsZWN0IGxpc3QgaXRlbSB2YWx1ZXMuPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+cmVxdWlyZWQ8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJl cXVpcmVkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnNlbGVjdGVkPC9z cGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFRoZSB2YWx1ZSBv ZiB0aGUgc2VsZWN0ZWQgaXRlbS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij5maXJzdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBE aXNwbGF5IHZhbHVlIG9mIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0LiBFLmcuICYjODIy MDtTZWxlY3QgYSBTZWN0aW9uJiM4MjIxOyBvciAmIzgyMjA7JiM4MjIxOyBmb3IgYSBibGFu ayBvcHRpb24uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Y2xhc3M8L3Nw YW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0cy1uYW1lIj5zZWxlY3RfbGltaXQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUi PmludDwvc3Bhbj4gU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyB0aGF0 IG1heSBiZSBzZWxlY3RlZC4gSWYgc2V0IHRvIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDEsIGEg bXVsdGlzZWxlY3Qgd2lsbCBiZSB1c2VkLiBUaGUgc3RvcmVkIHZhbHVlIHdpbGwgYmUgYW4g YXJyYXkuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+YXNfY3N2PC9zcGFu PiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IElmIHNldCB0byAxLCB0aGUg dmFsdWUgd2lsbCBiZSBzdG9yZWQgYXMgYSBkZWxpbWl0ZWQgc3RyaW5nIG9mIHZhbHVlcyBp bnN0ZWFkIG9mIGFuIGFycmF5LiBUaGlzIGRvZXMgbm90aGluZyB3aGVuIHNlbGVjdF9saW1p dCBpcyBsZXNzIHRoYW4gMi48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyIgaWQ9Im1l bV9mb3JtX2NhdGVnb3J5Ij5tZW1fZm9ybV9zZWxlY3RfY2F0ZWdvcnk8L2gzPgoKCTxwIGNs YXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2Fw cyI+SFRNTDwvc3Bhbj4gc2VsZWN0IGZpZWxkIHBvcHVsYXRlZCB3aXRoIHRoZSBzcGVjaWZp ZWQgVGV4dHBhdHRlcm4gY2F0ZWdvcmllcy48L3A+CgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJh dHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZp ZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhU TUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQuPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBuYW1lLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmJyZWFrPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0 cy10eXBlIj5zdHJpbmc8L3NwYW4+IFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVsIHRhZyBhbmQg aW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmRlbGltaXRl cjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBMaXN0IHNl cGFyYXRvci4gRGVmYXVsdCAmIzgyMjA7LCYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0cy1uYW1lIj5pdGVtczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3Ry aW5nPC9zcGFuPiBEZWxpbWl0ZWQgbGlzdCBjb250YWluaW5nIGEgc2VsZWN0IGxpc3QgZGlz cGxheSB2YWx1ZXMuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+dmFsdWVz PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IERlbGltaXRl ZCBsaXN0IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBpdGVtIHZhbHVlcy48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZXF1aXJlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgaWYgaW5wdXQgaXMgcmVxdWlyZWQu PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c2VsZWN0ZWQ8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIHZhbHVlIG9mIHRoZSBz ZWxlY3RlZCBpdGVtLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmZpcnN0 PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IERpc3BsYXkg dmFsdWUgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QuIEUuZy4gJiM4MjIwO1NlbGVj dCBhIFNlY3Rpb24mIzgyMjE7IG9yICYjODIyMDsmIzgyMjE7IGZvciBhIGJsYW5rIG9wdGlv bi48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFzczwvc3Bhbj4gPHNw YW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+ Q1NTPC9zcGFuPiBjbGFzcyBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPmV4Y2x1ZGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bh bj4gTGlzdCBvZiBpdGVtIHZhbHVlcyB0aGF0IHdpbGwgbm90IGJlIGluY2x1ZGVkLjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnNvcnQ8L3NwYW4+IDxzcGFuIGNsYXNz PSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gIEhvdyB3aWxsIHRoZSBsaXN0IHZhbHVlcyBi ZSBzb3J0ZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+dHlwZTwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBDYXRlZ29yeSB0eXBl IG5hbWUuIEUuZy4gJiM4MjIwO2FydGljbGUmIzgyMjE7PC9saT4KCTwvdWw+CgoJPGgzIGNs YXNzPSJ0YWciIGlkPSJtZW1fZm9ybV9zZWN0aW9uIj5tZW1fZm9ybV9zZWxlY3Rfc2VjdGlv bjwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBzZWxlY3QgZmllbGQgcG9wdWxhdGVkIHdp dGggdGhlIHNwZWNpZmllZCBUZXh0cGF0dGVybiBzZWN0aW9ucy48L3A+CgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3NwYW4+IDxz cGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFtZSBmb3Ig dGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNwYW4gY2xh c3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQg ZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4g PHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVsZCBuYW1l LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmJyZWFrPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFNlcGFyYXRvciBiZXR3ZWVuIGxh YmVsIHRhZyBhbmQgaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPmRlbGltaXRlcjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9z cGFuPiBMaXN0IHNlcGFyYXRvci4gRGVmYXVsdCAmIzgyMjA7LCYjODIyMTs8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5pdGVtczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0 dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBEZWxpbWl0ZWQgbGlzdCBjb250YWluaW5nIGEgc2Vs ZWN0IGxpc3QgZGlzcGxheSB2YWx1ZXMuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMt bmFtZSI+dmFsdWVzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3Nw YW4+IERlbGltaXRlZCBsaXN0IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBpdGVtIHZhbHVl cy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZXF1aXJlZDwvc3Bhbj4g PHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFuPiBTcGVjaWZpZXMgaWYgaW5wdXQg aXMgcmVxdWlyZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c2VsZWN0 ZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIHZh bHVlIG9mIHRoZSBzZWxlY3RlZCBpdGVtLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRz LW5hbWUiPmZpcnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3Nw YW4+IERpc3BsYXkgdmFsdWUgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QuIEUuZy4g JiM4MjIwO1NlbGVjdCBhIFNlY3Rpb24mIzgyMjE7IG9yICYjODIyMDsmIzgyMjE7IGZvciBh IGJsYW5rIG9wdGlvbi48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFz czwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBj bGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUiPmV4Y2x1ZGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUi PnN0cmluZzwvc3Bhbj4gTGlzdCBvZiBpdGVtIHZhbHVlcyB0aGF0IHdpbGwgbm90IGJlIGlu Y2x1ZGVkLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnNvcnQ8L3NwYW4+ IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gIEhvdyB3aWxsIHRoZSBs aXN0IHZhbHVlcyBiZSBzb3J0ZWQuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciIGlk PSJtZW1fZm9ybV9zZXJ2ZXJpbmZvIj5tZW1fZm9ybV9zZXJ2ZXJpbmZvPC9oMz4KCgk8cCBj bGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBvdXRwdXQgbm8gPHNwYW4gY2xhc3M9ImNh cHMiPkhUTUw8L3NwYW4+IGFuZCBpcyB1c2VkIHRvIHBhc3Mgc2VydmVyIGluZm9ybWF0aW9u IHRvIHRoZSBwbHVnaW4gaGFuZGxpbmcgdGhlIGZvcm0gc3VibWlzc2lvbi48L3A+CgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bGFiZWw8L3Nw YW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gRnJpZW5kbHkgbmFt ZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gPHNw YW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxsYWJlbD4gdGFnIGxpbmtlZCB0byB0aGUg aW5wdXQgZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBJbnB1dCBmaWVs ZCBuYW1lLjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0ibWVtX2Zvcm1fc3Vi bWl0Ij5tZW1fZm9ybV9zdWJtaXQ8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhp cyB3aWxsIG91dHB1dCBlaXRoZXIgYW4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+ IHN1Ym1pdCBpbnB1dCBmaWVsZCBvciBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gYnV0dG9uLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5n PC9zcGFuPiBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhp cyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVs PiB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJp bmc8L3NwYW4+IElucHV0IGZpZWxkIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dHMtbmFtZSI+Y2xhc3M8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwv c3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5idXR0b248L3NwYW4+IDxzcGFuIGNsYXNz PSJhdHRzLXR5cGUiPmludDwvc3Bhbj4gSWYgJiM4MjIwOzEmIzgyMjE7LCBhbiBodG1sIGJ1 dHRvbiB0YWcgd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgYW4gaW5wdXQgdGFnLjwvbGk+Cgk8 L3VsPgoKCTxoMyBjbGFzcz0idGFnIiBpZD0ibWVtX2Zvcm1fdGV4dCI+bWVtX2Zvcm1fdGV4 dDwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5UaGlzIHdpbGwgb3V0cHV0IGFuIDxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0ZXh0IGlucHV0IGZpZWxkLjwvcD4KCgk8 dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBGcmllbmRseSBu YW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiA8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGxhYmVsPiB0YWcgbGlua2VkIHRvIHRo ZSBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5uYW1l PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IElucHV0IGZp ZWxkIG5hbWUuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+Y2xhc3M8L3Nw YW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0cy1uYW1lIj5icmVhazwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5n PC9zcGFuPiBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0IHRhZy48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5kZWZhdWx0PC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFRoZSBkZWZhdWx0IHZhbHVlLjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmZvcm1hdDwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBBIHJlZ2V4IHBhdHRlcm4gdGhhdCB3aWxs IGJlIG1hdGNoZWQgYWdhaW5zdCB0aGUgaW5wdXQgdmFsdWUuIFlvdSBtdXN0IGVzY2FwZSBh bGwgYmFja3NsYXNoZXMgJiM4MjE2O1wmIzgyMTc7LiBFLmcgJiM4MjIwOy9cXGQvJiM4MjIx OyBpcyBhIHNpbmdsZSBkaWdpdC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij5leGFtcGxlPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+ IEFuIGV4YW1wbGUgb2YgYSBjb3JyZWN0bHkgZm9ybWF0dGVkIGlucHV0IHZhbHVlLjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPnBhc3N3b3JkPC9zcGFuPiA8c3BhbiBj bGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNwZWNpZmllcyBpZiB0aGUgaW5wdXQgZmll bGQgaXMgYSBwYXNzd29yZCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1u YW1lIj5yZXF1aXJlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFu PiBTcGVjaWZpZXMgaWYgaW5wdXQgaXMgcmVxdWlyZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dHMtbmFtZSI+bWF4PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8 L3NwYW4+IE1heCBjaGFyYWN0ZXIgbGVuZ3RoLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHRzLW5hbWUiPm1pbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFu PiBNaW4gY2hhcmFjdGVyIGxlbmd0aC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1u YW1lIj5zaXplPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNp emUgb2YgaW5wdXQgZmllbGQuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ ZXNjYXBlX3ZhbHVlPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+ IFNldCB0byAmIzgyMjA7MCYjODIyMTsgdG8gcHJldmVudCBodG1sIGVzY2FwaW5nIHRoZSB2 YWx1ZS4gRGVmYXVsdCAmIzgyMjA7MSYjODIyMTsuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNz PSJ0YWciIGlkPSJtZW1fZm9ybV90ZXh0YXJlYSI+bWVtX2Zvcm1fdGV4dGFyZWE8L2gzPgoK CTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIG91dHB1dCBhbiA8c3BhbiBjbGFz cz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGV4dGFyZWEuPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmxhYmVsPC9zcGFuPiA8c3BhbiBjbGFz cz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1 dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiA8bGFiZWw+IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPm5hbWU8L3NwYW4+IDxzcGFuIGNs YXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gSW5wdXQgZmllbGQgbmFtZS48L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFzczwvc3Bhbj4gPHNwYW4gY2xhc3M9 ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFu PiBjbGFzcyBuYW1lLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmJyZWFr PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IFNlcGFyYXRv ciBiZXR3ZWVuIGxhYmVsIHRhZyBhbmQgaW5wdXQgdGFnLjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUiPmRlZmF1bHQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUi PnN0cmluZzwvc3Bhbj4gVGhlIGRlZmF1bHQgdmFsdWUuPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dHMtbmFtZSI+bWF4PC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8 L3NwYW4+IE1heCBjaGFyYWN0ZXIgbGVuZ3RoLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHRzLW5hbWUiPm1pbjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFu PiBNaW4gY2hhcmFjdGVyIGxlbmd0aC48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1u YW1lIj5yZXF1aXJlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50PC9zcGFu PiBTcGVjaWZpZXMgaWYgaW5wdXQgaXMgcmVxdWlyZWQuPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dHMtbmFtZSI+cm93czwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+aW50 PC9zcGFuPiBOdW1iZXIgb2Ygcm93cyBpbiB0aGUgdGV4dGFyZWEuPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dHMtbmFtZSI+Y29sczwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSI+aW50PC9zcGFuPiBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgdGV4dGFyZWEuPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+ZXNjYXBlX3ZhbHVlPC9zcGFuPiA8c3Bh biBjbGFzcz0iYXR0cy10eXBlIj5pbnQ8L3NwYW4+IFNldCB0byAmIzgyMjA7MCYjODIyMTsg dG8gcHJldmVudCBodG1sIGVzY2FwaW5nIHRoZSB2YWx1ZS4gRGVmYXVsdCAmIzgyMjA7MSYj ODIyMTsuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciIGlkPSJtZW1fZm9ybV92YWx1 ZSI+bWVtX2Zvcm1fdmFsdWU8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3 aWxsIG91dHB1dCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgZm9ybSBmaWVsZC4gVXNl ZnVsIHRvIG1peCA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gaW5wdXQgZmllbGRz IHdpdGggbWVtX2Zvcm0uPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUiPmlkPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJp bmc8L3NwYW4+IElEIGZvciBvdXRwdXQgd3JhcCB0YWcuPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dHMtbmFtZSI+Y2xhc3M8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0 cmluZzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZS48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5jbGFzczwvc3Bhbj4gPHNwYW4g Y2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NT PC9zcGFuPiBjbGFzcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj53cmFw dGFnPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5zdHJpbmc8L3NwYW4+IDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcgdG8gd3JhcCBhcm91bmQgdGhlIHZhbHVl LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmF0dHJpYnV0ZXM8L3NwYW4+ IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gQWRkaXRpb25hbCA8c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQg YmUgcGFzc2VkIHRvIHRoZSBvdXRwdXQgdGFnLjwvbGk+Cgk8L3VsPgoKCTxoMiBjbGFzcz0i c2VjdGlvbiI+RXhwb3NlZCBGdW5jdGlvbnM8L2gyPgoKCTxoMyBjbGFzcz0idGFnIj5tZW1f Zm9ybV9tYWlsPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBzZW5k IGFuIGVtYWlsIG1lc3NhZ2UuPC9wPgoKCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHRzLW5hbWUiPlJldHVybiBWYWx1ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0 dHMtdHlwZSI+Ym9vbDwvc3Bhbj4gUmV0dXJucyB0cnVlIG9yIGZhbHNlLCBpbmRpY2F0aW5n IHdoZXRoZXIgdGhlIGVtYWlsIHdhcyBzdWNjZXNzZnVsbHkgZ2l2ZW4gdG8gdGhlIG1haWwg c3lzdGVtLiBUaGlzIGRvZXMgbm90IGluZGljYXRlIHRoZSB2YWxpZGl0eSBvZiB0aGUgZW1h aWwgYWRkcmVzcyBvciB0aGF0IHRoZSByZWNpcGllbnQgYWN0dWFsbHkgcmVjZWl2ZWQgdGhl IGVtYWlsLjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPmZyb208L3NwYW4+ IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUiPnN0cmluZzwvc3Bhbj4gVGhlIEZyb20gZW1haWwg YWRkcmVzcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5yZXBseTwvc3Bh bj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgUmVwbHkgVG8g ZW1haWwgYWRkcmVzcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj50bzwv c3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgVG8gZW1h aWwgYWRkcmVzcyhlcykuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+c3Vi amVjdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUg ZW1haWwmIzgyMTc7cyBTdWJqZWN0LjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHRzLW5h bWUiPm1zZzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBU aGUgZW1haWwgbWVzc2FnZS48L2xpPgoJPC91bD4KCgk8aDMgY2xhc3M9InRhZyI+bWVtX2Zv cm1fZXJyb3I8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+VGhpcyB3aWxsIHNldCBv ciBnZXQgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybS48L3A+CgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+UmV0dXJuIFZhbHVlPC9z cGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5taXhlZDwvc3Bhbj4gSWYgZXJyIGlzIDxz cGFuIGNsYXNzPSJjYXBzIj5OVUxMPC9zcGFuPiwgdGhlbiBpdCB3aWxsIHJldHVybiBhbiBh cnJheSBvZiBlcnJvcnMgdGhhdCBoYXZlIGJlZW4gc2V0LjwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHRzLW5hbWUgb3B0aW9uYWwiPmVycjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMt dHlwZSI+c3RyaW5nPC9zcGFuPiBBbiBlcnJvciB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhl IGxpc3Qgb2YgZm9ybSBlcnJvcnMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgZm9y bSB1c2VyLjwvbGk+Cgk8L3VsPgoKCTxoMyBjbGFzcz0idGFnIj5tZW1fZm9ybV9kZWZhdWx0 PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBnZXQgb3Igc2V0IGEg ZGVmYXVsdCB2YWx1ZSBmb3IgYSBmb3JtLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj5SZXR1cm4gVmFsdWU8L3NwYW4+IDxzcGFuIGNs YXNzPSJhdHRzLXR5cGUiPm1peGVkPC9zcGFuPiBJZiA8c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij52YWwgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPk5VTEw8L3NwYW4+LCB0aGVuIGl0IHdpbGwg cmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlIHNldCBmb3IgdGhlIGlucHV0IGZpZWxkIG1hdGNo aW5nICUoYXR0cy1uYW1lKWtleTwvc3Bhbj4uIElmIDxzcGFuIGNsYXNzPSJhdHRzLW5hbWUi PmtleTwvc3Bhbj4gZG9lcyBub3QgZXhpc3QsIHRoZW4gaXQgd2lsbCByZXR1cm4gPHNwYW4g Y2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPi48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 cy1uYW1lIj5rZXk8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5cGUlIj5zdHJpbmc8L3Nw YW4+IFRoZSBuYW1lIG9mIHRoZSBpbnB1dCBmaWVsZC48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0cy1uYW1lIG9wdGlvbmFsIj52YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJhdHRzLXR5 cGUiPnN0cmluZzwvc3Bhbj4gSWYgc3BlY2lmaWVkLCB0aGlzIHdpbGwgYmUgc3BlY2lmaWVk IGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgaW5wdXQgZmllbGQgbmFtZWQgJiM4MjIw O2tleSYjODIyMTsuPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJ0YWciPm1lbV9mb3JtX3N0 b3JlPC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlRoaXMgd2lsbCBzdG9yZSB0aGUg bmFtZSwgbGFiZWwgYW5kIHZhbHVlIGZvciBhIGZpZWxkIGluIHRvIHRoZSBhcHByb3ByaWF0 ZSBnbG9iYWwgdmFyaWFibGVzLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0cy1uYW1lIj5uYW1lPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBl Ij5zdHJpbmc8L3NwYW4+IFRoZSBuYW1lIG9mIHRoZSBmaWVsZC48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0cy1uYW1lIj5sYWJlbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlw ZSUiPnN0cmluZzwvc3Bhbj4gVGhlIGxhYmVsIG9mIHRoZSBmaWVsZC48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj52YWx1ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMt dHlwZSI+bWl4ZWQ8L3NwYW4+IFRoZSB2YWx1ZSBvZiB0aGUgZmllbGQuPC9saT4KCTwvdWw+ CgoJPGgzIGNsYXNzPSJ0YWciPm1lbV9mb3JtX3JlbW92ZTwvaDM+CgoJPHAgY2xhc3M9InRh Zy1zdW1tYXJ5Ij5UaGlzIHdpbGwgcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVk IHdpdGggYSBmaWVsZCB0aGF0IGhhcyBiZWVuIHN0b3JlZC48L3A+CgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dHMtbmFtZSI+bmFtZTwvc3Bhbj4gPHNwYW4g Y2xhc3M9ImF0dHMtdHlwZSI+c3RyaW5nPC9zcGFuPiBUaGUgbmFtZSBvZiB0aGUgZmllbGQu PC9saT4KCTwvdWw+CgoJPGgyIGNsYXNzPSJzZWN0aW9uIj5HbG9iYWwgVmFyaWFibGVzPC9o Mj4KCgk8cD5UaGlzIGxpYnJhcnkgYWxsb3dzIG90aGVyIHBsdWdpbnMgdG8gaG9vayBpbiB0 byBldmVudHMgd2l0aCB0aGUgPGNvZGU+cmVnaXN0ZXJfY2FsbGJhY2s8L2NvZGU+IGZ1bmN0 aW9uLjwvcD4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1u YW1lIj4kbWVtX2Zvcm1fdHlwZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+c3Ry aW5nPC9zcGFuPiBBIHRleHQgdmFsdWUgdGhhdCBhbGxvd3MgYSBwbHVnaW4gZGV0ZXJtaW5l IGlmIGl0IHNob3VsZCBwcm9jZXNzIHRoZSBjdXJyZW50IGZvcm0uPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dHMtbmFtZSI+JG1lbV9mb3JtX3N1Ym1pdDwvc3Bhbj4gPHNwYW4gY2xh c3M9ImF0dHMtdHlwZSI+Ym9vbDwvc3Bhbj4gVGhpcyBzcGVjaWZpZXMgaWYgdGhlIGZvcm0g aXMgZG9pbmcgYSBwb3N0YmFjay48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1l Ij4kbWVtX2Zvcm1fZGVmYXVsdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImF0dHMtdHlwZSI+YXJy YXk8L3NwYW4+IEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgdmFsdWVzIHRvIHVz ZSB3aGVuIGRpc3BsYXlpbmcgdGhlIGZvcm0uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dHMtbmFtZSI+JG1lbV9mb3JtPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5hcnJh eTwvc3Bhbj4gQW4gYXJyYXkgbWFwcGluZyBhbGwgaW5wdXQgbGFiZWxzIHRvIHRoZWlyIHZh bHVlcy48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0cy1uYW1lIj4kbWVtX2Zvcm1fbGFi ZWxzPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0cy10eXBlIj5hcnJheTwvc3Bhbj4gQW4gYXJy YXkgbWFwcGluZyBhbGwgaW5wdXQgbmFtZXMgdG8gdGhlaXIgbGFiZWxzLjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHRzLW5hbWUiPiRtZW1fZm9ybV92YWx1ZXM8L3NwYW4+IDxzcGFu IGNsYXNzPSJhdHRzLXR5cGUiPmFycmF5PC9zcGFuPiBBbiBhcnJheSBtYXBwaW5nIGFsbCBp bnB1dCBuYW1lcyB0byB0aGVpciB2YWx1ZXMuPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dHMtbmFtZSI+JG1lbV9mb3JtX3RoYW5rc19mb3JtPC9zcGFuPiA8c3BhbiBjbGFzcz0iYXR0 cy10eXBlIj5zdHJpbmc8L3NwYW4+IENvbnRhaW5zIHRoZSBtZXNzYWdlIHRoYXQgd2lsbCBi ZSBzaG93biB0byB0aGUgdXNlciBhZnRlciBhIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbi4gRWl0 aGVyIHRoZSAmIzgyMjA7dGhhbmtzX2Zvcm0mIzgyMjE7IG9yIHRoZSAmIzgyMjA7dGhhbmtz JiM4MjIxOyBhdHRyaWJ1dGUuIEEgcGx1Z2luIGNhbiBtb2RpZnkgdGhpcyB2YWx1ZSBvciBy ZXR1cm4gYSBzdHJpbmcgdG8gb3ZlcjwvbGk+Cgk8L3VsPgoKCTxoMiBjbGFzcz0ic2VjdGlv biI+UGx1Z2luIEV2ZW50czwvaDI+CgoJPGgzIGNsYXNzPSJldmVudCI+bWVtX2Zvcm0uZGVm YXVsdHM8L2gzPgoKCTxwIGNsYXNzPSJldmVudC1zdW1tYXJ5Ij5BbGxvd3MgYSBwbHVnaW4g dG8gYWx0ZXIgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBhIGZvcm0gcHJpb3IgdG8gYmVpbmcg ZGlzcGxheWVkLjwvcD4KCgk8aDMgY2xhc3M9ImV2ZW50Ij5tZW1fZm9ybS5kaXNwbGF5PC9o Mz4KCgk8cCBjbGFzcz0iZXZlbnQtc3VtbWFyeSI+QWxsb3dzIGEgcGx1Z2luIHRvIGluc2Vy dCBhZGRpdGlvbmFsIGh0bWwgaW4gdGhlIHJlbmRlcmVkIGh0bWwgZm9ybSB0YWcuPC9wPgoK CTxoMyBjbGFzcz0iZXZlbnQiPm1lbV9mb3JtLnN1Ym1pdDwvaDM+CgoJPHAgY2xhc3M9ImV2 ZW50LXN1bW1hcnkiPkFsbG93cyBhIHBsdWdpbiB0byBhY3QgdXBvbiBhIHN1Y2Nlc3NmdWwg Zm9ybSBzdWJtaXNzaW9uLjwvcD4KCgk8aDMgY2xhc3M9ImV2ZW50Ij5tZW1fZm9ybS5zcGFt PC9oMz4KCgk8cCBjbGFzcz0iZXZlbnQtc3VtbWFyeSI+QWxsb3dzIGEgcGx1Z2luIHRvIHRl c3QgYSBzdWJtaXNzaW9uIGFzIHNwYW0uIFRoZSBmdW5jdGlvbiBnZXRfbWVtX2Zvcm1fZXZh bHVhdG9yKCkgcmV0dXJucyB0aGUgZXZhbHVhdG9yLjwvcD4KCgk8aDMgY2xhc3M9ImV2ZW50 Ij5tZW1fZm9ybS5zdG9yZV92YWx1ZTwvaDM+CgoJPHAgY2xhc3M9ImV2ZW50LXN1bW1hcnki Pk9uIHN1Ym1pdCwgdGhpcyBldmVudCBpcyBjYWxsZWQgZm9yIGVhY2ggZmllbGQgdGhhdCBw YXNzZWQgdGhlIGJ1aWx0aW4gY2hlY2tzIGFuZCB3YXMganVzdCBzdG9yZWQgaW4gdG8gdGhl IGdsb2JhbCB2YXJpYWJsZXMuIFRoZSBjYWxsYmFjayBzdGVwIGlzIHRoZSBmaWVsZCBuYW1l LiBUaGlzIGNhbGxiYWNrIGNhbiBiZSB1c2VkIGZvciBjdXN0b20gZmllbGQgdmFsaWRhdGlv bi4gSWYgdGhlIHZhbHVlIGlzIGludmFsaWQsIHJldHVybiA8c3BhbiBjbGFzcz0iY2FwcyI+ RkFMU0U8L3NwYW4+LiBXYXJuaW5nOiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBmb3IgZWFjaCBm aWVsZCBldmVuIGlmIGEgcHJldmlvdXNseSBjaGVja2VkIGZpZWxkIGhhcyBmYWlsZWQuPC9w PgoKCTxoMyBjbGFzcz0iZXZlbnQiPm1lbV9mb3JtLnZhbGlkYXRlPC9oMz4KCgk8cCBjbGFz cz0iZXZlbnQtc3VtbWFyeSI+VGhpcyBldmVudCBpcyBjYWxsZWQgb24gZm9ybSBzdWJtaXQs IGFmdGVyIHRoZSBpbmRpdmlkdWFsIGZpZWxkcyBhcmUgcGFyc2VkIGFuZCB2YWxpZGF0ZWQu IFRoaXMgZXZlbnQgaXMgbm90IGNhbGxlZCBpZiB0aGVyZSBhcmUgYW55IGVycm9ycyBhZnRl ciB0aGUgZmllbGRzIGFyZSB2YWxpZGF0ZWQuIEFueSBtdWx0aS1maWVsZCBvciBmb3JtIHNw ZWNpZmljIHZhbGlkYXRpb24gc2hvdWxkIGhhcHBlbiBoZXJlLiBVc2UgbWVtX2Zvcm1fZXJy b3IoKSB0byBzZXQgYW55IHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMgdG8gcHJldmVudCBh IHN1Y2Nlc3NmdWwgcG9zdC48L3A+IjtzOjQ6ImNvZGUiO3M6MzQ2MTk6IgoKJG1lbV9nbHpf Y3VzdG9tX2ZpZWxkc19wbHVnaW4gPSBsb2FkX3BsdWdpbignZ2x6X2N1c3RvbV9maWVsZHMn KTsKCi8vIG5lZWRlZCBmb3IgTUxQCmRlZmluZSggJ01FTV9GT1JNX1BSRUZJWCcgLCAnbWVt X2Zvcm0nICk7CgpnbG9iYWwgJG1lbV9mb3JtX2xhbmc7CgppZiAoIWlzX2FycmF5KCRtZW1f Zm9ybV9sYW5nKSkKewoJJG1lbV9mb3JtX2xhbmcgPSBhcnJheSgKCQknZXJyb3JfZmlsZV9l eHRlbnNpb24nCT0+ICdGaWxlIHVwbG9hZCBmYWlsZWQgZm9yIGZpZWxkIHtsYWJlbH0uJywK CQknZXJyb3JfZmlsZV9mYWlsZWQnCT0+ICdGYWlsZWQgdG8gdXBsb2FkIGZpbGUgZm9yIGZp ZWxkIHtsYWJlbH0uJywKCQknZXJyb3JfZmlsZV9zaXplJwk9PiAnRmFpbGVkIHRvIHVwbG9h ZCBGaWxlIGZvciBmaWVsZCB7bGFiZWx9LiBGaWxlIGlzIHRvbyBsYXJnZS4nLAoJCSdmaWVs ZF9taXNzaW5nJwk9PiAnVGhlIGZpZWxkIHtsYWJlbH0gaXMgcmVxdWlyZWQuJywKCQknZm9y bV9leHBpcmVkJwk9PgknVGhlIGZvcm0gaGFzIGV4cGlyZWQuJywKCQknZm9ybV9taXNjb25m aWd1cmVkJwk9PiAnVGhlIG1lbV9mb3JtIGlzIG1pc2NvbmZpZ3VyZWQuIFlvdSBtdXN0IHNw ZWNpZnkgdGhlICJmb3JtIiBhdHRyaWJ1dGUuJywKCQknZm9ybV9zb3JyeScJPT4gJ1RoZSBm b3JtIGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS4nLAoJCSdmb3JtX3VzZWQnCT0+CSdUaGlz IGZvcm0gaGFzIGFscmVhZHkgYmVlbiB1c2VkIHRvIHN1Ym1pdC4nLAoJCSdnZW5lcmFsX2lu cXVpcnknCT0+ICcnLAoJCSdpbnZhbGlkX2VtYWlsJwk9PiAnVGhlIGVtYWlsIGFkZHJlc3Mg e2VtYWlsfSBpcyBpbnZhbGlkLicsCgkJJ2ludmFsaWRfaG9zdCcJPT4gJ1RoZSBob3N0IHtk b21haW59IGlzIGludmFsaWQuJywKCQknaW52YWxpZF91dGY4Jwk9PiAnSW52YWxpZCBVVEY4 IHN0cmluZyBmb3IgZmllbGQge2xhYmVsfS4nLAoJCSdpbnZhbGlkX3ZhbHVlJwk9PiAnVGhl IHZhbHVlICJ7dmFsdWV9IiBpcyBpbnZhbGlkIGZvciB0aGUgaW5wdXQgZmllbGQge2xhYmVs fS4nLAoJCSdpbnZhbGlkX2Zvcm1hdCcJPT4JJ1RoZSBpbnB1dCBmaWVsZCB7bGFiZWx9IG11 c3QgbWF0Y2ggdGhlIGZvcm1hdCAie2V4YW1wbGV9Ii4nLAoJCSdpbnZhbGlkX3Rvb19tYW55 X3NlbGVjdGVkJwk9PiAnVGhlIGlucHV0IGZpZWxkIHtsYWJlbH0gb25seSBhbGxvd3Mge2Nv dW50fSBzZWxlY3RlZCB7cGx1cmFsfS4nLAoJCSdpdGVtJwk9PiAnaXRlbScsCgkJJ2l0ZW1z Jwk9PiAnaXRlbXMnLAoJCSdtYXhfd2FybmluZycJPT4gJ1RoZSBpbnB1dCBmaWVsZCB7bGFi ZWx9IG11c3QgYmUgc21hbGxlciB0aGFuIHttYXh9IGNoYXJhY3RlcnMgbG9uZy4nLAoJCSdt aW5fd2FybmluZycJPT4gJ1RoZSBpbnB1dCBmaWVsZCB7bGFiZWx9IG11c3QgYmUgYXQgbGVh c3Qge21pbn0gY2hhcmFjdGVycyBsb25nLicsCgkJJ3JlZnJlc2gnCT0+ICdSZWZyZXNoJywK CQknc3BhbScJPT4gJ1lvdXIgc3VibWlzc2lvbiB3YXMgYmxvY2tlZCBieSBhIHNwYW0gZmls dGVyLicsCgkJJ3N1Ym1pdHRlZF90aGFua3MnCT0+CSdZb3UgaGF2ZSBzdWNjZXNzZnVsbHkg c3VibWl0dGVkIHRoZSBmb3JtLiBUaGFuayB5b3UuJywKCSk7Cn0KCnJlZ2lzdGVyX2NhbGxi YWNrKCAnbWVtX2Zvcm1fZW51bWVyYXRlX3N0cmluZ3MnICwgJ2wxMG4uZW51bWVyYXRlX3N0 cmluZ3MnICk7CmZ1bmN0aW9uIG1lbV9mb3JtX2VudW1lcmF0ZV9zdHJpbmdzKCRldmVudCAs ICRzdGVwPScnICwgJHByZT0wKQp7CglnbG9iYWwgJG1lbV9mb3JtX2xhbmc7CgkkciA9IGFy cmF5CSgKCQkJCSdvd25lcicJCT0+ICdtZW1fZm9ybScsCQkJIwlDaGFuZ2UgdG8geW91ciBw bHVnaW4ncyBuYW1lCgkJCQkncHJlZml4Jwk9PiBNRU1fRk9STV9QUkVGSVgsCQkjCUl0cyB1 bmlxdWUgc3RyaW5nIHByZWZpeAoJCQkJJ2xhbmcnCQk9PiAnZW4tZ2InLAkJCQkjCVRoZSBs YW5ndWFnZSBvZiB0aGUgaW5pdGlhbCBzdHJpbmdzLgoJCQkJJ2V2ZW50JwkJPT4gJ3B1Ymxp YycsCQkJIwlwdWJsaWMvYWRtaW4vY29tbW9uID0gd2hpY2ggaW50ZXJmYWNlIHRoZSBzdHJp bmdzIHdpbGwgYmUgbG9hZGVkIGludG8KCQkJCSdzdHJpbmdzJwk9PiAkbWVtX2Zvcm1fbGFu ZywJCSMJVGhlIHN0cmluZ3MgdGhlbXNlbHZlcy4KCQkJCSk7CglyZXR1cm4gJHI7Cn0KCgpm dW5jdGlvbiBtZW1fZm9ybV9nVHh0KCR3aGF0LCRhcmdzID0gYXJyYXkoKSkKewoJZ2xvYmFs ICRtZW1fZm9ybV9sYW5nLCAkdGV4dGFycmF5OwoKCSRrZXkgPSBzdHJ0b2xvd2VyKCBNRU1f Rk9STV9QUkVGSVggLiAnLScgLiAkd2hhdCApOwoKCWlmIChpc3NldCgkdGV4dGFycmF5WyRr ZXldKSkKCXsKCQkkc3RyID0gJHRleHRhcnJheVska2V5XTsKCX0KCWVsc2UKCXsKCQkka2V5 ID0gc3RydG9sb3dlcigkd2hhdCk7CgoJCWlmIChpc3NldCgkbWVtX2Zvcm1fbGFuZ1ska2V5 XSkpCgkJCSRzdHIgPSAkbWVtX2Zvcm1fbGFuZ1ska2V5XTsKCQllbHNlaWYgKGlzc2V0KCR0 ZXh0YXJyYXlbJGtleV0pKQoJCQkkc3RyID0gJHRleHRhcnJheVska2V5XTsKCQllbHNlCgkJ CSRzdHIgPSAkd2hhdDsKCX0KCglpZiggIWVtcHR5KCRhcmdzKSApCgkJJHN0ciA9IHN0cnRy KCAkc3RyICwgJGFyZ3MgKTsKCglyZXR1cm4gJHN0cjsKfQoKCmZ1bmN0aW9uIG1lbV9mb3Jt KCRhdHRzLCAkdGhpbmc9JycpCnsKCWdsb2JhbCAkc2l0ZW5hbWUsICRwcmVmcywgJGZpbGVf bWF4X3VwbG9hZF9zaXplLCAkbWVtX2Zvcm1fZXJyb3IsICRtZW1fZm9ybV9zdWJtaXQsCgkJ JG1lbV9mb3JtLCAkbWVtX2Zvcm1fbGFiZWxzLCAkbWVtX2Zvcm1fdmFsdWVzLAoJCSRtZW1f Zm9ybV9kZWZhdWx0LCAkbWVtX2Zvcm1fdHlwZSwgJG1lbV9mb3JtX3RoYW5rc19mb3JtLAoJ CSRtZW1fZ2x6X2N1c3RvbV9maWVsZHNfcGx1Z2luOwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0 dHMoYXJyYXkoCgkJJ2Zvcm0nCQk9PiAnJywKCQkndGhhbmtzX2Zvcm0nCT0+ICcnLAoJCSd0 aGFua3MnCT0+IGdyYWYobWVtX2Zvcm1fZ1R4dCgnc3VibWl0dGVkX3RoYW5rcycpKSwKCQkn bGFiZWwnCQk9PiAnJywKCQkndHlwZScJCT0+ICcnLAoJCSdyZWRpcmVjdCcJPT4gJycsCgkJ J3JlZGlyZWN0X2Zvcm0nCT0+ICcnLAoJCSdjbGFzcycJCT0+ICdtZW1Gb3JtJywKCQknZW5j dHlwZScJPT4gJycsCgkJJ2ZpbGVfYWNjZXB0Jwk9PiAnJywKCQknbWF4X2ZpbGVfc2l6ZScJ PT4gJGZpbGVfbWF4X3VwbG9hZF9zaXplLAoJCSdmb3JtX2V4cGlyZWRfbXNnJyA9PiBtZW1f Zm9ybV9nVHh0KCdmb3JtX2V4cGlyZWQnKSwKCQknc2hvd19lcnJvcicJPT4gMSwKCQknc2hv d19pbnB1dCcJPT4gMSwKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCR0eXBlKSBvciAoZW1w dHkoJGZvcm0pICYmIGVtcHR5KCR0aGluZykpKSB7CgkJdHJpZ2dlcl9lcnJvcignQXJndW1l bnQgbm90IHNwZWNpZmllZCBmb3IgbWVtX2Zvcm0gdGFnJywgRV9VU0VSX1dBUk5JTkcpOwoK CQlyZXR1cm4gJyc7Cgl9Cgkkb3V0ID0gJyc7CgoJJG1lbV9mb3JtX3R5cGUgPSAkdHlwZTsK CgkkbWVtX2Zvcm1fZGVmYXVsdCA9IGFycmF5KCk7CgljYWxsYmFja19ldmVudCgnbWVtX2Zv cm0uZGVmYXVsdHMnKTsKCgl1bnNldCgkYXR0c1snc2hvd19lcnJvciddLCAkYXR0c1snc2hv d19pbnB1dCddKTsKCSRtZW1fZm9ybV9pZCA9IG1kNShzZXJpYWxpemUoJGF0dHMpLnByZWdf cmVwbGFjZSgnL1tcdFxzXHJcbl0vJywnJywkdGhpbmcpKTsKCSRtZW1fZm9ybV9zdWJtaXQg PSAocHMoJ21lbV9mb3JtX2lkJykgPT0gJG1lbV9mb3JtX2lkKTsKCgkkbm9uY2UgICA9IGRv U2xhc2gocHMoJ21lbV9mb3JtX25vbmNlJykpOwoJJHJlbm9uY2UgPSBmYWxzZTsKCglpZiAo JG1lbV9mb3JtX3N1Ym1pdCkgewoJCXNhZmVfZGVsZXRlKCd0eHBfZGlzY3Vzc19ub25jZScs ICdpc3N1ZV90aW1lIDwgZGF0ZV9zdWIobm93KCksIGludGVydmFsIDEwIG1pbnV0ZSknKTsK CQlpZiAoJHJzID0gc2FmZV9yb3coJ3VzZWQnLCAndHhwX2Rpc2N1c3Nfbm9uY2UnLCAibm9u Y2UgPSAnJG5vbmNlJyIpKQoJCXsKCQkJaWYgKCRyc1sndXNlZCddKQoJCQl7CgkJCQl1bnNl dCgkbWVtX2Zvcm1fZXJyb3IpOwoJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9n VHh0KCdmb3JtX3VzZWQnKTsKCQkJCSRyZW5vbmNlID0gdHJ1ZTsKCgkJCQkkX1BPU1RbJ21l bV9mb3JtX3N1Ym1pdCddID0gVFJVRTsKCQkJCSRfUE9TVFsnbWVtX2Zvcm1faWQnXSA9ICRt ZW1fZm9ybV9pZDsKCQkJCSRfUE9TVFsnbWVtX2Zvcm1fbm9uY2UnXSA9ICRub25jZTsKCQkJ fQoJCX0KCQllbHNlCgkJewoJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9ICRmb3JtX2V4cGlyZWRf bXNnOwoJCQkkcmVub25jZSA9IHRydWU7CgkJfQoJfQoKCWlmICgkbWVtX2Zvcm1fc3VibWl0 IGFuZCAkbm9uY2UgYW5kICEkcmVub25jZSkKCXsKCQkkbWVtX2Zvcm1fbm9uY2UgPSAkbm9u Y2U7Cgl9CgoJZWxzZWlmICghJHNob3dfZXJyb3Igb3IgJHNob3dfaW5wdXQpCgl7CgkJJG1l bV9mb3JtX25vbmNlID0gbWQ1KHVuaXFpZChyYW5kKCksIHRydWUpKTsKCQlzYWZlX2luc2Vy dCgndHhwX2Rpc2N1c3Nfbm9uY2UnLCAiaXNzdWVfdGltZSA9IG5vdygpLCBub25jZSA9ICck bWVtX2Zvcm1fbm9uY2UnIik7Cgl9CgoJJGZvcm0gPSAoJGZvcm0pID8gZmV0Y2hfZm9ybSgk Zm9ybSkgOiAkdGhpbmc7CgkkZm9ybSA9IHBhcnNlKCRmb3JtKTsKCglpZiAoJG1lbV9mb3Jt X3N1Ym1pdCAmJiBlbXB0eSgkbWVtX2Zvcm1fZXJyb3IpKQoJewoJCS8vIGxldCBwbHVnaW5z IHZhbGlkYXRlIGFmdGVyIGluZGl2aWR1YWwgZmllbGRzIGFyZSB2YWxpZGF0ZWQKCQljYWxs YmFja19ldmVudCgnbWVtX2Zvcm0udmFsaWRhdGUnKTsKCX0KCglpZiAoISRtZW1fZm9ybV9z dWJtaXQpIHsKCSAgIyBkb24ndCBzaG93IGVycm9ycyBvciBzZW5kIG1haWwKCX0KCWVsc2Vp ZiAobWVtX2Zvcm1fZXJyb3IoKSkKCXsKCQlpZiAoJHNob3dfZXJyb3Igb3IgISRzaG93X2lu cHV0KQoJCXsKCQkJJG91dCAuPSBtZW1fZm9ybV9kaXNwbGF5X2Vycm9yKCk7CgoJCQlpZiAo ISRzaG93X2lucHV0KSByZXR1cm4gJG91dDsKCQl9Cgl9CgllbHNlaWYgKCRzaG93X2lucHV0 IGFuZCBpc19hcnJheSgkbWVtX2Zvcm0pKQoJewoJCWlmICgkbWVtX2dsel9jdXN0b21fZmll bGRzX3BsdWdpbikgewoJCQkvLyBwcmVwIHRoZSB2YWx1ZXMKCQkJZ2x6X2N1c3RvbV9maWVs ZHNfYmVmb3JlX3NhdmUoKTsKCQl9CgoJCWNhbGxiYWNrX2V2ZW50KCdtZW1fZm9ybS5zcGFt Jyk7CgoJCS8vLyBsb2FkIGFuZCBjaGVjayBzcGFtIHBsdWdpbnMvCgkJJGV2YWx1YXRvciA9 JiBnZXRfbWVtX2Zvcm1fZXZhbHVhdG9yKCk7CgkJJGlzX3NwYW0gPSAkZXZhbHVhdG9yLT5p c19zcGFtKCk7CgoJCWlmICgkaXNfc3BhbSkgewoJCQlyZXR1cm4gbWVtX2Zvcm1fZ1R4dCgn c3BhbScpOwoJCX0KCgkJJG1lbV9mb3JtX3RoYW5rc19mb3JtID0gKCR0aGFua3NfZm9ybSA/ IGZldGNoX2Zvcm0oJHRoYW5rc19mb3JtKSA6ICR0aGFua3MpOwoKCQlzYWZlX3VwZGF0ZSgn dHhwX2Rpc2N1c3Nfbm9uY2UnLCAidXNlZCA9ICcxJywgaXNzdWVfdGltZSA9IG5vdygpIiwg Im5vbmNlID0gJyRub25jZSciKTsKCgkJJHJlc3VsdCA9IGNhbGxiYWNrX2V2ZW50KCdtZW1f Zm9ybS5zdWJtaXQnKTsKCgkJaWYgKG1lbV9mb3JtX2Vycm9yKCkpIHsKCQkJJG91dCAuPSBt ZW1fZm9ybV9kaXNwbGF5X2Vycm9yKCk7CgkJCSRyZWRpcmVjdCA9IGZhbHNlOwoJCX0KCgkJ JHRoYW5rc19mb3JtID0gJG1lbV9mb3JtX3RoYW5rc19mb3JtOwoJCXVuc2V0KCRtZW1fZm9y bV90aGFua3NfZm9ybSk7CgoJCWlmICghZW1wdHkoJHJlc3VsdCkpCgkJCXJldHVybiAkcmVz dWx0OwoKCQlpZiAobWVtX2Zvcm1fZXJyb3IoKSBhbmQgJHNob3dfaW5wdXQpCgkJewoJCQkv LyBuby1vcCwgcmVzaG93IGZvcm0gd2l0aCBlcnJvcnMKCQl9CgkJZWxzZSBpZiAoJHJlZGly ZWN0KQoJCXsKCQkJJF9QT1NUID0gYXJyYXkoKTsKCgkJCXdoaWxlIChAb2JfZW5kX2NsZWFu KCkpOwoJCQkkdXJpID0gaHUubHRyaW0oJHJlZGlyZWN0LCcvJyk7CgkJCWlmIChlbXB0eSgk X1NFUlZFUlsnRkNHSV9ST0xFJ10pIGFuZCBlbXB0eSgkX0VOVlsnRkNHSV9ST0xFJ10pKQoJ CQl7CgkJCQl0eHBfc3RhdHVzX2hlYWRlcignMzAzIFNlZSBPdGhlcicpOwoJCQkJaGVhZGVy KCdMb2NhdGlvbjogJy4kdXJpKTsKCQkJCWhlYWRlcignQ29ubmVjdGlvbjogY2xvc2UnKTsK CQkJCWhlYWRlcignQ29udGVudC1MZW5ndGg6IDAnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJ CSR1cmkgPSBodG1sc3BlY2lhbGNoYXJzKCR1cmkpOwoJCQkJJHJlZnJlc2ggPSBtZW1fZm9y bV9nVHh0KCdyZWZyZXNoJyk7CgoJCQkJaWYgKCFlbXB0eSgkcmVkaXJlY3RfZm9ybSkpCgkJ CQl7CgkJCQkJJHJlZGlyZWN0X2Zvcm0gPSBmZXRjaF9mb3JtKCRyZWRpcmVjdF9mb3JtKTsK CgkJCQkJZWNobyBzdHJfcmVwbGFjZSgne3VyaX0nLCAkdXJpLCAkcmVkaXJlY3RfZm9ybSk7 CgkJCQl9CgoJCQkJaWYgKGVtcHR5KCRyZWRpcmVjdF9mb3JtKSkKCQkJCXsKCQkJCQllY2hv IDw8PEVORAo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBU cmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRt bDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8x OTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KPGhlYWQ+Cgk8dGl0bGU+JHNp dGVuYW1lPC90aXRsZT4KCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgoJPG1ldGEgaHR0cC1lcXVpdj0icmVm cmVzaCIgY29udGVudD0iMDt1cmw9JHVyaSIgLz4KPC9oZWFkPgo8Ym9keT4KPGEgaHJlZj0i JHVyaSI+JHJlZnJlc2g8L2E+CjwvYm9keT4KPC9odG1sPgpFTkQ7CgkJCQl9CgkJCX0KCQkJ ZXhpdDsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiAnPGRpdiBjbGFzcz0ibWVtVGhhbmtzIiBp ZD0ibWVtJy4kbWVtX2Zvcm1faWQuJyI+JyAuCgkJCQkkdGhhbmtzX2Zvcm0gLiAnPC9kaXY+ JzsKCQl9Cgl9CgoJaWYgKCRzaG93X2lucHV0KQoJewoJCSRmaWxlX2FjY2VwdCA9ICghZW1w dHkoJGZpbGVfYWNjZXB0KSA/ICcgYWNjZXB0PSInLiRmaWxlX2FjY2VwdC4nIicgOiAnJyk7 CgoJCSRjbGFzcyA9IGh0bWxzcGVjaWFsY2hhcnMoJGNsYXNzKTsKCgkJJGVuY3R5cGUgPSAh ZW1wdHkoJGVuY3R5cGUpID8gJyBlbmN0eXBlPSInLiRlbmN0eXBlLiciJyA6ICcnOwoKCQly ZXR1cm4gJzxmb3JtIG1ldGhvZD0icG9zdCInLigoISRzaG93X2Vycm9yIGFuZCAkbWVtX2Zv cm1fZXJyb3IpID8gJycgOiAnIGlkPSJtZW0nLiRtZW1fZm9ybV9pZC4nIicpLicgY2xhc3M9 IicuJGNsYXNzLiciIGFjdGlvbj0iJy5odG1sc3BlY2lhbGNoYXJzKHNlcnZlclNldCgnUkVR VUVTVF9VUkknKSkuJyNtZW0nLiRtZW1fZm9ybV9pZC4nIicuJGZpbGVfYWNjZXB0LiRlbmN0 eXBlLic+Jy4KCQkJKCAkbGFiZWwgPyBuLic8ZmllbGRzZXQ+JyA6IG4uJzxkaXY+JyApLgoJ CQkoICRsYWJlbCA/IG4uJzxsZWdlbmQ+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwv bGVnZW5kPicgOiAnJyApLgoJCQkkb3V0LgoJCQluLic8aW5wdXQgdHlwZT0iaGlkZGVuIiBu YW1lPSJtZW1fZm9ybV9ub25jZSIgdmFsdWU9IicuJG1lbV9mb3JtX25vbmNlLiciIC8+Jy4K CQkJbi4nPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibWVtX2Zvcm1faWQiIHZhbHVlPSIn LiRtZW1fZm9ybV9pZC4nIiAvPicuCgkJCSghZW1wdHkoJG1heF9maWxlX3NpemUpID8gbi4n PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTUFYX0ZJTEVfU0laRSIgdmFsdWU9IicuJG1h eF9maWxlX3NpemUuJyIgLz4nIDogJycgKS4KCQkJY2FsbGJhY2tfZXZlbnQoJ21lbV9mb3Jt LmRpc3BsYXknLCcnLDEpLgoJCQkkZm9ybS4KCQkJY2FsbGJhY2tfZXZlbnQoJ21lbV9mb3Jt LmRpc3BsYXknKS4KCQkJKCAkbGFiZWwgPyAobi4nPC9maWVsZHNldD4nKSA6IChuLic8L2Rp dj4nKSApLgoJCQluLic8L2Zvcm0+JzsKCX0KCglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIG1l bV9mb3JtX3RleHQoJGF0dHMpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJyb3IsICRtZW1fZm9y bV9zdWJtaXQsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0dHMo YXJyYXkoCgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2RlZmF1bHQnCT0+ICcnLAoJCSdpc0Vycm9y Jwk9PiAnJywKCQknbGFiZWwnCQk9PiBtZW1fZm9ybV9nVHh0KCd0ZXh0JyksCgkJJ21heCcJ CT0+IDEwMCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdjbGFzcycJCT0+ ICdtZW1UZXh0JywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ3NpemUnCQk9PiAnJywKCQkncGFz c3dvcmQnCT0+IDAsCgkJJ2Zvcm1hdCcJPT4gJycsCgkJJ2V4YW1wbGUnCT0+ICcnLAoJCSdl c2NhcGVfdmFsdWUnCT0+IDEKCSksICRhdHRzKSk7CgoJJG1pbiA9IGludHZhbCgkbWluKTsK CSRtYXggPSBpbnR2YWwoJG1heCk7Cgkkc2l6ZSA9IGludHZhbCgkc2l6ZSk7CgoJaWYgKGVt cHR5KCRuYW1lKSkgJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYg KCRtZW1fZm9ybV9zdWJtaXQpCgl7CgkJJHZhbHVlID0gdHJpbShwcygkbmFtZSkpOwoJCSR1 dGY4bGVuID0gcHJlZ19tYXRjaF9hbGwoIi8uL3N1IiwgJHZhbHVlLCAkdXRmOGFyKTsKCQkk aGxhYmVsID0gZW1wdHkoJGxhYmVsKSA/IGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpIDogaHRt bHNwZWNpYWxjaGFycygkbGFiZWwpOwoKCgkJaWYgKHN0cmxlbigkdmFsdWUpID09IDAgJiYg JHJlcXVpcmVkKQoJCXsKCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdm aWVsZF9taXNzaW5nJywgYXJyYXkoJ3tsYWJlbH0nPT4kaGxhYmVsKSk7CgkJCSRpc0Vycm9y ID0gdHJ1ZTsKCQl9CgkJZWxzZWlmICghZW1wdHkoJGZvcm1hdCkgJiYgIXByZWdfbWF0Y2go JGZvcm1hdCwgJHZhbHVlKSkKCQl7CgkJCS8vZWNobyAiZm9ybWF0PSRmb3JtYXQ8YnIgLz52 YWx1ZT0kdmFsdWU8YnIgLz4iOwoJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dU eHQoJ2ludmFsaWRfZm9ybWF0JywgYXJyYXkoJ3tsYWJlbH0nPT4kaGxhYmVsLCAne2V4YW1w bGV9Jz0+IGh0bWxzcGVjaWFsY2hhcnMoJGV4YW1wbGUpKSk7CgkJCSRpc0Vycm9yID0gdHJ1 ZTsKCQl9CgkJZWxzZWlmIChzdHJsZW4oJHZhbHVlKSkKCQl7CgkJCWlmICghJHV0ZjhsZW4p CgkJCXsKCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgnaW52YWxpZF91 dGY4JywgYXJyYXkoJ3tsYWJlbH0nPT4kaGxhYmVsKSk7CgkJCQkkaXNFcnJvciA9IHRydWU7 CgkJCX0KCgkJCWVsc2VpZiAoJG1pbiBhbmQgJHV0ZjhsZW4gPCAkbWluKQoJCQl7CgkJCQkk bWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ21pbl93YXJuaW5nJywgYXJyYXko J3tsYWJlbH0nPT4kaGxhYmVsLCAne21pbn0nPT4kbWluKSk7CgkJCQkkaXNFcnJvciA9IHRy dWU7CgkJCX0KCgkJCWVsc2VpZiAoJG1heCBhbmQgJHV0ZjhsZW4gPiAkbWF4KQoJCQl7CgkJ CQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ21heF93YXJuaW5nJywgYXJy YXkoJ3tsYWJlbH0nPT4kaGxhYmVsLCAne21heH0nPT4kbWF4KSk7CgkJCQkkaXNFcnJvciA9 IHRydWU7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJGlzRXJyb3IgPSBmYWxzZSA9PT0gbWVt X2Zvcm1fc3RvcmUoJG5hbWUsICRsYWJlbCwgJHZhbHVlKTsKCQkJfQoJCX0KCX0KCgllbHNl Cgl7CgkJaWYgKGlzc2V0KCRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSkpCgkJCSR2YWx1ZSA9 ICRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXTsKCQllbHNlCgkJCSR2YWx1ZSA9ICRkZWZhdWx0 OwoJfQoKCSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4nIicgOiAnJzsKCSRt YXhsZW5ndGggPSAoJG1heCkgPyAnIG1heGxlbmd0aD0iJy4kbWF4LiciJyA6ICcnOwoKCSRp c0Vycm9yID0gJGlzRXJyb3IgPyAiZXJyb3JFbGVtZW50IiA6ICcnOwoKCSRtZW1SZXF1aXJl ZCA9ICRyZXF1aXJlZCA/ICdtZW1SZXF1aXJlZCcgOiAnJzsKCSRjbGFzcyA9IGh0bWxzcGVj aWFsY2hhcnMoJGNsYXNzKTsKCglpZiAoJGVzY2FwZV92YWx1ZSkKCXsKCQkkdmFsdWUgPSBo dG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSk7Cgl9CgogICAgcmV0dXJuICc8bGFiZWwgZm9yPSIn LiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLicg Jy4kbmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVh ay4KCQknPGlucHV0IHR5cGU9IicuKCRwYXNzd29yZCA/ICdwYXNzd29yZCcgOiAndGV4dCcp LiciIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRp c0Vycm9yLiciIG5hbWU9IicuJG5hbWUuJyIgdmFsdWU9IicuJHZhbHVlLiciJy4kc2l6ZS4k bWF4bGVuZ3RoLicgLz4nOwp9CgoKZnVuY3Rpb24gbWVtX2Zvcm1fZmlsZSgkYXR0cykKewoJ Z2xvYmFsICRtZW1fZm9ybV9zdWJtaXQsICRtZW1fZm9ybV9lcnJvciwgJG1lbV9mb3JtX2Rl ZmF1bHQsICRmaWxlX21heF91cGxvYWRfc2l6ZSwgJHRlbXBkaXI7CgoJZXh0cmFjdChtZW1f Zm9ybV9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiBiciwKCQknaXNFcnJvcicJPT4gJycs CgkJJ2xhYmVsJwkJPT4gbWVtX2Zvcm1fZ1R4dCgnZmlsZScpLAoJCSduYW1lJwkJPT4gJycs CgkJJ2NsYXNzJwkJPT4gJ21lbUZpbGUnLAoJCSdzaXplJwkJPT4gJycsCgkJJ2FjY2VwdCcJ PT4gJycsCgkJJ25vX3JlcGxhY2UnID0+IDEsCgkJJ21heF9maWxlX3NpemUnCT0+ICRmaWxl X21heF91cGxvYWRfc2l6ZSwKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ2RlZmF1bHQnCT0+IEZB TFNFLAoJKSwgJGF0dHMpKTsKCgkkZm5hbWUgPSBwcygnZmlsZV8nLiRuYW1lKTsKCSRmcmVh bG5hbWUgPSBwcygnZmlsZV9pbmZvXycuJG5hbWUuJ19uYW1lJyk7CgkkZnR5cGUgPSBwcygn ZmlsZV9pbmZvXycuJG5hbWUuJ190eXBlJyk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUg PSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJJG91dCA9ICcnOwoKCWlmICgkbWVt X2Zvcm1fc3VibWl0KQoJewoJCWlmICghZW1wdHkoJGZuYW1lKSkKCQl7CgkJCS8vIHNlZSBp ZiB1c2VyIHVwbG9hZGVkIGEgZGlmZmVyZW50IGZpbGUgdG8gcmVwbGFjZSBhbHJlYWR5IHVw bG9hZGVkCgkJCWlmIChpc3NldCgkX0ZJTEVTWyRuYW1lXSkgJiYgIWVtcHR5KCRfRklMRVNb JG5hbWVdWyd0bXBfbmFtZSddKSkKCQkJewoJCQkJLy8gdW5saW5rIGxhc3QgdGVtcCBmaWxl CgkJCQlpZiAoZmlsZV9leGlzdHMoJGZuYW1lKSAmJiBzdWJzdHJfY29tcGFyZSgkZm5hbWUs ICR0ZW1wZGlyLCAwLCBzdHJsZW4oJHRlbXBkaXIpLCAxKT09MCkKCQkJCQl1bmxpbmsoJGZu YW1lKTsKCgkJCQkkZm5hbWUgPSAnJzsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCS8vIHBhc3Mg dGhyb3VnaCBhbHJlYWR5IHVwbG9hZGVkIGZpbGVuYW1lCgkJCQltZW1fZm9ybV9zdG9yZSgk bmFtZSwgJGxhYmVsLCBhcnJheSgndG1wX25hbWUnPT4kZm5hbWUsICduYW1lJyA9PiAkZnJl YWxuYW1lLCAndHlwZScgPT4gJGZ0eXBlKSk7CgkJCQkkb3V0IC49ICI8aW5wdXQgdHlwZT0n aGlkZGVuJyBuYW1lPSdmaWxlXyIuJG5hbWUuIicgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFy cygkZm5hbWUpLiInIC8+IgoJCQkJCQkuICI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdm aWxlX2luZm9fIi4kbmFtZS4iX25hbWUnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGZy ZWFsbmFtZSkuIicgLz4iCgkJCQkJCS4gIjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2Zp bGVfaW5mb18iLiRuYW1lLiJfdHlwZScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkZnR5 cGUpLiInIC8+IjsKCQkJfQoJCX0KCgkJaWYgKGVtcHR5KCRmbmFtZSkpCgkJewoJCQkkaGxh YmVsID0gZW1wdHkoJGxhYmVsKSA/IGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpIDogaHRtbHNw ZWNpYWxjaGFycygkbGFiZWwpOwoKCQkJJGZuYW1lID0gJF9GSUxFU1skbmFtZV1bJ3RtcF9u YW1lJ107CgkJCSRmcmVhbG5hbWUgPSAkX0ZJTEVTWyRuYW1lXVsnbmFtZSddOwoJCQkkZnR5 cGUgPSAkX0ZJTEVTWyRuYW1lXVsndHlwZSddOwoJCQkkZXJyID0gMDsKCgkJCXN3aXRjaCAo JF9GSUxFU1skbmFtZV1bJ2Vycm9yJ10pIHsKCQkJCWNhc2UgVVBMT0FEX0VSUl9PSzoKCQkJ CQlpZiAoaXNfdXBsb2FkZWRfZmlsZSgkZm5hbWUpIGFuZCAkbWF4X2ZpbGVfc2l6ZSA+PSBm aWxlc2l6ZSgkZm5hbWUpKQoJCQkJCQltZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAk X0ZJTEVTWyRuYW1lXSk7CgkJCQkJZWxzZWlmICghaXNfdXBsb2FkZWRfZmlsZSgkZm5hbWUp KSB7CgkJCQkJCWlmICgkcmVxdWlyZWQpIHsKCQkJCQkJCSRtZW1fZm9ybV9lcnJvcltdID0g bWVtX2Zvcm1fZ1R4dCgnZXJyb3JfZmlsZV9mYWlsZWQnLCBhcnJheSgne2xhYmVsfSc9PiRo bGFiZWwpKTsKCQkJCQkJCSRlcnIgPSAxOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWVsc2UgewoJ CQkJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2Vycm9yX2ZpbGVfc2l6 ZScsIGFycmF5KCd7bGFiZWx9Jz0+JGhsYWJlbCkpOwoJCQkJCQkkZXJyID0gMTsKCQkJCQl9 CgkJCQkJYnJlYWs7CgoJCQkJY2FzZSBVUExPQURfRVJSX05PX0ZJTEU6CgkJCQkJaWYgKCRy ZXF1aXJlZCkgewoJCQkJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2Zp ZWxkX21pc3NpbmcnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsKCQkJCQkJJGVyciA9 IDE7CgkJCQkJfQoJCQkJCWJyZWFrOwoKCQkJCWNhc2UgVVBMT0FEX0VSUl9FWFRFTlNJT046 CgkJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdlcnJvcl9maWxlX2V4 dGVuc2lvbicsIGFycmF5KCd7bGFiZWx9Jz0+JGhsYWJlbCkpOwoJCQkJCSRlcnIgPSAxOwoJ CQkJCWJyZWFrOwoKCQkJCWNhc2UgVVBMT0FEX0VSUl9JTklfU0laRToKCQkJCWNhc2UgVVBM T0FEX0VSUl9GT1JNX1NJWkU6CgkJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9n VHh0KCdlcnJvcl9maWxlX3NpemUnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsKCQkJ CQkkZXJyID0gMTsKCQkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSRtZW1fZm9ybV9l cnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgnZXJyb3JfZmlsZV9mYWlsZWQnLCBhcnJheSgne2xh YmVsfSc9PiRobGFiZWwpKTsKCQkJCQkkZXJyID0gMTsKCQkJCQlicmVhazsKCQkJfQoKCQkJ aWYgKCEkZXJyKQoJCQl7CgkJCQkvLyBzdG9yZSBhcyBhIHR4cCB0bXAgZmlsZSB0byBiZSB1 c2VkIGxhdGVyCgkJCQkkZm5hbWUgPSBnZXRfdXBsb2FkZWRfZmlsZSgkZm5hbWUpOwoJCQkJ JGVyciA9IGZhbHNlID09PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCBhcnJheSgn dG1wX25hbWUnPT4kZm5hbWUsICduYW1lJyA9PiAkZnJlYWxuYW1lLCAndHlwZScgPT4gJGZ0 eXBlKSk7CgkJCQlpZiAoJGVycikKCQkJCXsKCQkJCQkvLyBjbGVhbiB1cCBmaWxlCgkJCQkJ QHVubGluaygkZm5hbWUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRvdXQgLj0gIjxp bnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2ZpbGVfIi4kbmFtZS4iJyB2YWx1ZT0nIi5odG1s c3BlY2lhbGNoYXJzKCRmbmFtZSkuIicgLz4iCgkJCQkJCQkuICI8aW5wdXQgdHlwZT0naGlk ZGVuJyBuYW1lPSdmaWxlX2luZm9fIi4kbmFtZS4iX25hbWUnIHZhbHVlPSciLmh0bWxzcGVj aWFsY2hhcnMoJF9GSUxFU1skbmFtZV1bJ25hbWUnXSkuIicgLz4iCgkJCQkJCQkuICI8aW5w dXQgdHlwZT0naGlkZGVuJyBuYW1lPSdmaWxlX2luZm9fIi4kbmFtZS4iX3R5cGUnIHZhbHVl PSciLmh0bWxzcGVjaWFsY2hhcnMoJF9GSUxFU1skbmFtZV1bJ3R5cGUnXSkuIicgLz4iOwoJ CQkJfQoJCQl9CgoJCQkkaXNFcnJvciA9ICRlcnIgPyAnZXJyb3JFbGVtZW50JyA6ICcnOwoJ CX0KCX0KCWVsc2UKCXsKCQlpZiAoaXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkK CQkJJHZhbHVlID0gJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdOwoJCWVsc2UgaWYgKGlzX2Fy cmF5KCRkZWZhdWx0KSkKCQkJJHZhbHVlID0gJGRlZmF1bHQ7CgoJCWlmIChpc19hcnJheShA JHZhbHVlKSkKCQl7CgkJCSRmbmFtZSA9IEAkdmFsdWVbJ3RtcF9uYW1lJ107CgkJCSRmcmVh bG5hbWUgPSBAJHZhbHVlWyduYW1lJ107CgkJCSRmdHlwZSA9IEAkdmFsdWVbJ3R5cGUnXTsK CQkJJG91dCAuPSAiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZmlsZV8iLiRuYW1lLiIn IHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGZuYW1lKS4iJyAvPiIKCQkJCS4gIjxpbnB1 dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2ZpbGVfaW5mb18iLiRuYW1lLiJfbmFtZScgdmFsdWU9 JyIuaHRtbHNwZWNpYWxjaGFycygkZnJlYWxuYW1lKS4iJyAvPiIKCQkJCS4gIjxpbnB1dCB0 eXBlPSdoaWRkZW4nIG5hbWU9J2ZpbGVfaW5mb18iLiRuYW1lLiJfdHlwZScgdmFsdWU9JyIu aHRtbHNwZWNpYWxjaGFycygkZnR5cGUpLiInIC8+IjsKCQl9Cgl9CgoJJG1lbVJlcXVpcmVk ID0gJHJlcXVpcmVkID8gJ21lbVJlcXVpcmVkJyA6ICcnOwoJJGNsYXNzID0gaHRtbHNwZWNp YWxjaGFycygkY2xhc3MpOwoKCSRzaXplID0gKCRzaXplKSA/ICcgc2l6ZT0iJy4kc2l6ZS4n IicgOiAnJzsKCSRhY2NlcHQgPSAoIWVtcHR5KCRhY2NlcHQpID8gJyBhY2NlcHQ9IicuJGFj Y2VwdC4nIicgOiAnJyk7CgoKCSRmaWVsZF9vdXQgPSAnPGxhYmVsIGZvcj0iJy4kbmFtZS4n IiBjbGFzcz0iJy4kY2xhc3MuJyAnLiRtZW1SZXF1aXJlZC4kaXNFcnJvci4nICcuJG5hbWUu JyI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsYWJlbCkuJzwvbGFiZWw+Jy4kYnJlYWs7CgoJaWYg KCFlbXB0eSgkZnJlYWxuYW1lKSAmJiAkbm9fcmVwbGFjZSkKCXsKCQkkZmllbGRfb3V0IC49 ICc8ZGl2IGlkPSInLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygkZnJlYWxuYW1lKSAu ICcgPHNwYW4gaWQ9IicuJG5hbWUuJ19mdHlwZSI+KCcuIGh0bWxzcGVjaWFsY2hhcnMoJGZ0 eXBlKS4nKTwvc3Bhbj48L2Rpdj4nOwoJfQoJZWxzZQoJewoJCSRmaWVsZF9vdXQgLj0gJzxp bnB1dCB0eXBlPSJmaWxlIiBpZD0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kY2xhc3MuJyAnLiRt ZW1SZXF1aXJlZC4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciJyAuJHNpemUuJyAvPic7 Cgl9CgogIHJldHVybiAkb3V0LiRmaWVsZF9vdXQ7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX3Rl eHRhcmVhKCRhdHRzLCAkdGhpbmc9JycpCnsKCWdsb2JhbCAkbWVtX2Zvcm1fZXJyb3IsICRt ZW1fZm9ybV9zdWJtaXQsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1f bEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gYnIsCgkJJ2NvbHMnCQk9PiA1OCwKCQknZGVm YXVsdCcJPT4gJycsCgkJJ2lzRXJyb3InCT0+ICcnLAoJCSdsYWJlbCcJCT0+IG1lbV9mb3Jt X2dUeHQoJ3RleHRhcmVhJyksCgkJJ21heCcJCT0+IDEwMDAwLAoJCSdtaW4nCQk9PiAwLAoJ CSduYW1lJwkJPT4gJycsCgkJJ2NsYXNzJwkJPT4gJ21lbVRleHRhcmVhJywKCQkncmVxdWly ZWQnCT0+IDEsCgkJJ3Jvd3MnCQk9PiA4LAoJCSdlc2NhcGVfdmFsdWUnCT0+IDEKCSksICRh dHRzKSk7CgoJJG1pbiA9IGludHZhbCgkbWluKTsKCSRtYXggPSBpbnR2YWwoJG1heCk7Cgkk Y29scyA9IGludHZhbCgkY29scyk7Cgkkcm93cyA9IGludHZhbCgkcm93cyk7CgoJaWYgKGVt cHR5KCRuYW1lKSkgJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYg KCRtZW1fZm9ybV9zdWJtaXQpCgl7CgkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXlxzKltc clxuXS8nLCAnJywgcnRyaW0ocHMoJG5hbWUpKSk7CgkJJHV0ZjhsZW4gPSBwcmVnX21hdGNo X2FsbCgiLy4vc3UiLCBsdHJpbSgkdmFsdWUpLCAkdXRmOGFyKTsKCQkkaGxhYmVsID0gaHRt bHNwZWNpYWxjaGFycygkbGFiZWwpOwoKCQlpZiAoc3RybGVuKGx0cmltKCR2YWx1ZSkpKQoJ CXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1f Zm9ybV9nVHh0KCdpbnZhbGlkX3V0ZjgnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwpKTsK CQkJCSRpc0Vycm9yID0gdHJ1ZTsKCQkJfQoKCQkJZWxzZWlmICgkbWluIGFuZCAkdXRmOGxl biA8ICRtaW4pCgkJCXsKCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4dCgn bWluX3dhcm5pbmcnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwsICd7bWlufSc9PiRtaW4p KTsKCQkJCSRpc0Vycm9yID0gdHJ1ZTsKCQkJfQoKCQkJZWxzZWlmICgkbWF4IGFuZCAkdXRm OGxlbiA+ICRtYXgpCgkJCXsKCQkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1fZ1R4 dCgnbWF4X3dhcm5pbmcnLCBhcnJheSgne2xhYmVsfSc9PiRobGFiZWwsICd7bWF4fSc9PiRt YXgpKTsKCQkJCSRpc0Vycm9yID0gdHJ1ZTsKCQkJfQoKCQkJZWxzZQoJCQl7CgkJCQkkaXNF cnJvciA9IGZhbHNlID09PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFsdWUp OwoJCQl9CgkJfQoKCQllbHNlaWYgKCRyZXF1aXJlZCkKCQl7CgkJCSRtZW1fZm9ybV9lcnJv cltdID0gbWVtX2Zvcm1fZ1R4dCgnZmllbGRfbWlzc2luZycsIGFycmF5KCd7bGFiZWx9Jz0+ JGhsYWJlbCkpOwoJCQkkaXNFcnJvciA9IHRydWU7CgkJfQoJfQoKCWVsc2UKCXsKCQlpZiAo aXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkKCQkJJHZhbHVlID0gJG1lbV9mb3Jt X2RlZmF1bHRbJG5hbWVdOwoJCWVsc2UgaWYgKCFlbXB0eSgkZGVmYXVsdCkpCgkJCSR2YWx1 ZSA9ICRkZWZhdWx0OwoJCWVsc2UKCQkJJHZhbHVlID0gcGFyc2UoJHRoaW5nKTsKCX0KCgkk aXNFcnJvciA9ICRpc0Vycm9yID8gJ2Vycm9yRWxlbWVudCcgOiAnJzsKCSRtZW1SZXF1aXJl ZCA9ICRyZXF1aXJlZCA/ICdtZW1SZXF1aXJlZCcgOiAnJzsKCSRjbGFzcyA9IGh0bWxzcGVj aWFsY2hhcnMoJGNsYXNzKTsKCglpZiAoJGVzY2FwZV92YWx1ZSkKCXsKCQkkdmFsdWUgPSBo dG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSk7Cgl9CgoJcmV0dXJuICc8bGFiZWwgZm9yPSInLiRu YW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLicgJy4k bmFtZS4nIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKS4nPC9sYWJlbD4nLiRicmVhay4K CQknPHRleHRhcmVhIGlkPSInLiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJl cXVpcmVkLiRpc0Vycm9yLiciIG5hbWU9IicuJG5hbWUuJyIgY29scz0iJy4kY29scy4nIiBy b3dzPSInLiRyb3dzLiciPicuJHZhbHVlLic8L3RleHRhcmVhPic7Cn0KCmZ1bmN0aW9uIG1l bV9mb3JtX2VtYWlsKCRhdHRzKQp7CglnbG9iYWwgJG1lbV9mb3JtX2Vycm9yLCAkbWVtX2Zv cm1fc3VibWl0LCAkbWVtX2Zvcm1fZnJvbSwgJG1lbV9mb3JtX2RlZmF1bHQ7CgoJZXh0cmFj dChtZW1fZm9ybV9sQXR0cyhhcnJheSgKCQknZGVmYXVsdCcJPT4gJycsCgkJJ2lzRXJyb3In CT0+ICcnLAoJCSdsYWJlbCcJCT0+IG1lbV9mb3JtX2dUeHQoJ2VtYWlsJyksCgkJJ21heCcJ CT0+IDEwMCwKCQknbWluJwkJPT4gMCwKCQknbmFtZScJCT0+ICcnLAoJCSdyZXF1aXJlZCcJ PT4gMSwKCQknYnJlYWsnCQk9PiBiciwKCQknc2l6ZScJCT0+ICcnLAoJCSdjbGFzcycJCT0+ ICdtZW1FbWFpbCcsCgkpLCAkYXR0cykpOwoKCWlmIChlbXB0eSgkbmFtZSkpICRuYW1lID0g bWVtX2Zvcm1fbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICgkbWVtX2Zvcm1fc3VibWl0KQoJ ewoJCSRlbWFpbCA9IHRyaW0ocHMoJG5hbWUpKTsKCgkJaWYgKHN0cmxlbigkZW1haWwpKQoJ CXsKCQkJaWYgKCFpc192YWxpZF9lbWFpbCgkZW1haWwpKQoJCQl7CgkJCQkkbWVtX2Zvcm1f ZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2ludmFsaWRfZW1haWwnLCBhcnJheSgne2VtYWls fSc9Pmh0bWxzcGVjaWFsY2hhcnMoJGVtYWlsKSkpOwoJCQkJJGlzRXJyb3IgPSB0cnVlOwoJ CQl9CgkJCWVsc2UKCQkJewoJCQkJcHJlZ19tYXRjaCgiL0AoLispJC8iLCAkZW1haWwsICRt YXRjaCk7CgkJCQkkZG9tYWluID0gJG1hdGNoWzFdOwoKCQkJCWlmIChpc19jYWxsYWJsZSgn Y2hlY2tkbnNycicpIGFuZCBjaGVja2Ruc3JyKCd0ZXh0cGF0dGVybi5jb20uJywnQScpIGFu ZCAhY2hlY2tkbnNycigkZG9tYWluLicuJywnTVgnKSBhbmQgIWNoZWNrZG5zcnIoJGRvbWFp bi4nLicsJ0EnKSkKCQkJCXsKCQkJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dU eHQoJ2ludmFsaWRfaG9zdCcsIGFycmF5KCd7ZG9tYWlufSc9Pmh0bWxzcGVjaWFsY2hhcnMo JGRvbWFpbikpKTsKCQkJCQkkaXNFcnJvciA9IHRydWU7CgkJCQl9CgkJCQllbHNlCgkJCQl7 CgkJCQkJJG1lbV9mb3JtX2Zyb20gPSAkZW1haWw7CgkJCQl9CgkJCX0KCQl9Cgl9CgllbHNl Cgl7CgkJaWYgKGlzc2V0KCRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSkpCgkJCSRlbWFpbCA9 ICRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXTsKCQllbHNlCgkJCSRlbWFpbCA9ICRkZWZhdWx0 OwoJfQoKCXJldHVybiBtZW1fZm9ybV90ZXh0KGFycmF5KAoJCSdkZWZhdWx0Jwk9PiAkZW1h aWwsCgkJJ2lzRXJyb3InCT0+ICRpc0Vycm9yLAoJCSdsYWJlbCcJCT0+ICRsYWJlbCwKCQkn bWF4JwkJPT4gJG1heCwKCQknbWluJwkJPT4gJG1pbiwKCQknbmFtZScJCT0+ICRuYW1lLAoJ CSdyZXF1aXJlZCcJPT4gJHJlcXVpcmVkLAoJCSdicmVhaycJCT0+ICRicmVhaywKCQknc2l6 ZScJCT0+ICRzaXplLAoJCSdjbGFzcycJCT0+ICRjbGFzcywKCSkpOwp9CgpmdW5jdGlvbiBt ZW1fZm9ybV9zZWxlY3Rfc2VjdGlvbigkYXR0cykKewoJZXh0cmFjdChtZW1fZm9ybV9sQXR0 cyhhcnJheSgKCQknZXhjbHVkZScJPT4gJycsCgkJJ3NvcnQnCQk9PiAnbmFtZSBBU0MnLAoJ CSdkZWxpbWl0ZXInCT0+ICcsJywKCSksJGF0dHMsZmFsc2UpKTsKCglpZiAoIWVtcHR5KCRl eGNsdWRlKSkgewoJCSRleGNsdXNpb24gPSBhcnJheV9tYXAoJ3RyaW0nLCBzcGxpdCgkZGVs aW1pdGVyLCBwcmVnX3JlcGxhY2UoJy9bXHJcblx0XHNdKy8nLCAnICcsJGV4Y2x1ZGUpKSk7 CgkJJGV4Y2x1c2lvbiA9IGFycmF5X21hcCgnc3RydG9sb3dlcicsICRleGNsdXNpb24pOwoK CQlpZiAoY291bnQoJGV4Y2x1c2lvbikpCgkJCSRleGNsdXNpb24gPSBqb2luKCRkZWxpbWl0 ZXIsIHF1b3RlX2xpc3QoJGV4Y2x1c2lvbikpOwoJfQoKCSR3aGVyZSA9IGVtcHR5KCRleGNs dXNpb24pID8gJzE9MScgOiAnTE9XRVIobmFtZSkgTk9UIElOICgnLiRleGNsdXNpb24uJykn OwoKCSRzb3J0ID0gZW1wdHkoJHNvcnQpID8gJycgOiAnIE9SREVSIEJZICcuIGRvU2xhc2go JHNvcnQpOwoKCSRycyA9IHNhZmVfcm93cygnbmFtZSwgdGl0bGUnLCd0eHBfc2VjdGlvbics JHdoZXJlIC4gJHNvcnQpOwoKCSRpdGVtcyA9IGFycmF5KCk7CgkkdmFsdWVzID0gYXJyYXko KTsKCglpZiAoJHJzKSB7CgkJZm9yZWFjaCgkcnMgYXMgJHIpIHsKCQkJJGl0ZW1zW10gPSAk clsndGl0bGUnXTsKCQkJJHZhbHVlc1tdID0gJHJbJ25hbWUnXTsKCQl9Cgl9CgoJdW5zZXQo JGF0dHNbJ2V4Y2x1ZGUnXSwgJGF0dHNbJ3NvcnQnXSk7CgoJJGF0dHNbJ2l0ZW1zJ10gPSBq b2luKCRkZWxpbWl0ZXIsICRpdGVtcyk7CgkkYXR0c1sndmFsdWVzJ10gPSBqb2luKCRkZWxp bWl0ZXIsICR2YWx1ZXMpOwoKCXJldHVybiBtZW1fZm9ybV9zZWxlY3QoJGF0dHMpOwp9Cgpm dW5jdGlvbiBtZW1fZm9ybV9zZWxlY3RfY2F0ZWdvcnkoJGF0dHMpCnsKCWV4dHJhY3QobWVt X2Zvcm1fbEF0dHMoYXJyYXkoCgkJJ3Jvb3QnCT0+ICdyb290JywKCQknZXhjbHVkZScJPT4g JycsCgkJJ2RlbGltaXRlcicJPT4gJywnLAoJCSd0eXBlJwk9PiAnYXJ0aWNsZScKCSksJGF0 dHMsZmFsc2UpKTsKCgkkcnMgPSBnZXRUcmVlKCRyb290LCAkdHlwZSk7CgoJaWYgKCFlbXB0 eSgkZXhjbHVkZSkpIHsKCQkkZXhjbHVzaW9uID0gYXJyYXlfbWFwKCd0cmltJywgc3BsaXQo JGRlbGltaXRlciwgcHJlZ19yZXBsYWNlKCcvW1xyXG5cdFxzXSsvJywgJyAnLCRleGNsdWRl KSkpOwoJCSRleGNsdXNpb24gPSBhcnJheV9tYXAoJ3N0cnRvbG93ZXInLCAkZXhjbHVzaW9u KTsKCX0KCWVsc2UKCQkkZXhjbHVzaW9uID0gYXJyYXkoKTsKCgkkaXRlbXMgPSBhcnJheSgp OwoJJHZhbHVlcyA9IGFycmF5KCk7CgoJaWYgKCRycykgewoJCWZvcmVhY2ggKCRycyBhcyAk Y2F0KSB7CgkJCWlmIChjb3VudCgkZXhjbHVzaW9uKSAmJiBpbl9hcnJheShzdHJ0b2xvd2Vy KCRjYXRbJ25hbWUnXSksICRleGNsdXNpb24pKQoJCQkJY29udGludWU7CgoJCQkkaXRlbXNb XSA9ICRjYXRbJ3RpdGxlJ107CgkJCSR2YWx1ZXNbXSA9ICRjYXRbJ25hbWUnXTsKCQl9Cgl9 CgoJdW5zZXQoJGF0dHNbJ3Jvb3QnXSwgJGF0dHNbJ3R5cGUnXSk7CgoJJGF0dHNbJ2l0ZW1z J10gPSBqb2luKCRkZWxpbWl0ZXIsICRpdGVtcyk7CgkkYXR0c1sndmFsdWVzJ10gPSBqb2lu KCRkZWxpbWl0ZXIsICR2YWx1ZXMpOwoKCXJldHVybiBtZW1fZm9ybV9zZWxlY3QoJGF0dHMp Owp9CgpmdW5jdGlvbiBtZW1fZm9ybV9zZWxlY3QoJGF0dHMpCnsKCWdsb2JhbCAkbWVtX2Zv cm1fZXJyb3IsICRtZW1fZm9ybV9zdWJtaXQsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJh Y3QobWVtX2Zvcm1fbEF0dHMoYXJyYXkoCgkJJ25hbWUnCQk9PiAnJywKCQknYnJlYWsnCQk9 PiAnICcsCgkJJ2RlbGltaXRlcicJPT4gJywnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFi ZWwnCQk9PiBtZW1fZm9ybV9nVHh0KCdvcHRpb24nKSwKCQknaXRlbXMnCQk9PiBtZW1fZm9y bV9nVHh0KCdnZW5lcmFsX2lucXVpcnknKSwKCQkndmFsdWVzJwk9PiAnJywKCQknZmlyc3Qn CQk9PiBGQUxTRSwKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ3NlbGVjdF9saW1pdCcJPT4gRkFM U0UsCgkJJ2FzX2NzdicJPT4gRkFMU0UsCgkJJ3NlbGVjdGVkJwk9PiAnJywKCQknY2xhc3Mn CQk9PiAnbWVtU2VsZWN0JywKCSksICRhdHRzLCBmYWxzZSkpOwoKCWlmIChlbXB0eSgkbmFt ZSkpICRuYW1lID0gbWVtX2Zvcm1fbGFiZWwybmFtZSgkbGFiZWwpOwoKCWlmICghZW1wdHko JGl0ZW1zKSAmJiAkaXRlbXNbMF0gPT0gJzwnKSAkaXRlbXMgPSBwYXJzZSgkaXRlbXMpOwoJ aWYgKCFlbXB0eSgkdmFsdWVzKSAmJiAkdmFsdWVzWzBdID09ICc8JykgJHZhbHVlcyA9IHBh cnNlKCR2YWx1ZXMpOwoKCWlmICgkZmlyc3QgIT09IEZBTFNFKSB7CgkJJGl0ZW1zID0gJGZp cnN0LiRkZWxpbWl0ZXIuJGF0dHNbJ2l0ZW1zJ107CgkJJHZhbHVlcyA9ICRmaXJzdC4kZGVs aW1pdGVyLiRhdHRzWyd2YWx1ZXMnXTsKCX0KCgkkc2VsZWN0X2xpbWl0ID0gZW1wdHkoJHNl bGVjdF9saW1pdCkgPyAxIDogYXNzZXJ0X2ludCgkc2VsZWN0X2xpbWl0KTsKCgkkaXRlbXMg PSBhcnJheV9tYXAoJ3RyaW0nLCBzcGxpdCgkZGVsaW1pdGVyLCBwcmVnX3JlcGxhY2UoJy9b XHJcblx0XHNdKy8nLCAnICcsJGl0ZW1zKSkpOwoJJHZhbHVlcyA9IGFycmF5X21hcCgndHJp bScsIHNwbGl0KCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tcclxuXHRcc10rLycsICcg JywkdmFsdWVzKSkpOwoJaWYgKCRzZWxlY3RfbGltaXQgPiAxKQoJewoJCSRzZWxlY3RlZCA9 IGFycmF5X21hcCgndHJpbScsIHNwbGl0KCRkZWxpbWl0ZXIsIHByZWdfcmVwbGFjZSgnL1tc clxuXHRcc10rLycsICcgJywkc2VlbGN0ZWQpKSk7Cgl9CgllbHNlCgl7CgkJJHNlbGVjdGVk ID0gYXJyYXkodHJpbSgkc2VsZWN0ZWQpKTsKCX0KCgkkdXNlX3ZhbHVlc19hcnJheSA9IChj b3VudCgkaXRlbXMpID09IGNvdW50KCR2YWx1ZXMpKTsKCglpZiAoJG1lbV9mb3JtX3N1Ym1p dCkKCXsKCQlpZiAoc3RycG9zKCRuYW1lLCAnW10nKSkKCQl7CgkJCSR2YWx1ZSA9IHBzKHN1 YnN0cigkbmFtZSwgMCwgc3RybGVuKCRuYW1lKS0yKSk7CgoJCQkkc2VsZWN0ZWQgPSAkdmFs dWU7CgoJCQlpZiAoJGFzX2NzdikKCQkJewoJCQkJJHZhbHVlID0gaW1wbG9kZSgkZGVsaW1p dGVyLCAkdmFsdWUpOwoJCQl9CgkJfQoJCWVsc2UKCQl7CgkJCSR2YWx1ZSA9IHRyaW0ocHMo JG5hbWUpKTsKCgkJCSRzZWxlY3RlZCA9IGFycmF5KCR2YWx1ZSk7CgkJfQoKCQlpZiAoIWVt cHR5KCRzZWxlY3RlZCkpCgkJewoJCQlpZiAoY291bnQoJHNlbGVjdGVkKSA8PSAkc2VsZWN0 X2xpbWl0KQoJCQl7CgkJCQlmb3JlYWNoICgkc2VsZWN0ZWQgYXMgJHYpCgkJCQl7CgkJCQkJ JGlzX3ZhbGlkID0gKCR1c2VfdmFsdWVzX2FycmF5ICYmIGluX2FycmF5KCR2LCAkdmFsdWVz KSkgb3IgKCEkdXNlX3ZhbHVlc19hcnJheSAmJiBpbl9hcnJheSgkdiwgJGl0ZW1zKSk7CgkJ CQkJaWYgKCEkaXNfdmFsaWQpCgkJCQkJewoJCQkJCQkkaW52YWxpZF92YWx1ZSA9ICR2OwoJ CQkJCQlicmVhazsKCQkJCQl9CgkJCQl9CgoJCQkJaWYgKCRpc192YWxpZCkKCQkJCXsKCQkJ CQkkaXNFcnJvciA9IGZhbHNlID09PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAk dmFsdWUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRtZW1fZm9ybV9lcnJvcltdID0g bWVtX2Zvcm1fZ1R4dCgnaW52YWxpZF92YWx1ZScsIGFycmF5KCd7bGFiZWx9Jz0+IGh0bWxz cGVjaWFsY2hhcnMoJGxhYmVsKSwgJ3t2YWx1ZX0nPT4gaHRtbHNwZWNpYWxjaGFycygkaW52 YWxpZF92YWx1ZSkpKTsKCQkJCQkkaXNFcnJvciA9IHRydWU7CgkJCQl9CgkJCX0KCQkJZWxz ZQoJCQl7CgkJCQkkbWVtX2Zvcm1fZXJyb3JbXSA9IG1lbV9mb3JtX2dUeHQoJ2ludmFsaWRf dG9vX21hbnlfc2VsZWN0ZWQnLCBhcnJheSgKCQkJCQkJCQkJCQkne2xhYmVsfSc9PiBodG1s c3BlY2lhbGNoYXJzKCRsYWJlbCksCgkJCQkJCQkJCQkJJ3tjb3VudH0nPT4gJHNlbGVjdF9s aW1pdCwKCQkJCQkJCQkJCQkne3BsdXJhbH0nPT4gKCRzZWxlY3RfbGltaXQ9PTEgPyBtZW1f Zm9ybV9nVHh0KCdpdGVtJykgOiBtZW1fZm9ybV9nVHh0KCdpdGVtcycpKQoJCQkJCQkJCQkJ KSk7CgkJCQkkaXNFcnJvciA9IHRydWU7CgkJCX0KCQl9CgoJCWVsc2VpZiAoJHJlcXVpcmVk KQoJCXsKCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBtZW1fZm9ybV9nVHh0KCdmaWVsZF9taXNz aW5nJywgYXJyYXkoJ3tsYWJlbH0nPT4gaHRtbHNwZWNpYWxjaGFycygkbGFiZWwpKSk7CgkJ CSRpc0Vycm9yID0gdHJ1ZTsKCQl9Cgl9CgllbHNlIGlmIChpc3NldCgkbWVtX2Zvcm1fZGVm YXVsdFskbmFtZV0pKQoJewoJCSRzZWxlY3RlZCA9IGFycmF5KCRtZW1fZm9ybV9kZWZhdWx0 WyRuYW1lXSk7Cgl9CgoJJG91dCA9ICcnOwoKCWZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkK CXsKCQkkdiA9ICR1c2VfdmFsdWVzX2FycmF5ID8gYXJyYXlfc2hpZnQoJHZhbHVlcykgOiAk aXRlbTsKCgkJJHNlbCA9ICFlbXB0eSgkc2VsZWN0ZWQpICYmIGluX2FycmF5KCR2LCAkc2Vs ZWN0ZWQpOwoKCQkkb3V0IC49IG4udC4nPG9wdGlvbicuKCR1c2VfdmFsdWVzX2FycmF5ID8g JyB2YWx1ZT0iJy4kdi4nIicgOiAnJykuKCRzZWwgPyAnIHNlbGVjdGVkPSJzZWxlY3RlZCI+ JyA6ICc+JykuCgkJCQkoc3RybGVuKCRpdGVtKSA/IGh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0p IDogJyAnKS4nPC9vcHRpb24+JzsKCX0KCgkkaXNFcnJvciA9ICRpc0Vycm9yID8gJ2Vycm9y RWxlbWVudCcgOiAnJzsKCSRtZW1SZXF1aXJlZCA9ICRyZXF1aXJlZCA/ICdtZW1SZXF1aXJl ZCcgOiAnJzsKCSRjbGFzcyA9IGh0bWxzcGVjaWFsY2hhcnMoJGNsYXNzKTsKCgkkbXVsdGlw bGUgPSAkc2VsZWN0X2xpbWl0ID4gMSA/ICcgbXVsdGlwbGU9Im11bHRpcGxlIicgOiAnJzsK CglyZXR1cm4gJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4k bWVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFycygk bGFiZWwpLic8L2xhYmVsPicuJGJyZWFrLgoJCW4uJzxzZWxlY3QgaWQ9IicuJG5hbWUuJyIg bmFtZT0iJy4kbmFtZS4nIiBjbGFzcz0iJy4kY2xhc3MuJyAnLiRtZW1SZXF1aXJlZC4kaXNF cnJvci4nIicgLiAkbXVsdGlwbGUgLiAnPicuCgkJCSRvdXQuCgkJbi4nPC9zZWxlY3Q+JzsK fQoKZnVuY3Rpb24gbWVtX2Zvcm1fY2hlY2tib3goJGF0dHMpCnsKCWdsb2JhbCAkbWVtX2Zv cm1fZXJyb3IsICRtZW1fZm9ybV9zdWJtaXQsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJh Y3QobWVtX2Zvcm1fbEF0dHMoYXJyYXkoCgkJJ2JyZWFrJwkJPT4gJyAnLAoJCSdjaGVja2Vk Jwk9PiAwLAoJCSdpc0Vycm9yJwk9PiAnJywKCQknbGFiZWwnCQk9PiBtZW1fZm9ybV9nVHh0 KCdjaGVja2JveCcpLAoJCSduYW1lJwkJPT4gJycsCgkJJ2NsYXNzJwkJPT4gJ21lbUNoZWNr Ym94JywKCQkncmVxdWlyZWQnCT0+IDEKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1l KSkgJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKCRtZW1fZm9y bV9zdWJtaXQpCgl7CgkJJHZhbHVlID0gKGJvb2wpIHBzKCRuYW1lKTsKCgkJaWYgKCRyZXF1 aXJlZCBhbmQgISR2YWx1ZSkKCQl7CgkJCSRtZW1fZm9ybV9lcnJvcltdID0gbWVtX2Zvcm1f Z1R4dCgnZmllbGRfbWlzc2luZycsIGFycmF5KCd7bGFiZWx9Jz0+IGh0bWxzcGVjaWFsY2hh cnMoJGxhYmVsKSkpOwoJCQkkaXNFcnJvciA9IHRydWU7CgkJfQoKCQllbHNlCgkJewoJCQkk aXNFcnJvciA9IGZhbHNlID09PSBtZW1fZm9ybV9zdG9yZSgkbmFtZSwgJGxhYmVsLCAkdmFs dWUgPyBnVHh0KCd5ZXMnKSA6IGdUeHQoJ25vJykpOwoJCX0KCX0KCgllbHNlIHsKCQlpZiAo aXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkKCQkJJHZhbHVlID0gJG1lbV9mb3Jt X2RlZmF1bHRbJG5hbWVdOwoJCWVsc2UKCQkJJHZhbHVlID0gJGNoZWNrZWQ7Cgl9CgoJJGlz RXJyb3IgPSAkaXNFcnJvciA/ICdlcnJvckVsZW1lbnQnIDogJyc7CgkkbWVtUmVxdWlyZWQg PSAkcmVxdWlyZWQgPyAnbWVtUmVxdWlyZWQnIDogJyc7CgkkY2xhc3MgPSBodG1sc3BlY2lh bGNoYXJzKCRjbGFzcyk7CgoJcmV0dXJuICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSIn LiRuYW1lLiciIGNsYXNzPSInLiRjbGFzcy4nICcuJG1lbVJlcXVpcmVkLiRpc0Vycm9yLici IG5hbWU9IicuJG5hbWUuJyInLgoJCSgkdmFsdWUgPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJyA6 ICcnKS4nIC8+Jy4kYnJlYWsuCgkJJzxsYWJlbCBmb3I9IicuJG5hbWUuJyIgY2xhc3M9Iicu JGNsYXNzLicgJy4kbWVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lLiciPicuaHRtbHNw ZWNpYWxjaGFycygkbGFiZWwpLic8L2xhYmVsPic7Cn0KCgpmdW5jdGlvbiBtZW1fZm9ybV9z ZXJ2ZXJpbmZvKCRhdHRzKQp7CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdDsKCglleHRyYWN0 KG1lbV9mb3JtX2xBdHRzKGFycmF5KAoJCSdsYWJlbCcJCT0+ICcnLAoJCSduYW1lJwkJPT4g JycKCSksICRhdHRzKSk7CgoJaWYgKGVtcHR5KCRuYW1lKSkgJG5hbWUgPSBtZW1fZm9ybV9s YWJlbDJuYW1lKCRsYWJlbCk7CgoJaWYgKHN0cmxlbigkbmFtZSkgYW5kICRtZW1fZm9ybV9z dWJtaXQpCgl7CgkJaWYgKCEkbGFiZWwpICRsYWJlbCA9ICRuYW1lOwoJCW1lbV9mb3JtX3N0 b3JlKCRuYW1lLCAkbGFiZWwsIHNlcnZlclNldCgkbmFtZSkpOwoJfQp9CgpmdW5jdGlvbiBt ZW1fZm9ybV9zZWNyZXQoJGF0dHMsICR0aGluZyA9ICcnKQp7CglnbG9iYWwgJG1lbV9mb3Jt X3N1Ym1pdDsKCglleHRyYWN0KG1lbV9mb3JtX2xBdHRzKGFycmF5KAoJCSduYW1lJwk9PiAn JywKCQknbGFiZWwnCT0+IG1lbV9mb3JtX2dUeHQoJ3NlY3JldCcpLAoJCSd2YWx1ZScJPT4g JycKCSksICRhdHRzKSk7CgoKCSRuYW1lID0gbWVtX2Zvcm1fbGFiZWwybmFtZSgkbmFtZSA/ ICRuYW1lIDogJGxhYmVsKTsKCglpZiAoJG1lbV9mb3JtX3N1Ym1pdCkKCXsKCQlpZiAoJHRo aW5nKQoJCQkkdmFsdWUgPSB0cmltKHBhcnNlKCR0aGluZykpOwoJCWVsc2UKCQkJJHZhbHVl ID0gdHJpbShwYXJzZSgkdmFsdWUpKTsKCgkJbWVtX2Zvcm1fc3RvcmUoJG5hbWUsICRsYWJl bCwgJHZhbHVlKTsKCX0KCglyZXR1cm4gJyc7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2hpZGRl bigkYXR0cywgJHRoaW5nPScnKQp7CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdCwgJG1lbV9m b3JtX2RlZmF1bHQ7CgoJZXh0cmFjdChtZW1fZm9ybV9sQXR0cyhhcnJheSgKCQknbmFtZScJ CT0+ICcnLAoJCSdsYWJlbCcJCT0+IG1lbV9mb3JtX2dUeHQoJ2hpZGRlbicpLAoJCSd2YWx1 ZScJCT0+ICcnLAoJCSdpc0Vycm9yJwk9PiAnJywKCQkncmVxdWlyZWQnCT0+IDEsCgkJJ2Ns YXNzJwkJPT4gJ21lbUhpZGRlbicsCgkJJ2VzY2FwZV92YWx1ZScJPT4gMSwKCSksICRhdHRz KSk7CgoJJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRuYW1lID8gJG5hbWUgOiAkbGFi ZWwpOwoKCWlmICgkbWVtX2Zvcm1fc3VibWl0KQoJewoJCSR2YWx1ZSA9IHByZWdfcmVwbGFj ZSgnL15ccypbXHJcbl0vJywgJycsIHJ0cmltKHBzKCRuYW1lKSkpOwoJCSR1dGY4bGVuID0g cHJlZ19tYXRjaF9hbGwoIi8uL3N1IiwgbHRyaW0oJHZhbHVlKSwgJHV0Zjhhcik7CgkJJGhs YWJlbCA9IGh0bWxzcGVjaWFsY2hhcnMoJGxhYmVsKTsKCgkJaWYgKHN0cmxlbigkdmFsdWUp KQoJCXsKCQkJaWYgKCEkdXRmOGxlbikKCQkJewoJCQkJJG1lbV9mb3JtX2Vycm9yW10gPSBt ZW1fZm9ybV9nVHh0KCdpbnZhbGlkX3V0ZjgnLCAkaGxhYmVsKTsKCQkJCSRpc0Vycm9yID0g dHJ1ZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRpc0Vycm9yID0gZmFsc2UgPT09IG1lbV9m b3JtX3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CgkJCX0KCQl9Cgl9CgllbHNlCgl7 CgkJaWYgKGlzc2V0KCRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSkpCgkJCSR2YWx1ZSA9ICRt ZW1fZm9ybV9kZWZhdWx0WyRuYW1lXTsKCQllbHNlIGlmICgkdGhpbmcpCgkJCSR2YWx1ZSA9 IHRyaW0ocGFyc2UoJHRoaW5nKSk7Cgl9CgoJJGlzRXJyb3IgPSAkaXNFcnJvciA/ICdlcnJv ckVsZW1lbnQnIDogJyc7CgkkbWVtUmVxdWlyZWQgPSAkcmVxdWlyZWQgPyAnbWVtUmVxdWly ZWQnIDogJyc7CgoJaWYgKCRlc2NhcGVfdmFsdWUpCgl7CgkJJHZhbHVlID0gaHRtbHNwZWNp YWxjaGFycygkdmFsdWUpOwoJfQoKCXJldHVybiAnPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xh c3M9IicuJGNsYXNzLicgJy4kbWVtUmVxdWlyZWQuJGlzRXJyb3IuJyAnLiRuYW1lCgkJCS4g JyIgbmFtZT0iJy4kbmFtZS4nIiB2YWx1ZT0iJy4kdmFsdWUuJyIgLz4nOwp9CgpmdW5jdGlv biBtZW1fZm9ybV9yYWRpbygkYXR0cykKewoJZ2xvYmFsICRtZW1fZm9ybV9lcnJvciwgJG1l bV9mb3JtX3N1Ym1pdCwgJG1lbV9mb3JtX3ZhbHVlcywgJG1lbV9mb3JtX2RlZmF1bHQ7CgoJ ZXh0cmFjdChtZW1fZm9ybV9sQXR0cyhhcnJheSgKCQknYnJlYWsnCQk9PiAnICcsCgkJJ2No ZWNrZWQnCT0+IDAsCgkJJ2dyb3VwJwkJPT4gJycsCgkJJ2xhYmVsJwkJPT4gbWVtX2Zvcm1f Z1R4dCgnb3B0aW9uJyksCgkJJ25hbWUnCQk9PiAnJywKCQknY2xhc3MnCQk9PiAnbWVtUmFk aW8nLAoJCSdpc0Vycm9yJwk9PiAnJwoJKSwgJGF0dHMpKTsKCglzdGF0aWMgJGN1cl9uYW1l ID0gJyc7CglzdGF0aWMgJGN1cl9ncm91cCA9ICcnOwoKCWlmICghJG5hbWUgYW5kICEkZ3Jv dXAgYW5kICEkY3VyX25hbWUgYW5kICEkY3VyX2dyb3VwKSB7CgkJJGN1cl9ncm91cCA9IG1l bV9mb3JtX2dUeHQoJ3JhZGlvJyk7CgkJJGN1cl9uYW1lID0gJGN1cl9ncm91cDsKCX0KCWlm ICgkZ3JvdXAgYW5kICEkbmFtZSBhbmQgJGdyb3VwICE9ICRjdXJfZ3JvdXApICRuYW1lID0g JGdyb3VwOwoKCWlmICgkbmFtZSkgJGN1cl9uYW1lID0gJG5hbWU7CgllbHNlICRuYW1lID0g JGN1cl9uYW1lOwoKCWlmICgkZ3JvdXApICRjdXJfZ3JvdXAgPSAkZ3JvdXA7CgllbHNlICRn cm91cCA9ICRjdXJfZ3JvdXA7CgoJJGlkICAgPSAncScubWQ1KCRuYW1lLic9PicuJGxhYmVs KTsKCSRuYW1lID0gbWVtX2Zvcm1fbGFiZWwybmFtZSgkbmFtZSk7CgoJaWYgKCRtZW1fZm9y bV9zdWJtaXQpCgl7CgkJJGlzX2NoZWNrZWQgPSAocHMoJG5hbWUpID09ICRpZCk7CgoJCWlm ICgkaXNfY2hlY2tlZCBvciAkY2hlY2tlZCBhbmQgIWlzc2V0KCRtZW1fZm9ybV92YWx1ZXNb JG5hbWVdKSkKCQl7CgkJCSRpc0Vycm9yID0gZmFsc2UgPT09IG1lbV9mb3JtX3N0b3JlKCRu YW1lLCAkZ3JvdXAsICRsYWJlbCk7CgkJfQoJfQoKCWVsc2UKCXsKCQlpZiAoaXNzZXQoJG1l bV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkKCQkJJGlzX2NoZWNrZWQgPSAkbWVtX2Zvcm1fZGVm YXVsdFskbmFtZV07CgkJZWxzZQoJCQkkaXNfY2hlY2tlZCA9ICRjaGVja2VkOwoJfQoKCSRj bGFzcyA9IGh0bWxzcGVjaWFsY2hhcnMoJGNsYXNzKTsKCgkkaXNFcnJvciA9ICRpc0Vycm9y ID8gJyBlcnJvckVsZW1lbnQnIDogJyc7CgoJcmV0dXJuICc8aW5wdXQgdmFsdWU9IicuJGlk LiciIHR5cGU9InJhZGlvIiBpZD0iJy4kaWQuJyIgY2xhc3M9IicuJGNsYXNzLicgJy4kbmFt ZS4kaXNFcnJvci4nIiBuYW1lPSInLiRuYW1lLiciJy4KCQkoICRpc19jaGVja2VkID8gJyBj aGVja2VkPSJjaGVja2VkIiAvPicgOiAnIC8+JykuJGJyZWFrLgoJCSc8bGFiZWwgZm9yPSIn LiRpZC4nIiBjbGFzcz0iJy4kY2xhc3MuJyAnLiRuYW1lLiciPicuaHRtbHNwZWNpYWxjaGFy cygkbGFiZWwpLic8L2xhYmVsPic7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX3N1Ym1pdCgkYXR0 cywgJHRoaW5nPScnKQp7CglnbG9iYWwgJG1lbV9mb3JtX3N1Ym1pdDsKCglleHRyYWN0KG1l bV9mb3JtX2xBdHRzKGFycmF5KAoJCSdidXR0b24nCT0+IDAsCgkJJ2xhYmVsJwkJPT4gbWVt X2Zvcm1fZ1R4dCgnc2F2ZScpLAoJCSduYW1lJwkJPT4gJ21lbV9mb3JtX3N1Ym1pdCcsCgkJ J2NsYXNzJwkJPT4gJ21lbVN1Ym1pdCcsCgkpLCAkYXR0cykpOwoKCSRsYWJlbCA9IGh0bWxz cGVjaWFsY2hhcnMoJGxhYmVsKTsKCSRuYW1lID0gaHRtbHNwZWNpYWxjaGFycygkbmFtZSk7 CgkkY2xhc3MgPSBodG1sc3BlY2lhbGNoYXJzKCRjbGFzcyk7CgoJaWYgKCRtZW1fZm9ybV9z dWJtaXQpCgl7CgkJJHZhbHVlID0gcHMoJG5hbWUpOwoKCQlpZiAoIWVtcHR5KCR2YWx1ZSkg JiYgJHZhbHVlID09ICRsYWJlbCkKCQl7CgkJCS8vIHNhdmUgdGhlIGNsaWNrZWQgYnV0dG9u IHZhbHVlCgkJCW1lbV9mb3JtX3N0b3JlKCRuYW1lLCAkbGFiZWwsICR2YWx1ZSk7CgkJfQoJ fQoKCWlmICgkYnV0dG9uIG9yIHN0cmxlbigkdGhpbmcpKQoJewoJCXJldHVybiAnPGJ1dHRv biB0eXBlPSJzdWJtaXQiIGNsYXNzPSInLiRjbGFzcy4nIiBuYW1lPSInLiRuYW1lLiciIHZh bHVlPSInLiRsYWJlbC4nIj4nLigkdGhpbmcgPyB0cmltKHBhcnNlKCR0aGluZykpIDogJGxh YmVsKS4nPC9idXR0b24+JzsKCX0KCWVsc2UKCXsKCQlyZXR1cm4gJzxpbnB1dCB0eXBlPSJz dWJtaXQiIGNsYXNzPSInLiRjbGFzcy4nIiBuYW1lPSInLiRuYW1lLiciIHZhbHVlPSInLiRs YWJlbC4nIiAvPic7Cgl9Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2xBdHRzKCRhcnIsICRhdHRz LCAkd2Fybj10cnVlKQp7Cglmb3JlYWNoKGFycmF5KCdidXR0b24nLCAnY2hlY2tlZCcsICdy ZXF1aXJlZCcsICdzaG93X2lucHV0JywgJ3Nob3dfZXJyb3InKSBhcyAka2V5KQoJewoJCWlm IChpc3NldCgkYXR0c1ska2V5XSkpCgkJewoJCQkkYXR0c1ska2V5XSA9ICgkYXR0c1ska2V5 XSA9PT0gJ3llcycgb3IgaW50dmFsKCRhdHRzWyRrZXldKSkgPyAxIDogMDsKCQl9Cgl9Cglp ZiAoaXNzZXQoJGF0dHNbJ2JyZWFrJ10pIGFuZCAkYXR0c1snYnJlYWsnXSA9PSAnYnInKSAk YXR0c1snYnJlYWsnXSA9ICc8YnIgLz4nOwoJcmV0dXJuIGxBdHRzKCRhcnIsICRhdHRzLCAk d2Fybik7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX2xhYmVsMm5hbWUoJGxhYmVsKQp7CgkkbGFi ZWwgPSB0cmltKCRsYWJlbCk7CglpZiAoc3RybGVuKCRsYWJlbCkgPT0gMCkgcmV0dXJuICdp bnZhbGlkJzsKCWlmIChzdHJsZW4oJGxhYmVsKSA8PSAzMiBhbmQgcHJlZ19tYXRjaCgnL15b YS16QS1aXVtBLVphLXowLTk6Xy1dKiQvJywgJGxhYmVsKSkgcmV0dXJuICRsYWJlbDsKCWVs c2UgcmV0dXJuICdxJy5tZDUoJGxhYmVsKTsKfQoKZnVuY3Rpb24gbWVtX2Zvcm1fc3RvcmUo JG5hbWUsICRsYWJlbCwgJHZhbHVlKQp7CglnbG9iYWwgJG1lbV9mb3JtLCAkbWVtX2Zvcm1f bGFiZWxzLCAkbWVtX2Zvcm1fdmFsdWVzOwoKCSRtZW1fZm9ybVskbGFiZWxdID0gJHZhbHVl OwoJJG1lbV9mb3JtX2xhYmVsc1skbmFtZV0gPSAkbGFiZWw7CgkkbWVtX2Zvcm1fdmFsdWVz WyRuYW1lXSA9ICR2YWx1ZTsKCgkkaXNfdmFsaWQgPSBmYWxzZSAhPT0gY2FsbGJhY2tfZXZl bnQoJ21lbV9mb3JtLnN0b3JlX3ZhbHVlJywgJG5hbWUpOwoKCS8vIGludmFsaWQgZGF0YSwg dW5zdG9yZSBpdAoJaWYgKCEkaXNfdmFsaWQpCgkJbWVtX2Zvcm1fcmVtb3ZlKCRuYW1lKTsK CglyZXR1cm4gJGlzX3ZhbGlkOwp9CgpmdW5jdGlvbiBtZW1fZm9ybV9yZW1vdmUoJG5hbWUp CnsKCWdsb2JhbCAkbWVtX2Zvcm0sICRtZW1fZm9ybV9sYWJlbHMsICRtZW1fZm9ybV92YWx1 ZXM7CgoJJGxhYmVsID0gJG1lbV9mb3JtX2xhYmVsc1skbmFtZV07Cgl1bnNldCgkbWVtX2Zv cm1fbGFiZWxzWyRuYW1lXSwgJG1lbV9mb3JtWyRsYWJlbF0sICRtZW1fZm9ybV92YWx1ZXNb JG5hbWVdKTsKfQoKZnVuY3Rpb24gbWVtX2Zvcm1fZGlzcGxheV9lcnJvcigpCnsKCWdsb2Jh bCAkbWVtX2Zvcm1fZXJyb3I7CgoJJG91dCA9IG4uJzx1bCBjbGFzcz0ibWVtRXJyb3IiPic7 CgoJZm9yZWFjaCAoYXJyYXlfdW5pcXVlKCRtZW1fZm9ybV9lcnJvcikgYXMgJGVycm9yKQoJ ewoJCSRvdXQgLj0gbi50Lic8bGk+Jy4kZXJyb3IuJzwvbGk+JzsKCX0KCgkkb3V0IC49IG4u JzwvdWw+JzsKCglyZXR1cm4gJG91dDsKfQoKZnVuY3Rpb24gbWVtX2Zvcm1fdmFsdWUoJGF0 dHMsICR0aGluZykKewoJZ2xvYmFsICRtZW1fZm9ybV9zdWJtaXQsICRtZW1fZm9ybV92YWx1 ZXMsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWV4dHJhY3QobWVtX2Zvcm1fbEF0dHMoYXJyYXko CgkJJ25hbWUnCQk9PiAnJywKCQknd3JhcHRhZycJPT4gJycsCgkJJ2NsYXNzJwkJPT4gJycs CgkJJ2F0dHJpYnV0ZXMnPT4gJycsCgkJJ2lkJwkJPT4gJycsCgkpLCAkYXR0cykpOwoKCSRv dXQgPSAnJzsKCglpZiAoJG1lbV9mb3JtX3N1Ym1pdCkKCXsKCQlpZiAoaXNzZXQoJG1lbV9m b3JtX3ZhbHVlc1skbmFtZV0pKQoJCQkkb3V0ID0gJG1lbV9mb3JtX3ZhbHVlc1skbmFtZV07 Cgl9CgllbHNlIHsKCQlpZiAoaXNzZXQoJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdKSkKCQkJ JG91dCA9ICRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXTsKCX0KCglyZXR1cm4gZG9UYWcoJG91 dCwgJHdyYXB0YWcsICRjbGFzcywgJGF0dHJpYnV0ZXMsICRpZCk7Cn0KCmZ1bmN0aW9uIG1l bV9mb3JtX2Vycm9yKCRlcnI9TlVMTCkKewoJZ2xvYmFsICRtZW1fZm9ybV9lcnJvcjsKCglp ZiAoIWlzX2FycmF5KCRtZW1fZm9ybV9lcnJvcikpCgkJJG1lbV9mb3JtX2Vycm9yID0gYXJy YXkoKTsKCglpZiAoJGVyciA9PSBOVUxMKQoJCXJldHVybiAhZW1wdHkoJG1lbV9mb3JtX2Vy cm9yKSA/ICRtZW1fZm9ybV9lcnJvciA6IGZhbHNlOwoKCSRtZW1fZm9ybV9lcnJvcltdID0g JGVycjsKfQoKZnVuY3Rpb24gbWVtX2Zvcm1fZGVmYXVsdCgka2V5LCR2YWw9TlVMTCkKewoJ Z2xvYmFsICRtZW1fZm9ybV9kZWZhdWx0OwoKCWlmIChpc19hcnJheSgka2V5KSkKCXsKCQlm b3JlYWNoICgka2V5IGFzICRrPT4kdikKCQl7CgkJCW1lbV9mb3JtX2RlZmF1bHQoJGssJHYp OwoJCX0KCQlyZXR1cm47Cgl9CgoJJG5hbWUgPSBtZW1fZm9ybV9sYWJlbDJuYW1lKCRrZXkp OwoKCWlmICgkdmFsID09IE5VTEwpCgl7CgkJcmV0dXJuIChpc3NldCgkbWVtX2Zvcm1fZGVm YXVsdFskbmFtZV0pID8gJG1lbV9mb3JtX2RlZmF1bHRbJG5hbWVdIDogZmFsc2UpOwoJfQoK CSRtZW1fZm9ybV9kZWZhdWx0WyRuYW1lXSA9ICR2YWw7CgoJcmV0dXJuICR2YWw7Cn0KCgoK ZnVuY3Rpb24gbWVtX2Zvcm1fbWFpbCgkZnJvbSwkcmVwbHksJHRvLCRzdWJqZWN0LCRtc2cs ICRjb250ZW50X3R5cGU9J3RleHQvcGxhaW4nKQp7CglnbG9iYWwgJHByZWZzOwoKCWlmICgh aXNfY2FsbGFibGUoJ21haWwnKSkKCQlyZXR1cm4gZmFsc2U7CgoJJHRvID0gbWVtX2Zvcm1f c3RyaXAoJHRvKTsKCSRmcm9tID0gbWVtX2Zvcm1fc3RyaXAoJGZyb20pOwoJJHJlcGx5ID0g bWVtX2Zvcm1fc3RyaXAoJHJlcGx5KTsKCSRzdWJqZWN0ID0gbWVtX2Zvcm1fc3RyaXAoJHN1 YmplY3QpOwoJJG1zZyA9IG1lbV9mb3JtX3N0cmlwKCRtc2csRkFMU0UpOwoKCWlmICgkcHJl ZnNbJ292ZXJyaWRlX2VtYWlsY2hhcnNldCddIGFuZCBpc19jYWxsYWJsZSgndXRmOF9kZWNv ZGUnKSkgewoJCSRjaGFyc2V0ID0gJ0lTTy04ODU5LTEnOwoJCSRzdWJqZWN0ID0gdXRmOF9k ZWNvZGUoJHN1YmplY3QpOwoJCSRtc2cgICAgID0gdXRmOF9kZWNvZGUoJG1zZyk7Cgl9Cgll bHNlIHsKCQkkY2hhcnNldCA9ICdVVEYtOCc7Cgl9CgoJJHN1YmplY3QgPSBtZW1fZm9ybV9t YWlsaGVhZGVyKCRzdWJqZWN0LCd0ZXh0Jyk7CgoJJHNlcCA9ICFpc193aW5kb3dzKCkgPyAi XG4iIDogIlxyXG4iOwoKCSRoZWFkZXJzID0gJ0Zyb206ICcuJGZyb20uCgkJKCRyZXBseSA/ ICgkc2VwLidSZXBseS1UbzogJy4kcmVwbHkpIDogJycpLgoJCSRzZXAuJ1gtTWFpbGVyOiBU ZXh0cGF0dGVybiAobWVtX2Zvcm0pJy4KCQkkc2VwLidYLU9yaWdpbmF0aW5nLUlQOiAnLm1l bV9mb3JtX3N0cmlwKCghZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10p ID8gJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10uJyB2aWEgJyA6ICcnKS4kX1NF UlZFUlsnUkVNT1RFX0FERFInXSkuCgkJJHNlcC4nQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdCcuCgkJJHNlcC4nQ29udGVudC1UeXBlOiAnLiRjb250ZW50X3R5cGUuJzsgY2hh cnNldD0iJy4kY2hhcnNldC4nIic7CgoJcmV0dXJuIG1haWwoJHRvLCAkc3ViamVjdCwgJG1z ZywgJGhlYWRlcnMpOwp9CgpmdW5jdGlvbiBtZW1fZm9ybV9tYWlsaGVhZGVyKCRzdHJpbmcs ICR0eXBlKQp7CglnbG9iYWwgJHByZWZzOwoKCWlmICghc3Ryc3RyKCRzdHJpbmcsJz0/Jykg YW5kICFwcmVnX21hdGNoKCcvW1x4MDAtXHgxRlx4N0YtXHhGRl0vJywgJHN0cmluZykpIHsK CQlpZiAoInBocmFzZSIgPT0gJHR5cGUpIHsKCQkJaWYgKHByZWdfbWF0Y2goJy9bXVsoKTw+ QCw7OiIuXHg1Q10vJywgJHN0cmluZykpIHsKCQkJCSRzdHJpbmcgPSAnIicuIHN0cnRyKCRz dHJpbmcsIGFycmF5KCJcXCIgPT4gIlxcXFwiLCAnIicgPT4gJ1wiJykpIC4gJyInOwoJCQl9 CgkJfQoJCWVsc2VpZiAoInRleHQiICE9ICR0eXBlKSB7CgkJCXRyaWdnZXJfZXJyb3IoJ1Vu a25vd24gZW5jb2RlX21haWxoZWFkZXIgdHlwZScsIEVfVVNFUl9XQVJOSU5HKTsKCQl9CgkJ cmV0dXJuICRzdHJpbmc7Cgl9CglpZiAoJHByZWZzWydvdmVycmlkZV9lbWFpbGNoYXJzZXQn XSkgewoJCSRzdGFydCA9ICc9P0lTTy04ODU5LTE/Qj8nOwoJCSRwY3JlICA9ICcvLnsxLDQy fS9zJzsKCX0KCWVsc2UgewoJCSRzdGFydCA9ICc9P1VURi04P0I/JzsKCQkkcGNyZSAgPSAn Ly57MSw0NX0oPz1bXHgwMC1ceDdGXHhDMC1ceEZGXXwkKS9zJzsKCX0KCSRlbmQgPSAnPz0n OwoJJHNlcCA9IGlzX3dpbmRvd3MoKSA/ICJcclxuIiA6ICJcbiI7CglwcmVnX21hdGNoX2Fs bCgkcGNyZSwgJHN0cmluZywgJG1hdGNoZXMpOwoJcmV0dXJuICRzdGFydCAuIGpvaW4oJGVu ZC4kc2VwLicgJy4kc3RhcnQsIGFycmF5X21hcCgnYmFzZTY0X2VuY29kZScsJG1hdGNoZXNb MF0pKSAuICRlbmQ7Cn0KCmZ1bmN0aW9uIG1lbV9mb3JtX3N0cmlwKCRzdHIsICRoZWFkZXIg PSBUUlVFKSB7CglpZiAoJGhlYWRlcikgJHN0ciA9IHN0cmlwX3JuKCRzdHIpOwoJcmV0dXJu IHByZWdfcmVwbGFjZSgnL1tceDAwXS8nLCAnICcsICRzdHIpOwp9CgovLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLyBTcGFtIEV2YWx1YXRvcgpj bGFzcyBtZW1fZm9ybV9ldmFsdWF0aW9uCnsKCXZhciAkc3RhdHVzOwoKCWZ1bmN0aW9uIG1l bV9mb3JtX2V2YWx1YXRpb24oKSB7CgkJJHRoaXMtPnN0YXR1cyA9IDA7Cgl9CgoJZnVuY3Rp b24gYWRkX3N0YXR1cygkcmF0aW5nPS0xKSB7CgkJJHRoaXMtPnN0YXR1cyArPSAkcmF0aW5n OwoJfQoKCWZ1bmN0aW9uIGdldF9zdGF0dXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zdGF0dXM7 Cgl9CgoJZnVuY3Rpb24gaXNfc3BhbSgpIHsKCQlyZXR1cm4gKCR0aGlzLT5zdGF0dXMgPCAw KTsKCX0KfQoKZnVuY3Rpb24gJmdldF9tZW1fZm9ybV9ldmFsdWF0b3IoKQp7CglzdGF0aWMg JGluc3RhbmNlOwoKCWlmKCFpc3NldCgkaW5zdGFuY2UpKSB7CgkJJGluc3RhbmNlID0gbmV3 IG1lbV9mb3JtX2V2YWx1YXRpb24oKTsKCX0KCXJldHVybiAkaW5zdGFuY2U7Cn0KIjtzOjg6 ImhlbHBfcmF3IjtzOjE4NTQ4OiJoMSh0aXRsZSkuIG1lbV9mb3JtIHBsdWdpbgoKaDIoc2Vj dGlvbiBzdW1tYXJ5KS4gU3VtbWFyeQoKcC4gVGhpcyBwbHVnaW4gcHJvdmlkZXMgSFRNTCBm b3JtIGNhcGFiaWxpdGllcyBmb3Igb3RoZXIgcGx1Z2lucy4gVGhpcyBhbGxvd3MgZm9yIGNv bnNpc3RlbnQgZm9ybSB0YWdzIGFuZCBiZWhhdmlvcnMsIHdoaWxlIHJlZHVjaW5nIG92ZXJh bGwgcGx1Z2luIHNpemUgYW5kIGRldmVsb3BtZW50IHRpbWUuCgpoMihzZWN0aW9uIGNvbnRh Y3QpLiBBdXRob3IgQ29udGFjdAoKIk1pY2hhZWwgTWFuZnJlIjptYWlsdG86bW1hbmZyZUBn bWFpbC5jb20/c3ViamVjdD1UZXh0cGF0dGVybiUyMG1lbV9mb3JtJTIwcGx1Z2luCiJodHRw Oi8vbWFuZnJlLm5ldCI6aHR0cDovL21hbmZyZS5uZXQKCmgyKHNlY3Rpb24gbGljZW5zZSku IExpY2Vuc2UKCnAuIFRoaXMgcGx1Z2luIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSAiR1BMdjIi Omh0dHA6Ly93d3cuZnNmLm9yZy9saWNlbnNpbmcvbGljZW5zZXMvaW5mby9HUEx2Mi5odG1s LgoKaDIoc2VjdGlvbiB0YWdzKS4gVGFncwoKKiAibWVtX2Zvcm0iOiNtZW1fZm9ybQoqICJt ZW1fZm9ybV9jaGVja2JveCI6I21lbV9mb3JtX2NoZWNrYm94CiogIm1lbV9mb3JtX2VtYWls IjojbWVtX2Zvcm1fZW1haWwKKiAibWVtX2Zvcm1fZmlsZSI6I21lbV9mb3JtX2ZpbGUKKiAi bWVtX2Zvcm1faGlkZGVuIjojbWVtX2Zvcm1faGlkZGVuCiogIm1lbV9mb3JtX3JhZGlvIjoj bWVtX2Zvcm1fcmFkaW8KKiAibWVtX2Zvcm1fc2VjcmV0IjojbWVtX2Zvcm1fc2VjcmV0Ciog Im1lbV9mb3JtX3NlbGVjdCI6I21lbV9mb3JtX3NlbGVjdAoqICJtZW1fZm9ybV9zZWxlY3Rf Y2F0ZWdvcnkiOiNtZW1fZm9ybV9zZWxlY3RfY2F0ZWdvcnkKKiAibWVtX2Zvcm1fc2VsZWN0 X3NlY3Rpb24iOiNtZW1fZm9ybV9zZWxlY3Rfc2VjdGlvbgoqICJtZW1fZm9ybV9zZXJ2ZXJp bmZvIjojbWVtX2Zvcm1fc2VydmVyaW5mbwoqICJtZW1fZm9ybV9zdWJtaXQiOiNtZW1fZm9y bV9zdWJtaXQKKiAibWVtX2Zvcm1fdGV4dCI6I21lbV9mb3JtX3RleHQKKiAibWVtX2Zvcm1f dGV4dGFyZWEiOiNtZW1fZm9ybV90ZXh0YXJlYQoqICJtZW1fZm9ybV92YWx1ZSI6I21lbV9m b3JtX3ZhbHVlCgoKaDModGFnI21lbV9mb3JtKS4gbWVtX2Zvcm0KCnAodGFnLXN1bW1hcnkp LiBUaGlzIHRhZyB3aWxsIGNyZWF0ZSBhbiBIVE1MIGZvcm0gYW5kIGNvbnRhaW5zIGFsbCBv ZiB0aGUgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbi4KCiooYXR0cykgJShhdHRzLW5hbWUp Zm9ybSUgJShhdHRzLXR5cGUpc3RyaW5nJSBOYW1lIG9mIGEgZm9ybSB0aGF0IHdpbGwgYmUg cGFyc2VkIHRvIGRpc3BsYXkgdGhlIGZvcm0uCiogJShhdHRzLW5hbWUpdGhhbmtzX2Zvcm0l ICUoYXR0cy10eXBlKXN0cmluZyUgTmFtZSBvZiBhIGZvcm0gdGhhdCB3aWxsIGJlIHBhcnNl ZCB1cG9uIHN1Y2Nlc3NmdWwgZm9ybSBzdWJtaXNzaW9uLgoqICUoYXR0cy1uYW1lKWxhYmVs JSAlKGF0dHMtdHlwZSlzdHJpbmclIEFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGZvcm0uCiog JShhdHRzLW5hbWUgcmVxdWlyZWQpdHlwZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBOYW1lIG9m IHRoZSBmb3JtIHRvIGlkZW50aWZ5IGl0c2VsZiB0byBib3VuZCBwbHVnaW4uCiogJShhdHRz LW5hbWUpdGhhbmtzJSAlKGF0dHMtdHlwZSlzdHJpbmclIE1lc3NhZ2UgdG8gZGlzcGxheSB0 byB1c2VyIHVwb24gc3VjY2Vzc2Z1bCBmb3JtIHN1Ym1pc3Npb24uCiogJShhdHRzLW5hbWUp cmVkaXJlY3QlICUoYXR0cy10eXBlKXVybCUgVVJMIHRvIHJlZGlyZWN0IHVwb24gc3VjY2Vz c2Z1bCBmb3JtIHN1Ym1pc3Npb24uIE92ZXJyaWRlcyAidGhhbmtzIiBhbmQgInRoYW5rc19m b3JtIi4KKiAlKGF0dHMtbmFtZSlyZWRpcmVjdF9mb3JtJSAlKGF0dHMtdHlwZSlzdHJpbmcl IE5hbWUgb2YgYSBmb3JtIHRoYXQgd2lsbCBiZSBwYXJzZWQgYXMgZGlzcGxheWVkIHRvIHRo ZSB1c2VyIG9uIGEgcmVkaXJlY3QuIFRoZSBzdHJpbmcgIl97dXJpfV8iIHdpbGwgYmUgcmVw bGFjZWQgd2l0aCB0aGUgcmVkaXJlY3QgdXJsLgoqICUoYXR0cy1uYW1lKWVuY3R5cGUlICUo YXR0cy10eXBlKXN0cmluZyUgSFRNTCBlbmNvZGluZyB0eXBlIHVzZWQgd2hlbiB0aGUgZm9y bSBpcyBzdWJtaXR0ZWQuIEBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIkAgaXMgcmVx dWlyZWQgd2hlbiB1c2luZyBtZW1fZm9ybV9maWxlLgoKCmgzKHRhZyNtZW1fZm9ybV9jaGVj a2JveCkuIG1lbV9mb3JtX2NoZWNrYm94CgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91 dHB1dCBhbiBIVE1MIGNoZWNrYm94IGZpZWxkLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlicmVh ayUgJShhdHRzLXR5cGUpc3RyaW5nJSBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5k IGlucHV0IHRhZy4KKiAlKGF0dHMtbmFtZSljaGVja2VkJSAlKGF0dHMtdHlwZSlpbnQlIElz IHRoaXMgYm94IGNoZWNrZWQuIERlZmF1bHQgIjAiLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAl KGF0dHMtdHlwZSlzdHJpbmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4g SWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtl ZCB0byB0aGUgaW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUp c3RyaW5nJSBJbnB1dCBmaWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0 dHMtdHlwZSlpbnQlIFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMt bmFtZSljbGFzcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KCmgzKHRh ZyNtZW1fZm9ybV9lbWFpbCkuIG1lbV9mb3JtX2VtYWlsCgpwKHRhZy1zdW1tYXJ5KS4gVGhp cyB3aWxsIG91dHB1dCBhbiBIVE1MIHRleHQgaW5wdXQgZmllbGQgYW5kIHZhbGlkYXRlcyB0 aGUgc3VibWl0dGVkIHZhbHVlIGFzIGFuIGVtYWlsIGFkZHJlc3MuCgoqKGF0dHMpICUoYXR0 cy1uYW1lKWJyZWFrJSAlKGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3ZWVuIGxh YmVsIHRhZyBhbmQgaW5wdXQgdGFnLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlw ZSlzdHJpbmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0 aGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUg aW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJ bnB1dCBmaWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMtdHlwZSlp bnQlIFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFtZSljbGFz cyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KKiAlKGF0dHMtbmFtZSlk ZWZhdWx0JSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBkZWZhdWx0IHZhbHVlLgoqICUoYXR0 cy1uYW1lKW1heCUgJShhdHRzLXR5cGUpaW50JSBNYXggY2hhcmFjdGVyIGxlbmd0aC4KKiAl KGF0dHMtbmFtZSltaW4lICUoYXR0cy10eXBlKWludCUgTWluIGNoYXJhY3RlciBsZW5ndGgu CiogJShhdHRzLW5hbWUpc2l6ZSUgJShhdHRzLXR5cGUpaW50JSBTaXplIG9mIGlucHV0IGZp ZWxkLgoKaDModGFnI21lbV9mb3JtX2ZpbGUpLiBtZW1fZm9ybV9maWxlCgorcCh0YWctc3Vt bWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCBmaWxlIGlucHV0IGZpZWxkLiBZb3Ug bXVzdCBhZGQgdGhlIEBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIkAgYXR0cmlidXRl IHRvIHlvdXIgZW5jbG9zaW5nIG1lbV9mb3JtIGZvciB0aGlzIHRvIHdvcmsuCgoqKGF0dHMp ICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlzdHJpbmclIEZyaWVuZGx5IG5hbWUg Zm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwg PT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5wdXQgZmllbGQuCiogJShhdHRzLW5h bWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1dCBmaWVsZCBuYW1lLgoqICUoYXR0 cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlwZSlzdHJpbmclIENTUyBjbGFzcyBuYW1lLgoqICUo YXR0cy1uYW1lKWJyZWFrJSAlKGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3ZWVu IGxhYmVsIHRhZyBhbmQgaW5wdXQgdGFnLgoqICUoYXR0cy1uYW1lKW5vX3JlcGxhY2UlICUo YXR0cy10eXBlKWludCUgU3BlY2lmaWVzIHdoZXRoZXIgYSB1c2VyIGNhbiB1cGxvYWQgYW5v dGhlciBmaWxlIGFuZCByZXBsYWNlIHRoZSBleGlzdGluZyBmaWxlIHRoYXQgd2lsbCBiZSBz dWJtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIHRoZSBmb3JtLiBJZiAiMSIs IHRoZSBmaWxlIGlucHV0IGZpZWxkIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBkZXRhaWxzIGFi b3V0IHRoZSBhbHJlYWR5IHVwbG9hZGVkIGZpbGUuCiogJShhdHRzLW5hbWUpcmVxdWlyZWQl ICUoYXR0cy10eXBlKWludCUgU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJlcXVpcmVkLgoqICUo YXR0cy1uYW1lKXNpemUlICUoYXR0cy10eXBlKWludCUgU2l6ZSBvZiBpbnB1dCBmaWVsZC4K KiAlKGF0dHMtbmFtZSltYXhfZmlsZV9zaXplJSAlKGF0dHMtdHlwZSlpbnQlIE1heGltdW0g c2l6ZSBmb3IgdGhlIHVwbG9hZGVkIGZpbGUuIENoZWNrZWQgc2VydmVyLXNpZGUuCiogJShh dHRzLW5hbWUpYWNjZXB0JSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBIVE1MIGZpbGUgaW5w dXQgZmllbGQncyAiYWNjZXB0IiBhcmd1bWVudCB0aGF0IHNwZWNpZmllcyB3aGljaCBmaWxl IHR5cGVzIHRoZSBmaWVsZCBzaG91bGQgcGVybWl0LgoKaDModGFnI21lbV9mb3JtX2hpZGRl bikuIG1lbV9mb3JtX2hpZGRlbgoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQg YW4gSFRNTCBoaWRkZW4gdGV4dCBpbnB1dCBmaWVsZC4KCiooYXR0cykgJShhdHRzLW5hbWUp bGFiZWwlICUoYXR0cy10eXBlKXN0cmluZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0 IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJlbD49PSB0 YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSluYW1lJSAlKGF0 dHMtdHlwZSlzdHJpbmclIElucHV0IGZpZWxkIG5hbWUuCiogJShhdHRzLW5hbWUpdmFsdWUl ICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIGlucHV0IHZhbHVlLgoqICUoYXR0cy1uYW1lKXJl cXVpcmVkJSAlKGF0dHMtdHlwZSlpbnQlIFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJl ZC4KKiAlKGF0dHMtbmFtZSljbGFzcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3Mg bmFtZS4KKiAlKGF0dHMtbmFtZSllc2NhcGVfdmFsdWUlICUoYXR0cy10eXBlKWludCUgU2V0 IHRvICIwIiB0byBwcmV2ZW50IGh0bWwgZXNjYXBpbmcgdGhlIHZhbHVlLiBEZWZhdWx0ICIx Ii4KCgpoMyh0YWcjbWVtX2Zvcm1fcmFkaW8pLiBtZW1fZm9ybV9yYWRpbwoKcCh0YWctc3Vt bWFyeSkuIFRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCByYWRpbyBidXR0b24uCgoqKGF0dHMp ICUoYXR0cy1uYW1lKWJyZWFrJSAlKGF0dHMtdHlwZSlzdHJpbmclIFNlcGFyYXRvciBiZXR3 ZWVuIGxhYmVsIHRhZyBhbmQgaW5wdXQgdGFnLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0 dHMtdHlwZSlzdHJpbmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYg c2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0 byB0aGUgaW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3Ry aW5nJSBJbnB1dCBmaWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlw ZSlzdHJpbmclIENTUyBjbGFzcyBuYW1lLgoqICUoYXR0cy1uYW1lKWdyb3VwJSAlKGF0dHMt dHlwZSlzdHJpbmclIEEgbmFtZSB0aGF0IGlkZW50aWZpZXMgYSBncm91cCBvZiByYWRpbyBi dXR0b25zLgoqICUoYXR0cy1uYW1lKWNoZWNrZWQlICUoYXR0cy10eXBlKWludCUgSXMgdGhp cyBib3ggY2hlY2tlZC4gRGVmYXVsdCAiMCIuCgpoMyh0YWcjbWVtX2Zvcm1fc2VjcmV0KS4g bWVtX2Zvcm1fc2VjcmV0CgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBub3Ro aW5nIGluIEhUTUwgYW5kIGlzIG1lYW50IHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIHN1 bWJpdCBoYW5kbGVyIHBsdWdpbnMuCgoqKGF0dHMpICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0 dHMtdHlwZSlzdHJpbmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYg c2V0LCB0aGlzIHdpbGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0 byB0aGUgaW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3Ry aW5nJSBJbnB1dCBmaWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKXZhbHVlJSAlKGF0dHMtdHlw ZSlzdHJpbmclIFRoZSBpbnB1dCB2YWx1ZS4KCmgzKHRhZyNtZW1fZm9ybV9zZWxlY3QpLiBt ZW1fZm9ybV9zZWxlY3QKCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgb3V0cHV0IGFuIEhU TUwgc2VsZWN0IGZpZWxkLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlsYWJlbCUgJShhdHRzLXR5 cGUpc3RyaW5nJSBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwg dGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MID09PGxhYmVsPj09IHRhZyBsaW5rZWQgdG8gdGhl IGlucHV0IGZpZWxkLgoqICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0cy10eXBlKXN0cmluZyUg SW5wdXQgZmllbGQgbmFtZS4KKiAlKGF0dHMtbmFtZSlicmVhayUgJShhdHRzLXR5cGUpc3Ry aW5nJSBTZXBhcmF0b3IgYmV0d2VlbiBsYWJlbCB0YWcgYW5kIGlucHV0IHRhZy4KKiAlKGF0 dHMtbmFtZSlkZWxpbWl0ZXIlICUoYXR0cy10eXBlKXN0cmluZyUgTGlzdCBzZXBhcmF0b3Iu IERlZmF1bHQgIiwiCiogJShhdHRzLW5hbWUpaXRlbXMlICUoYXR0cy10eXBlKXN0cmluZyUg RGVsaW1pdGVkIGxpc3QgY29udGFpbmluZyBhIHNlbGVjdCBsaXN0IGRpc3BsYXkgdmFsdWVz LgoqICUoYXR0cy1uYW1lKXZhbHVlcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBEZWxpbWl0ZWQg bGlzdCBjb250YWluaW5nIGEgc2VsZWN0IGxpc3QgaXRlbSB2YWx1ZXMuCiogJShhdHRzLW5h bWUpcmVxdWlyZWQlICUoYXR0cy10eXBlKWludCUgU3BlY2lmaWVzIGlmIGlucHV0IGlzIHJl cXVpcmVkLgoqICUoYXR0cy1uYW1lKXNlbGVjdGVkJSAlKGF0dHMtdHlwZSlzdHJpbmclIFRo ZSB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgaXRlbS4KKiAlKGF0dHMtbmFtZSlmaXJzdCUgJShh dHRzLXR5cGUpc3RyaW5nJSBEaXNwbGF5IHZhbHVlIG9mIHRoZSBmaXJzdCBpdGVtIGluIHRo ZSBsaXN0LiBFLmcuICJTZWxlY3QgYSBTZWN0aW9uIiBvciAiIiBmb3IgYSBibGFuayBvcHRp b24uCiogJShhdHRzLW5hbWUpY2xhc3MlICUoYXR0cy10eXBlKXN0cmluZyUgQ1NTIGNsYXNz IG5hbWUuCiogJShhdHRzLW5hbWUpc2VsZWN0X2xpbWl0JSAlKGF0dHMtdHlwZSlpbnQlIFNw ZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCBtYXkgYmUgc2VsZWN0 ZWQuIElmIHNldCB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiAxLCBhIG11bHRpc2VsZWN0IHdp bGwgYmUgdXNlZC4gVGhlIHN0b3JlZCB2YWx1ZSB3aWxsIGJlIGFuIGFycmF5LgoqICUoYXR0 cy1uYW1lKWFzX2NzdiUgJShhdHRzLXR5cGUpaW50JSBJZiBzZXQgdG8gMSwgdGhlIHZhbHVl IHdpbGwgYmUgc3RvcmVkIGFzIGEgZGVsaW1pdGVkIHN0cmluZyBvZiB2YWx1ZXMgaW5zdGVh ZCBvZiBhbiBhcnJheS4gVGhpcyBkb2VzIG5vdGhpbmcgd2hlbiBzZWxlY3RfbGltaXQgaXMg bGVzcyB0aGFuIDIuCgoKaDModGFnI21lbV9mb3JtX2NhdGVnb3J5KS4gbWVtX2Zvcm1fc2Vs ZWN0X2NhdGVnb3J5CgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCBhbiBIVE1M IHNlbGVjdCBmaWVsZCBwb3B1bGF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIFRleHRwYXR0ZXJu IGNhdGVnb3JpZXMuCgoqKGF0dHMpICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlwZSlz dHJpbmclIEZyaWVuZGx5IG5hbWUgZm9yIHRoZSBpbnB1dCBmaWVsZC4gSWYgc2V0LCB0aGlz IHdpbGwgb3V0cHV0IGFuIEhUTUwgPT08bGFiZWw+PT0gdGFnIGxpbmtlZCB0byB0aGUgaW5w dXQgZmllbGQuCiogJShhdHRzLW5hbWUpbmFtZSUgJShhdHRzLXR5cGUpc3RyaW5nJSBJbnB1 dCBmaWVsZCBuYW1lLgoqICUoYXR0cy1uYW1lKWJyZWFrJSAlKGF0dHMtdHlwZSlzdHJpbmcl IFNlcGFyYXRvciBiZXR3ZWVuIGxhYmVsIHRhZyBhbmQgaW5wdXQgdGFnLgoqICUoYXR0cy1u YW1lKWRlbGltaXRlciUgJShhdHRzLXR5cGUpc3RyaW5nJSBMaXN0IHNlcGFyYXRvci4gRGVm YXVsdCAiLCIKKiAlKGF0dHMtbmFtZSlpdGVtcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBEZWxp bWl0ZWQgbGlzdCBjb250YWluaW5nIGEgc2VsZWN0IGxpc3QgZGlzcGxheSB2YWx1ZXMuCiog JShhdHRzLW5hbWUpdmFsdWVzJSAlKGF0dHMtdHlwZSlzdHJpbmclIERlbGltaXRlZCBsaXN0 IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBpdGVtIHZhbHVlcy4KKiAlKGF0dHMtbmFtZSly ZXF1aXJlZCUgJShhdHRzLXR5cGUpaW50JSBTcGVjaWZpZXMgaWYgaW5wdXQgaXMgcmVxdWly ZWQuCiogJShhdHRzLW5hbWUpc2VsZWN0ZWQlICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIHZh bHVlIG9mIHRoZSBzZWxlY3RlZCBpdGVtLgoqICUoYXR0cy1uYW1lKWZpcnN0JSAlKGF0dHMt dHlwZSlzdHJpbmclIERpc3BsYXkgdmFsdWUgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxp c3QuIEUuZy4gIlNlbGVjdCBhIFNlY3Rpb24iIG9yICIiIGZvciBhIGJsYW5rIG9wdGlvbi4K KiAlKGF0dHMtbmFtZSljbGFzcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFt ZS4KKiAlKGF0dHMtbmFtZSlleGNsdWRlJSAlKGF0dHMtdHlwZSlzdHJpbmclIExpc3Qgb2Yg aXRlbSB2YWx1ZXMgdGhhdCB3aWxsIG5vdCBiZSBpbmNsdWRlZC4KKiAlKGF0dHMtbmFtZSlz b3J0JSAlKGF0dHMtdHlwZSlzdHJpbmclICBIb3cgd2lsbCB0aGUgbGlzdCB2YWx1ZXMgYmUg c29ydGVkLgoqICUoYXR0cy1uYW1lKXR5cGUlICUoYXR0cy10eXBlKXN0cmluZyUgQ2F0ZWdv cnkgdHlwZSBuYW1lLiBFLmcuICJhcnRpY2xlIgoKaDModGFnI21lbV9mb3JtX3NlY3Rpb24p LiBtZW1fZm9ybV9zZWxlY3Rfc2VjdGlvbgoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBv dXRwdXQgYW4gSFRNTCBzZWxlY3QgZmllbGQgcG9wdWxhdGVkIHdpdGggdGhlIHNwZWNpZmll ZCBUZXh0cGF0dGVybiBzZWN0aW9ucy4KCiooYXR0cykgJShhdHRzLW5hbWUpbGFiZWwlICUo YXR0cy10eXBlKXN0cmluZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJ ZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJlbD49PSB0YWcgbGlua2Vk IHRvIHRoZSBpbnB1dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlz dHJpbmclIElucHV0IGZpZWxkIG5hbWUuCiogJShhdHRzLW5hbWUpYnJlYWslICUoYXR0cy10 eXBlKXN0cmluZyUgU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1dCB0YWcu CiogJShhdHRzLW5hbWUpZGVsaW1pdGVyJSAlKGF0dHMtdHlwZSlzdHJpbmclIExpc3Qgc2Vw YXJhdG9yLiBEZWZhdWx0ICIsIgoqICUoYXR0cy1uYW1lKWl0ZW1zJSAlKGF0dHMtdHlwZSlz dHJpbmclIERlbGltaXRlZCBsaXN0IGNvbnRhaW5pbmcgYSBzZWxlY3QgbGlzdCBkaXNwbGF5 IHZhbHVlcy4KKiAlKGF0dHMtbmFtZSl2YWx1ZXMlICUoYXR0cy10eXBlKXN0cmluZyUgRGVs aW1pdGVkIGxpc3QgY29udGFpbmluZyBhIHNlbGVjdCBsaXN0IGl0ZW0gdmFsdWVzLgoqICUo YXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMtdHlwZSlpbnQlIFNwZWNpZmllcyBpZiBpbnB1 dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFtZSlzZWxlY3RlZCUgJShhdHRzLXR5cGUpc3Ry aW5nJSBUaGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIGl0ZW0uCiogJShhdHRzLW5hbWUpZmly c3QlICUoYXR0cy10eXBlKXN0cmluZyUgRGlzcGxheSB2YWx1ZSBvZiB0aGUgZmlyc3QgaXRl bSBpbiB0aGUgbGlzdC4gRS5nLiAiU2VsZWN0IGEgU2VjdGlvbiIgb3IgIiIgZm9yIGEgYmxh bmsgb3B0aW9uLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAlKGF0dHMtdHlwZSlzdHJpbmclIENT UyBjbGFzcyBuYW1lLgoqICUoYXR0cy1uYW1lKWV4Y2x1ZGUlICUoYXR0cy10eXBlKXN0cmlu ZyUgTGlzdCBvZiBpdGVtIHZhbHVlcyB0aGF0IHdpbGwgbm90IGJlIGluY2x1ZGVkLgoqICUo YXR0cy1uYW1lKXNvcnQlICUoYXR0cy10eXBlKXN0cmluZyUgIEhvdyB3aWxsIHRoZSBsaXN0 IHZhbHVlcyBiZSBzb3J0ZWQuCgpoMyh0YWcjbWVtX2Zvcm1fc2VydmVyaW5mbykuIG1lbV9m b3JtX3NlcnZlcmluZm8KCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgb3V0cHV0IG5vIEhU TUwgYW5kIGlzIHVzZWQgdG8gcGFzcyBzZXJ2ZXIgaW5mb3JtYXRpb24gdG8gdGhlIHBsdWdp biBoYW5kbGluZyB0aGUgZm9ybSBzdWJtaXNzaW9uLgoKKihhdHRzKSAlKGF0dHMtbmFtZSls YWJlbCUgJShhdHRzLXR5cGUpc3RyaW5nJSBGcmllbmRseSBuYW1lIGZvciB0aGUgaW5wdXQg ZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MID09PGxhYmVsPj09IHRh ZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLgoqICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0 cy10eXBlKXN0cmluZyUgSW5wdXQgZmllbGQgbmFtZS4KCmgzKHRhZyNtZW1fZm9ybV9zdWJt aXQpLiBtZW1fZm9ybV9zdWJtaXQKCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgb3V0cHV0 IGVpdGhlciBhbiBIVE1MIHN1Ym1pdCBpbnB1dCBmaWVsZCBvciBhbiBIVE1MIGJ1dHRvbi4K CiooYXR0cykgJShhdHRzLW5hbWUpbGFiZWwlICUoYXR0cy10eXBlKXN0cmluZyUgRnJpZW5k bHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxkLiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQg YW4gSFRNTCA9PTxsYWJlbD49PSB0YWcgbGlua2VkIHRvIHRoZSBpbnB1dCBmaWVsZC4KKiAl KGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlzdHJpbmclIElucHV0IGZpZWxkIG5hbWUu CiogJShhdHRzLW5hbWUpY2xhc3MlICUoYXR0cy10eXBlKXN0cmluZyUgQ1NTIGNsYXNzIG5h bWUuCiogJShhdHRzLW5hbWUpYnV0dG9uJSAlKGF0dHMtdHlwZSlpbnQlIElmICIxIiwgYW4g aHRtbCBidXR0b24gdGFnIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFuIGlucHV0IHRhZy4K CmgzKHRhZyNtZW1fZm9ybV90ZXh0KS4gbWVtX2Zvcm1fdGV4dAoKcCh0YWctc3VtbWFyeSku IFRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCB0ZXh0IGlucHV0IGZpZWxkLgoKKihhdHRzKSAl KGF0dHMtbmFtZSlsYWJlbCUgJShhdHRzLXR5cGUpc3RyaW5nJSBGcmllbmRseSBuYW1lIGZv ciB0aGUgaW5wdXQgZmllbGQuIElmIHNldCwgdGhpcyB3aWxsIG91dHB1dCBhbiBIVE1MID09 PGxhYmVsPj09IHRhZyBsaW5rZWQgdG8gdGhlIGlucHV0IGZpZWxkLgoqICUoYXR0cy1uYW1l KW5hbWUlICUoYXR0cy10eXBlKXN0cmluZyUgSW5wdXQgZmllbGQgbmFtZS4KKiAlKGF0dHMt bmFtZSljbGFzcyUgJShhdHRzLXR5cGUpc3RyaW5nJSBDU1MgY2xhc3MgbmFtZS4KKiAlKGF0 dHMtbmFtZSlicmVhayUgJShhdHRzLXR5cGUpc3RyaW5nJSBTZXBhcmF0b3IgYmV0d2VlbiBs YWJlbCB0YWcgYW5kIGlucHV0IHRhZy4KKiAlKGF0dHMtbmFtZSlkZWZhdWx0JSAlKGF0dHMt dHlwZSlzdHJpbmclIFRoZSBkZWZhdWx0IHZhbHVlLgoqICUoYXR0cy1uYW1lKWZvcm1hdCUg JShhdHRzLXR5cGUpc3RyaW5nJSBBIHJlZ2V4IHBhdHRlcm4gdGhhdCB3aWxsIGJlIG1hdGNo ZWQgYWdhaW5zdCB0aGUgaW5wdXQgdmFsdWUuIFlvdSBtdXN0IGVzY2FwZSBhbGwgYmFja3Ns YXNoZXMgJ1wnLiBFLmcgIi9cXGQvIiBpcyBhIHNpbmdsZSBkaWdpdC4KKiAlKGF0dHMtbmFt ZSlleGFtcGxlJSAlKGF0dHMtdHlwZSlzdHJpbmclIEFuIGV4YW1wbGUgb2YgYSBjb3JyZWN0 bHkgZm9ybWF0dGVkIGlucHV0IHZhbHVlLgoqICUoYXR0cy1uYW1lKXBhc3N3b3JkJSAlKGF0 dHMtdHlwZSlpbnQlIFNwZWNpZmllcyBpZiB0aGUgaW5wdXQgZmllbGQgaXMgYSBwYXNzd29y ZCBmaWVsZC4KKiAlKGF0dHMtbmFtZSlyZXF1aXJlZCUgJShhdHRzLXR5cGUpaW50JSBTcGVj aWZpZXMgaWYgaW5wdXQgaXMgcmVxdWlyZWQuCiogJShhdHRzLW5hbWUpbWF4JSAlKGF0dHMt dHlwZSlpbnQlIE1heCBjaGFyYWN0ZXIgbGVuZ3RoLgoqICUoYXR0cy1uYW1lKW1pbiUgJShh dHRzLXR5cGUpaW50JSBNaW4gY2hhcmFjdGVyIGxlbmd0aC4KKiAlKGF0dHMtbmFtZSlzaXpl JSAlKGF0dHMtdHlwZSlpbnQlIFNpemUgb2YgaW5wdXQgZmllbGQuCiogJShhdHRzLW5hbWUp ZXNjYXBlX3ZhbHVlJSAlKGF0dHMtdHlwZSlpbnQlIFNldCB0byAiMCIgdG8gcHJldmVudCBo dG1sIGVzY2FwaW5nIHRoZSB2YWx1ZS4gRGVmYXVsdCAiMSIuCgpoMyh0YWcjbWVtX2Zvcm1f dGV4dGFyZWEpLiBtZW1fZm9ybV90ZXh0YXJlYQoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2ls bCBvdXRwdXQgYW4gSFRNTCB0ZXh0YXJlYS4KCiooYXR0cykgJShhdHRzLW5hbWUpbGFiZWwl ICUoYXR0cy10eXBlKXN0cmluZyUgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIGlucHV0IGZpZWxk LiBJZiBzZXQsIHRoaXMgd2lsbCBvdXRwdXQgYW4gSFRNTCA9PTxsYWJlbD49PSB0YWcgbGlu a2VkIHRvIHRoZSBpbnB1dCBmaWVsZC4KKiAlKGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlw ZSlzdHJpbmclIElucHV0IGZpZWxkIG5hbWUuCiogJShhdHRzLW5hbWUpY2xhc3MlICUoYXR0 cy10eXBlKXN0cmluZyUgQ1NTIGNsYXNzIG5hbWUuCiogJShhdHRzLW5hbWUpYnJlYWslICUo YXR0cy10eXBlKXN0cmluZyUgU2VwYXJhdG9yIGJldHdlZW4gbGFiZWwgdGFnIGFuZCBpbnB1 dCB0YWcuCiogJShhdHRzLW5hbWUpZGVmYXVsdCUgJShhdHRzLXR5cGUpc3RyaW5nJSBUaGUg ZGVmYXVsdCB2YWx1ZS4KKiAlKGF0dHMtbmFtZSltYXglICUoYXR0cy10eXBlKWludCUgTWF4 IGNoYXJhY3RlciBsZW5ndGguCiogJShhdHRzLW5hbWUpbWluJSAlKGF0dHMtdHlwZSlpbnQl IE1pbiBjaGFyYWN0ZXIgbGVuZ3RoLgoqICUoYXR0cy1uYW1lKXJlcXVpcmVkJSAlKGF0dHMt dHlwZSlpbnQlIFNwZWNpZmllcyBpZiBpbnB1dCBpcyByZXF1aXJlZC4KKiAlKGF0dHMtbmFt ZSlyb3dzJSAlKGF0dHMtdHlwZSlpbnQlIE51bWJlciBvZiByb3dzIGluIHRoZSB0ZXh0YXJl YS4KKiAlKGF0dHMtbmFtZSljb2xzJSAlKGF0dHMtdHlwZSlpbnQlIE51bWJlciBvZiBjb2x1 bW5zIGluIHRoZSB0ZXh0YXJlYS4KKiAlKGF0dHMtbmFtZSllc2NhcGVfdmFsdWUlICUoYXR0 cy10eXBlKWludCUgU2V0IHRvICIwIiB0byBwcmV2ZW50IGh0bWwgZXNjYXBpbmcgdGhlIHZh bHVlLiBEZWZhdWx0ICIxIi4KCmgzKHRhZyNtZW1fZm9ybV92YWx1ZSkuIG1lbV9mb3JtX3Zh bHVlCgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIG91dHB1dCB0aGUgdmFsdWUgYXNzb2Np YXRlZCB3aXRoIGEgZm9ybSBmaWVsZC4gVXNlZnVsIHRvIG1peCBIVE1MIGlucHV0IGZpZWxk cyB3aXRoIG1lbV9mb3JtLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlpZCUgJShhdHRzLXR5cGUp c3RyaW5nJSBJRCBmb3Igb3V0cHV0IHdyYXAgdGFnLgoqICUoYXR0cy1uYW1lKWNsYXNzJSAl KGF0dHMtdHlwZSlzdHJpbmclIENTUyBjbGFzcyBuYW1lLgoqICUoYXR0cy1uYW1lKWNsYXNz JSAlKGF0dHMtdHlwZSlzdHJpbmclIENTUyBjbGFzcy4KKiAlKGF0dHMtbmFtZSl3cmFwdGFn JSAlKGF0dHMtdHlwZSlzdHJpbmclIEhUTUwgdGFnIHRvIHdyYXAgYXJvdW5kIHRoZSB2YWx1 ZS4KKiAlKGF0dHMtbmFtZSlhdHRyaWJ1dGVzJSAlKGF0dHMtdHlwZSlzdHJpbmclIEFkZGl0 aW9uYWwgSFRNTCB0YWcgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhl IG91dHB1dCB0YWcuCgpoMihzZWN0aW9uKS4gRXhwb3NlZCBGdW5jdGlvbnMKCmgzKHRhZyku IG1lbV9mb3JtX21haWwKCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgc2VuZCBhbiBlbWFp bCBtZXNzYWdlLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlSZXR1cm4gVmFsdWUlICUoYXR0cy10 eXBlKWJvb2wlIFJldHVybnMgdHJ1ZSBvciBmYWxzZSwgaW5kaWNhdGluZyB3aGV0aGVyIHRo ZSBlbWFpbCB3YXMgc3VjY2Vzc2Z1bGx5IGdpdmVuIHRvIHRoZSBtYWlsIHN5c3RlbS4gVGhp cyBkb2VzIG5vdCBpbmRpY2F0ZSB0aGUgdmFsaWRpdHkgb2YgdGhlIGVtYWlsIGFkZHJlc3Mg b3IgdGhhdCB0aGUgcmVjaXBpZW50IGFjdHVhbGx5IHJlY2VpdmVkIHRoZSBlbWFpbC4KKiAl KGF0dHMtbmFtZSlmcm9tJSAlKGF0dHMtdHlwZSlzdHJpbmclIFRoZSBGcm9tIGVtYWlsIGFk ZHJlc3MuCiogJShhdHRzLW5hbWUpcmVwbHklICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIFJl cGx5IFRvIGVtYWlsIGFkZHJlc3MuCiogJShhdHRzLW5hbWUpdG8lICUoYXR0cy10eXBlKXN0 cmluZyUgVGhlIFRvIGVtYWlsIGFkZHJlc3MoZXMpLgoqICUoYXR0cy1uYW1lKXN1YmplY3Ql ICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIGVtYWlsJ3MgU3ViamVjdC4KKiAlKGF0dHMtbmFt ZSltc2clICUoYXR0cy10eXBlKXN0cmluZyUgVGhlIGVtYWlsIG1lc3NhZ2UuCgoKaDModGFn KS4gbWVtX2Zvcm1fZXJyb3IKCnAodGFnLXN1bW1hcnkpLiBUaGlzIHdpbGwgc2V0IG9yIGdl dCBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmb3JtLgoKKihhdHRzKSAlKGF0dHMtbmFt ZSlSZXR1cm4gVmFsdWUlICUoYXR0cy10eXBlKW1peGVkJSBJZiBlcnIgaXMgTlVMTCwgdGhl biBpdCB3aWxsIHJldHVybiBhbiBhcnJheSBvZiBlcnJvcnMgdGhhdCBoYXZlIGJlZW4gc2V0 LgoqICUoYXR0cy1uYW1lIG9wdGlvbmFsKWVyciUgJShhdHRzLXR5cGUpc3RyaW5nJSBBbiBl cnJvciB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgZm9ybSBlcnJvcnMgdGhh dCB3aWxsIGJlIGRpc3BsYXllZCB0byB0aGUgZm9ybSB1c2VyLgoKaDModGFnKS4gbWVtX2Zv cm1fZGVmYXVsdAoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCBnZXQgb3Igc2V0IGEgZGVm YXVsdCB2YWx1ZSBmb3IgYSBmb3JtLgoKKihhdHRzKSAlKGF0dHMtbmFtZSlSZXR1cm4gVmFs dWUlICUoYXR0cy10eXBlKW1peGVkJSBJZiAlKGF0dHMtbmFtZSl2YWwgaXMgTlVMTCwgdGhl biBpdCB3aWxsIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZSBzZXQgZm9yIHRoZSBpbnB1dCBm aWVsZCBtYXRjaGluZyAlKGF0dHMtbmFtZSlrZXklLiBJZiAlKGF0dHMtbmFtZSlrZXklIGRv ZXMgbm90IGV4aXN0LCB0aGVuIGl0IHdpbGwgcmV0dXJuIEZBTFNFLgoqICUoYXR0cy1uYW1l KWtleSUgJShhdHRzLXR5cGUlKXN0cmluZyUgVGhlIG5hbWUgb2YgdGhlIGlucHV0IGZpZWxk LgoqICUoYXR0cy1uYW1lIG9wdGlvbmFsKXZhbCUgJShhdHRzLXR5cGUpc3RyaW5nJSBJZiBz cGVjaWZpZWQsIHRoaXMgd2lsbCBiZSBzcGVjaWZpZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWUg Zm9yIHRoZSBpbnB1dCBmaWVsZCBuYW1lZCAia2V5Ii4KCmgzKHRhZykuIG1lbV9mb3JtX3N0 b3JlCgpwKHRhZy1zdW1tYXJ5KS4gVGhpcyB3aWxsIHN0b3JlIHRoZSBuYW1lLCBsYWJlbCBh bmQgdmFsdWUgZm9yIGEgZmllbGQgaW4gdG8gdGhlIGFwcHJvcHJpYXRlIGdsb2JhbCB2YXJp YWJsZXMuCgoqKGF0dHMpICUoYXR0cy1uYW1lKW5hbWUlICUoYXR0cy10eXBlKXN0cmluZyUg VGhlIG5hbWUgb2YgdGhlIGZpZWxkLgoqICUoYXR0cy1uYW1lKWxhYmVsJSAlKGF0dHMtdHlw ZSUpc3RyaW5nJSBUaGUgbGFiZWwgb2YgdGhlIGZpZWxkLgoqICUoYXR0cy1uYW1lKXZhbHVl JSAlKGF0dHMtdHlwZSltaXhlZCUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZC4KCmgzKHRhZyku IG1lbV9mb3JtX3JlbW92ZQoKcCh0YWctc3VtbWFyeSkuIFRoaXMgd2lsbCByZW1vdmUgdGhl IGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIGZpZWxkIHRoYXQgaGFzIGJlZW4gc3Rv cmVkLgoKKihhdHRzKSAlKGF0dHMtbmFtZSluYW1lJSAlKGF0dHMtdHlwZSlzdHJpbmclIFRo ZSBuYW1lIG9mIHRoZSBmaWVsZC4KCmgyKHNlY3Rpb24pLiBHbG9iYWwgVmFyaWFibGVzCgpw LiBUaGlzIGxpYnJhcnkgYWxsb3dzIG90aGVyIHBsdWdpbnMgdG8gaG9vayBpbiB0byBldmVu dHMgd2l0aCB0aGUgQHJlZ2lzdGVyX2NhbGxiYWNrQCBmdW5jdGlvbi4KCiooYXR0cykgJShh dHRzLW5hbWUpJG1lbV9mb3JtX3R5cGUlICUoYXR0cy10eXBlKXN0cmluZyUgQSB0ZXh0IHZh bHVlIHRoYXQgYWxsb3dzIGEgcGx1Z2luIGRldGVybWluZSBpZiBpdCBzaG91bGQgcHJvY2Vz cyB0aGUgY3VycmVudCBmb3JtLgoqICUoYXR0cy1uYW1lKSRtZW1fZm9ybV9zdWJtaXQlICUo YXR0cy10eXBlKWJvb2wlIFRoaXMgc3BlY2lmaWVzIGlmIHRoZSBmb3JtIGlzIGRvaW5nIGEg cG9zdGJhY2suCiogJShhdHRzLW5hbWUpJG1lbV9mb3JtX2RlZmF1bHQlICUoYXR0cy10eXBl KWFycmF5JSBBbiBhcnJheSBjb250YWluaW5nIHRoZSBkZWZhdWx0IHZhbHVlcyB0byB1c2Ug d2hlbiBkaXNwbGF5aW5nIHRoZSBmb3JtLgoqICUoYXR0cy1uYW1lKSRtZW1fZm9ybSUgJShh dHRzLXR5cGUpYXJyYXklIEFuIGFycmF5IG1hcHBpbmcgYWxsIGlucHV0IGxhYmVscyB0byB0 aGVpciB2YWx1ZXMuCiogJShhdHRzLW5hbWUpJG1lbV9mb3JtX2xhYmVscyUgJShhdHRzLXR5 cGUpYXJyYXklIEFuIGFycmF5IG1hcHBpbmcgYWxsIGlucHV0IG5hbWVzIHRvIHRoZWlyIGxh YmVscy4KKiAlKGF0dHMtbmFtZSkkbWVtX2Zvcm1fdmFsdWVzJSAlKGF0dHMtdHlwZSlhcnJh eSUgQW4gYXJyYXkgbWFwcGluZyBhbGwgaW5wdXQgbmFtZXMgdG8gdGhlaXIgdmFsdWVzLgoq ICUoYXR0cy1uYW1lKSRtZW1fZm9ybV90aGFua3NfZm9ybSUgJShhdHRzLXR5cGUpc3RyaW5n JSBDb250YWlucyB0aGUgbWVzc2FnZSB0aGF0IHdpbGwgYmUgc2hvd24gdG8gdGhlIHVzZXIg YWZ0ZXIgYSBzdWNjZXNzZnVsIHN1Ym1pc3Npb24uIEVpdGhlciB0aGUgInRoYW5rc19mb3Jt IiBvciB0aGUgInRoYW5rcyIgYXR0cmlidXRlLiBBIHBsdWdpbiBjYW4gbW9kaWZ5IHRoaXMg dmFsdWUgb3IgcmV0dXJuIGEgc3RyaW5nIHRvIG92ZXIKCmgyKHNlY3Rpb24pLiBQbHVnaW4g RXZlbnRzCgpoMyhldmVudCkuIG1lbV9mb3JtLmRlZmF1bHRzCgpwKGV2ZW50LXN1bW1hcnkp LiBBbGxvd3MgYSBwbHVnaW4gdG8gYWx0ZXIgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBhIGZv cm0gcHJpb3IgdG8gYmVpbmcgZGlzcGxheWVkLgoKaDMoZXZlbnQpLiBtZW1fZm9ybS5kaXNw bGF5CgpwKGV2ZW50LXN1bW1hcnkpLiBBbGxvd3MgYSBwbHVnaW4gdG8gaW5zZXJ0IGFkZGl0 aW9uYWwgaHRtbCBpbiB0aGUgcmVuZGVyZWQgaHRtbCBmb3JtIHRhZy4KCmgzKGV2ZW50KS4g bWVtX2Zvcm0uc3VibWl0CgpwKGV2ZW50LXN1bW1hcnkpLiBBbGxvd3MgYSBwbHVnaW4gdG8g YWN0IHVwb24gYSBzdWNjZXNzZnVsIGZvcm0gc3VibWlzc2lvbi4KCmgzKGV2ZW50KS4gbWVt X2Zvcm0uc3BhbQoKcChldmVudC1zdW1tYXJ5KS4gQWxsb3dzIGEgcGx1Z2luIHRvIHRlc3Qg YSBzdWJtaXNzaW9uIGFzIHNwYW0uIFRoZSBmdW5jdGlvbiBnZXRfbWVtX2Zvcm1fZXZhbHVh dG9yKCkgcmV0dXJucyB0aGUgZXZhbHVhdG9yLgoKaDMoZXZlbnQpLiBtZW1fZm9ybS5zdG9y ZV92YWx1ZQoKcChldmVudC1zdW1tYXJ5KS4gT24gc3VibWl0LCB0aGlzIGV2ZW50IGlzIGNh bGxlZCBmb3IgZWFjaCBmaWVsZCB0aGF0IHBhc3NlZCB0aGUgYnVpbHRpbiBjaGVja3MgYW5k IHdhcyBqdXN0IHN0b3JlZCBpbiB0byB0aGUgZ2xvYmFsIHZhcmlhYmxlcy4gVGhlIGNhbGxi YWNrIHN0ZXAgaXMgdGhlIGZpZWxkIG5hbWUuIFRoaXMgY2FsbGJhY2sgY2FuIGJlIHVzZWQg Zm9yIGN1c3RvbSBmaWVsZCB2YWxpZGF0aW9uLiBJZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwg cmV0dXJuIEZBTFNFLiBXYXJuaW5nOiBUaGlzIGV2ZW50IGlzIGNhbGxlZCBmb3IgZWFjaCBm aWVsZCBldmVuIGlmIGEgcHJldmlvdXNseSBjaGVja2VkIGZpZWxkIGhhcyBmYWlsZWQuCgpo MyhldmVudCkuIG1lbV9mb3JtLnZhbGlkYXRlCgpwKGV2ZW50LXN1bW1hcnkpLiBUaGlzIGV2 ZW50IGlzIGNhbGxlZCBvbiBmb3JtIHN1Ym1pdCwgYWZ0ZXIgdGhlIGluZGl2aWR1YWwgZmll bGRzIGFyZSBwYXJzZWQgYW5kIHZhbGlkYXRlZC4gVGhpcyBldmVudCBpcyBub3QgY2FsbGVk IGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzIGFmdGVyIHRoZSBmaWVsZHMgYXJlIHZhbGlkYXRl ZC4gQW55IG11bHRpLWZpZWxkIG9yIGZvcm0gc3BlY2lmaWMgdmFsaWRhdGlvbiBzaG91bGQg aGFwcGVuIGhlcmUuIFVzZSBtZW1fZm9ybV9lcnJvcigpIHRvIHNldCBhbnkgdmFsaWRhdGlv biBlcnJvciBtZXNzYWdlcyB0byBwcmV2ZW50IGEgc3VjY2Vzc2Z1bCBwb3N0LiI7czozOiJt ZDUiO3M6MzI6IjRhYjkzMzg1MTI4MDk1NjI1OTU2ZTJhNTY0MjNjMmYwIjt9