PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPjxsaW5rIHJlbD0iU0hPUlRDVVQgSUNPTiIgaHJlZj0iL2Zhdmljb24uaWNvIiAvPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ClREIHtmb250LWZhbWlseTogVmVyZGFuYSxBcmlhbCxIZWx2ZXRpY2F9CkJPRFkge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYTsgbWFyZ2luLXRvcDogMmVtOyBtYXJnaW4tbGVmdDogMGVtOyBtYXJnaW4tcmlnaHQ6IDBlbX0KSDEge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYX0KSDIge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYX0KSDMge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYX0KQTpsaW5rLCBBOnZpc2l0ZWQsIEE6YWN0aXZlIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQo8L3N0eWxlPjx0aXRsZT5QeXRob24gYW5kIGJpbmRpbmdzPC90aXRsZT48L2hlYWQ+PGJvZHkgYmdjb2xvcj0iIzhiNzc2NSIgdGV4dD0iIzAwMDAwMCIgbGluaz0iI2EwNjA2MCIgdmxpbms9IiMwMDAwMDAiPjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJjZW50ZXIiPjx0cj48dGQgd2lkdGg9IjEyMCI+PGEgaHJlZj0iaHR0cDovL3N3cGF0LmZmaWkub3JnLyI+PGltZyBzcmM9ImVwYXRlbnRzLnBuZyIgYWx0PSJBY3Rpb24gYWdhaW5zdCBzb2Z0d2FyZSBwYXRlbnRzIiAvPjwvYT48L3RkPjx0ZCB3aWR0aD0iMTgwIj48YSBocmVmPSJodHRwOi8vd3d3Lmdub21lLm9yZy8iPjxpbWcgc3JjPSJnbm9tZTIucG5nIiBhbHQ9Ikdub21lMiBMb2dvIiAvPjwvYT48YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9TdGF0dXMiPjxpbWcgc3JjPSJ3M2MucG5nIiBhbHQ9IlczQyBMb2dvIiAvPjwvYT48YSBocmVmPSJodHRwOi8vd3d3LnJlZGhhdC5jb20vIj48aW1nIHNyYz0icmVkaGF0LmdpZiIgYWx0PSJSZWQgSGF0IExvZ28iIC8+PC9hPjxkaXYgYWxpZ249ImxlZnQiPjxhIGhyZWY9Imh0dHA6Ly94bWxzb2Z0Lm9yZy8iPjxpbWcgc3JjPSJMaWJ4bWwyLUxvZ28tMTgweDE2OC5naWYiIGFsdD0iTWFkZSB3aXRoIExpYnhtbDIgTG9nbyIgLz48L2E+PC9kaXY+PC90ZD48dGQ+PHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjkwJSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjMDAwMDAwIj48dHI+PHRkPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMSIgY2VsbHBhZGRpbmc9IjMiIGJnY29sb3I9IiNmZmZhY2QiPjx0cj48dGQgYWxpZ249ImNlbnRlciI+PGgxPlRoZSBYTUwgQyBwYXJzZXIgYW5kIHRvb2xraXQgb2YgR25vbWU8L2gxPjxoMj5QeXRob24gYW5kIGJpbmRpbmdzPC9oMj48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj48dHI+PHRkIGJnY29sb3I9IiM4Yjc3NjUiPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiIgd2lkdGg9IjEwMCUiPjx0cj48dGQgdmFsaWduPSJ0b3AiIHdpZHRoPSIyMDAiIGJnY29sb3I9IiM4Yjc3NjUiPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiMwMDAwMDAiPjx0cj48dGQ+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMyI+PHRyPjx0ZCBjb2xzcGFuPSIxIiBiZ2NvbG9yPSIjZWVjZmExIiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjxiPkRldmVsb3BlciBNZW51PC9iPjwvY2VudGVyPjwvdGQ+PC90cj48dHI+PHRkIGJnY29sb3I9IiNmZmZhY2QiPjxmb3JtIGFjdGlvbj0ic2VhcmNoLnBocCIgZW5jdHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InF1ZXJ5IiB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgdmFsdWU9IiIgLz48aW5wdXQgbmFtZT0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTZWFyY2ggLi4uIiAvPjwvZm9ybT48dWw+PGxpPjxhIGhyZWY9ImluZGV4Lmh0bWwiIHN0eWxlPSJmb250LXdlaWdodDpib2xkIj5NYWluIE1lbnU8L2E+PC9saT48bGk+PGEgaHJlZj0iaHRtbC9pbmRleC5odG1sIiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZCI+UmVmZXJlbmNlIE1hbnVhbDwvYT48L2xpPjxsaT48YSBocmVmPSJleGFtcGxlcy9pbmRleC5odG1sIiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZCI+Q29kZSBFeGFtcGxlczwvYT48L2xpPjxsaT48YSBocmVmPSJndWlkZWxpbmVzLmh0bWwiPlhNTCBHdWlkZWxpbmVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9InR1dG9yaWFsL2luZGV4Lmh0bWwiPlR1dG9yaWFsPC9hPjwvbGk+PGxpPjxhIGhyZWY9InhtbHJlYWRlci5odG1sIj5UaGUgUmVhZGVyIEludGVyZmFjZTwvYT48L2xpPjxsaT48YSBocmVmPSJDaGFuZ2VMb2cuaHRtbCI+Q2hhbmdlTG9nPC9hPjwvbGk+PGxpPjxhIGhyZWY9IlhTTFQuaHRtbCI+WFNMVDwvYT48L2xpPjxsaT48YSBocmVmPSJweXRob24uaHRtbCI+UHl0aG9uIGFuZCBiaW5kaW5nczwvYT48L2xpPjxsaT48YSBocmVmPSJhcmNoaXRlY3R1cmUuaHRtbCI+bGlieG1sMiBhcmNoaXRlY3R1cmU8L2E+PC9saT48bGk+PGEgaHJlZj0idHJlZS5odG1sIj5UaGUgdHJlZSBvdXRwdXQ8L2E+PC9saT48bGk+PGEgaHJlZj0iaW50ZXJmYWNlLmh0bWwiPlRoZSBTQVggaW50ZXJmYWNlPC9hPjwvbGk+PGxpPjxhIGhyZWY9InhtbG1lbS5odG1sIj5NZW1vcnkgTWFuYWdlbWVudDwvYT48L2xpPjxsaT48YSBocmVmPSJ4bWxpby5odG1sIj5JL08gSW50ZXJmYWNlczwvYT48L2xpPjxsaT48YSBocmVmPSJsaWJyYXJ5Lmh0bWwiPlRoZSBwYXJzZXIgaW50ZXJmYWNlczwvYT48L2xpPjxsaT48YSBocmVmPSJlbnRpdGllcy5odG1sIj5FbnRpdGllcyBvciBubyBlbnRpdGllczwvYT48L2xpPjxsaT48YSBocmVmPSJuYW1lc3BhY2VzLmh0bWwiPk5hbWVzcGFjZXM8L2E+PC9saT48bGk+PGEgaHJlZj0idXBncmFkZS5odG1sIj5VcGdyYWRpbmcgMS54IGNvZGU8L2E+PC9saT48bGk+PGEgaHJlZj0idGhyZWFkcy5odG1sIj5UaHJlYWQgc2FmZXR5PC9hPjwvbGk+PGxpPjxhIGhyZWY9IkRPTS5odG1sIj5ET00gUHJpbmNpcGxlczwvYT48L2xpPjxsaT48YSBocmVmPSJleGFtcGxlLmh0bWwiPkEgcmVhbCBleGFtcGxlPC9hPjwvbGk+PGxpPjxhIGhyZWY9InhtbC5odG1sIj5mbGF0IHBhZ2U8L2E+LCA8YSBocmVmPSJzaXRlLnhzbCI+c3R5bGVzaGVldDwvYT48L2xpPjwvdWw+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMyI+PHRyPjx0ZCBjb2xzcGFuPSIxIiBiZ2NvbG9yPSIjZWVjZmExIiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjxiPkFQSSBJbmRleGVzPC9iPjwvY2VudGVyPjwvdGQ+PC90cj48dHI+PHRkIGJnY29sb3I9IiNmZmZhY2QiPjx1bD48bGk+PGEgaHJlZj0iQVBJY2h1bmswLmh0bWwiPkFscGhhYmV0aWM8L2E+PC9saT48bGk+PGEgaHJlZj0iQVBJY29uc3RydWN0b3JzLmh0bWwiPkNvbnN0cnVjdG9yczwvYT48L2xpPjxsaT48YSBocmVmPSJBUElmdW5jdGlvbnMuaHRtbCI+RnVuY3Rpb25zL1R5cGVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9IkFQSWZpbGVzLmh0bWwiPk1vZHVsZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iQVBJc3ltYm9scy5odG1sIj5TeW1ib2xzPC9hPjwvbGk+PC91bD48L3RkPjwvdHI+PC90YWJsZT48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIzIj48dHI+PHRkIGNvbHNwYW49IjEiIGJnY29sb3I9IiNlZWNmYTEiIGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+PGI+UmVsYXRlZCBsaW5rczwvYj48L2NlbnRlcj48L3RkPjwvdHI+PHRyPjx0ZCBiZ2NvbG9yPSIjZmZmYWNkIj48dWw+PGxpPjxhIGhyZWY9Imh0dHA6Ly9tYWlsLmdub21lLm9yZy9hcmNoaXZlcy94bWwvIj5NYWlsIGFyY2hpdmU8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3htbHNvZnQub3JnL1hTTFQvIj5YU0xUIGxpYnhzbHQ8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3BoZC5jcy51bmliby5pdC9nZG9tZTIvIj5ET00gZ2RvbWUyPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjLyI+WE1MLURTaWcgeG1sc2VjPC9hPjwvbGk+PGxpPjxhIGhyZWY9ImZ0cDovL3htbHNvZnQub3JnLyI+RlRQPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuemxhdGtvdmljLmNvbS9wcm9qZWN0cy9saWJ4bWwvIj5XaW5kb3dzIGJpbmFyaWVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuYmxhc3R3YXZlLm9yZy9wYWNrYWdlcy5waHAvbGlieG1sMiI+U29sYXJpcyBiaW5hcmllczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmV4cGxhaW4uY29tLmF1L29zcy9saWJ4bWwyeHNsdC5odG1sIj5NYWNPc1ggYmluYXJpZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL2xpYnhtbHBsdXNwbHVzLnNvdXJjZWZvcmdlLm5ldC8iPkMrKyBiaW5kaW5nczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnplbmQuY29tL3BocDUvYXJ0aWNsZXMvcGhwNS14bWxwaHAucGhwI0hlYWRpbmc0Ij5QSFAgYmluZGluZ3M8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ4bWwyLXBhcy8iPlBhc2NhbCBiaW5kaW5nczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vbGlieG1sLnJ1Ynlmb3JnZS5vcmcvIj5SdWJ5IGJpbmRpbmdzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly90Y2x4bWwuc291cmNlZm9yZ2UubmV0LyI+VGNsIGJpbmRpbmdzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIj5CdWcgVHJhY2tlcjwvYT48L2xpPjwvdWw+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48dGQgdmFsaWduPSJ0b3AiIGJnY29sb3I9IiM4Yjc3NjUiPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSIgd2lkdGg9IjEwMCUiPjx0cj48dGQ+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzAwMDAwMCI+PHRyPjx0ZD48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIHdpZHRoPSIxMDAlIj48dHI+PHRkIGJnY29sb3I9IiNmZmZhY2QiPjxwPlRoZXJlIGFyZSBhIG51bWJlciBvZiBsYW5ndWFnZSBiaW5kaW5ncyBhbmQgd3JhcHBlcnMgYXZhaWxhYmxlIGZvcmxpYnhtbDIsCnRoZSBsaXN0IGJlbG93IGlzIG5vdCBleGhhdXN0aXZlLiBQbGVhc2UgY29udGFjdCB0aGUgPGEgaHJlZj0iaHR0cDovL21haWwuZ25vbWUub3JnL21haWxtYW4vbGlzdGluZm8veG1sLWJpbmRpbmdzIj54bWwtYmluZGluZ3NAZ25vbWUub3JnPC9hPig8YSBocmVmPSJodHRwOi8vbWFpbC5nbm9tZS5vcmcvYXJjaGl2ZXMveG1sLWJpbmRpbmdzLyI+YXJjaGl2ZXM8L2E+KSBpbm9yZGVyIHRvCmdldCB1cGRhdGVzIHRvIHRoaXMgbGlzdCBvciB0byBkaXNjdXNzIHRoZSBzcGVjaWZpYyB0b3BpYyBvZiBsaWJ4bWwyb3IKbGlieHNsdCB3cmFwcGVycyBvciBiaW5kaW5nczo8L3A+PHVsPjxsaT48YSBocmVmPSJodHRwOi8vbGlieG1scGx1c3BsdXMuc291cmNlZm9yZ2UubmV0LyI+TGlieG1sKys8L2E+c2VlbXMKICAgIHRoZW1vc3QgdXAtdG8tZGF0ZSBDKysgYmluZGluZ3MgZm9yIGxpYnhtbDIsIGNoZWNrIHRoZSA8YSBocmVmPSJodHRwOi8vbGlieG1scGx1c3BsdXMuc291cmNlZm9yZ2UubmV0L3JlZmVyZW5jZS9odG1sL2hpZXJhcmNoeS5odG1sIj5kb2N1bWVudGF0aW9uPC9hPmFuZAogICAgdGhlIDxhIGhyZWY9Imh0dHA6Ly9jdnMuc291cmNlZm9yZ2UubmV0L2NnaS1iaW4vdmlld2N2cy5jZ2kvbGlieG1scGx1c3BsdXMvbGlieG1sJTJiJTJiL2V4YW1wbGVzLyI+ZXhhbXBsZXM8L2E+LjwvbGk+CiAgPGxpPlRoZXJlIGlzIGFub3RoZXIgPGEgaHJlZj0iaHR0cDovL2xpYmdkb21lLWNwcC5iZXJsaW9zLmRlLyI+QysrCiAgICB3cmFwcGVyYmFzZWQgb24gdGhlIGdkb21lMiBiaW5kaW5nczwvYT5tYWludGFpbmVkIGJ5IFRvYmlhcyBQZXRlcnMuPC9saT4KICA8bGk+YW5kIGEgdGhpcmQgQysrIHdyYXBwZXIgYnkgUGV0ZXIgSm9uZXMgJmx0O3Bqb25lc0BwbWFkZS5vcmcmZ3Q7CiAgICA8cD5XZWJzaXRlOiA8YSBocmVmPSJodHRwOi8vcG1hZGUub3JnL3Bqb25lcy9zb2Z0d2FyZS94bWx3cmFwcC8iPmh0dHA6Ly9wbWFkZS5vcmcvcGpvbmVzL3NvZnR3YXJlL3htbHdyYXBwLzwvYT48L3A+CiAgPC9saT4KICA8bGk+PGEgaHJlZj0iaHR0cDovL21haWwuZ25vbWUub3JnL2FyY2hpdmVzL3htbC8yMDAxLU1hcmNoL21zZzAwMDE0Lmh0bWwiPk1hdHRTZXJnZWFudDwvYT5kZXZlbG9wZWQKICAgIDxhIGhyZWY9Imh0dHA6Ly9heGtpdC5vcmcvZG93bmxvYWQvIj5YTUw6OkxpYlhTTFQ8L2E+LCBhIFBlcmwgd3JhcHBlcgogICAgZm9ybGlieG1sMi9saWJ4c2x0IGFzIHBhcnQgb2YgdGhlIDxhIGhyZWY9Imh0dHA6Ly9heGtpdC5jb20vIj5BeEtpdAogICAgWE1MYXBwbGljYXRpb24gc2VydmVyPC9hPi48L2xpPgogIDxsaT5JZiB5b3UncmUgaW50ZXJlc3RlZCBpbnRvIHNjcmlwdGluZyBYTUwgcHJvY2Vzc2luZywgaGF2ZSBhIGxvb2sgYXQgPGEgaHJlZj0iaHR0cDovL3hzaC5zb3VyY2Vmb3JnZS5uZXQvIj5YU0g8L2E+YW4gWE1MIGVkaXRpbmcgc2hlbGwgYmFzZWQKICAgIG9uTGlieG1sMiBQZXJsIGJpbmRpbmdzLjwvbGk+CiAgPGxpPjxhIGhyZWY9Im1haWx0bzpka3VobG1hbkBjdXR0ZXIucmV4eC5jb20iPkRhdmUgS3VobG1hbjwvYT5wcm92aWRlcwogICAgYW5lYXJsaWVyIHZlcnNpb24gb2YgdGhlIGxpYnhtbC9saWJ4c2x0IDxhIGhyZWY9Imh0dHA6Ly93d3cucmV4eC5jb20vfmRrdWhsbWFuIj53cmFwcGVycyBmb3IgUHl0aG9uPC9hPi48L2xpPgogIDxsaT5Hb3BhbC5WIGFuZCBQZXRlciBNaW50ZW4gZGV2ZWxvcCA8YSBocmVmPSJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9saWJ4bWxzaGFycCI+bGlieG1sIzwvYT4sIGEgc2V0CiAgICBvZkMjIGxpYnhtbDIgYmluZGluZ3MuPC9saT4KICA8bGk+UGV0ciBLb3plbGthIHByb3ZpZGVzIDxhIGhyZWY9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlieG1sMi1wYXMiPlBhc2NhbCB1bml0cyB0bwogICAgZ2x1ZWxpYnhtbDI8L2E+d2l0aCBLeWxpeCwgRGVscGhpIGFuZCBvdGhlciBQYXNjYWwgY29tcGlsZXJzLjwvbGk+CiAgPGxpPlV3ZSBGZWNobmVyIGFsc28gcHJvdmlkZXMgPGEgaHJlZj0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9pZG9tMi1wYXMvIj5pZG9tMjwvYT4sIGEKICAgIERPTTJpbXBsZW1lbnRhdGlvbiBmb3IgS3lsaXgyL0Q1L0Q2IGZyb20gQm9ybGFuZC48L2xpPgogIDxsaT5UaGVyZSBpcyA8YSBocmVmPSJodHRwOi8vbGlieG1sLnJ1Ynlmb3JnZS5vcmcvIj5iaW5kaW5ncyBmb3IKICAgIFJ1Ynk8L2E+YW5kIGxpYnhtbDIgYmluZGluZ3MgYXJlIGFsc28gYXZhaWxhYmxlIGluIFJ1YnkgdGhyb3VnaCB0aGUgPGEgaHJlZj0iaHR0cDovL2xpYmdkb21lLXJ1YnkuYmVybGlvcy5kZS8iPmxpYmdkb21lLXJ1Ynk8L2E+bW9kdWxlbWFpbnRhaW5lZAogICAgYnkgVG9iaWFzIFBldGVycy48L2xpPgogIDxsaT5TdGV2ZSBCYWxsIGFuZCBjb250cmlidXRvcnMgbWFpbnRhaW5zIDxhIGhyZWY9Imh0dHA6Ly90Y2x4bWwuc291cmNlZm9yZ2UubmV0LyI+bGlieG1sMiBhbmQgbGlieHNsdCBiaW5kaW5ncwogICAgZm9yVGNsPC9hPi48L2xpPgogIDxsaT5saWJ4bWwyIGFuZCBsaWJ4c2x0IGlzIHRoZSBkZWZhdWx0IFhNTCBsaWJyYXJ5IGZvciBQSFA1LjwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2NsYXNzcGF0aHgvIj5MaWJ4bWxKPC9hPmlzYW4KICAgIGVmZm9ydCB0byBjcmVhdGUgYSAxMDAlIEpBWFAtY29tcGF0aWJsZSBKYXZhIHdyYXBwZXIgZm9yIGxpYnhtbDIKICAgIGFuZGxpYnhzbHQgYXMgcGFydCBvZiBHTlUgQ2xhc3NwYXRoWCBwcm9qZWN0LjwvbGk+CiAgPGxpPlBhdHJpY2sgTWNQaGVlIHByb3ZpZGVzIFJleHggYmluZGluZ3MgZm9mIGxpYnhtbDIgYW5kIGxpYnhzbHQsIGxvb2sKICAgIGZvcjxhIGhyZWY9Imh0dHA6Ly93d3cuaW50ZXJsb2cuY29tL35wdGptL3NvZnR3YXJlLmh0bWwiPlJleHhYTUw8L2E+LjwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuc2F0aW1hZ2UuZnIvc29mdHdhcmUvZW4veG1sX3N1aXRlLmh0bWwiPlNhdGltYWdlPC9hPnByb3ZpZGVzCiAgICA8YSBocmVmPSJodHRwOi8vd3d3LnNhdGltYWdlLmZyL3NvZnR3YXJlL2VuL2Rvd25sb2Fkc19vc2F4ZW4uaHRtbCI+WE1MTGlib3NheDwvYT4uCiAgICBUaGlzIGlzIGFuIG9zYXggZm9yIE1hYyBPUyBYIHdpdGggYSBzZXQgb2YgY29tbWFuZHMgdG9pbXBsZW1lbnQgaW4KICAgIEFwcGxlU2NyaXB0IHRoZSBYTUwgRE9NLCBYUEFUSCBhbmQgWFNMVC4gQWxzbyBpbmNsdWRlc2NvbW1hbmRzIGZvcgogICAgUHJvcGVydHktbGlzdHMgKEFwcGxlJ3MgZmFzdCBsb29rdXAgdGFibGUgWE1MIGZvcm1hdC4pPC9saT4KICA8bGk+RnJhbmNlc2NvIE1vbnRvcnNpIGRldmVsb3BwZWQgPGEgaHJlZj0iaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zaG93ZmlsZXMucGhwP2dyb3VwX2lkPTUxMzA1JmFtcDtwYWNrYWdlX2lkPTQ1MTgyIj53eFhtbDI8L2E+d3JhcHBlcnMKICAgIHRoYXQgaW50ZXJmYWNlIGxpYnhtbDIsIGFsbG93aW5nIHd4V2lkZ2V0cyBhcHBsaWNhdGlvbnMgdG9sb2FkL3NhdmUvZWRpdAogICAgWE1MIGluc3RhbmNlcy48L2xpPgo8L3VsPjxwPlRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgYSBzZXQgb2YgUHl0aG9uIGJpbmRpbmdzLCB3aGljaCBhcmUgZ3VhcmFudGVlZHRvCmJlIG1haW50YWluZWQgYXMgcGFydCBvZiB0aGUgbGlicmFyeSBpbiB0aGUgZnV0dXJlLCB0aG91Z2ggdGhlClB5dGhvbmludGVyZmFjZSBoYXZlIG5vdCB5ZXQgcmVhY2hlZCB0aGUgY29tcGxldGVuZXNzIG9mIHRoZSBDIEFQSS48L3A+PHA+Tm90ZSB0aGF0IHNvbWUgb2YgdGhlIFB5dGhvbiBwdXJpc3QgZGlzbGlrZSB0aGUgZGVmYXVsdCBzZXQgb2YKUHl0aG9uYmluZGluZ3MsIHJhdGhlciB0aGFuIGNvbXBsYWluaW5nIEkgc3VnZ2VzdCB0aGV5IGhhdmUgYSBsb29rIGF0IDxhIGhyZWY9Imh0dHA6Ly9jb2Rlc3BlYWsubmV0L2x4bWwvIj5seG1sIHRoZSBtb3JlIHB5dGhvbmljIGJpbmRpbmdzIGZvcgpsaWJ4bWwyYW5kIGxpYnhzbHQ8L2E+YW5kIDxhIGhyZWY9Imh0dHA6Ly9jb2Rlc3BlYWsubmV0L21haWxtYW4vbGlzdGluZm8vbHhtbC1kZXYiPmhlbHAKTWFydGlqbkZhYXNzZW48L2E+Y29tcGxldGUgdGhvc2UuPC9wPjxwPjxhIGhyZWY9Im1haWx0bzpzdGVwaGFuZS5iaWRvdWxAc29mdHdhcmVhZy5jb20iPlN06XBoYW5lCkJpZG91bDwvYT5tYWludGFpbnMgPGEgaHJlZj0iaHR0cDovL3VzZXJzLnNreW5ldC5iZS9zYmkvbGlieG1sLXB5dGhvbi8iPmEKV2luZG93cyBwb3J0b2YgdGhlIFB5dGhvbiBiaW5kaW5nczwvYT4uPC9wPjxwPk5vdGUgdG8gcGVvcGxlIGludGVyZXN0ZWQgaW4gYnVpbGRpbmcgYmluZGluZ3MsIHRoZSBBUEkgaXMgZm9ybWFsaXplZCBhczxhIGhyZWY9ImxpYnhtbDItYXBpLnhtbCI+YW4gWE1MIEFQSSBkZXNjcmlwdGlvbiBmaWxlPC9hPndoaWNoIGFsbG93cyB0b2F1dG9tYXRlCmEgbGFyZ2UgcGFydCBvZiB0aGUgUHl0aG9uIGJpbmRpbmdzLCB0aGlzIGluY2x1ZGVzIGZ1bmN0aW9uZGVzY3JpcHRpb25zLAplbnVtcywgc3RydWN0dXJlcywgdHlwZWRlZnMsIGV0Yy4uLiBUaGUgUHl0aG9uIHNjcmlwdCB1c2VkIHRvYnVpbGQgdGhlCmJpbmRpbmdzIGlzIHB5dGhvbi9nZW5lcmF0b3IucHkgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24uPC9wPjxwPlRvIGluc3RhbGwgdGhlIFB5dGhvbiBiaW5kaW5ncyB0aGVyZSBhcmUgMiBvcHRpb25zOjwvcD48dWw+PGxpPklmIHlvdSB1c2UgYW4gUlBNIGJhc2VkIGRpc3RyaWJ1dGlvbiwgc2ltcGx5IGluc3RhbGwgdGhlIDxhIGhyZWY9Imh0dHA6Ly9ycG1maW5kLm5ldC9saW51eC9ycG0yaHRtbC9zZWFyY2gucGhwP3F1ZXJ5PWxpYnhtbDItcHl0aG9uIj5saWJ4bWwyLXB5dGhvblJQTTwvYT4oYW5kCiAgICBpZiBuZWVkZWQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9ycG1maW5kLm5ldC9saW51eC9ycG0yaHRtbC9zZWFyY2gucGhwP3F1ZXJ5PWxpYnhzbHQtcHl0aG9uIj5saWJ4c2x0LXB5dGhvblJQTTwvYT4pLjwvbGk+CiAgPGxpPk90aGVyd2lzZSB1c2UgdGhlIDxhIGhyZWY9ImZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDIvcHl0aG9uLyI+bGlieG1sMi1weXRob25tb2R1bGUKICAgIGRpc3RyaWJ1dGlvbjwvYT5jb3JyZXNwb25kaW5nIHRvIHlvdXIgaW5zdGFsbGVkIHZlcnNpb24gb2ZsaWJ4bWwyIGFuZAogICAgbGlieHNsdC4gTm90ZSB0aGF0IHRvIGluc3RhbGwgaXQgeW91IHdpbGwgbmVlZCBib3RoIGxpYnhtbDJhbmQgbGlieHNsdAogICAgaW5zdGFsbGVkIGFuZCBydW4gInB5dGhvbiBzZXR1cC5weSBidWlsZCBpbnN0YWxsIiBpbiB0aGVtb2R1bGUgdHJlZS48L2xpPgo8L3VsPjxwPlRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgYSBzZXQgb2YgZXhhbXBsZXMgYW5kIHJlZ3Jlc3Npb24gdGVzdHMgZm9yCnRoZXB5dGhvbiBiaW5kaW5ncyBpbiB0aGUgPGNvZGU+cHl0aG9uL3Rlc3RzPC9jb2RlPmRpcmVjdG9yeS4gSGVyZSBhcmUKc29tZWV4Y2VycHRzIGZyb20gdGhvc2UgdGVzdHM6PC9wPjxoMz50c3QucHk6PC9oMz48cD5UaGlzIGlzIGEgYmFzaWMgdGVzdCBvZiB0aGUgZmlsZSBpbnRlcmZhY2UgYW5kIERPTSBuYXZpZ2F0aW9uOjwvcD48cHJlPmltcG9ydCBsaWJ4bWwyLCBzeXMKCmRvYyA9IGxpYnhtbDIucGFyc2VGaWxlKCJ0c3QueG1sIikKaWYgZG9jLm5hbWUgIT0gInRzdC54bWwiOgogICAgcHJpbnQgImRvYy5uYW1lIGZhaWxlZCIKICAgIHN5cy5leGl0KDEpCnJvb3QgPSBkb2MuY2hpbGRyZW4KaWYgcm9vdC5uYW1lICE9ICJkb2MiOgogICAgcHJpbnQgInJvb3QubmFtZSBmYWlsZWQiCiAgICBzeXMuZXhpdCgxKQpjaGlsZCA9IHJvb3QuY2hpbGRyZW4KaWYgY2hpbGQubmFtZSAhPSAiZm9vIjoKICAgIHByaW50ICJjaGlsZC5uYW1lIGZhaWxlZCIKICAgIHN5cy5leGl0KDEpCmRvYy5mcmVlRG9jKCk8L3ByZT48cD5UaGUgUHl0aG9uIG1vZHVsZSBpcyBjYWxsZWQgbGlieG1sMjsgcGFyc2VGaWxlIGlzIHRoZSBlcXVpdmFsZW50Cm9meG1sUGFyc2VGaWxlIChtb3N0IG9mIHRoZSBiaW5kaW5ncyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQsIGFuZCB0aGUKeG1scHJlZml4IGlzIHJlbW92ZWQgYW5kIHRoZSBjYXNpbmcgY29udmVudGlvbiBhcmUga2VwdCkuIEFsbCBub2RlIHNlZW4gYXQKdGhlYmluZGluZyBsZXZlbCBzaGFyZSB0aGUgc2FtZSBzdWJzZXQgb2YgYWNjZXNzb3JzOjwvcD48dWw+PGxpPjxjb2RlPm5hbWU8L2NvZGU+OiByZXR1cm5zIHRoZSBub2RlIG5hbWU8L2xpPgogIDxsaT48Y29kZT50eXBlPC9jb2RlPjogcmV0dXJucyBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBub2RlIHR5cGU8L2xpPgogIDxsaT48Y29kZT5jb250ZW50PC9jb2RlPjogcmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgbm9kZSwgaXQgaXMgYmFzZWQKICAgIG9ueG1sTm9kZUdldENvbnRlbnQoKSBhbmQgaGVuY2UgaXMgcmVjdXJzaXZlLjwvbGk+CiAgPGxpPjxjb2RlPnBhcmVudDwvY29kZT4sIDxjb2RlPmNoaWxkcmVuPC9jb2RlPiwKICAgIDxjb2RlPmxhc3Q8L2NvZGU+LDxjb2RlPm5leHQ8L2NvZGU+LCA8Y29kZT5wcmV2PC9jb2RlPiwKICAgIDxjb2RlPmRvYzwvY29kZT4sPGNvZGU+cHJvcGVydGllczwvY29kZT46IHBvaW50aW5nIHRvIHRoZSBhc3NvY2lhdGVkCiAgICBlbGVtZW50IGluIHRoZSB0cmVlLHRob3NlIG1heSByZXR1cm4gTm9uZSBpbiBjYXNlIG5vIHN1Y2ggbGluawogIGV4aXN0cy48L2xpPgo8L3VsPjxwPkFsc28gbm90ZSB0aGUgbmVlZCB0byBleHBsaWNpdGx5IGRlYWxsb2NhdGUgZG9jdW1lbnRzIHdpdGggZnJlZURvYygpCi5SZWZlcmVuY2UgY291bnRpbmcgZm9yIGxpYnhtbDIgdHJlZXMgd291bGQgbmVlZCBxdWl0ZSBhIGxvdCBvZiB3b3JrCnRvZnVuY3Rpb24gcHJvcGVybHksIGFuZCByYXRoZXIgdGhhbiByaXNrIG1lbW9yeSBsZWFrcyBpZiBub3QKaW1wbGVtZW50ZWRjb3JyZWN0bHkgaXQgc291bmRzIHNhZmVyIHRvIGhhdmUgYW4gZXhwbGljaXQgZnVuY3Rpb24gdG8gZnJlZSBhCnRyZWUuIFRoZXdyYXBwZXIgcHl0aG9uIG9iamVjdHMgbGlrZSBkb2MsIHJvb3Qgb3IgY2hpbGQgYXJlIHRoZW0KYXV0b21hdGljYWxseSBnYXJiYWdlY29sbGVjdGVkLjwvcD48aDM+dmFsaWRhdGUucHk6PC9oMz48cD5UaGlzIHRlc3QgY2hlY2sgdGhlIHZhbGlkYXRpb24gaW50ZXJmYWNlcyBhbmQgcmVkaXJlY3Rpb24gb2YKZXJyb3JtZXNzYWdlczo8L3A+PHByZT5pbXBvcnQgbGlieG1sMgoKI2RlYWN0aXZhdGUgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgdmFsaWRhdGlvbgpkZWYgbm9lcnIoY3R4LCBzdHIpOgogICAgcGFzcwoKbGlieG1sMi5yZWdpc3RlckVycm9ySGFuZGxlcihub2VyciwgTm9uZSkKCmN0eHQgPSBsaWJ4bWwyLmNyZWF0ZUZpbGVQYXJzZXJDdHh0KCJpbnZhbGlkLnhtbCIpCmN0eHQudmFsaWRhdGUoMSkKY3R4dC5wYXJzZURvY3VtZW50KCkKZG9jID0gY3R4dC5kb2MoKQp2YWxpZCA9IGN0eHQuaXNWYWxpZCgpCmRvYy5mcmVlRG9jKCkKaWYgdmFsaWQgIT0gMDoKICAgIHByaW50ICJ2YWxpZGl0eSBjaGVjayBmYWlsZWQiPC9wcmU+PHA+VGhlIGZpcnN0IHRoaW5nIHRvIG5vdGljZSBpcyB0aGUgY2FsbCB0byByZWdpc3RlckVycm9ySGFuZGxlcigpLCBpdGRlZmluZXMKYSBuZXcgZXJyb3IgaGFuZGxlciBnbG9iYWwgdG8gdGhlIGxpYnJhcnkuIEl0IGlzIHVzZWQgdG8gYXZvaWQgc2VlaW5ndGhlCmVycm9yIG1lc3NhZ2VzIHdoZW4gdHJ5aW5nIHRvIHZhbGlkYXRlIHRoZSBpbnZhbGlkIGRvY3VtZW50LjwvcD48cD5UaGUgbWFpbiBpbnRlcmVzdCBvZiB0aGF0IHRlc3QgaXMgdGhlIGNyZWF0aW9uIG9mIGEgcGFyc2VyIGNvbnRleHQKd2l0aGNyZWF0ZUZpbGVQYXJzZXJDdHh0KCkgYW5kIGhvdyB0aGUgYmVoYXZpb3VyIGNhbiBiZSBjaGFuZ2VkIGJlZm9yZQpjYWxsaW5ncGFyc2VEb2N1bWVudCgpIC4gU2ltaWxhcmx5IHRoZSBpbmZvcm1hdGlvbnMgcmVzdWx0aW5nIGZyb20gdGhlCnBhcnNpbmcgcGhhc2VhcmUgYWxzbyBhdmFpbGFibGUgdXNpbmcgY29udGV4dCBtZXRob2RzLjwvcD48cD5Db250ZXh0cyBsaWtlIG5vZGVzIGFyZSBkZWZpbmVkIGFzIGNsYXNzIGFuZCB0aGUgbGlieG1sMiB3cmFwcGVycyBtYXBzCnRoZUMgZnVuY3Rpb24gaW50ZXJmYWNlcyBpbiB0ZXJtcyBvZiBvYmplY3RzIG1ldGhvZCBhcyBtdWNoIGFzIHBvc3NpYmxlLgpUaGViZXN0IHRvIGdldCBhIGNvbXBsZXRlIHZpZXcgb2Ygd2hhdCBtZXRob2RzIGFyZSBzdXBwb3J0ZWQgaXMgdG8gbG9vayBhdAp0aGVsaWJ4bWwyLnB5IG1vZHVsZSBjb250YWluaW5nIGFsbCB0aGUgd3JhcHBlcnMuPC9wPjxoMz5wdXNoLnB5OjwvaDM+PHA+VGhpcyB0ZXN0IHNob3cgaG93IHRvIGFjdGl2YXRlIHRoZSBwdXNoIHBhcnNlciBpbnRlcmZhY2U6PC9wPjxwcmU+aW1wb3J0IGxpYnhtbDIKCmN0eHQgPSBsaWJ4bWwyLmNyZWF0ZVB1c2hQYXJzZXIoTm9uZSwgIiZsdDtmb28iLCA0LCAidGVzdC54bWwiKQpjdHh0LnBhcnNlQ2h1bmsoIi8mZ3Q7IiwgMiwgMSkKZG9jID0gY3R4dC5kb2MoKQoKZG9jLmZyZWVEb2MoKTwvcHJlPjxwPlRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2l0aCBhIHNwZWNpYWwgY2FsbCBiYXNlZCBvbgp0aGV4bWxDcmVhdGVQdXNoUGFyc2VyKCkgZnJvbSB0aGUgQyBsaWJyYXJ5LiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgYW4Kb3B0aW9uYWxTQVggY2FsbGJhY2sgb2JqZWN0LCB0aGVuIHRoZSBpbml0aWFsIHNldCBvZiBkYXRhLCB0aGUgbGVuZ3RoIGFuZCB0aGUKbmFtZSBvZnRoZSByZXNvdXJjZSBpbiBjYXNlIFVSSS1SZWZlcmVuY2VzIG5lZWQgdG8gYmUgY29tcHV0ZWQgYnkgdGhlCnBhcnNlci48L3A+PHA+VGhlbiB0aGUgZGF0YSBhcmUgcHVzaGVkIHVzaW5nIHRoZSBwYXJzZUNodW5rKCkgbWV0aG9kLCB0aGUgbGFzdApjYWxsc2V0dGluZyB0aGUgdGhpcmQgYXJndW1lbnQgdGVybWluYXRlIHRvIDEuPC9wPjxoMz5wdXNoU0FYLnB5OjwvaDM+PHA+dGhpcyB0ZXN0IHNob3cgdGhlIHVzZSBvZiB0aGUgZXZlbnQgYmFzZWQgcGFyc2luZyBpbnRlcmZhY2VzLiBJbiB0aGlzCmNhc2V0aGUgcGFyc2VyIGRvZXMgbm90IGJ1aWxkIGEgZG9jdW1lbnQsIGJ1dCBwcm92aWRlcyBjYWxsYmFjayBpbmZvcm1hdGlvbgphc3RoZSBwYXJzZXIgbWFrZXMgcHJvZ3Jlc3NlcyBhbmFseXppbmcgdGhlIGRhdGEgYmVpbmcgcHJvdmlkZWQ6PC9wPjxwcmU+aW1wb3J0IGxpYnhtbDIKbG9nID0gIiIKCmNsYXNzIGNhbGxiYWNrOgogICAgZGVmIHN0YXJ0RG9jdW1lbnQoc2VsZik6CiAgICAgICAgZ2xvYmFsIGxvZwogICAgICAgIGxvZyA9IGxvZyArICJzdGFydERvY3VtZW50OiIKCiAgICBkZWYgZW5kRG9jdW1lbnQoc2VsZik6CiAgICAgICAgZ2xvYmFsIGxvZwogICAgICAgIGxvZyA9IGxvZyArICJlbmREb2N1bWVudDoiCgogICAgZGVmIHN0YXJ0RWxlbWVudChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICBnbG9iYWwgbG9nCiAgICAgICAgbG9nID0gbG9nICsgInN0YXJ0RWxlbWVudCAlcyAlczoiICUgKHRhZywgYXR0cnMpCgogICAgZGVmIGVuZEVsZW1lbnQoc2VsZiwgdGFnKToKICAgICAgICBnbG9iYWwgbG9nCiAgICAgICAgbG9nID0gbG9nICsgImVuZEVsZW1lbnQgJXM6IiAlICh0YWcpCgogICAgZGVmIGNoYXJhY3RlcnMoc2VsZiwgZGF0YSk6CiAgICAgICAgZ2xvYmFsIGxvZwogICAgICAgIGxvZyA9IGxvZyArICJjaGFyYWN0ZXJzOiAlczoiICUgKGRhdGEpCgogICAgZGVmIHdhcm5pbmcoc2VsZiwgbXNnKToKICAgICAgICBnbG9iYWwgbG9nCiAgICAgICAgbG9nID0gbG9nICsgIndhcm5pbmc6ICVzOiIgJSAobXNnKQoKICAgIGRlZiBlcnJvcihzZWxmLCBtc2cpOgogICAgICAgIGdsb2JhbCBsb2cKICAgICAgICBsb2cgPSBsb2cgKyAiZXJyb3I6ICVzOiIgJSAobXNnKQoKICAgIGRlZiBmYXRhbEVycm9yKHNlbGYsIG1zZyk6CiAgICAgICAgZ2xvYmFsIGxvZwogICAgICAgIGxvZyA9IGxvZyArICJmYXRhbEVycm9yOiAlczoiICUgKG1zZykKCmhhbmRsZXIgPSBjYWxsYmFjaygpCgpjdHh0ID0gbGlieG1sMi5jcmVhdGVQdXNoUGFyc2VyKGhhbmRsZXIsICImbHQ7Zm9vIiwgNCwgInRlc3QueG1sIikKY2h1bmsgPSAiIHVybD0ndHN0JyZndDtiIgpjdHh0LnBhcnNlQ2h1bmsoY2h1bmssIGxlbihjaHVuayksIDApCmNodW5rID0gImFyJmx0Oy9mb28mZ3Q7IgpjdHh0LnBhcnNlQ2h1bmsoY2h1bmssIGxlbihjaHVuayksIDEpCgpyZWZlcmVuY2UgPSAic3RhcnREb2N1bWVudDpzdGFydEVsZW1lbnQgZm9vIHsndXJsJzogJ3RzdCd9OiIgKyBcIAogICAgICAgICAgICAiY2hhcmFjdGVyczogYmFyOmVuZEVsZW1lbnQgZm9vOmVuZERvY3VtZW50OiIKaWYgbG9nICE9IHJlZmVyZW5jZToKICAgIHByaW50ICJFcnJvciBnb3Q6ICVzIiAlIGxvZwogICAgcHJpbnQgIkV4cGVjdGVkOiAlcyIgJSByZWZlcmVuY2U8L3ByZT48cD5UaGUga2V5IG9iamVjdCBpbiB0aGF0IHRlc3QgaXMgdGhlIGhhbmRsZXIsIGl0IHByb3ZpZGVzIGEgbnVtYmVyIG9mCmVudHJ5cG9pbnRzIHdoaWNoIGNhbiBiZSBjYWxsZWQgYnkgdGhlIHBhcnNlciBhcyBpdCBtYWtlcyBwcm9ncmVzc2VzIHRvCmluZGljYXRldGhlIGluZm9ybWF0aW9uIHNldCBvYnRhaW5lZC4gVGhlIGZ1bGwgc2V0IG9mIGNhbGxiYWNrIGlzIGxhcmdlciB0aGFuCndoYXR0aGUgY2FsbGJhY2sgY2xhc3MgaW4gdGhhdCBzcGVjaWZpYyBleGFtcGxlIGltcGxlbWVudHMgKHNlZSB0aGUKU0FYZGVmaW5pdGlvbiBmb3IgYSBjb21wbGV0ZSBsaXN0KS4gVGhlIHdyYXBwZXIgd2lsbCBvbmx5IGNhbGwgdGhvc2Ugc3VwcGxpZWQKYnl0aGUgb2JqZWN0IHdoZW4gYWN0aXZhdGVkLiBUaGUgc3RhcnRFbGVtZW50IHJlY2VpdmVzIHRoZSBuYW1lcyBvZiB0aGUKZWxlbWVudGFuZCBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgYXR0cmlidXRlcyBjYXJyaWVkIGJ5IHRoaXMgZWxlbWVudC48L3A+PHA+QWxzbyBub3RlIHRoYXQgdGhlIHJlZmVyZW5jZSBzdHJpbmcgZ2VuZXJhdGVkIGZyb20gdGhlIGNhbGxiYWNrIHNob3dzCmFzaW5nbGUgY2hhcmFjdGVyIGNhbGwgZXZlbiB0aG91Z2ggdGhlIHN0cmluZyAiYmFyIiBpcyBwYXNzZWQgdG8gdGhlCnBhcnNlcmZyb20gMiBkaWZmZXJlbnQgY2FsbCB0byBwYXJzZUNodW5rKCk8L3A+PGgzPnhwYXRoLnB5OjwvaDM+PHA+VGhpcyBpcyBhIGJhc2ljIHRlc3Qgb2YgWFBhdGggd3JhcHBlcnMgc3VwcG9ydDwvcD48cHJlPmltcG9ydCBsaWJ4bWwyCgpkb2MgPSBsaWJ4bWwyLnBhcnNlRmlsZSgidHN0LnhtbCIpCmN0eHQgPSBkb2MueHBhdGhOZXdDb250ZXh0KCkKcmVzID0gY3R4dC54cGF0aEV2YWwoIi8vKiIpCmlmIGxlbihyZXMpICE9IDI6CiAgICBwcmludCAieHBhdGggcXVlcnk6IHdyb25nIG5vZGUgc2V0IHNpemUiCiAgICBzeXMuZXhpdCgxKQppZiByZXNbMF0ubmFtZSAhPSAiZG9jIiBvciByZXNbMV0ubmFtZSAhPSAiZm9vIjoKICAgIHByaW50ICJ4cGF0aCBxdWVyeTogd3Jvbmcgbm9kZSBzZXQgdmFsdWUiCiAgICBzeXMuZXhpdCgxKQpkb2MuZnJlZURvYygpCmN0eHQueHBhdGhGcmVlQ29udGV4dCgpPC9wcmU+PHA+VGhpcyB0ZXN0IHBhcnNlcyBhIGZpbGUsIHRoZW4gY3JlYXRlIGFuIFhQYXRoIGNvbnRleHQgdG8gZXZhbHVhdGUKWFBhdGhleHByZXNzaW9uIG9uIGl0LiBUaGUgeHBhdGhFdmFsKCkgbWV0aG9kIGV4ZWN1dGUgYW4gWFBhdGggcXVlcnkgYW5kCnJldHVybnN0aGUgcmVzdWx0IG1hcHBlZCBpbiBhIFB5dGhvbiB3YXkuIFN0cmluZyBhbmQgbnVtYmVycyBhcmUgbmF0aXZlbHkKY29udmVydGVkLGFuZCBub2RlIHNldHMgYXJlIHJldHVybmVkIGFzIGEgdHVwbGUgb2YgbGlieG1sMiBQeXRob24gbm9kZXMKd3JhcHBlcnMuIExpa2V0aGUgZG9jdW1lbnQsIHRoZSBYUGF0aCBjb250ZXh0IG5lZWQgdG8gYmUgZnJlZWQgZXhwbGljaXRseSwKYWxzbyBub3QgdGhhdHRoZSByZXN1bHQgb2YgdGhlIFhQYXRoIHF1ZXJ5IG1heSBwb2ludCBiYWNrIHRvIHRoZSBkb2N1bWVudAp0cmVlIGFuZCBoZW5jZXRoZSBkb2N1bWVudCBtdXN0IGJlIGZyZWVkIGFmdGVyIHRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5IGlzCnVzZWQuPC9wPjxoMz54cGF0aGV4dC5weTo8L2gzPjxwPlRoaXMgdGVzdCBzaG93cyBob3cgdG8gZXh0ZW5kIHRoZSBYUGF0aCBlbmdpbmUgd2l0aCBmdW5jdGlvbnMgd3JpdHRlbgppbnB5dGhvbjo8L3A+PHByZT5pbXBvcnQgbGlieG1sMgoKZGVmIGZvbyhjdHgsIHgpOgogICAgcmV0dXJuIHggKyAxCgpkb2MgPSBsaWJ4bWwyLnBhcnNlRmlsZSgidHN0LnhtbCIpCmN0eHQgPSBkb2MueHBhdGhOZXdDb250ZXh0KCkKbGlieG1sMi5yZWdpc3RlclhQYXRoRnVuY3Rpb24oY3R4dC5fbywgImZvbyIsIE5vbmUsIGZvbykKcmVzID0gY3R4dC54cGF0aEV2YWwoImZvbygxKSIpCmlmIHJlcyAhPSAyOgogICAgcHJpbnQgInhwYXRoIGV4dGVuc2lvbiBmYWlsdXJlIgpkb2MuZnJlZURvYygpCmN0eHQueHBhdGhGcmVlQ29udGV4dCgpPC9wcmU+PHA+Tm90ZSBob3cgdGhlIGV4dGVuc2lvbiBmdW5jdGlvbiBpcyByZWdpc3RlcmVkIHdpdGggdGhlIGNvbnRleHQgKGJ1dAp0aGF0cGFydCBpcyBub3QgeWV0IGZpbmFsaXplZCwgdGhpcyBtYXkgY2hhbmdlIHNsaWdodGx5IGluIHRoZSBmdXR1cmUpLjwvcD48aDM+dHN0eHBhdGgucHk6PC9oMz48cD5UaGlzIHRlc3QgaXMgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgb25lIGJ1dCBzaG93cyBob3cgdGhlCmV4dGVuc2lvbmZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIFhQYXRoIGV2YWx1YXRpb24gY29udGV4dDo8L3A+PHByZT5kZWYgZm9vKGN0eCwgeCk6CiAgICBnbG9iYWwgY2FsbGVkCgogICAgIwogICAgIyB0ZXN0IHRoYXQgYWNjZXNzIHRvIHRoZSBYUGF0aCBldmFsdWF0aW9uIGNvbnRleHRzCiAgICAjCiAgICBwY3R4dCA9IGxpYnhtbDIueHBhdGhQYXJzZXJDb250ZXh0KF9vYmo9Y3R4KQogICAgY3R4dCA9IHBjdHh0LmNvbnRleHQoKQogICAgY2FsbGVkID0gY3R4dC5mdW5jdGlvbigpCiAgICByZXR1cm4geCArIDE8L3ByZT48cD5BbGwgdGhlIGludGVyZmFjZXMgYXJvdW5kIHRoZSBYUGF0aCBwYXJzZXIob3IgcmF0aGVyIGV2YWx1YXRpb24pCmNvbnRleHRhcmUgbm90IGZpbmFsaXplZCwgYnV0IGl0IHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGRvIGNvbnRleHR1YWwgd29yawphdCB0aGVldmFsdWF0aW9uIHBvaW50LjwvcD48aDM+TWVtb3J5IGRlYnVnZ2luZzo8L2gzPjxwPmxhc3QgYnV0IG5vdCBsZWFzdCwgYWxsIHRlc3RzIHN0YXJ0cyB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvbG9ndWU6PC9wPjxwcmU+I21lbW9yeSBkZWJ1ZyBzcGVjaWZpYwpsaWJ4bWwyLmRlYnVnTWVtb3J5KDEpPC9wcmU+PHA+YW5kIGVuZHMgd2l0aCB0aGUgZm9sbG93aW5nIGVwaWxvZ3VlOjwvcD48cHJlPiNtZW1vcnkgZGVidWcgc3BlY2lmaWMKbGlieG1sMi5jbGVhbnVwUGFyc2VyKCkKaWYgbGlieG1sMi5kZWJ1Z01lbW9yeSgxKSA9PSAwOgogICAgcHJpbnQgIk9LIgplbHNlOgogICAgcHJpbnQgIk1lbW9yeSBsZWFrICVkIGJ5dGVzIiAlIChsaWJ4bWwyLmRlYnVnTWVtb3J5KDEpKQogICAgbGlieG1sMi5kdW1wTWVtb3J5KCk8L3ByZT48cD5UaG9zZSBhY3RpdmF0ZSB0aGUgbWVtb3J5IGRlYnVnZ2luZyBpbnRlcmZhY2Ugb2YgbGlieG1sMiB3aGVyZQphbGxhbGxvY2F0ZWQgYmxvY2sgaW4gdGhlIGxpYnJhcnkgYXJlIHRyYWNrZWQuIFRoZSBwcm9sb2d1ZSB0aGVuIGNsZWFucyB1cAp0aGVsaWJyYXJ5IHN0YXRlIGFuZCBjaGVja3MgdGhhdCBhbGwgYWxsb2NhdGVkIG1lbW9yeSBoYXMgYmVlbiBmcmVlZC4gSWYgbm90Cml0Y2FsbHMgZHVtcE1lbW9yeSgpIHdoaWNoIHNhdmVzIHRoYXQgbGlzdCBpbiBhIDxjb2RlPi5tZW1kdW1wPC9jb2RlPmZpbGUuPC9wPjxwPjxhIGhyZWY9ImJ1Z3MuaHRtbCI+RGFuaWVsIFZlaWxsYXJkPC9hPjwvcD48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC90YWJsZT48L2JvZHk+PC9odG1sPgo=