PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPjYuoENhbGxncmluZDogYSBjYWxsLWdyYXBoIGdlbmVyYXRpbmcgY2FjaGUgYW5kIGJyYW5jaCBwcmVkaWN0aW9uIHByb2ZpbGVyPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idmdfYmFzaWMuY3NzIj4KPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iVmFsZ3JpbmQgRG9jdW1lbnRhdGlvbiI+CjxsaW5rIHJlbD0idXAiIGhyZWY9Im1hbnVhbC5odG1sIiB0aXRsZT0iVmFsZ3JpbmQgVXNlciBNYW51YWwiPgo8bGluayByZWw9InByZXYiIGhyZWY9ImNnLW1hbnVhbC5odG1sIiB0aXRsZT0iNS6gQ2FjaGVncmluZDogYSBjYWNoZSBhbmQgYnJhbmNoLXByZWRpY3Rpb24gcHJvZmlsZXIiPgo8bGluayByZWw9Im5leHQiIGhyZWY9ImhnLW1hbnVhbC5odG1sIiB0aXRsZT0iNy6gSGVsZ3JpbmQ6IGEgdGhyZWFkIGVycm9yIGRldGVjdG9yIj4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+CjxkaXY+PHRhYmxlIGNsYXNzPSJuYXYiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjMiIGJvcmRlcj0iMCIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiPjx0cj4KPHRkIHdpZHRoPSIyMnB4IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJjZy1tYW51YWwuaHRtbCI+PGltZyBzcmM9ImltYWdlcy9wcmV2LnBuZyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cjx0ZCB3aWR0aD0iMjVweCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0ibWFudWFsLmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvdXAucG5nIiB3aWR0aD0iMjEiIGhlaWdodD0iMTgiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cjx0ZCB3aWR0aD0iMzFweCIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImltYWdlcy9ob21lLnBuZyIgd2lkdGg9IjI3IiBoZWlnaHQ9IjIwIiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgo8dGggYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiPlZhbGdyaW5kIFVzZXIgTWFudWFsPC90aD4KPHRkIHdpZHRoPSIyMnB4IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJoZy1tYW51YWwuaHRtbCI+PGltZyBzcmM9ImltYWdlcy9uZXh0LnBuZyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjIxIiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CjwvdHI+PC90YWJsZT48L2Rpdj4KPGRpdiBjbGFzcz0iY2hhcHRlciI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMSBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwiPjwvYT42LqBDYWxsZ3JpbmQ6IGEgY2FsbC1ncmFwaCBnZW5lcmF0aW5nIGNhY2hlIGFuZCBicmFuY2ggcHJlZGljdGlvbiBwcm9maWxlcjwvaDE+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsIGNsYXNzPSJ0b2MiPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwudXNlIj42LjEuIE92ZXJ2aWV3PC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwuZnVuY3Rpb25hbGl0eSI+Ni4xLjEuIEZ1bmN0aW9uYWxpdHk8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5iYXNpY3MiPjYuMS4yLiBCYXNpYyBVc2FnZTwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwudXNhZ2UiPjYuMi4gQWR2YW5jZWQgVXNhZ2U8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5kdW1wcyI+Ni4yLjEuIE11bHRpcGxlIHByb2ZpbGluZyBkdW1wcyBmcm9tIG9uZSBwcm9ncmFtIHJ1bjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLmxpbWl0cyI+Ni4yLjIuIExpbWl0aW5nIHRoZSByYW5nZSBvZiBjb2xsZWN0ZWQgZXZlbnRzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwuYnVzZXZlbnRzIj42LjIuMy4gQ291bnRpbmcgZ2xvYmFsIGJ1cyBldmVudHM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5jeWNsZXMiPjYuMi40LiBBdm9pZGluZyBjeWNsZXM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5mb3JraW5ncHJvZ3JhbXMiPjYuMi41LiBGb3JraW5nIFByb2dyYW1zPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5vcHRpb25zIj42LjMuIENhbGxncmluZCBDb21tYW5kLWxpbmUgT3B0aW9uczwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLm9wdGlvbnMuY3JlYXRpb24iPjYuMy4xLiBEdW1wIGNyZWF0aW9uIG9wdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5vcHRpb25zLmFjdGl2aXR5Ij42LjMuMi4gQWN0aXZpdHkgb3B0aW9uczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLm9wdGlvbnMuY29sbGVjdGlvbiI+Ni4zLjMuIERhdGEgY29sbGVjdGlvbiBvcHRpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwub3B0aW9ucy5zZXBhcmF0aW9uIj42LjMuNC4gQ29zdCBlbnRpdHkgc2VwYXJhdGlvbiBvcHRpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwub3B0aW9ucy5zaW11bGF0aW9uIj42LjMuNS4gU2ltdWxhdGlvbiBvcHRpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwub3B0aW9ucy5jYWNoZXNpbXVsYXRpb24iPjYuMy42LiBDYWNoZSBzaW11bGF0aW9uIG9wdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLm1vbml0b3ItY29tbWFuZHMiPjYuNC4gQ2FsbGdyaW5kIE1vbml0b3IgQ29tbWFuZHM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5jbGllbnRyZXF1ZXN0cyI+Ni41LiBDYWxsZ3JpbmQgc3BlY2lmaWMgY2xpZW50IHJlcXVlc3RzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwuY2FsbGdyaW5kX2Fubm90YXRlLW9wdGlvbnMiPjYuNi4gY2FsbGdyaW5kX2Fubm90YXRlIENvbW1hbmQtbGluZSBPcHRpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSJjbC1tYW51YWwuaHRtbCNjbC1tYW51YWwuY2FsbGdyaW5kX2NvbnRyb2wtb3B0aW9ucyI+Ni43LiBjYWxsZ3JpbmRfY29udHJvbCBDb21tYW5kLWxpbmUgT3B0aW9uczwvYT48L3NwYW4+PC9kdD4KPC9kbD4KPC9kaXY+CjxwPlRvIHVzZSB0aGlzIHRvb2wsIHlvdSBtdXN0IHNwZWNpZnkKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS10b29sPWNhbGxncmluZDwvY29kZT4gb24gdGhlClZhbGdyaW5kIGNvbW1hbmQgbGluZS48L3A+CjxkaXYgY2xhc3M9InNlY3QxIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iY2wtbWFudWFsLnVzZSI+PC9hPjYuMS6gT3ZlcnZpZXc8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5DYWxsZ3JpbmQgaXMgYSBwcm9maWxpbmcgdG9vbCB0aGF0IHJlY29yZHMgdGhlIGNhbGwgaGlzdG9yeSBhbW9uZwpmdW5jdGlvbnMgaW4gYSBwcm9ncmFtJ3MgcnVuIGFzIGEgY2FsbC1ncmFwaC4KQnkgZGVmYXVsdCwgdGhlIGNvbGxlY3RlZCBkYXRhIGNvbnNpc3RzIG9mCnRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkLCB0aGVpciByZWxhdGlvbnNoaXAKdG8gc291cmNlIGxpbmVzLCB0aGUgY2FsbGVyL2NhbGxlZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmdW5jdGlvbnMsCmFuZCB0aGUgbnVtYmVycyBvZiBzdWNoIGNhbGxzLgpPcHRpb25hbGx5LCBjYWNoZSBzaW11bGF0aW9uIGFuZC9vciBicmFuY2ggcHJlZGljdGlvbiAoc2ltaWxhciB0byBDYWNoZWdyaW5kKQpjYW4gcHJvZHVjZSBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBydW50aW1lIGJlaGF2aW9yIG9mIGFuIGFwcGxpY2F0aW9uLgo8L3A+CjxwPlRoZSBwcm9maWxlIGRhdGEgaXMgd3JpdHRlbiBvdXQgdG8gYSBmaWxlIGF0IHByb2dyYW0KdGVybWluYXRpb24uIEZvciBwcmVzZW50YXRpb24gb2YgdGhlIGRhdGEsIGFuZCBpbnRlcmFjdGl2ZSBjb250cm9sCm9mIHRoZSBwcm9maWxpbmcsIHR3byBjb21tYW5kIGxpbmUgdG9vbHMgYXJlIHByb3ZpZGVkOjwvcD4KPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48ZGwgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Y2FsbGdyaW5kX2Fubm90YXRlPC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj48L2R0Pgo8ZGQ+CjxwPlRoaXMgY29tbWFuZCByZWFkcyBpbiB0aGUgcHJvZmlsZSBkYXRhLCBhbmQgcHJpbnRzIGEKICAgIHNvcnRlZCBsaXN0cyBvZiBmdW5jdGlvbnMsIG9wdGlvbmFsbHkgd2l0aCBzb3VyY2UgYW5ub3RhdGlvbi48L3A+CjxwPkZvciBncmFwaGljYWwgdmlzdWFsaXphdGlvbiBvZiB0aGUgZGF0YSwgdHJ5CiAgICA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly9rY2FjaGVncmluZC5zb3VyY2Vmb3JnZS5uZXQvY2dpLWJpbi9zaG93LmNnaS9LY2FjaGVHcmluZEluZGV4IiB0YXJnZXQ9Il90b3AiPktDYWNoZWdyaW5kPC9hPiwgd2hpY2ggaXMgYSBLREUvUXQgYmFzZWQKICAgIEdVSSB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gbmF2aWdhdGUgdGhlIGxhcmdlIGFtb3VudCBvZiBkYXRhIHRoYXQKICAgIENhbGxncmluZCBwcm9kdWNlcy48L3A+CjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Y2FsbGdyaW5kX2NvbnRyb2w8L3N0cm9uZz48L3NwYW4+PC9zcGFuPjwvZHQ+CjxkZD48cD5UaGlzIGNvbW1hbmQgZW5hYmxlcyB5b3UgdG8gaW50ZXJhY3RpdmVseSBvYnNlcnZlIGFuZCBjb250cm9sIAogICAgdGhlIHN0YXR1cyBvZiBhIHByb2dyYW0gY3VycmVudGx5IHJ1bm5pbmcgdW5kZXIgQ2FsbGdyaW5kJ3MgY29udHJvbCwKICAgIHdpdGhvdXQgc3RvcHBpbmcgdGhlIHByb2dyYW0uICBZb3UgY2FuIGdldCBzdGF0aXN0aWNzIGluZm9ybWF0aW9uIGFzCiAgICB3ZWxsIGFzIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlLCBhbmQgeW91IGNhbiByZXF1ZXN0IHplcm9pbmcgb2YgY291bnRlcnMKICAgIG9yIGR1bXBpbmcgb2YgcHJvZmlsZSBkYXRhLjwvcD48L2RkPgo8L2RsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwuZnVuY3Rpb25hbGl0eSI+PC9hPjYuMS4xLqBGdW5jdGlvbmFsaXR5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+Q2FjaGVncmluZCBjb2xsZWN0cyBmbGF0IHByb2ZpbGUgZGF0YTogZXZlbnQgY291bnRzIChkYXRhIHJlYWRzLApjYWNoZSBtaXNzZXMsIGV0Yy4pIGFyZSBhdHRyaWJ1dGVkIGRpcmVjdGx5IHRvIHRoZSBmdW5jdGlvbiB0aGV5Cm9jY3VycmVkIGluLiAgVGhpcyBjb3N0IGF0dHJpYnV0aW9uIG1lY2hhbmlzbSBpcwpjYWxsZWQgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+c2VsZjwvZW0+PC9zcGFuPiBvciA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5leGNsdXNpdmU8L2VtPjwvc3Bhbj4KYXR0cmlidXRpb24uPC9wPgo8cD5DYWxsZ3JpbmQgZXh0ZW5kcyB0aGlzIGZ1bmN0aW9uYWxpdHkgYnkgcHJvcGFnYXRpbmcgY29zdHMKYWNyb3NzIGZ1bmN0aW9uIGNhbGwgYm91bmRhcmllcy4gIElmIGZ1bmN0aW9uIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Zm9vPC9jb2RlPiBjYWxscwo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmJhcjwvY29kZT4sIHRoZSBjb3N0cyBmcm9tIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YmFyPC9jb2RlPiBhcmUgYWRkZWQgaW50bwo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmZvbzwvY29kZT4ncyBjb3N0cy4gIFdoZW4gYXBwbGllZCB0byB0aGUgcHJvZ3JhbSBhcyBhIHdob2xlLAp0aGlzIGJ1aWxkcyB1cCBhIHBpY3R1cmUgb2Ygc28gY2FsbGVkIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmluY2x1c2l2ZTwvZW0+PC9zcGFuPgpjb3N0cywgdGhhdCBpcywgd2hlcmUgdGhlIGNvc3Qgb2YgZWFjaCBmdW5jdGlvbiBpbmNsdWRlcyB0aGUgY29zdHMgb2YKYWxsIGZ1bmN0aW9ucyBpdCBjYWxsZWQsIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuPC9wPgo8cD5BcyBhbiBleGFtcGxlLCB0aGUgaW5jbHVzaXZlIGNvc3Qgb2YKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5tYWluPC9jb2RlPiBzaG91bGQgYmUgYWxtb3N0IDEwMCBwZXJjZW50Cm9mIHRoZSB0b3RhbCBwcm9ncmFtIGNvc3QuICBCZWNhdXNlIG9mIGNvc3RzIGFyaXNpbmcgYmVmb3JlIAo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPm1haW48L2NvZGU+IGlzIHJ1biwgc3VjaCBhcwppbml0aWFsaXphdGlvbiBvZiB0aGUgcnVuIHRpbWUgbGlua2VyIGFuZCBjb25zdHJ1Y3Rpb24gb2YgZ2xvYmFsIEMrKwpvYmplY3RzLCB0aGUgaW5jbHVzaXZlIGNvc3Qgb2YgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5tYWluPC9jb2RlPgppcyBub3QgZXhhY3RseSAxMDAgcGVyY2VudCBvZiB0aGUgdG90YWwgcHJvZ3JhbSBjb3N0LjwvcD4KPHA+VG9nZXRoZXIgd2l0aCB0aGUgY2FsbCBncmFwaCwgdGhpcyBhbGxvd3MgeW91IHRvIGZpbmQgdGhlCnNwZWNpZmljIGNhbGwgY2hhaW5zIHN0YXJ0aW5nIGZyb20KPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5tYWluPC9jb2RlPiBpbiB3aGljaCB0aGUgbWFqb3JpdHkgb2YgdGhlCnByb2dyYW0ncyBjb3N0cyBvY2N1ci4gIENhbGxlci9jYWxsZWUgY29zdCBhdHRyaWJ1dGlvbiBpcyBhbHNvIHVzZWZ1bApmb3IgcHJvZmlsaW5nIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBtdWx0aXBsZSBjYWxsIHNpdGVzLCBhbmQgd2hlcmUKb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgZGVwZW5kIG9uIGNoYW5naW5nIGNvZGUgaW4gdGhlIGNhbGxlcnMsIGluCnBhcnRpY3VsYXIgYnkgcmVkdWNpbmcgdGhlIGNhbGwgY291bnQuPC9wPgo8cD5DYWxsZ3JpbmQncyBjYWNoZSBzaW11bGF0aW9uIGlzIGJhc2VkIG9uIHRoYXQgb2YgQ2FjaGVncmluZC4KUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgPGEgY2xhc3M9InhyZWYiIGhyZWY9ImNnLW1hbnVhbC5odG1sIiB0aXRsZT0iNS6gQ2FjaGVncmluZDogYSBjYWNoZSBhbmQgYnJhbmNoLXByZWRpY3Rpb24gcHJvZmlsZXIiPkNhY2hlZ3JpbmQ6IGEgY2FjaGUgYW5kIGJyYW5jaC1wcmVkaWN0aW9uIHByb2ZpbGVyPC9hPiBmaXJzdC4gIFRoZSBtYXRlcmlhbApiZWxvdyBkZXNjcmliZXMgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byBDYWNoZWdyaW5kJ3MKZmVhdHVyZXMuPC9wPgo8cD5DYWxsZ3JpbmQncyBhYmlsaXR5IHRvIGRldGVjdCBmdW5jdGlvbiBjYWxscyBhbmQgcmV0dXJucyBkZXBlbmRzCm9uIHRoZSBpbnN0cnVjdGlvbiBzZXQgb2YgdGhlIHBsYXRmb3JtIGl0IGlzIHJ1biBvbi4gIEl0IHdvcmtzIGJlc3Qgb24KeDg2IGFuZCBhbWQ2NCwgYW5kIHVuZm9ydHVuYXRlbHkgY3VycmVudGx5IGRvZXMgbm90IHdvcmsgc28gd2VsbCBvbgpQb3dlclBDLCBBUk0sIFRodW1iIG9yIE1JUFMgY29kZS4gIFRoaXMgaXMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gZXhwbGljaXQKY2FsbCBvciByZXR1cm4gaW5zdHJ1Y3Rpb25zIGluIHRoZXNlIGluc3RydWN0aW9uIHNldHMsIHNvIENhbGxncmluZApoYXMgdG8gcmVseSBvbiBoZXVyaXN0aWNzIHRvIGRldGVjdCBjYWxscyBhbmQgcmV0dXJucy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwuYmFzaWNzIj48L2E+Ni4xLjIuoEJhc2ljIFVzYWdlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+QXMgd2l0aCBDYWNoZWdyaW5kLCB5b3UgcHJvYmFibHkgd2FudCB0byBjb21waWxlIHdpdGggZGVidWdnaW5nIGluZm8KICAodGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1nPC9jb2RlPiBvcHRpb24pIGFuZCB3aXRoIG9wdGltaXphdGlvbiB0dXJuZWQgb24uPC9wPgo8cD5UbyBzdGFydCBhIHByb2ZpbGUgcnVuIGZvciBhIHByb2dyYW0sIGV4ZWN1dGU6CiAgPC9wPgo8cHJlIGNsYXNzPSJzY3JlZW4iPnZhbGdyaW5kIC0tdG9vbD1jYWxsZ3JpbmQgW2NhbGxncmluZCBvcHRpb25zXSB5b3VyLXByb2dyYW0gW3Byb2dyYW0gb3B0aW9uc108L3ByZT4KPHA+CiAgPC9wPgo8cD5XaGlsZSB0aGUgc2ltdWxhdGlvbiBpcyBydW5uaW5nLCB5b3UgY2FuIG9ic2VydmUgZXhlY3V0aW9uIHdpdGg6CiAgPC9wPgo8cHJlIGNsYXNzPSJzY3JlZW4iPmNhbGxncmluZF9jb250cm9sIC1iPC9wcmU+CjxwPgogIFRoaXMgd2lsbCBwcmludCBvdXQgdGhlIGN1cnJlbnQgYmFja3RyYWNlLiBUbyBhbm5vdGF0ZSB0aGUgYmFja3RyYWNlIHdpdGgKICBldmVudCBjb3VudHMsIHJ1bgogIDwvcD4KPHByZSBjbGFzcz0ic2NyZWVuIj5jYWxsZ3JpbmRfY29udHJvbCAtZSAtYjwvcHJlPgo8cD4KICA8L3A+CjxwPkFmdGVyIHByb2dyYW0gdGVybWluYXRpb24sIGEgcHJvZmlsZSBkYXRhIGZpbGUgbmFtZWQgCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jYWxsZ3JpbmQub3V0LiZsdDtwaWQmZ3Q7PC9jb2RlPgogIGlzIGdlbmVyYXRlZCwgd2hlcmUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+cGlkPC9lbT48L3NwYW4+IGlzIHRoZSBwcm9jZXNzIElEIAogIG9mIHRoZSBwcm9ncmFtIGJlaW5nIHByb2ZpbGVkLgogIFRoZSBkYXRhIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhbGxzIG1hZGUgaW4gdGhlCiAgcHJvZ3JhbSBhbW9uZyB0aGUgZnVuY3Rpb25zIGV4ZWN1dGVkLCB0b2dldGhlciB3aXRoIAogIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPkluc3RydWN0aW9uIFJlYWQ8L3N0cm9uZz48L3NwYW4+IChJcikgZXZlbnQgY291bnRzLjwvcD4KPHA+VG8gZ2VuZXJhdGUgYSBmdW5jdGlvbi1ieS1mdW5jdGlvbiBzdW1tYXJ5IGZyb20gdGhlIHByb2ZpbGUKICBkYXRhIGZpbGUsIHVzZQogIDwvcD4KPHByZSBjbGFzcz0ic2NyZWVuIj5jYWxsZ3JpbmRfYW5ub3RhdGUgW29wdGlvbnNdIGNhbGxncmluZC5vdXQuJmx0O3BpZCZndDs8L3ByZT4KPHA+CiAgVGhpcyBzdW1tYXJ5IGlzIHNpbWlsYXIgdG8gdGhlIG91dHB1dCB5b3UgZ2V0IGZyb20gYSBDYWNoZWdyaW5kCiAgcnVuIHdpdGggY2dfYW5ub3RhdGU6IHRoZSBsaXN0CiAgb2YgZnVuY3Rpb25zIGlzIG9yZGVyZWQgYnkgZXhjbHVzaXZlIGNvc3Qgb2YgZnVuY3Rpb25zLCB3aGljaCBhbHNvCiAgYXJlIHRoZSBvbmVzIHRoYXQgYXJlIHNob3duLgogIEltcG9ydGFudCBmb3IgdGhlIGFkZGl0aW9uYWwgZmVhdHVyZXMgb2YgQ2FsbGdyaW5kIGFyZQogIHRoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnM6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjOyAiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWluY2x1c2l2ZT15ZXM8L2NvZGU+OiBJbnN0ZWFkIG9mIHVzaW5nCiAgICAgIGV4Y2x1c2l2ZSBjb3N0IG9mIGZ1bmN0aW9ucyBhcyBzb3J0aW5nIG9yZGVyLCB1c2UgYW5kIHNob3cKICAgICAgaW5jbHVzaXZlIGNvc3QuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdHJlZT1ib3RoPC9jb2RlPjogSW50ZXJsZWF2ZSBpbnRvIHRoZQogICAgICB0b3AgbGV2ZWwgbGlzdCBvZiBmdW5jdGlvbnMsIGluZm9ybWF0aW9uIG9uIHRoZSBjYWxsZXJzIGFuZCB0aGUgY2FsbGVlcwogICAgICBvZiBlYWNoIGZ1bmN0aW9uLiBJbiB0aGVzZSBsaW5lcywgd2hpY2ggcmVwcmVzZW50cyBleGVjdXRlZAogICAgICBjYWxscywgdGhlIGNvc3QgZ2l2ZXMgdGhlIG51bWJlciBvZiBldmVudHMgc3BlbnQgaW4gdGhlIGNhbGwuCiAgICAgIEluZGVudGVkLCBhYm92ZSBlYWNoIGZ1bmN0aW9uLCB0aGVyZSBpcyB0aGUgbGlzdCBvZiBjYWxsZXJzLAogICAgICBhbmQgYmVsb3csIHRoZSBsaXN0IG9mIGNhbGxlZXMuIFRoZSBzdW0gb2YgZXZlbnRzIGluIGNhbGxzIHRvCiAgICAgIGEgZ2l2ZW4gZnVuY3Rpb24gKGNhbGxlciBsaW5lcyksIGFzIHdlbGwgYXMgdGhlIHN1bSBvZiBldmVudHMgaW4KICAgICAgY2FsbHMgZnJvbSB0aGUgZnVuY3Rpb24gKGNhbGxlZSBsaW5lcykgdG9nZXRoZXIgd2l0aCB0aGUgc2VsZgogICAgICBjb3N0LCBnaXZlcyB0aGUgdG90YWwgaW5jbHVzaXZlIGNvc3Qgb2YgdGhlIGZ1bmN0aW9uLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5Vc2UgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hdXRvPXllczwvY29kZT4gdG8gZ2V0IGFubm90YXRlZCBzb3VyY2UgY29kZQogIGZvciBhbGwgcmVsZXZhbnQgZnVuY3Rpb25zIGZvciB3aGljaCB0aGUgc291cmNlIGNhbiBiZSBmb3VuZC4gSW4KICBhZGRpdGlvbiB0byBzb3VyY2UgYW5ub3RhdGlvbiBhcyBwcm9kdWNlZCBieQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Y2dfYW5ub3RhdGU8L2NvZGU+LCB5b3Ugd2lsbCBzZWUgdGhlCiAgYW5ub3RhdGVkIGNhbGwgc2l0ZXMgd2l0aCBjYWxsIGNvdW50cy4gRm9yIGFsbCBvdGhlciBvcHRpb25zLCAKICBjb25zdWx0IHRoZSAoQ2FjaGVncmluZCkgZG9jdW1lbnRhdGlvbiBmb3IKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNnX2Fubm90YXRlPC9jb2RlPi4KICA8L3A+CjxwPkZvciBiZXR0ZXIgY2FsbCBncmFwaCBicm93c2luZyBleHBlcmllbmNlLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQKICB0byB1c2UgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8va2NhY2hlZ3JpbmQuc291cmNlZm9yZ2UubmV0L2NnaS1iaW4vc2hvdy5jZ2kvS2NhY2hlR3JpbmRJbmRleCIgdGFyZ2V0PSJfdG9wIj5LQ2FjaGVncmluZDwvYT4uCiAgSWYgeW91ciBjb2RlCiAgaGFzIGEgc2lnbmlmaWNhbnQgZnJhY3Rpb24gb2YgaXRzIGNvc3QgaW4gPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+Y3ljbGVzPC9lbT48L3NwYW4+IChzZXRzCiAgb2YgZnVuY3Rpb25zIGNhbGxpbmcgZWFjaCBvdGhlciBpbiBhIHJlY3Vyc2l2ZSBtYW5uZXIpLCB5b3UgaGF2ZSB0bwogIHVzZSBLQ2FjaGVncmluZCwgYXMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jYWxsZ3JpbmRfYW5ub3RhdGU8L2NvZGU+CiAgY3VycmVudGx5IGRvZXMgbm90IGRvIGFueSBjeWNsZSBkZXRlY3Rpb24sIHdoaWNoIGlzIGltcG9ydGFudCB0byBnZXQgY29ycmVjdAogIHJlc3VsdHMgaW4gdGhpcyBjYXNlLjwvcD4KPHA+SWYgeW91IGFyZSBhZGRpdGlvbmFsbHkgaW50ZXJlc3RlZCBpbiBtZWFzdXJpbmcgdGhlIAogIGNhY2hlIGJlaGF2aW9yIG9mIHlvdXIgcHJvZ3JhbSwgdXNlIENhbGxncmluZCB3aXRoIHRoZSBvcHRpb24KICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2xvcHQuY2FjaGUtc2ltIj4tLWNhY2hlLXNpbTwvYT49eWVzPC9jb2RlPi4gRm9yCiAgYnJhbmNoIHByZWRpY3Rpb24gc2ltdWxhdGlvbiwgdXNlIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNjbG9wdC5icmFuY2gtc2ltIj4tLWJyYW5jaC1zaW08L2E+PXllczwvY29kZT4uCiAgRXhwZWN0IGEgZnVydGhlciBzbG93IGRvd24gYXBwcm94aW1hdGVseSBieSBhIGZhY3RvciBvZiAyLjwvcD4KPHA+SWYgdGhlIHByb2dyYW0gc2VjdGlvbiB5b3Ugd2FudCB0byBwcm9maWxlIGlzIHNvbWV3aGVyZSBpbiB0aGUKICBtaWRkbGUgb2YgdGhlIHJ1biwgaXQgaXMgYmVuZWZpY2lhbCB0byAKICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5mYXN0IGZvcndhcmQ8L2VtPjwvc3Bhbj4gdG8gdGhpcyBzZWN0aW9uIHdpdGhvdXQgYW55IAogIHByb2ZpbGluZywgYW5kIHRoZW4gZW5hYmxlIHByb2ZpbGluZy4gIFRoaXMgaXMgYWNoaWV2ZWQgYnkgdXNpbmcKICB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbgogIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuaW5zdHItYXRzdGFydCI+LS1pbnN0ci1hdHN0YXJ0PC9hPj1ubzwvY29kZT4gCiAgYW5kIHJ1bm5pbmcsIGluIGEgc2hlbGw6CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5jYWxsZ3JpbmRfY29udHJvbCAtaSBvbjwvY29kZT4ganVzdCBiZWZvcmUgdGhlIAogIGludGVyZXN0aW5nIGNvZGUgc2VjdGlvbiBpcyBleGVjdXRlZC4gVG8gZXhhY3RseSBzcGVjaWZ5CiAgdGhlIGNvZGUgcG9zaXRpb24gd2hlcmUgcHJvZmlsaW5nIHNob3VsZCBzdGFydCwgdXNlIHRoZSBjbGllbnQgcmVxdWVzdAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NyLnN0YXJ0LWluc3RyIj5DQUxMR1JJTkRfU1RBUlRfSU5TVFJVTUVOVEFUSU9OPC9hPjwvY29kZT4uPC9wPgo8cD5JZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIHNlZSBhc3NlbWJseSBjb2RlIGxldmVsIGFubm90YXRpb24sIHNwZWNpZnkKICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LmR1bXAtaW5zdHIiPi0tZHVtcC1pbnN0cjwvYT49eWVzPC9jb2RlPi4gVGhpcyB3aWxsIHByb2R1Y2UKICBwcm9maWxlIGRhdGEgYXQgaW5zdHJ1Y3Rpb24gZ3JhbnVsYXJpdHkuIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIHByb2ZpbGUKICBkYXRhCiAgY2FuIG9ubHkgYmUgdmlld2VkIHdpdGggS0NhY2hlZ3JpbmQuIEZvciBhc3NlbWJseSBhbm5vdGF0aW9uLCBpdCBhbHNvIGlzCiAgaW50ZXJlc3RpbmcgdG8gc2VlIG1vcmUgZGV0YWlscyBvZiB0aGUgY29udHJvbCBmbG93IGluc2lkZSBvZiBmdW5jdGlvbnMsCiAgaS5lLiAoY29uZGl0aW9uYWwpIGp1bXBzLiBUaGlzIHdpbGwgYmUgY29sbGVjdGVkIGJ5IGZ1cnRoZXIgc3BlY2lmeWluZwogIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuY29sbGVjdC1qdW1wcyI+LS1jb2xsZWN0LWp1bXBzPC9hPj15ZXM8L2NvZGU+LjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImNsLW1hbnVhbC51c2FnZSI+PC9hPjYuMi6gQWR2YW5jZWQgVXNhZ2U8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwuZHVtcHMiPjwvYT42LjIuMS6gTXVsdGlwbGUgcHJvZmlsaW5nIGR1bXBzIGZyb20gb25lIHByb2dyYW0gcnVuPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+U29tZXRpbWVzIHlvdSBhcmUgbm90IGludGVyZXN0ZWQgaW4gY2hhcmFjdGVyaXN0aWNzIG9mIGEgZnVsbCAKICBwcm9ncmFtIHJ1biwgYnV0IG9ubHkgb2YgYSBzbWFsbCBwYXJ0IG9mIGl0LCBmb3IgZXhhbXBsZSBleGVjdXRpb24gb2Ygb25lCiAgYWxnb3JpdGhtLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGFsZ29yaXRobXMsIG9yIG9uZSBhbGdvcml0aG0gCiAgcnVubmluZyB3aXRoIGRpZmZlcmVudCBpbnB1dCBkYXRhLCBpdCBtYXkgZXZlbiBiZSB1c2VmdWwgdG8gZ2V0IGRpZmZlcmVudAogIHByb2ZpbGUgaW5mb3JtYXRpb24gZm9yIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHNpbmdsZSBwcm9ncmFtIHJ1bi48L3A+CjxwPlByb2ZpbGUgZGF0YSBmaWxlcyBoYXZlIG5hbWVzIG9mIHRoZSBmb3JtCjwvcD4KPHByZSBjbGFzcz0ic2NyZWVuIj4KY2FsbGdyaW5kLm91dC48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5waWQ8L2VtPjwvc3Bhbj4uPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+cGFydDwvZW0+PC9zcGFuPi08c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT50aHJlYWRJRDwvZW0+PC9zcGFuPgo8L3ByZT4KPHA+CiAgPC9wPgo8cD53aGVyZSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5waWQ8L2VtPjwvc3Bhbj4gaXMgdGhlIFBJRCBvZiB0aGUgcnVubmluZyAKICBwcm9ncmFtLCA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5wYXJ0PC9lbT48L3NwYW4+IGlzIGEgbnVtYmVyIGluY3JlbWVudGVkIG9uIGVhY2gKICBkdW1wICgiLnBhcnQiIGlzIHNraXBwZWQgZm9yIHRoZSBkdW1wIGF0IHByb2dyYW0gdGVybWluYXRpb24pLCBhbmQgCiAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dGhyZWFkSUQ8L2VtPjwvc3Bhbj4gaXMgYSB0aHJlYWQgaWRlbnRpZmljYXRpb24gCiAgKCItdGhyZWFkSUQiIGlzIG9ubHkgdXNlZCBpZiB5b3UgcmVxdWVzdCBkdW1wcyBvZiBpbmRpdmlkdWFsIAogIHRocmVhZHMgd2l0aCA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LnNlcGFyYXRlLXRocmVhZHMiPi0tc2VwYXJhdGUtdGhyZWFkczwvYT49eWVzPC9jb2RlPikuPC9wPgo8cD5UaGVyZSBhcmUgZGlmZmVyZW50IHdheXMgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgcHJvZmlsZSBkdW1wcyAKICB3aGlsZSBhIHByb2dyYW0gaXMgcnVubmluZyB1bmRlciBDYWxsZ3JpbmQncyBzdXBlcnZpc2lvbi4gIE5ldmVydGhlbGVzcywKICBhbGwgbWV0aG9kcyB0cmlnZ2VyIHRoZSBzYW1lIGFjdGlvbiwgd2hpY2ggaXMgImR1bXAgYWxsIHByb2ZpbGUgCiAgaW5mb3JtYXRpb24gc2luY2UgdGhlIGxhc3QgZHVtcCBvciBwcm9ncmFtIHN0YXJ0LCBhbmQgemVybyBjb3N0IAogIGNvdW50ZXJzIGFmdGVyd2FyZHMiLiAgVG8gYWxsb3cgZm9yIHplcm9pbmcgY29zdCBjb3VudGVycyB3aXRob3V0CiAgZHVtcGluZywgdGhlcmUgaXMgYSBzZWNvbmQgYWN0aW9uICJ6ZXJvIGFsbCBjb3N0IGNvdW50ZXJzIG5vdyIuIAogIFRoZSBkaWZmZXJlbnQgbWV0aG9kcyBhcmU6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjOyAiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5EdW1wIG9uIHByb2dyYW0gdGVybWluYXRpb24uPC9zdHJvbmc+PC9zcGFuPgogICAgICBUaGlzIG1ldGhvZCBpcyB0aGUgc3RhbmRhcmQgd2F5IGFuZCBkb2Vzbid0IG5lZWQgYW55IHNwZWNpYWwKICAgICAgYWN0aW9uIG9uIHlvdXIgcGFydC48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+CjxwPjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPlNwb250YW5lb3VzLCBpbnRlcmFjdGl2ZSBkdW1waW5nLjwvc3Ryb25nPjwvc3Bhbj4gVXNlCiAgICAgIDwvcD4KPHByZSBjbGFzcz0ic2NyZWVuIj5jYWxsZ3JpbmRfY29udHJvbCAtZCBbaGludCBbUElEL05hbWVdXTwvcHJlPgo8cD4gdG8gCiAgICAgIHJlcXVlc3QgdGhlIGR1bXBpbmcgb2YgcHJvZmlsZSBpbmZvcm1hdGlvbiBvZiB0aGUgc3VwZXJ2aXNlZAogICAgICBhcHBsaWNhdGlvbiB3aXRoIFBJRCBvciBOYW1lLiAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+aGludDwvZW0+PC9zcGFuPiBpcyBhbgogICAgICBhcmJpdHJhcnkgc3RyaW5nIHlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IHRvIGxhdGVyIGJlIGFibGUgdG8KICAgICAgZGlzdGluZ3Vpc2ggcHJvZmlsZSBkdW1wcy4gIFRoZSBjb250cm9sIHByb2dyYW0gd2lsbCBub3QgdGVybWluYXRlCiAgICAgIGJlZm9yZSB0aGUgZHVtcCBpcyBjb21wbGV0ZWx5IHdyaXR0ZW4uICBOb3RlIHRoYXQgdGhlIGFwcGxpY2F0aW9uCiAgICAgIG11c3QgYmUgYWN0aXZlbHkgcnVubmluZyBmb3IgZGV0ZWN0aW9uIG9mIHRoZSBkdW1wIGNvbW1hbmQuIFNvLAogICAgICBmb3IgYSBHVUkgYXBwbGljYXRpb24sIHJlc2l6ZSB0aGUgd2luZG93LCBvciBmb3IgYSBzZXJ2ZXIsIHNlbmQgYQogICAgICByZXF1ZXN0LjwvcD4KPHA+SWYgeW91IGFyZSB1c2luZyA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly9rY2FjaGVncmluZC5zb3VyY2Vmb3JnZS5uZXQvY2dpLWJpbi9zaG93LmNnaS9LY2FjaGVHcmluZEluZGV4IiB0YXJnZXQ9Il90b3AiPktDYWNoZWdyaW5kPC9hPgogICAgICBmb3IgYnJvd3Npbmcgb2YgcHJvZmlsZSBpbmZvcm1hdGlvbiwgeW91IGNhbiB1c2UgdGhlIHRvb2xiYXIKICAgICAgYnV0dG9uIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPkZvcmNlIGR1bXA8L3N0cm9uZz48L3NwYW4+LiBUaGlzIHdpbGwgcmVxdWVzdCBhIGR1bXAKICAgICAgYW5kIHRyaWdnZXIgYSByZWxvYWQgYWZ0ZXIgdGhlIGR1bXAgaXMgd3JpdHRlbi48L3A+CjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPlBlcmlvZGljIGR1bXBpbmcgYWZ0ZXIgZXhlY3V0aW9uIG9mIGEgc3BlY2lmaWVkCiAgICAgIG51bWJlciBvZiBiYXNpYyBibG9ja3M8L3N0cm9uZz48L3NwYW4+LiBGb3IgdGhpcywgdXNlIHRoZSBjb21tYW5kIGxpbmUKICAgICAgb3B0aW9uIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuZHVtcC1ldmVyeS1iYiI+LS1kdW1wLWV2ZXJ5LWJiPC9hPj1jb3VudDwvY29kZT4uCiAgICAgIDwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj4KPHA+PHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+RHVtcGluZyBhdCBlbnRlci9sZWF2ZSBvZiBzcGVjaWZpZWQgZnVuY3Rpb25zLjwvc3Ryb25nPjwvc3Bhbj4KICAgICAgVXNlIHRoZQogICAgICBvcHRpb24gPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI29wdC5kdW1wLWJlZm9yZSI+LS1kdW1wLWJlZm9yZTwvYT49ZnVuY3Rpb248L2NvZGU+CiAgICAgIGFuZCA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LmR1bXAtYWZ0ZXIiPi0tZHVtcC1hZnRlcjwvYT49ZnVuY3Rpb248L2NvZGU+LgogICAgICBUbyB6ZXJvIGNvc3QgY291bnRlcnMgYmVmb3JlIGVudGVyaW5nIGEgZnVuY3Rpb24sIHVzZQogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0Lnplcm8tYmVmb3JlIj4tLXplcm8tYmVmb3JlPC9hPj1mdW5jdGlvbjwvY29kZT4uPC9wPgo8cD5Zb3UgY2FuIHNwZWNpZnkgdGhlc2Ugb3B0aW9ucyBtdWx0aXBsZSB0aW1lcyBmb3IgZGlmZmVyZW50CiAgICAgIGZ1bmN0aW9ucy4gRnVuY3Rpb24gc3BlY2lmaWNhdGlvbnMgc3VwcG9ydCB3aWxkY2FyZHM6IGUuZy4gdXNlCiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuZHVtcC1iZWZvcmUiPi0tZHVtcC1iZWZvcmU8L2E+PSdmb28qJzwvY29kZT4gdG8KICAgICAgZ2VuZXJhdGUgZHVtcHMgYmVmb3JlIGVudGVyaW5nIGFueSBmdW5jdGlvbiBzdGFydGluZyB3aXRoIAogICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5mb288L2VtPjwvc3Bhbj4uPC9wPgo8L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5Qcm9ncmFtIGNvbnRyb2xsZWQgZHVtcGluZy48L3N0cm9uZz48L3NwYW4+CiAgICAgIEluc2VydAogICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNjci5kdW1wLXN0YXRzIj5DQUxMR1JJTkRfRFVNUF9TVEFUUzwvYT47PC9jb2RlPgogICAgICBhdCB0aGUgcG9zaXRpb24gaW4geW91ciBjb2RlIHdoZXJlIHlvdSB3YW50IGEgcHJvZmlsZSBkdW1wIHRvIGhhcHBlbi4gVXNlIAogICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNjci56ZXJvLXN0YXRzIj5DQUxMR1JJTkRfWkVST19TVEFUUzwvYT47PC9jb2RlPiB0byBvbmx5IAogICAgICB6ZXJvIHByb2ZpbGUgY291bnRlcnMuCiAgICAgIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLmNsaWVudHJlcXVlc3RzIiB0aXRsZT0iNi41LqBDYWxsZ3JpbmQgc3BlY2lmaWMgY2xpZW50IHJlcXVlc3RzIj5DbGllbnQgcmVxdWVzdCByZWZlcmVuY2U8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uCiAgICAgIENhbGxncmluZCBzcGVjaWZpYyBjbGllbnQgcmVxdWVzdHMuPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPklmIHlvdSBhcmUgcnVubmluZyBhIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9uIGFuZCBzcGVjaWZ5IHRoZQogIGNvbW1hbmQgbGluZSBvcHRpb24gPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI29wdC5zZXBhcmF0ZS10aHJlYWRzIj4tLXNlcGFyYXRlLXRocmVhZHM8L2E+PXllczwvY29kZT4sIAogIGV2ZXJ5IHRocmVhZCB3aWxsIGJlIHByb2ZpbGVkIG9uIGl0cyBvd24gYW5kIHdpbGwgY3JlYXRlIGl0cyBvd24KICBwcm9maWxlIGR1bXAuIFRodXMsIHRoZSBsYXN0IHR3byBtZXRob2RzIHdpbGwgb25seSBnZW5lcmF0ZSBvbmUgZHVtcAogIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0aHJlYWQuIFdpdGggdGhlIG90aGVyIG1ldGhvZHMsIHlvdSB3aWxsIGdldAogIG11bHRpcGxlIGR1bXBzIChvbmUgZm9yIGVhY2ggdGhyZWFkKSBvbiBhIGR1bXAgcmVxdWVzdC48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwubGltaXRzIj48L2E+Ni4yLjIuoExpbWl0aW5nIHRoZSByYW5nZSBvZiBjb2xsZWN0ZWQgZXZlbnRzPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+QnkgZGVmYXVsdCwgd2hlbmV2ZXIgZXZlbnRzIGFyZSBoYXBwZW5pbmcgKHN1Y2ggYXMgYW4KICAgIGluc3RydWN0aW9uIGV4ZWN1dGlvbiBvciBjYWNoZSBoaXQvbWlzcyksIENhbGxncmluZCBpcyBhZ2dyZWdhdGluZwogICAgdGhlbSBpbnRvIGV2ZW50IGNvdW50ZXJzLiBIb3dldmVyLCB5b3UgbWF5IGJlIGludGVyZXN0ZWQgb25seSBpbgogICAgd2hhdCBpcyBoYXBwZW5pbmcgd2l0aGluIGEgZ2l2ZW4gZnVuY3Rpb24gb3Igc3RhcnRpbmcgZnJvbSBhIGdpdmVuCiAgICBwcm9ncmFtIHBoYXNlLiBUbyB0aGlzIGVuZCwgeW91IGNhbiBkaXNhYmxlIGV2ZW50IGFnZ3JlZ2F0aW9uIGZvcgogICAgdW5pbnRlcmVzdGluZyBwcm9ncmFtIHBhcnRzLiBXaGlsZSBhdHRyaWJ1dGlvbiBvZiBldmVudHMgdG8KICAgIGZ1bmN0aW9ucyBhcyB3ZWxsIGFzIHByb2R1Y2luZyBzZXBhcmF0ZSBvdXRwdXQgcGVyIHByb2dyYW0gcGhhc2UKICAgIGNhbiBiZSBkb25lIGJ5IG90aGVyIG1lYW5zIChzZWUgcHJldmlvdXMgc2VjdGlvbiksIHRoZXJlIGFyZSB0d28KICAgIGJlbmVmaXRzIGJ5IGRpc2FibGluZyBhZ2dyZWdhdGlvbi4gRmlyc3QsIHRoaXMgaXMgdmVyeQogICAgZmluZS1ncmFudWxhciAoZS5nLiBqdXN0IGZvciBhIGxvb3Agd2l0aGluIGEgZnVuY3Rpb24pLiAgU2Vjb25kLAogICAgZGlzYWJsaW5nIGV2ZW50IGFnZ3JlZ2F0aW9uIGZvciBjb21wbGV0ZSBwcm9ncmFtIHBoYXNlcyBhbGxvd3MgdG8KICAgIHN3aXRjaCBvZmYgdGltZS1jb25zdW1pbmcgY2FjaGUgc2ltdWxhdGlvbiBhbmQgYWxsb3dzIENhbGxncmluZCB0bwogICAgcHJvZ3Jlc3MgYXQgbXVjaCBoaWdoZXIgc3BlZWQgd2l0aCBhbiBzbG93ZG93biBvZiBhcm91bmQgZmFjdG9yIDIKICAgIChpZGVudGljYWwgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52YWxncmluZAogICAgLS10b29sPW5vbmU8L2NvZGU+KS4KICA8L3A+CjxwPlRoZXJlIGFyZSB0d28gYXNwZWN0cyB3aGljaCBpbmZsdWVuY2Ugd2hldGhlciBDYWxsZ3JpbmQgaXMKICAgIGFnZ3JlZ2F0aW5nIGV2ZW50cyBhdCBzb21lIHBvaW50IGluIHRpbWUgb2YgcHJvZ3JhbSBleGVjdXRpb24uCiAgICBGaXJzdCwgdGhlcmUgaXMgdGhlIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNvbGxlY3Rpb24gc3RhdGU8L2VtPjwvc3Bhbj4uIElmIHRoaXMKICAgIGlzIG9mZiwgbm8gYWdncmVnYXRpb24gd2lsbCBiZSBkb25lLiAgQnkgY2hhbmdpbmcgdGhlIGNvbGxlY3Rpb24KICAgIHN0YXRlLCB5b3UgY2FuIGNvbnRyb2wgZXZlbnQgYWdncmVnYXRpb24gYXQgYSB2ZXJ5IGZpbmUKICAgIGdyYW51bGFyaXR5LiAgSG93ZXZlciwgdGhlcmUgaXMgbm90IG11Y2ggZGlmZmVyZW5jZSBpbiByZWdhcmQgdG8KICAgIGV4ZWN1dGlvbiBzcGVlZCBvZiBDYWxsZ3JpbmQuICBCeSBkZWZhdWx0LCBjb2xsZWN0aW9uIGlzIHN3aXRjaGVkCiAgICBvbiwgYnV0IGNhbiBiZSBkaXNhYmxlZCBieSBkaWZmZXJlbnQgbWVhbnMgKHNlZSBiZWxvdykuICBTZWNvbmQsCiAgICB0aGVyZSBpcyB0aGUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+aW5zdHJ1bWVudGF0aW9uIG1vZGU8L2VtPjwvc3Bhbj4gaW4gd2hpY2gKICAgIENhbGxncmluZCBpcyBydW5uaW5nLiBUaGlzIG1vZGUgZWl0aGVyIGNhbiBiZSBvbiBvciBvZmYuIElmCiAgICBpbnN0cnVtZW50YXRpb24gaXMgb2ZmLCBubyBvYnNlcnZhdGlvbiBvZiBhY3Rpb25zIGluIHRoZSBwcm9ncmFtCiAgICB3aWxsIGJlIGRvbmUgYW5kIHRodXMsIG5vIGFjdGlvbnMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGhlCiAgICBzaW11bGF0b3Igd2hpY2ggY291bGQgdHJpZ2dlciBldmVudHMuIEluIHRoZSBlbmQsIG5vIGV2ZW50cyB3aWxsCiAgICBiZSBhZ2dyZWdhdGVkLiAgVGhlIGh1Z2UgYmVuZWZpdCBpcyB0aGUgbXVjaCBoaWdoZXIgc3BlZWQgd2l0aAogICAgaW5zdHJ1bWVudGF0aW9uIHN3aXRjaGVkIG9mZi4gIEhvd2V2ZXIsIHRoaXMgb25seSBzaG91bGQgYmUgdXNlZAogICAgd2l0aCBjYXJlIGFuZCBpbiBhIGNvYXJzZSBmYXNoaW9uOiBldmVyeSBtb2RlIGNoYW5nZSByZXNldHMgdGhlCiAgICBzaW11bGF0b3Igc3RhdGUgKGllLiB3aGV0aGVyIGEgbWVtb3J5IGJsb2NrIGlzIGNhY2hlZCBvciBub3QpIGFuZAogICAgZmx1c2hlcyBWYWxncmluZHMgaW50ZXJuYWwgY2FjaGUgb2YgaW5zdHJ1bWVudGVkIGNvZGUgYmxvY2tzLAogICAgcmVzdWx0aW5nIGluIGxhdGVuY3kgcGVuYWx0eSBhdCBzd2l0Y2hpbmcgdGltZS4gQWxzbywgY2FjaGUKICAgIHNpbXVsYXRvciByZXN1bHRzIGRpcmVjdGx5IGFmdGVyIHN3aXRjaGluZyBvbiBpbnN0cnVtZW50YXRpb24gd2lsbAogICAgYmUgc2tld2VkIGR1ZSB0byBpZGVudGlmaWVkIGNhY2hlIG1pc3NlcyB3aGljaCB3b3VsZCBub3QgaGFwcGVuIGluCiAgICByZWFsaXR5IChpZiB5b3UgY2FyZSBhYm91dCB0aGlzIHdhcm0tdXAgZWZmZWN0LCB5b3Ugc2hvdWxkIG1ha2UKICAgIHN1cmUgdG8gdGVtcG9yYXJseSBoYXZlIGNvbGxlY3Rpb24gc3RhdGUgc3dpdGNoZWQgb2ZmIGRpcmVjdGx5CiAgICBhZnRlciB0dXJuaW5nIGluc3RydW1lbnRhdGlvbiBtb2RlIG9uKS4gSG93ZXZlciwgc3dpdGNoaW5nCiAgICBpbnN0cnVtZW50YXRpb24gc3RhdGUgaXMgdmVyeSB1c2VmdWwgdG8gc2tpcCBsYXJnZXIgcHJvZ3JhbSBwaGFzZXMKICAgIHN1Y2ggYXMgYW4gaW5pdGlhbGl6YXRpb24gcGhhc2UuIEJ5IGRlZmF1bHQsIGluc3RydW1lbnRhdGlvbiBpcwogICAgc3dpdGNoZWQgb24sIGJ1dCBhcyB3aXRoIHRoZSBjb2xsZWN0aW9uIHN0YXRlLCBjYW4gYmUgY2hhbmdlZCBieQogICAgdmFyaW91cyBtZWFucy4KICA8L3A+CjxwPkNhbGxncmluZCBjYW4gc3RhcnQgd2l0aCBpbnN0cnVtZW50YXRpb24gbW9kZSBzd2l0Y2hlZCBvZmYgYnkKICAgIHNwZWNpZnlpbmcKICAgIG9wdGlvbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0Lmluc3RyLWF0c3RhcnQiPi0taW5zdHItYXRzdGFydDwvYT49bm88L2NvZGU+LgogICAgQWZ0ZXJ3YXJkcywgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBjb250cm9sbGVkIGluIHR3byB3YXlzOiBmaXJzdCwKICAgIGludGVyYWN0aXZlbHkgd2l0aDogPC9wPgo8cHJlIGNsYXNzPSJzY3JlZW4iPmNhbGxncmluZF9jb250cm9sIC1pIG9uPC9wcmU+CjxwPiAoYW5kCiAgICBzd2l0Y2hpbmcgb2ZmIGFnYWluIGJ5IHNwZWNpZnlpbmcgIm9mZiIgaW5zdGVhZCBvZiAib24iKS4gIFNlY29uZCwKICAgIGluc3RydW1lbnRhdGlvbiBzdGF0ZSBjYW4gYmUgcHJvZ3JhbWF0aWNhbGx5IGNoYW5nZWQgd2l0aCB0aGUKICAgIG1hY3JvcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNjci5zdGFydC1pbnN0ciI+Q0FMTEdSSU5EX1NUQVJUX0lOU1RSVU1FTlRBVElPTjwvYT47PC9jb2RlPgogICAgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NyLnN0b3AtaW5zdHIiPkNBTExHUklORF9TVE9QX0lOU1RSVU1FTlRBVElPTjwvYT47PC9jb2RlPi4KICA8L3A+CjxwPlNpbWlsYXJseSwgdGhlIGNvbGxlY3Rpb24gc3RhdGUgYXQgcHJvZ3JhbSBzdGFydCBjYW4gYmUKICAgIHN3aXRjaGVkIG9mZgogICAgYnkgPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI29wdC5pbnN0ci1hdHN0YXJ0Ij4tLWluc3RyLWF0c3RhcnQ8L2E+PW5vPC9jb2RlPi4gRHVyaW5nCiAgICBleGVjdXRpb24sIGl0IGNhbiBiZSBjb250cm9sbGVkIHByb2dyYW1hdGljYWxseSB3aXRoIHRoZQogICAgbWFjcm8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5DQUxMR1JJTkRfVE9HR0xFX0NPTExFQ1Q7PC9jb2RlPi4KICAgIEZ1cnRoZXIsIHlvdSBjYW4gbGltaXQgZXZlbnQgY29sbGVjdGlvbiB0byBhIHNwZWNpZmljIGZ1bmN0aW9uIGJ5CiAgICB1c2luZyA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LnRvZ2dsZS1jb2xsZWN0Ij4tLXRvZ2dsZS1jb2xsZWN0PC9hPj1mdW5jdGlvbjwvY29kZT4uCiAgICBUaGlzIHdpbGwgdG9nZ2xlIHRoZSBjb2xsZWN0aW9uIHN0YXRlIG9uIGVudGVyaW5nIGFuZCBsZWF2aW5nIHRoZQogICAgc3BlY2lmaWVkIGZ1bmN0aW9uLiAgV2hlbiB0aGlzIG9wdGlvbiBpcyBpbiBlZmZlY3QsIHRoZSBkZWZhdWx0CiAgICBjb2xsZWN0aW9uIHN0YXRlIGF0IHByb2dyYW0gc3RhcnQgaXMgIm9mZiIuICBPbmx5IGV2ZW50cyBoYXBwZW5pbmcKICAgIHdoaWxlIHJ1bm5pbmcgaW5zaWRlIG9mIHRoZSBnaXZlbiBmdW5jdGlvbiB3aWxsIGJlCiAgICBjb2xsZWN0ZWQuIFJlY3Vyc2l2ZSBjYWxscyBvZiB0aGUgZ2l2ZW4gZnVuY3Rpb24gZG8gbm90IHRyaWdnZXIKICAgIGFueSBhY3Rpb24uIFRoaXMgb3B0aW9uIGNhbiBiZSBnaXZlbiBtdWx0aXBsZSB0aW1lcyB0byBzcGVjaWZ5CiAgICBkaWZmZXJlbnQgZnVuY3Rpb25zIG9mIGludGVyZXN0LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNsLW1hbnVhbC5idXNldmVudHMiPjwvYT42LjIuMy6gQ291bnRpbmcgZ2xvYmFsIGJ1cyBldmVudHM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5Gb3IgYWNjZXNzIHRvIHNoYXJlZCBkYXRhIGFtb25nIHRocmVhZHMgaW4gYSBtdWx0aXRocmVhZGVkCiAgY29kZSwgc3luY2hyb25pemF0aW9uIGlzIHJlcXVpcmVkIHRvIGF2b2lkIHJhY2VkIGNvbmRpdGlvbnMuCiAgU3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYXJlIHVzdWFsbHkgaW1wbGVtZW50ZWQgdmlhIGF0b21pYyBpbnN0cnVjdGlvbnMuCiAgSG93ZXZlciwgZXhjZXNzaXZlIHVzZSBvZiBzdWNoIGluc3RydWN0aW9ucyBjYW4gbGVhZCB0byBwZXJmb3JtYW5jZQogIGlzc3Vlcy48L3A+CjxwPlRvIGVuYWJsZSBhbmFseXNpcyBvZiB0aGlzIHByb2JsZW0sIENhbGxncmluZCBvcHRpb25hbGx5IGNhbiBjb3VudAogIHRoZSBudW1iZXIgb2YgYXRvbWljIGluc3RydWN0aW9ucyBleGVjdXRlZC4gTW9yZSBwcmVjaXNlbHksIGZvciB4ODYveDg2XzY0LAogIHRoZXNlIGFyZSBpbnN0cnVjdGlvbnMgdXNpbmcgYSBsb2NrIHByZWZpeC4gRm9yIGFyY2hpdGVjdHVyZXMgc3VwcG9ydGluZwogIExML1NDLCB0aGVzZSBhcmUgdGhlIG51bWJlciBvZiBTQyBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQuIEZvciBib3RoLCB0aGUgdGVybQogICJnbG9iYWwgYnVzIGV2ZW50cyIgaXMgdXNlZC48L3A+CjxwPlRoZSBzaG9ydCBuYW1lIG9mIHRoZSBldmVudCB0eXBlIHVzZWQgZm9yIGdsb2JhbCBidXMgZXZlbnRzIGlzICJHZSIuCiAgVG8gY291bnQgZ2xvYmFsIGJ1cyBldmVudHMsIHVzZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2xvcHQuY29sbGVjdC1idXMiPi0tY29sbGVjdC1idXM8L2E+PXllczwvY29kZT4uCiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iY2wtbWFudWFsLmN5Y2xlcyI+PC9hPjYuMi40LqBBdm9pZGluZyBjeWNsZXM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5JbmZvcm1hbGx5IHNwZWFraW5nLCBhIGN5Y2xlIGlzIGEgZ3JvdXAgb2YgZnVuY3Rpb25zIHdoaWNoCiAgY2FsbCBlYWNoIG90aGVyIGluIGEgcmVjdXJzaXZlIHdheS48L3A+CjxwPkZvcm1hbGx5IHNwZWFraW5nLCBhIGN5Y2xlIGlzIGEgbm9uZW1wdHkgc2V0IFMgb2YgZnVuY3Rpb25zLAogIHN1Y2ggdGhhdCBmb3IgZXZlcnkgcGFpciBvZiBmdW5jdGlvbnMgRiBhbmQgRyBpbiBTLCBpdCBpcyBwb3NzaWJsZQogIHRvIGNhbGwgZnJvbSBGIHRvIEcgKHBvc3NpYmx5IHZpYSBpbnRlcm1lZGlhdGUgZnVuY3Rpb25zKSBhbmQgYWxzbwogIGZyb20gRyB0byBGLiAgRnVydGhlcm1vcmUsIFMgbXVzdCBiZSBtYXhpbWFsIC0tIHRoYXQgaXMsIGJlIHRoZQogIGxhcmdlc3Qgc2V0IG9mIGZ1bmN0aW9ucyBzYXRpc2Z5aW5nIHRoaXMgcHJvcGVydHkuICBGb3IgZXhhbXBsZSwgaWYKICBhIHRoaXJkIGZ1bmN0aW9uIEggaXMgY2FsbGVkIGZyb20gaW5zaWRlIFMgYW5kIGNhbGxzIGJhY2sgaW50byBTLAogIHRoZW4gSCBpcyBhbHNvIHBhcnQgb2YgdGhlIGN5Y2xlIGFuZCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gUy48L3A+CjxwPlJlY3Vyc2lvbiBpcyBxdWl0ZSB1c3VhbCBpbiBwcm9ncmFtcywgYW5kIHRoZXJlZm9yZSwgY3ljbGVzCiAgc29tZXRpbWVzIGFwcGVhciBpbiB0aGUgY2FsbCBncmFwaCBvdXRwdXQgb2YgQ2FsbGdyaW5kLiBIb3dldmVyLAogIHRoZSB0aXRsZSBvZiB0aGlzIGNoYXB0ZXIgc2hvdWxkIHJhaXNlIHR3byBxdWVzdGlvbnM6IFdoYXQgaXMgYmFkCiAgYWJvdXQgY3ljbGVzIHdoaWNoIG1ha2VzIHlvdSB3YW50IHRvIGF2b2lkIHRoZW0/IEFuZDogSG93IGNhbgogIGN5Y2xlcyBiZSBhdm9pZGVkIHdpdGhvdXQgY2hhbmdpbmcgcHJvZ3JhbSBjb2RlPzwvcD4KPHA+Q3ljbGVzIGFyZSBub3QgYmFkIGluIGl0c2VsZiwgYnV0IHRlbmQgdG8gbWFrZSBwZXJmb3JtYW5jZQogIGFuYWx5c2lzIG9mIHlvdXIgY29kZSBoYXJkZXIuIFRoaXMgaXMgYmVjYXVzZSBpbmNsdXNpdmUgY29zdHMKICBmb3IgY2FsbHMgaW5zaWRlIG9mIGEgY3ljbGUgYXJlIG1lYW5pbmdsZXNzLiBUaGUgZGVmaW5pdGlvbiBvZgogIGluY2x1c2l2ZSBjb3N0LCBpLmUuIHNlbGYgY29zdCBvZiBhIGZ1bmN0aW9uIHBsdXMgaW5jbHVzaXZlIGNvc3QKICBvZiBpdHMgY2FsbGVlcywgbmVlZHMgYSB0b3BvbG9naWNhbCBvcmRlciBhbW9uZyBmdW5jdGlvbnMuIEZvcgogIGN5Y2xlcywgdGhpcyBkb2VzIG5vdCBob2xkIHRydWU6IGNhbGxlZXMgb2YgYSBmdW5jdGlvbiBpbiBhIGN5Y2xlIGluY2x1ZGUKICB0aGUgZnVuY3Rpb24gaXRzZWxmLiBUaGVyZWZvcmUsIEtDYWNoZWdyaW5kIGRvZXMgY3ljbGUgZGV0ZWN0aW9uCiAgYW5kIHNraXBzIHZpc3VhbGl6YXRpb24gb2YgYW55IGluY2x1c2l2ZSBjb3N0IGZvciBjYWxscyBpbnNpZGUKICBvZiBjeWNsZXMuIEZ1cnRoZXIsIGFsbCBmdW5jdGlvbnMgaW4gYSBjeWNsZSBhcmUgY29sbGFwc2VkIGludG8gYXJ0aWZpY2lhbAogIGZ1bmN0aW9ucyBjYWxsZWQgbGlrZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkN5Y2xlIDE8L2NvZGU+LjwvcD4KPHA+Tm93LCB3aGVuIGEgcHJvZ3JhbSBleHBvc2VzIHJlYWxseSBiaWcgY3ljbGVzIChhcyBpcwogIHRydWUgZm9yIHNvbWUgR1VJIGNvZGUsIG9yIGluIGdlbmVyYWwgY29kZSB1c2luZyBldmVudCBvciBjYWxsYmFjayBiYXNlZAogIHByb2dyYW1taW5nIHN0eWxlKSwgeW91IGxvc2UgdGhlIG5pY2UgcHJvcGVydHkgdG8gbGV0IHlvdSBwaW5wb2ludAogIHRoZSBib3R0bGVuZWNrcyBieSBmb2xsb3dpbmcgY2FsbCBjaGFpbnMgZnJvbQogIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bWFpbjwvY29kZT4sIGd1aWRlZCB2aWEKICBpbmNsdXNpdmUgY29zdC4gSW4gYWRkaXRpb24sIEtDYWNoZWdyaW5kIGxvc2VzIGl0cyBhYmlsaXR5IHRvIHNob3cKICBpbnRlcmVzdGluZyBwYXJ0cyBvZiB0aGUgY2FsbCBncmFwaCwgYXMgaXQgdXNlcyBpbmNsdXNpdmUgY29zdHMgdG8KICBjdXQgb2ZmIHVuaW50ZXJlc3RpbmcgYXJlYXMuPC9wPgo8cD5EZXNwaXRlIHRoZSBtZWFuaW5nbGVzcyBvZiBpbmNsdXNpdmUgY29zdHMgaW4gY3ljbGVzLCB0aGUgYmlnCiAgZHJhd2JhY2sgZm9yIHZpc3VhbGl6YXRpb24gbW90aXZhdGVzIHRoZSBwb3NzaWJpbGl0eSB0byB0ZW1wb3JhcmlseQogIHN3aXRjaCBvZmYgY3ljbGUgZGV0ZWN0aW9uIGluIEtDYWNoZWdyaW5kLCB3aGljaCBjYW4gbGVhZCB0bwogIG1pc2d1aWRpbmcgdmlzdWFsaXphdGlvbi4gSG93ZXZlciwgb2Z0ZW4gY3ljbGVzIGFwcGVhciBiZWNhdXNlIG9mCiAgdW5sdWNreSBzdXBlcnBvc2l0aW9uIG9mIGluZGVwZW5kZW50IGNhbGwgY2hhaW5zIGluIGEgd2F5IHRoYXQKICB0aGUgcHJvZmlsZSByZXN1bHQgd2lsbCBzZWUgYSBjeWNsZS4gTmVnbGVjdGluZyB1bmludGVyZXN0aW5nCiAgY2FsbHMgd2l0aCB2ZXJ5IHNtYWxsIG1lYXN1cmVkIGluY2x1c2l2ZSBjb3N0IHdvdWxkIGJyZWFrIHRoZXNlCiAgY3ljbGVzLiBJbiBzdWNoIGNhc2VzLCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgY3ljbGVzIGJ5IG5vdCBkZXRlY3RpbmcKICB0aGVtIHN0aWxsIGdpdmVzIG1lYW5pbmdmdWwgcHJvZmlsaW5nIHZpc3VhbGl6YXRpb24uPC9wPgo8cD5JdCBoYXMgdG8gYmUgbm90ZWQgdGhhdCBjdXJyZW50bHksIDxzcGFuIGNsYXNzPSJjb21tYW5kIj48c3Ryb25nPmNhbGxncmluZF9hbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4KICBkb2VzIG5vdCBkbyBhbnkgY3ljbGUgZGV0ZWN0aW9uIGF0IGFsbC4gRm9yIHByb2dyYW0gZXhlY3V0aW9ucyB3aXRoIGZ1bmN0aW9uCiAgcmVjdXJzaW9uLCBpdCBlLmcuIGNhbiBwcmludCBub25zZW5zZSBpbmNsdXNpdmUgY29zdHMgd2F5IGFib3ZlIDEwMCUuPC9wPgo8cD5BZnRlciBkZXNjcmliaW5nIHdoeSBjeWNsZXMgYXJlIGJhZCBmb3IgcHJvZmlsaW5nLCBpdCBpcyB3b3J0aAogIHRhbGtpbmcgYWJvdXQgY3ljbGUgYXZvaWRhbmNlLiBUaGUga2V5IGluc2lnaHQgaGVyZSBpcyB0aGF0IHN5bWJvbHMgaW4KICB0aGUgcHJvZmlsZSBkYXRhIGRvIG5vdCBoYXZlIHRvIGV4YWN0bHkgbWF0Y2ggdGhlIHN5bWJvbHMgZm91bmQgaW4gdGhlCiAgcHJvZ3JhbS4gSW5zdGVhZCwgdGhlIHN5bWJvbCBuYW1lIGNvdWxkIGVuY29kZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCiAgZnJvbSB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dCBzdWNoIGFzIHJlY3Vyc2lvbiBsZXZlbCBvZiB0aGUKICBjdXJyZW50IGZ1bmN0aW9uLCBvciBldmVuIHNvbWUgcGFydCBvZiB0aGUgY2FsbCBjaGFpbiBsZWFkaW5nIHRvIHRoZQogIGZ1bmN0aW9uLiBXaGlsZSBlbmNvZGluZyBvZiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGludG8gc3ltYm9scyBpcwogIHF1aXRlIGNhcGFibGUgb2YgYXZvaWRpbmcgY3ljbGVzLCBpdCBoYXMgdG8gYmUgdXNlZCBjYXJlZnVsbHkgdG8gbm90IGNhdXNlCiAgc3ltYm9sIGV4cGxvc2lvbi4gVGhlIGxhdHRlciBpbXBvc2VzIGxhcmdlIG1lbW9yeSByZXF1aXJlbWVudCBmb3IgQ2FsbGdyaW5kCiAgd2l0aCBwb3NzaWJsZSBvdXQtb2YtbWVtb3J5IGNvbmRpdGlvbnMsIGFuZCBiaWcgcHJvZmlsZSBkYXRhIGZpbGVzLjwvcD4KPHA+QSBmdXJ0aGVyIHBvc3NpYmlsaXR5IHRvIGF2b2lkIGN5Y2xlcyBpbiBDYWxsZ3JpbmQncyBwcm9maWxlIGRhdGEKICBvdXRwdXQgaXMgdG8gc2ltcGx5IGxlYXZlIG91dCBnaXZlbiBmdW5jdGlvbnMgaW4gdGhlIGNhbGwgZ3JhcGguIE9mIGNvdXJzZSwgdGhpcwogIGFsc28gc2tpcHMgYW55IGNhbGwgaW5mb3JtYXRpb24gZnJvbSBhbmQgdG8gYW4gaWdub3JlZCBmdW5jdGlvbiwgYW5kIHRodXMgY2FuCiAgYnJlYWsgYSBjeWNsZS4gQ2FuZGlkYXRlcyBmb3IgdGhpcyB0eXBpY2FsbHkgYXJlIGRpc3BhdGNoZXIgZnVuY3Rpb25zIGluIGV2ZW50CiAgZHJpdmVuIGNvZGUuIFRoZSBvcHRpb24gdG8gaWdub3JlIGNhbGxzIHRvIGEgZnVuY3Rpb24gaXMKICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LmZuLXNraXAiPi0tZm4tc2tpcDwvYT49ZnVuY3Rpb248L2NvZGU+LiBBc2lkZSBmcm9tCiAgcG9zc2libHkgYnJlYWtpbmcgY3ljbGVzLCB0aGlzIGlzIHVzZWQgaW4gQ2FsbGdyaW5kIHRvIHNraXAKICB0cmFtcG9saW5lIGZ1bmN0aW9ucyBpbiB0aGUgUExUIHNlY3Rpb25zCiAgZm9yIGNhbGxzIHRvIGZ1bmN0aW9ucyBpbiBzaGFyZWQgbGlicmFyaWVzLiBZb3UgY2FuIHNlZSB0aGUgZGlmZmVyZW5jZQogIGlmIHlvdSBwcm9maWxlIHdpdGggPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI29wdC5za2lwLXBsdCI+LS1za2lwLXBsdDwvYT49bm88L2NvZGU+LgogIElmIGEgY2FsbCBpcyBpZ25vcmVkLCBpdHMgY29zdCBldmVudHMgd2lsbCBiZSBwcm9wYWdhdGVkIHRvIHRoZQogIGVuY2xvc2luZyBmdW5jdGlvbi48L3A+CjxwPklmIHlvdSBoYXZlIGEgcmVjdXJzaXZlIGZ1bmN0aW9uLCB5b3UgY2FuIGRpc3Rpbmd1aXNoIHRoZSBmaXJzdAogIDEwIHJlY3Vyc2lvbiBsZXZlbHMgYnkgc3BlY2lmeWluZwogIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuc2VwYXJhdGUtcmVjcy1udW0iPi0tc2VwYXJhdGUtcmVjczEwPC9hPj1mdW5jdGlvbjwvY29kZT4uICAKICBPciBmb3IgYWxsIGZ1bmN0aW9ucyB3aXRoIAogIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuc2VwYXJhdGUtcmVjcyI+LS1zZXBhcmF0ZS1yZWNzPC9hPj0xMDwvY29kZT4sIGJ1dCB0aGlzIHdpbGwgCiAgZ2l2ZSB5b3UgbXVjaCBiaWdnZXIgcHJvZmlsZSBkYXRhIGZpbGVzLiAgSW4gdGhlIHByb2ZpbGUgZGF0YSwgeW91IHdpbGwgc2VlCiAgdGhlIHJlY3Vyc2lvbiBsZXZlbHMgb2YgImZ1bmMiIGFzIHRoZSBkaWZmZXJlbnQgZnVuY3Rpb25zIHdpdGggbmFtZXMKICAiZnVuYyIsICJmdW5jJzIiLCAiZnVuYyczIiBhbmQgc28gb24uPC9wPgo8cD5JZiB5b3UgaGF2ZSBjYWxsIGNoYWlucyAiQSAmZ3Q7IEIgJmd0OyBDIiBhbmQgIkEgJmd0OyBDICZndDsgQiIKICBpbiB5b3VyIHByb2dyYW0sIHlvdSB1c3VhbGx5IGdldCBhICJmYWxzZSIgY3ljbGUgIkIgJmx0OyZndDsgQyIuIFVzZSAKICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LnNlcGFyYXRlLWNhbGxlcnMtbnVtIj4tLXNlcGFyYXRlLWNhbGxlcnMyPC9hPj1CPC9jb2RlPiAKICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LnNlcGFyYXRlLWNhbGxlcnMtbnVtIj4tLXNlcGFyYXRlLWNhbGxlcnMyPC9hPj1DPC9jb2RlPiwKICBhbmQgZnVuY3Rpb25zICJCIiBhbmQgIkMiIHdpbGwgYmUgdHJlYXRlZCBhcyBkaWZmZXJlbnQgZnVuY3Rpb25zIAogIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0IGNhbGxlci4gVXNpbmcgdGhlIGFwb3N0cm9waGUgZm9yIGFwcGVuZGluZyAKICB0aGlzICJjb250ZXh0IiB0byB0aGUgZnVuY3Rpb24gbmFtZSwgeW91IGdldCAiQSAmZ3Q7IEInQSAmZ3Q7IEMnQiIgCiAgYW5kICJBICZndDsgQydBICZndDsgQidDIiwgYW5kIHRoZXJlIHdpbGwgYmUgbm8gY3ljbGUuIFVzZSAKICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LnNlcGFyYXRlLWNhbGxlcnMiPi0tc2VwYXJhdGUtY2FsbGVyczwvYT49MjwvY29kZT4gdG8gZ2V0IGEgMi1jYWxsZXIgCiAgZGVwZW5kZW5jeSBmb3IgYWxsIGZ1bmN0aW9ucy4gIE5vdGUgdGhhdCBkb2luZyB0aGlzIHdpbGwgaW5jcmVhc2UKICB0aGUgc2l6ZSBvZiBwcm9maWxlIGRhdGEgZmlsZXMuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iY2wtbWFudWFsLmZvcmtpbmdwcm9ncmFtcyI+PC9hPjYuMi41LqBGb3JraW5nIFByb2dyYW1zPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SWYgeW91ciBwcm9ncmFtIGZvcmtzLCB0aGUgY2hpbGQgd2lsbCBpbmhlcml0IGFsbCB0aGUgcHJvZmlsaW5nCiAgZGF0YSB0aGF0IGhhcyBiZWVuIGdhdGhlcmVkIGZvciB0aGUgcGFyZW50LiBUbyBzdGFydCB3aXRoIGVtcHR5IHByb2ZpbGUKICBjb3VudGVyIHZhbHVlcyBpbiB0aGUgY2hpbGQsIHRoZSBjbGllbnQgcmVxdWVzdAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NyLnplcm8tc3RhdHMiPkNBTExHUklORF9aRVJPX1NUQVRTPC9hPjs8L2NvZGU+CiAgY2FuIGJlIGluc2VydGVkIGludG8gY29kZSB0byBiZSBleGVjdXRlZCBieSB0aGUgY2hpbGQsIGRpcmVjdGx5IGFmdGVyCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mb3JrPC9jb2RlPi48L3A+CjxwPkhvd2V2ZXIsIHlvdSB3aWxsIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG91dHB1dCBmaWxlIGZvcm1hdCBzdHJpbmcKICAoY29udHJvbGxlZCBieSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNhbGxncmluZC1vdXQtZmlsZTwvY29kZT4pIGRvZXMgY29udGFpbgogIDxjb2RlIGNsYXNzPSJvcHRpb24iPiVwPC9jb2RlPiAod2hpY2ggaXMgdHJ1ZSBieSBkZWZhdWx0KS4gT3RoZXJ3aXNlLCB0aGUKICBvdXRwdXRzIGZyb20gdGhlIHBhcmVudCBhbmQgY2hpbGQgd2lsbCBvdmVyd3JpdGUgZWFjaCBvdGhlciBvciB3aWxsIGJlCiAgaW50ZXJtaW5nbGVkLCB3aGljaCBhbG1vc3QgY2VydGFpbmx5IGlzIG5vdCB3aGF0IHlvdSB3YW50LjwvcD4KPHA+WW91IHdpbGwgYmUgYWJsZSB0byBjb250cm9sIHRoZSBuZXcgY2hpbGQgaW5kZXBlbmRlbnRseSBmcm9tCiAgdGhlIHBhcmVudCB2aWEgY2FsbGdyaW5kX2NvbnRyb2wuPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iY2wtbWFudWFsLm9wdGlvbnMiPjwvYT42LjMuoENhbGxncmluZCBDb21tYW5kLWxpbmUgT3B0aW9uczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPgpJbiB0aGUgZm9sbG93aW5nLCBvcHRpb25zIGFyZSBncm91cGVkIGludG8gY2xhc3Nlcy4KPC9wPgo8cD4KU29tZSBvcHRpb25zIGFsbG93IHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgZnVuY3Rpb24vc3ltYm9sIG5hbWUsIHN1Y2ggYXMKPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI29wdC5kdW1wLWJlZm9yZSI+LS1kdW1wLWJlZm9yZTwvYT49ZnVuY3Rpb248L2NvZGU+LCBvcgo8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LmZuLXNraXAiPi0tZm4tc2tpcDwvYT49ZnVuY3Rpb248L2NvZGU+LiBBbGwgdGhlc2Ugb3B0aW9ucwpjYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIGZvciBkaWZmZXJlbnQgZnVuY3Rpb25zLgpJbiBhZGRpdGlvbiwgdGhlIGZ1bmN0aW9uIHNwZWNpZmljYXRpb25zIGFjdHVhbGx5IGFyZSBwYXR0ZXJucyBieSBzdXBwb3J0aW5nCnRoZSB1c2Ugb2Ygd2lsZGNhcmRzICcqJyAoemVybyBvciBtb3JlIGFyYml0cmFyeSBjaGFyYWN0ZXJzKSBhbmQgJz8nCihleGFjdGx5IG9uZSBhcmJpdHJhcnkgY2hhcmFjdGVyKSwgc2ltaWxhciB0byBmaWxlIG5hbWUgZ2xvYmJpbmcgaW4gdGhlCnNoZWxsLiBUaGlzIGZlYXR1cmUgaXMgaW1wb3J0YW50IGVzcGVjaWFsbHkgZm9yIEMrKywgYXMgd2l0aG91dCB3aWxkY2FyZAp1c2FnZSwgdGhlIGZ1bmN0aW9uIHdvdWxkIGhhdmUgdG8gYmUgc3BlY2lmaWVkIGluIGZ1bGwgZXh0ZW50LCBpbmNsdWRpbmcKcGFyYW1ldGVyIHNpZ25hdHVyZS4gPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwub3B0aW9ucy5jcmVhdGlvbiI+PC9hPjYuMy4xLqBEdW1wIGNyZWF0aW9uIG9wdGlvbnM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD4KVGhlc2Ugb3B0aW9ucyBpbmZsdWVuY2UgdGhlIG5hbWUgYW5kIGZvcm1hdCBvZiB0aGUgcHJvZmlsZSBkYXRhIGZpbGVzLgo8L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNsLm9wdHMubGlzdC5jcmVhdGlvbiI+PC9hPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGR0Pgo8YSBuYW1lPSJvcHQuY2FsbGdyaW5kLW91dC1maWxlIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNhbGxncmluZC1vdXQtZmlsZT0mbHQ7ZmlsZSZndDsgPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+V3JpdGUgdGhlIHByb2ZpbGUgZGF0YSB0bwogICAgICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGU8L2NvZGU+IHJhdGhlciB0aGFuIHRvIHRoZSBkZWZhdWx0CiAgICAgICAgICAgIG91dHB1dCBmaWxlLAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNhbGxncmluZC5vdXQuJmx0O3BpZCZndDs8L2NvZGU+LiAgVGhlCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPiVwPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9Im9wdGlvbiI+JXE8L2NvZGU+IGZvcm1hdCBzcGVjaWZpZXJzCiAgICAgICAgICAgIGNhbiBiZSB1c2VkIHRvIGVtYmVkIHRoZSBwcm9jZXNzIElEIGFuZC9vciB0aGUgY29udGVudHMgb2YgYW4KICAgICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlIG5hbWUsIGFzIGlzIHRoZSBjYXNlIGZvciB0aGUgY29yZQogICAgICAgICAgICBvcHRpb24gPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9Im1hbnVhbC1jb3JlLmh0bWwjb3B0LmxvZy1maWxlIj4tLWxvZy1maWxlPC9hPjwvY29kZT4uCiAgICAgICAgICAgIFdoZW4gbXVsdGlwbGUgZHVtcHMgYXJlIG1hZGUsIHRoZSBmaWxlIG5hbWUKICAgICAgICAgICAgaXMgbW9kaWZpZWQgZnVydGhlcjsgc2VlIGJlbG93LjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5kdW1wLWxpbmUiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZHVtcC1saW5lPSZsdDtub3x5ZXMmZ3Q7IFtkZWZhdWx0OiB5ZXNdIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlRoaXMgc3BlY2lmaWVzIHRoYXQgZXZlbnQgY291bnRpbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdAogICAgICBzb3VyY2UgbGluZSBncmFudWxhcml0eS4gVGhpcyBhbGxvd3Mgc291cmNlIGFubm90YXRpb24gZm9yIHNvdXJjZXMKICAgICAgd2hpY2ggYXJlIGNvbXBpbGVkIHdpdGggZGVidWcgaW5mb3JtYXRpb24KICAgICAgKDxjb2RlIGNsYXNzPSJvcHRpb24iPi1nPC9jb2RlPikuPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmR1bXAtaW5zdHIiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZHVtcC1pbnN0cj0mbHQ7bm98eWVzJmd0OyBbZGVmYXVsdDogbm9dIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlRoaXMgc3BlY2lmaWVzIHRoYXQgZXZlbnQgY291bnRpbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdAogICAgICBwZXItaW5zdHJ1Y3Rpb24gZ3JhbnVsYXJpdHkuCiAgICAgIFRoaXMgYWxsb3dzIGZvciBhc3NlbWJseSBjb2RlCiAgICAgIGFubm90YXRpb24uICBDdXJyZW50bHkgdGhlIHJlc3VsdHMgY2FuIG9ubHkgYmUgCiAgICAgIGRpc3BsYXllZCBieSBLQ2FjaGVncmluZC48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuY29tcHJlc3Mtc3RyaW5ncyI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jb21wcmVzcy1zdHJpbmdzPSZsdDtub3x5ZXMmZ3Q7IFtkZWZhdWx0OiB5ZXNdIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlRoaXMgb3B0aW9uIGluZmx1ZW5jZXMgdGhlIG91dHB1dCBmb3JtYXQgb2YgdGhlIHByb2ZpbGUgZGF0YS4KICAgICAgSXQgc3BlY2lmaWVzIHdoZXRoZXIgc3RyaW5ncyAoZmlsZSBhbmQgZnVuY3Rpb24gbmFtZXMpIHNob3VsZCBiZQogICAgICBpZGVudGlmaWVkIGJ5IG51bWJlcnMuIFRoaXMgc2hyaW5rcyB0aGUgZmlsZSwgCiAgICAgIGJ1dCBtYWtlcyBpdCBtb3JlIGRpZmZpY3VsdAogICAgICBmb3IgaHVtYW5zIHRvIHJlYWQgKHdoaWNoIGlzIG5vdCByZWNvbW1lbmRlZCBpbiBhbnkgY2FzZSkuPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmNvbXByZXNzLXBvcyI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jb21wcmVzcy1wb3M9Jmx0O25vfHllcyZndDsgW2RlZmF1bHQ6IHllc10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+VGhpcyBvcHRpb24gaW5mbHVlbmNlcyB0aGUgb3V0cHV0IGZvcm1hdCBvZiB0aGUgcHJvZmlsZSBkYXRhLgogICAgICBJdCBzcGVjaWZpZXMgd2hldGhlciBudW1lcmljYWwgcG9zaXRpb25zIGFyZSBhbHdheXMgc3BlY2lmaWVkIGFzIGFic29sdXRlCiAgICAgIHZhbHVlcyBvciBhcmUgYWxsb3dlZCB0byBiZSByZWxhdGl2ZSB0byBwcmV2aW91cyBudW1iZXJzLgogICAgICBUaGlzIHNocmlua3MgdGhlIGZpbGUgc2l6ZS48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuY29tYmluZS1kdW1wcyI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jb21iaW5lLWR1bXBzPSZsdDtub3x5ZXMmZ3Q7IFtkZWZhdWx0OiBub10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+V2hlbiBlbmFibGVkLCB3aGVuIG11bHRpcGxlIHByb2ZpbGUgZGF0YSBwYXJ0cyBhcmUgdG8gYmUKICAgICAgZ2VuZXJhdGVkIHRoZXNlIHBhcnRzIGFyZSBhcHBlbmRlZCB0byB0aGUgc2FtZSBvdXRwdXQgZmlsZS4KICAgICAgTm90IHJlY29tbWVuZGVkLjwvcD48L2RkPgo8L2RsPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNsLW1hbnVhbC5vcHRpb25zLmFjdGl2aXR5Ij48L2E+Ni4zLjIuoEFjdGl2aXR5IG9wdGlvbnM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD4KVGhlc2Ugb3B0aW9ucyBzcGVjaWZ5IHdoZW4gYWN0aW9ucyByZWxhdGluZyB0byBldmVudCBjb3VudHMgYXJlIHRvCmJlIGV4ZWN1dGVkLiBGb3IgaW50ZXJhY3RpdmUgY29udHJvbCB1c2UgY2FsbGdyaW5kX2NvbnRyb2wuCjwvcD4KPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGEgbmFtZT0iY2wub3B0cy5saXN0LmFjdGl2aXR5Ij48L2E+PGRsIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8ZHQ+CjxhIG5hbWU9Im9wdC5kdW1wLWV2ZXJ5LWJiIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWR1bXAtZXZlcnktYmI9Jmx0O2NvdW50Jmd0OyBbZGVmYXVsdDogMCwgbmV2ZXJdIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPkR1bXAgcHJvZmlsZSBkYXRhIGV2ZXJ5IDxjb2RlIGNsYXNzPSJvcHRpb24iPmNvdW50PC9jb2RlPiBiYXNpYyBibG9ja3MuCiAgICAgIFdoZXRoZXIgYSBkdW1wIGlzIG5lZWRlZCBpcyBvbmx5IGNoZWNrZWQgd2hlbiBWYWxncmluZCdzIGludGVybmFsCiAgICAgIHNjaGVkdWxlciBpcyBydW4uIFRoZXJlZm9yZSwgdGhlIG1pbmltdW0gc2V0dGluZyB1c2VmdWwgaXMgYWJvdXQgMTAwMDAwLgogICAgICBUaGUgY291bnQgaXMgYSA2NC1iaXQgdmFsdWUgdG8gbWFrZSBsb25nIGR1bXAgcGVyaW9kcyBwb3NzaWJsZS4KICAgICAgPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmR1bXAtYmVmb3JlIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWR1bXAtYmVmb3JlPSZsdDtmdW5jdGlvbiZndDsgPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+RHVtcCB3aGVuIGVudGVyaW5nIDxjb2RlIGNsYXNzPSJvcHRpb24iPmZ1bmN0aW9uPC9jb2RlPi48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuemVyby1iZWZvcmUiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0temVyby1iZWZvcmU9Jmx0O2Z1bmN0aW9uJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5aZXJvIGFsbCBjb3N0cyB3aGVuIGVudGVyaW5nIDxjb2RlIGNsYXNzPSJvcHRpb24iPmZ1bmN0aW9uPC9jb2RlPi48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuZHVtcC1hZnRlciI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1kdW1wLWFmdGVyPSZsdDtmdW5jdGlvbiZndDsgPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+RHVtcCB3aGVuIGxlYXZpbmcgPGNvZGUgY2xhc3M9Im9wdGlvbiI+ZnVuY3Rpb248L2NvZGU+LjwvcD48L2RkPgo8L2RsPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNsLW1hbnVhbC5vcHRpb25zLmNvbGxlY3Rpb24iPjwvYT42LjMuMy6gRGF0YSBjb2xsZWN0aW9uIG9wdGlvbnM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD4KVGhlc2Ugb3B0aW9ucyBzcGVjaWZ5IHdoZW4gZXZlbnRzIGFyZSB0byBiZSBhZ2dyZWdhdGVkIGludG8gZXZlbnQgY291bnRzLgpBbHNvIHNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLmxpbWl0cyIgdGl0bGU9IjYuMi4yLqBMaW1pdGluZyB0aGUgcmFuZ2Ugb2YgY29sbGVjdGVkIGV2ZW50cyI+TGltaXRpbmcgcmFuZ2Ugb2YgZXZlbnQgY29sbGVjdGlvbjwvYT4uPC9wPgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8YSBuYW1lPSJjbC5vcHRzLmxpc3QuY29sbGVjdGlvbiI+PC9hPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGR0Pgo8YSBuYW1lPSJvcHQuaW5zdHItYXRzdGFydCI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbnN0ci1hdHN0YXJ0PSZsdDt5ZXN8bm8mZ3Q7IFtkZWZhdWx0OiB5ZXNdIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPgo8cD5TcGVjaWZ5IGlmIHlvdSB3YW50IENhbGxncmluZCB0byBzdGFydCBzaW11bGF0aW9uIGFuZAogICAgICBwcm9maWxpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcm9ncmFtLiAgCiAgICAgIFdoZW4gc2V0IHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bm88L2NvZGU+LCAKICAgICAgQ2FsbGdyaW5kIHdpbGwgbm90IGJlIGFibGUKICAgICAgdG8gY29sbGVjdCBhbnkgaW5mb3JtYXRpb24sIGluY2x1ZGluZyBjYWxscywgYnV0IGl0IHdpbGwgaGF2ZSBhdAogICAgICBtb3N0IGEgc2xvd2Rvd24gb2YgYXJvdW5kIDQsIHdoaWNoIGlzIHRoZSBtaW5pbXVtIFZhbGdyaW5kCiAgICAgIG92ZXJoZWFkLiAgSW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBpbnRlcmFjdGl2ZWx5IGVuYWJsZWQgdmlhCiAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Y2FsbGdyaW5kX2NvbnRyb2wgLWkgb248L2NvZGU+LjwvcD4KPHA+Tm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgY2FsbCBncmFwaCB3aWxsIG1vc3QgcHJvYmFibHkgbm90CiAgICAgIGNvbnRhaW4gPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5tYWluPC9jb2RlPiwgYnV0IHdpbGwgY29udGFpbiBhbGwgdGhlCiAgICAgIGZ1bmN0aW9ucyBleGVjdXRlZCBhZnRlciBpbnN0cnVtZW50YXRpb24gd2FzIGVuYWJsZWQuCiAgICAgIEluc3RydW1lbnRhdGlvbiBjYW4gYWxzbyBwcm9ncmFtYXRpY2FsbHkgZW5hYmxlZC9kaXNhYmxlZC4gU2VlIHRoZQogICAgICBDYWxsZ3JpbmQgaW5jbHVkZSBmaWxlCiAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Y2FsbGdyaW5kLmg8L2NvZGU+IGZvciB0aGUgbWFjcm8KICAgICAgeW91IGhhdmUgdG8gdXNlIGluIHlvdXIgc291cmNlIGNvZGUuPC9wPgo8cD5Gb3IgY2FjaGUKICAgICAgc2ltdWxhdGlvbiwgcmVzdWx0cyB3aWxsIGJlIGxlc3MgYWNjdXJhdGUgd2hlbiBzd2l0Y2hpbmcgb24KICAgICAgaW5zdHJ1bWVudGF0aW9uIGxhdGVyIGluIHRoZSBwcm9ncmFtIHJ1biwgYXMgdGhlIHNpbXVsYXRvciBzdGFydHMKICAgICAgd2l0aCBhbiBlbXB0eSBjYWNoZSBhdCB0aGF0IG1vbWVudC4gIFN3aXRjaCBvbiBldmVudCBjb2xsZWN0aW9uCiAgICAgIGxhdGVyIHRvIGNvcGUgd2l0aCB0aGlzIGVycm9yLjwvcD4KPC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuY29sbGVjdC1hdHN0YXJ0Ij48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNvbGxlY3QtYXRzdGFydD0mbHQ7eWVzfG5vJmd0OyBbZGVmYXVsdDogeWVzXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD4KPHA+U3BlY2lmeSB3aGV0aGVyIGV2ZW50IGNvbGxlY3Rpb24gaXMgZW5hYmxlZCBhdCBiZWdpbm5pbmcKICAgICAgb2YgdGhlIHByb2ZpbGUgcnVuLjwvcD4KPHA+VG8gb25seSBsb29rIGF0IHBhcnRzIG9mIHlvdXIgcHJvZ3JhbSwgeW91IGhhdmUgdHdvCiAgICAgIHBvc3NpYmlsaXRpZXM6PC9wPgo8ZGl2IGNsYXNzPSJvcmRlcmVkbGlzdCI+PG9sIGNsYXNzPSJvcmRlcmVkbGlzdCIgdHlwZT0iMSI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPlplcm8gZXZlbnQgY291bnRlcnMgYmVmb3JlIGVudGVyaW5nIHRoZSBwcm9ncmFtIHBhcnQgeW91CiAgICAgICAgd2FudCB0byBwcm9maWxlLCBhbmQgZHVtcCB0aGUgZXZlbnQgY291bnRlcnMgdG8gYSBmaWxlIGFmdGVyCiAgICAgICAgbGVhdmluZyB0aGF0IHByb2dyYW0gcGFydC48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+U3dpdGNoIG9uL29mZiBjb2xsZWN0aW9uIHN0YXRlIGFzIG5lZWRlZCB0byBvbmx5IHNlZQogICAgICAgICAgZXZlbnQgY291bnRlcnMgaGFwcGVuaW5nIHdoaWxlIGluc2lkZSBvZiB0aGUgcHJvZ3JhbSBwYXJ0IHlvdQogICAgICAgICAgd2FudCB0byBwcm9maWxlLjwvcD48L2xpPgo8L29sPjwvZGl2Pgo8cD5UaGUgc2Vjb25kIG9wdGlvbiBjYW4gYmUgdXNlZCBpZiB0aGUgcHJvZ3JhbSBwYXJ0IHlvdSB3YW50IHRvCiAgICAgIHByb2ZpbGUgaXMgY2FsbGVkIG1hbnkgdGltZXMuIE9wdGlvbiAxLCBpLmUuIGNyZWF0aW5nIGEgbG90IG9mCiAgICAgIGR1bXBzIGlzIG5vdCBwcmFjdGljYWwgaGVyZS48L3A+CjxwPkNvbGxlY3Rpb24gc3RhdGUgY2FuIGJlCiAgICAgIHRvZ2dsZWQgYXQgZW50cnkgYW5kIGV4aXQgb2YgYSBnaXZlbiBmdW5jdGlvbiB3aXRoIHRoZQogICAgICBvcHRpb24gPGNvZGUgY2xhc3M9Im9wdGlvbiI+PGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI29wdC50b2dnbGUtY29sbGVjdCI+LS10b2dnbGUtY29sbGVjdDwvYT48L2NvZGU+LiAgSWYgeW91CiAgICAgIHVzZSB0aGlzIG9wdGlvbiwgY29sbGVjdGlvbgogICAgICBzdGF0ZSBzaG91bGQgYmUgZGlzYWJsZWQgYXQgdGhlIGJlZ2lubmluZy4gIE5vdGUgdGhhdCB0aGUKICAgICAgc3BlY2lmaWNhdGlvbiBvZiA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRvZ2dsZS1jb2xsZWN0PC9jb2RlPgogICAgICBpbXBsaWNpdGx5IHNldHMKICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jb2xsZWN0LXN0YXRlPW5vPC9jb2RlPi48L3A+CjxwPkNvbGxlY3Rpb24gc3RhdGUgY2FuIGJlIHRvZ2dsZWQgYWxzbyBieSBpbnNlcnRpbmcgdGhlIGNsaWVudCByZXF1ZXN0CiAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+CiAgICAgIAogICAgICBDQUxMR1JJTkRfVE9HR0xFX0NPTExFQ1QKICAgICAgOzwvY29kZT4KICAgICAgYXQgdGhlIG5lZWRlZCBjb2RlIHBvc2l0aW9ucy48L3A+CjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LnRvZ2dsZS1jb2xsZWN0Ij48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRvZ2dsZS1jb2xsZWN0PSZsdDtmdW5jdGlvbiZndDsgPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+VG9nZ2xlIGNvbGxlY3Rpb24gb24gZW50cnkvZXhpdCBvZiA8Y29kZSBjbGFzcz0ib3B0aW9uIj5mdW5jdGlvbjwvY29kZT4uPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmNvbGxlY3QtanVtcHMiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY29sbGVjdC1qdW1wcz0mbHQ7bm98eWVzJmd0OyBbZGVmYXVsdDogbm9dIDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgaW5mb3JtYXRpb24gZm9yIChjb25kaXRpb25hbCkganVtcHMKICAgICAgc2hvdWxkIGJlIGNvbGxlY3RlZC4gIEFzIGFib3ZlLCBjYWxsZ3JpbmRfYW5ub3RhdGUgY3VycmVudGx5IGlzIG5vdAogICAgICBhYmxlIHRvIHNob3cgeW91IHRoZSBkYXRhLiAgWW91IGhhdmUgdG8gdXNlIEtDYWNoZWdyaW5kIHRvIGdldCBqdW1wCiAgICAgIGFycm93cyBpbiB0aGUgYW5ub3RhdGVkIGNvZGUuPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LmNvbGxlY3Qtc3lzdGltZSI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jb2xsZWN0LXN5c3RpbWU9Jmx0O25vfHllcyZndDsgW2RlZmF1bHQ6IG5vXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5UaGlzIHNwZWNpZmllcyB3aGV0aGVyIGluZm9ybWF0aW9uIGZvciBzeXN0ZW0gY2FsbCB0aW1lcwogICAgICBzaG91bGQgYmUgY29sbGVjdGVkLjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9ImNsb3B0LmNvbGxlY3QtYnVzIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNvbGxlY3QtYnVzPSZsdDtub3x5ZXMmZ3Q7IFtkZWZhdWx0OiBub10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+VGhpcyBzcGVjaWZpZXMgd2hldGhlciB0aGUgbnVtYmVyIG9mIGdsb2JhbCBidXMgZXZlbnRzIGV4ZWN1dGVkCiAgICAgIHNob3VsZCBiZSBjb2xsZWN0ZWQuIFRoZSBldmVudCB0eXBlICJHZSIgaXMgdXNlZCBmb3IgdGhlc2UgZXZlbnRzLjwvcD48L2RkPgo8L2RsPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImNsLW1hbnVhbC5vcHRpb25zLnNlcGFyYXRpb24iPjwvYT42LjMuNC6gQ29zdCBlbnRpdHkgc2VwYXJhdGlvbiBvcHRpb25zPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+ClRoZXNlIG9wdGlvbnMgc3BlY2lmeSBob3cgZXZlbnQgY291bnRzIHNob3VsZCBiZSBhdHRyaWJ1dGVkIHRvIGV4ZWN1dGlvbgpjb250ZXh0cy4KRm9yIGV4YW1wbGUsIHRoZXkgc3BlY2lmeSB3aGV0aGVyIHRoZSByZWN1cnNpb24gbGV2ZWwgb3IgdGhlCmNhbGwgY2hhaW4gbGVhZGluZyB0byBhIGZ1bmN0aW9uIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQsIAphbmQgd2hldGhlciB0aGUgdGhyZWFkIElEIHNob3VsZCBiZSBjb25zaWRlcmVkLgpBbHNvIHNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLmN5Y2xlcyIgdGl0bGU9IjYuMi40LqBBdm9pZGluZyBjeWNsZXMiPkF2b2lkaW5nIGN5Y2xlczwvYT4uPC9wPgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8YSBuYW1lPSJjbWQtb3B0aW9ucy5zZXBhcmF0aW9uIj48L2E+PGRsIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8ZHQ+CjxhIG5hbWU9Im9wdC5zZXBhcmF0ZS10aHJlYWRzIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLXRocmVhZHM9Jmx0O25vfHllcyZndDsgW2RlZmF1bHQ6IG5vXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5UaGlzIG9wdGlvbiBzcGVjaWZpZXMgd2hldGhlciBwcm9maWxlIGRhdGEgc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgICBzZXBhcmF0ZWx5IGZvciBldmVyeSB0aHJlYWQuIElmIHllcywgdGhlIGZpbGUgbmFtZXMgZ2V0ICItdGhyZWFkSUQiCiAgICAgIGFwcGVuZGVkLjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5zZXBhcmF0ZS1jYWxsZXJzIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLWNhbGxlcnM9Jmx0O2NhbGxlcnMmZ3Q7IFtkZWZhdWx0OiAwXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TZXBhcmF0ZSBjb250ZXh0cyBieSBhdCBtb3N0ICZsdDtjYWxsZXJzJmd0OyBmdW5jdGlvbnMgaW4gdGhlCiAgICAgIGNhbGwgY2hhaW4uIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLmN5Y2xlcyIgdGl0bGU9IjYuMi40LqBBdm9pZGluZyBjeWNsZXMiPkF2b2lkaW5nIGN5Y2xlczwvYT4uPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LnNlcGFyYXRlLWNhbGxlcnMtbnVtIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLWNhbGxlcnMmbHQ7bnVtYmVyJmd0Oz0mbHQ7ZnVuY3Rpb24mZ3Q7IDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlNlcGFyYXRlIDxjb2RlIGNsYXNzPSJvcHRpb24iPm51bWJlcjwvY29kZT4gY2FsbGVycyBmb3IgPGNvZGUgY2xhc3M9Im9wdGlvbiI+ZnVuY3Rpb248L2NvZGU+LgogICAgICBTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5jeWNsZXMiIHRpdGxlPSI2LjIuNC6gQXZvaWRpbmcgY3ljbGVzIj5Bdm9pZGluZyBjeWNsZXM8L2E+LjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5zZXBhcmF0ZS1yZWNzIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLXJlY3M9Jmx0O2xldmVsJmd0OyBbZGVmYXVsdDogMl0gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+U2VwYXJhdGUgZnVuY3Rpb24gcmVjdXJzaW9ucyBieSBhdCBtb3N0IDxjb2RlIGNsYXNzPSJvcHRpb24iPmxldmVsPC9jb2RlPiBsZXZlbHMuCiAgICAgIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY2wtbWFudWFsLmN5Y2xlcyIgdGl0bGU9IjYuMi40LqBBdm9pZGluZyBjeWNsZXMiPkF2b2lkaW5nIGN5Y2xlczwvYT4uPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LnNlcGFyYXRlLXJlY3MtbnVtIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlLXJlY3MmbHQ7bnVtYmVyJmd0Oz0mbHQ7ZnVuY3Rpb24mZ3Q7IDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlNlcGFyYXRlIDxjb2RlIGNsYXNzPSJvcHRpb24iPm51bWJlcjwvY29kZT4gcmVjdXJzaW9ucyBmb3IgPGNvZGUgY2xhc3M9Im9wdGlvbiI+ZnVuY3Rpb248L2NvZGU+LgogICAgICBTZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9ImNsLW1hbnVhbC5odG1sI2NsLW1hbnVhbC5jeWNsZXMiIHRpdGxlPSI2LjIuNC6gQXZvaWRpbmcgY3ljbGVzIj5Bdm9pZGluZyBjeWNsZXM8L2E+LjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5za2lwLXBsdCI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1za2lwLXBsdD0mbHQ7bm98eWVzJmd0OyBbZGVmYXVsdDogeWVzXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5JZ25vcmUgY2FsbHMgdG8vZnJvbSBQTFQgc2VjdGlvbnMuPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0ib3B0LnNraXAtZGlyZWN0LXJlYyI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1za2lwLWRpcmVjdC1yZWM9Jmx0O25vfHllcyZndDsgW2RlZmF1bHQ6IHllc10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+SWdub3JlIGRpcmVjdCByZWN1cnNpb25zLjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5mbi1za2lwIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWZuLXNraXA9Jmx0O2Z1bmN0aW9uJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD4KPHA+SWdub3JlIGNhbGxzIHRvL2Zyb20gYSBnaXZlbiBmdW5jdGlvbi4gIEUuZy4gaWYgeW91IGhhdmUgYQogICAgICBjYWxsIGNoYWluIEEgJmd0OyBCICZndDsgQywgYW5kIHlvdSBzcGVjaWZ5IGZ1bmN0aW9uIEIgdG8gYmUKICAgICAgaWdub3JlZCwgeW91IHdpbGwgb25seSBzZWUgQSAmZ3Q7IEMuPC9wPgo8cD5UaGlzIGlzIHZlcnkgY29udmVuaWVudCB0byBza2lwIGZ1bmN0aW9ucyBoYW5kbGluZyBjYWxsYmFjawogICAgICBiZWhhdmlvdXIuICBGb3IgZXhhbXBsZSwgd2l0aCB0aGUgc2lnbmFsL3Nsb3QgbWVjaGFuaXNtIGluIHRoZQogICAgICBRdCBncmFwaGljcyBsaWJyYXJ5LCB5b3Ugb25seSB3YW50CiAgICAgIHRvIHNlZSB0aGUgZnVuY3Rpb24gZW1pdHRpbmcgYSBzaWduYWwgdG8gY2FsbCB0aGUgc2xvdHMgY29ubmVjdGVkCiAgICAgIHRvIHRoYXQgc2lnbmFsLiBGaXJzdCwgZGV0ZXJtaW5lIHRoZSByZWFsIGNhbGwgY2hhaW4gdG8gc2VlIHRoZQogICAgICBmdW5jdGlvbnMgbmVlZGVkIHRvIGJlIHNraXBwZWQsIHRoZW4gdXNlIHRoaXMgb3B0aW9uLjwvcD4KPC9kZD4KPC9kbD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjbC1tYW51YWwub3B0aW9ucy5zaW11bGF0aW9uIj48L2E+Ni4zLjUuoFNpbXVsYXRpb24gb3B0aW9uczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNsLm9wdHMubGlzdC5zaW11bGF0aW9uIj48L2E+PGRsIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgo8ZHQ+CjxhIG5hbWU9ImNsb3B0LmNhY2hlLXNpbSI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jYWNoZS1zaW09Jmx0O3llc3xubyZndDsgW2RlZmF1bHQ6IG5vXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IGlmIHlvdSB3YW50IHRvIGRvIGZ1bGwgY2FjaGUgc2ltdWxhdGlvbi4gIEJ5IGRlZmF1bHQsCiAgICAgIG9ubHkgaW5zdHJ1Y3Rpb24gcmVhZCBhY2Nlc3NlcyB3aWxsIGJlIGNvdW50ZWQgKCJJciIpLgogICAgICBXaXRoIGNhY2hlIHNpbXVsYXRpb24sIGZ1cnRoZXIgZXZlbnQgY291bnRlcnMgYXJlIGVuYWJsZWQ6CiAgICAgIENhY2hlIG1pc3NlcyBvbiBpbnN0cnVjdGlvbiByZWFkcyAoIkkxbXIiLyJJTG1yIiksCiAgICAgIGRhdGEgcmVhZCBhY2Nlc3NlcyAoIkRyIikgYW5kIHJlbGF0ZWQgY2FjaGUgbWlzc2VzICgiRDFtciIvIkRMbXIiKSwKICAgICAgZGF0YSB3cml0ZSBhY2Nlc3NlcyAoIkR3IikgYW5kIHJlbGF0ZWQgY2FjaGUgbWlzc2VzICgiRDFtdyIvIkRMbXciKS4KICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2ctbWFudWFsLmh0bWwiIHRpdGxlPSI1LqBDYWNoZWdyaW5kOiBhIGNhY2hlIGFuZCBicmFuY2gtcHJlZGljdGlvbiBwcm9maWxlciI+Q2FjaGVncmluZDogYSBjYWNoZSBhbmQgYnJhbmNoLXByZWRpY3Rpb24gcHJvZmlsZXI8L2E+LgogICAgICA8L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJjbG9wdC5icmFuY2gtc2ltIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJyYW5jaC1zaW09Jmx0O3llc3xubyZndDsgW2RlZmF1bHQ6IG5vXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IGlmIHlvdSB3YW50IHRvIGRvIGJyYW5jaCBwcmVkaWN0aW9uIHNpbXVsYXRpb24uCiAgICAgIEZ1cnRoZXIgZXZlbnQgY291bnRlcnMgYXJlIGVuYWJsZWQ6IE51bWJlciBvZiBleGVjdXRlZCBjb25kaXRpb25hbAogICAgICBicmFuY2hlcyBhbmQgcmVsYXRlZCBwcmVkaWN0b3IgbWlzc2VzICgiQmMiLyJCY20iKSwgZXhlY3V0ZWQgaW5kaXJlY3QKICAgICAganVtcHMgYW5kIHJlbGF0ZWQgbWlzc2VzIG9mIHRoZSBqdW1wIGFkZHJlc3MgcHJlZGljdG9yICgiQmkiLyJCaW0iKS4KICAgICAgPC9wPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iY2wtbWFudWFsLm9wdGlvbnMuY2FjaGVzaW11bGF0aW9uIj48L2E+Ni4zLjYuoENhY2hlIHNpbXVsYXRpb24gb3B0aW9uczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNsLm9wdHMubGlzdC5jYWNoZXNpbXVsYXRpb24iPjwvYT48ZGwgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxkdD4KPGEgbmFtZT0ib3B0LnNpbXVsYXRlLXdiIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNpbXVsYXRlLXdiPSZsdDt5ZXN8bm8mZ3Q7IFtkZWZhdWx0OiBub10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+U3BlY2lmeSB3aGV0aGVyIHdyaXRlLWJhY2sgYmVoYXZpb3Igc2hvdWxkIGJlIHNpbXVsYXRlZCwgYWxsb3dpbmcKICAgICAgdG8gZGlzdGluZ3Vpc2ggTEwgY2FjaGVzIG1pc3NlcyB3aXRoIGFuZCB3aXRob3V0IHdyaXRlIGJhY2tzLgogICAgICBUaGUgY2FjaGUgbW9kZWwgb2YgQ2FjaGVncmluZC9DYWxsZ3JpbmQgZG9lcyBub3Qgc3BlY2lmeSB3cml0ZS10aHJvdWdoCiAgICAgIHZzLiB3cml0ZS1iYWNrIGJlaGF2aW9yLCBhbmQgdGhpcyBhbHNvIGlzIG5vdCByZWxldmFudCBmb3IgdGhlIG51bWJlcgogICAgICBvZiBnZW5lcmF0ZWQgbWlzcyBjb3VudHMuIEhvd2V2ZXIsIHdpdGggZXhwbGljaXQgd3JpdGUtYmFjayBzaW11bGF0aW9uCiAgICAgIGl0IGNhbiBiZSBkZWNpZGVkIHdoZXRoZXIgYSBtaXNzIHRyaWdnZXJzIG5vdCBvbmx5IHRoZSBsb2FkaW5nIG9mIGEgbmV3CiAgICAgIGNhY2hlIGxpbmUsIGJ1dCBhbHNvIGlmIGEgd3JpdGUgYmFjayBvZiBhIGRpcnR5IGNhY2hlIGxpbmUgaGFkIHRvIHRha2UKICAgICAgcGxhY2UgYmVmb3JlLiBUaGUgbmV3IGRpcnR5IG1pc3MgZXZlbnRzIGFyZSBJTGRtciwgRExkbXIsIGFuZCBETGRtdywKICAgICAgZm9yIG1pc3NlcyBiZWNhdXNlIG9mIGluc3RydWN0aW9uIHJlYWQsIGRhdGEgcmVhZCwgYW5kIGRhdGEgd3JpdGUsCiAgICAgIHJlc3BlY3RpdmVseS4gQXMgdGhleSBwcm9kdWNlIHR3byBtZW1vcnkgdHJhbnNhY3Rpb25zLCB0aGV5IHNob3VsZAogICAgICBhY2NvdW50IGZvciBhIGRvdWJsZWQgdGltZSBlc3RpbWF0aW9uIGluIHJlbGF0aW9uIHRvIGEgbm9ybWFsIG1pc3MuCiAgICAgIDwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9Im9wdC5zaW11bGF0ZS1od3ByZWYiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2ltdWxhdGUtaHdwcmVmPSZsdDt5ZXN8bm8mZ3Q7IFtkZWZhdWx0OiBub10gPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+U3BlY2lmeSB3aGV0aGVyIHNpbXVsYXRpb24gb2YgYSBoYXJkd2FyZSBwcmVmZXRjaGVyIHNob3VsZCBiZQogICAgICBhZGRlZCB3aGljaCBpcyBhYmxlIHRvIGRldGVjdCBzdHJlYW0gYWNjZXNzIGluIHRoZSBzZWNvbmQgbGV2ZWwgY2FjaGUKICAgICAgYnkgY29tcGFyaW5nIGFjY2Vzc2VzIHRvIHNlcGFyYXRlIHRvIGVhY2ggcGFnZS4KICAgICAgQXMgdGhlIHNpbXVsYXRpb24gY2FuIG5vdCBkZWNpZGUgYWJvdXQgYW55IHRpbWluZyBpc3N1ZXMgb2YgcHJlZmV0Y2hpbmcsCiAgICAgIGl0IGlzIGFzc3VtZWQgdGhhdCBhbnkgaGFyZHdhcmUgcHJlZmV0Y2ggdHJpZ2dlcmVkIHN1Y2NlZWRzIGJlZm9yZSBhCiAgICAgIHJlYWwgYWNjZXNzIGlzIGRvbmUuIFRodXMsIHRoaXMgZ2l2ZXMgYSBiZXN0LWNhc2Ugc2NlbmFyaW8gYnkgY292ZXJpbmcKICAgICAgYWxsIHBvc3NpYmxlIHN0cmVhbSBhY2Nlc3Nlcy48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuY2FjaGV1c2UiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY2FjaGV1c2U9Jmx0O3llc3xubyZndDsgW2RlZmF1bHQ6IG5vXSA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHdoZXRoZXIgY2FjaGUgbGluZSB1c2Ugc2hvdWxkIGJlIGNvbGxlY3RlZC4gRm9yIGV2ZXJ5CiAgICAgIGNhY2hlIGxpbmUsIGZyb20gbG9hZGluZyB0byBpdCBiZWluZyBldmljdGVkLCB0aGUgbnVtYmVyIG9mIGFjY2Vzc2VzCiAgICAgIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBhY3R1YWxseSB1c2VkIGJ5dGVzIGlzIGRldGVybWluZWQuIFRoaXMKICAgICAgYmVoYXZpb3IgaXMgcmVsYXRlZCB0byB0aGUgY29kZSB3aGljaCB0cmlnZ2VyZWQgbG9hZGluZyBvZiB0aGUgY2FjaGUKICAgICAgbGluZS4gSW4gY29udHJhc3QgdG8gbWlzcyBjb3VudGVycywgd2hpY2ggc2hvd3MgdGhlIHBvc2l0aW9uIHdoZXJlCiAgICAgIHRoZSBzeW1wdG9tcyBvZiBiYWQgY2FjaGUgYmVoYXZpb3IgKGkuZS4gbGF0ZW5jaWVzKSBoYXBwZW5zLCB0aGUKICAgICAgdXNlIGNvdW50ZXJzIHRyeSB0byBwaW5wb2ludCBhdCB0aGUgcmVhc29uIChpLmUuIHRoZSBjb2RlIHdpdGggdGhlCiAgICAgIGJhZCBhY2Nlc3MgYmVoYXZpb3IpLiBUaGUgbmV3IGNvdW50ZXJzIGFyZSBkZWZpbmVkIGluIGEgd2F5IHN1Y2gKICAgICAgdGhhdCB3b3JzZSBiZWhhdmlvciByZXN1bHRzIGluIGhpZ2hlciBjb3N0LgogICAgICBBY0Nvc3QxIGFuZCBBY0Nvc3QyIGFyZSBjb3VudGVycyBzaG93aW5nIGJhZCB0ZW1wb3JhbCBsb2NhbGl0eQogICAgICBmb3IgTDEgYW5kIExMIGNhY2hlcywgcmVzcGVjdGl2ZWx5LiBUaGlzIGlzIGRvbmUgYnkgc3VtbWluZyB1cAogICAgICByZWNpcHJvY2FsIHZhbHVlcyBvZiB0aGUgbnVtYmVycyBvZiBhY2Nlc3NlcyBvZiBlYWNoIGNhY2hlIGxpbmUsCiAgICAgIG11bHRpcGxpZWQgYnkgMTAwMCAoYXMgb25seSBpbnRlZ2VyIGNvc3RzIGFyZSBhbGxvd2VkKS4gRS5nLiBmb3IKICAgICAgYSBnaXZlbiBzb3VyY2UgbGluZSB3aXRoIDUgcmVhZCBhY2Nlc3NlcywgYSB2YWx1ZSBvZiA1MDAwIEFjQ29zdAogICAgICBtZWFucyB0aGF0IGZvciBldmVyeSBhY2Nlc3MsIGEgbmV3IGNhY2hlIGxpbmUgd2FzIGxvYWRlZCBhbmQgZGlyZWN0bHkKICAgICAgZXZpY3RlZCBhZnRlcndhcmRzIHdpdGhvdXQgZnVydGhlciBhY2Nlc3Nlcy4gU2ltaWxhcmx5LCBTcExvc3MxLzIKICAgICAgc2hvd3MgYmFkIHNwYXRpYWwgbG9jYWxpdHkgZm9yIEwxIGFuZCBMTCBjYWNoZXMsIHJlc3BlY3RpdmVseS4gSXQKICAgICAgZ2l2ZXMgdGhlIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPnNwYXRpYWwgbG9zczwvZW0+PC9zcGFuPiBjb3VudCBvZiBieXRlcyB3aGljaAogICAgICB3ZXJlIGxvYWRlZCBpbnRvIGNhY2hlIGJ1dCBuZXZlciBhY2Nlc3NlZC4gSXQgcGlucG9pbnRzIGF0IGNvZGUKICAgICAgYWNjZXNzaW5nIGRhdGEgaW4gYSB3YXkgc3VjaCB0aGF0IGNhY2hlIHNwYWNlIGlzIHdhc3RlZC4gVGhpcyBoaW50cwogICAgICBhdCBiYWQgbGF5b3V0IG9mIGRhdGEgc3RydWN0dXJlcyBpbiBtZW1vcnkuIEFzc3VtaW5nIGEgY2FjaGUgbGluZQogICAgICBzaXplIG9mIDY0IGJ5dGVzIGFuZCAxMDAgTDEgbWlzc2VzIGZvciBhIGdpdmVuIHNvdXJjZSBsaW5lLCB0aGUKICAgICAgbG9hZGluZyBvZiA2NDAwIGJ5dGVzIGludG8gTDEgd2FzIHRyaWdnZXJlZC4gSWYgU3BMb3NzMSBzaG93cyBhCiAgICAgIHZhbHVlIG9mIDMyMDAgZm9yIHRoaXMgbGluZSwgdGhpcyBtZWFucyB0aGF0IGhhbGYgb2YgdGhlIGxvYWRlZCBkYXRhIHdhcwogICAgICBuZXZlciB1c2VkLCBvciB1c2luZyBhIGJldHRlciBkYXRhIGxheW91dCwgb25seSBoYWxmIG9mIHRoZSBjYWNoZQogICAgICBzcGFjZSB3b3VsZCBoYXZlIGJlZW4gbmVlZGVkLgogICAgICBQbGVhc2Ugbm90ZSB0aGF0IGZvciBjYWNoZSBsaW5lIHVzZSBjb3VudGVycywgaXQgY3VycmVudGx5IGlzCiAgICAgIG5vdCBwb3NzaWJsZSB0byBwcm92aWRlIG1lYW5pbmdmdWwgaW5jbHVzaXZlIGNvc3RzLiBUaGVyZWZvcmUsCiAgICAgIGluY2x1c2l2ZSBjb3N0IG9mIHRoZXNlIGNvdW50ZXJzIHNob3VsZCBiZSBpZ25vcmVkLgogICAgICA8L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuSTEiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tSTE9Jmx0O3NpemUmZ3Q7LCZsdDthc3NvY2lhdGl2aXR5Jmd0OywmbHQ7bGluZSBzaXplJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSBzaXplLCBhc3NvY2lhdGl2aXR5IGFuZCBsaW5lIHNpemUgb2YgdGhlIGxldmVsIDEKICAgICAgaW5zdHJ1Y3Rpb24gY2FjaGUuICA8L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuRDEiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tRDE9Jmx0O3NpemUmZ3Q7LCZsdDthc3NvY2lhdGl2aXR5Jmd0OywmbHQ7bGluZSBzaXplJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSBzaXplLCBhc3NvY2lhdGl2aXR5IGFuZCBsaW5lIHNpemUgb2YgdGhlIGxldmVsIDEKICAgICAgZGF0YSBjYWNoZS48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJvcHQuTEwiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tTEw9Jmx0O3NpemUmZ3Q7LCZsdDthc3NvY2lhdGl2aXR5Jmd0OywmbHQ7bGluZSBzaXplJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSBzaXplLCBhc3NvY2lhdGl2aXR5IGFuZCBsaW5lIHNpemUgb2YgdGhlIGxhc3QtbGV2ZWwKICAgICAgY2FjaGUuPC9wPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iY2wtbWFudWFsLm1vbml0b3ItY29tbWFuZHMiPjwvYT42LjQuoENhbGxncmluZCBNb25pdG9yIENvbW1hbmRzPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhlIENhbGxncmluZCB0b29sIHByb3ZpZGVzIG1vbml0b3IgY29tbWFuZHMgaGFuZGxlZCBieSB0aGUgVmFsZ3JpbmQKZ2Ric2VydmVyIChzZWUgPGEgY2xhc3M9InhyZWYiIGhyZWY9Im1hbnVhbC1jb3JlLWFkdi5odG1sI21hbnVhbC1jb3JlLWFkdi5nZGJzZXJ2ZXItY29tbWFuZGhhbmRsaW5nIiB0aXRsZT0iMy4yLjUuoE1vbml0b3IgY29tbWFuZCBoYW5kbGluZyBieSB0aGUgVmFsZ3JpbmQgZ2Ric2VydmVyIj5Nb25pdG9yIGNvbW1hbmQgaGFuZGxpbmcgYnkgdGhlIFZhbGdyaW5kIGdkYnNlcnZlcjwvYT4pLgo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2M7ICI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5kdW1wIFsmbHQ7ZHVtcF9oaW50Jmd0O108L2NvZGU+IHJlcXVlc3RzIHRvIGR1bXAgdGhlCiAgICBwcm9maWxlIGRhdGEuIDwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD48Y29kZSBjbGFzcz0idmFybmFtZSI+emVybzwvY29kZT4gcmVxdWVzdHMgdG8gemVybyB0aGUgcHJvZmlsZSBkYXRhCiAgICBjb3VudGVycy4gPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5pbnN0cnVtZW50YXRpb24gW29ufG9mZl08L2NvZGU+IHJlcXVlc3RzIHRvIHNldCAKICAgIChpZiBwYXJhbWV0ZXIgb24vb2ZmIGlzIGdpdmVuKSBvciBnZXQgdGhlIGN1cnJlbnQgaW5zdHJ1bWVudGF0aW9uIHN0YXRlLgogICAgPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPjxjb2RlIGNsYXNzPSJ2YXJuYW1lIj5zdGF0dXM8L2NvZGU+IHJlcXVlc3RzIHRvIHByaW50IG91dCBzb21lIHN0YXR1cwogICAgaW5mb3JtYXRpb24uPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImNsLW1hbnVhbC5jbGllbnRyZXF1ZXN0cyI+PC9hPjYuNS6gQ2FsbGdyaW5kIHNwZWNpZmljIGNsaWVudCByZXF1ZXN0czwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkNhbGxncmluZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGNsaWVudCByZXF1ZXN0cyBpbgo8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmNhbGxncmluZC5oPC9jb2RlPi4gIFNlZSB0aGF0IGZpbGUgZm9yIHRoZSBleGFjdCBkZXRhaWxzIG9mCnRoZWlyIGFyZ3VtZW50cy48L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNsLmNsaWVudHJlcXVlc3RzLmxpc3QiPjwvYT48ZGwgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxkdD4KPGEgbmFtZT0iY3IuZHVtcC1zdGF0cyI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5DQUxMR1JJTkRfRFVNUF9TVEFUUzwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPkZvcmNlIGdlbmVyYXRpb24gb2YgYSBwcm9maWxlIGR1bXAgYXQgc3BlY2lmaWVkIHBvc2l0aW9uCiAgICAgIGluIGNvZGUsIGZvciB0aGUgY3VycmVudCB0aHJlYWQgb25seS4gV3JpdHRlbiBjb3VudGVycyB3aWxsIGJlIHJlc2V0CiAgICAgIHRvIHplcm8uPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0iY3IuZHVtcC1zdGF0cy1hdCI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5DQUxMR1JJTkRfRFVNUF9TVEFUU19BVChzdHJpbmcpPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+U2FtZSBhcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkNBTExHUklORF9EVU1QX1NUQVRTPC9jb2RlPiwKICAgICAgYnV0IGFsbG93cyB0byBzcGVjaWZ5IGEgc3RyaW5nIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggcHJvZmlsZQogICAgICBkdW1wcy48L3A+PC9kZD4KPGR0Pgo8YSBuYW1lPSJjci56ZXJvLXN0YXRzIj48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkNBTExHUklORF9aRVJPX1NUQVRTPC9jb2RlPgogICAgPC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+UmVzZXQgdGhlIHByb2ZpbGUgY291bnRlcnMgZm9yIHRoZSBjdXJyZW50IHRocmVhZCB0byB6ZXJvLjwvcD48L2RkPgo8ZHQ+CjxhIG5hbWU9ImNyLnRvZ2dsZS1jb2xsZWN0Ij48L2E+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkNBTExHUklORF9UT0dHTEVfQ09MTEVDVDwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlRvZ2dsZSB0aGUgY29sbGVjdGlvbiBzdGF0ZS4gVGhpcyBhbGxvd3MgdG8gaWdub3JlIGV2ZW50cwogICAgICB3aXRoIHJlZ2FyZCB0byBwcm9maWxlIGNvdW50ZXJzLiBTZWUgYWxzbyBvcHRpb25zCiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuY29sbGVjdC1hdHN0YXJ0Ij4tLWNvbGxlY3QtYXRzdGFydDwvYT48L2NvZGU+IGFuZAogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjb3B0LnRvZ2dsZS1jb2xsZWN0Ij4tLXRvZ2dsZS1jb2xsZWN0PC9hPjwvY29kZT4uPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0iY3Iuc3RhcnQtaW5zdHIiPjwvYT48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Q0FMTEdSSU5EX1NUQVJUX0lOU1RSVU1FTlRBVElPTjwvY29kZT4KICAgIDwvc3Bhbj4KPC9kdD4KPGRkPjxwPlN0YXJ0IGZ1bGwgQ2FsbGdyaW5kIGluc3RydW1lbnRhdGlvbiBpZiBub3QgYWxyZWFkeSBlbmFibGVkLgogICAgICBXaGVuIGNhY2hlIHNpbXVsYXRpb24gaXMgZG9uZSwgdGhpcyB3aWxsIGZsdXNoIHRoZSBzaW11bGF0ZWQgY2FjaGUKICAgICAgYW5kIGxlYWQgdG8gYW4gYXJ0aWZpY2lhbCBjYWNoZSB3YXJtdXAgcGhhc2UgYWZ0ZXJ3YXJkcyB3aXRoCiAgICAgIGNhY2hlIG1pc3NlcyB3aGljaCB3b3VsZCBub3QgaGF2ZSBoYXBwZW5lZCBpbiByZWFsaXR5LiAgU2VlIGFsc28KICAgICAgb3B0aW9uIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuaW5zdHItYXRzdGFydCI+LS1pbnN0ci1hdHN0YXJ0PC9hPjwvY29kZT4uPC9wPjwvZGQ+CjxkdD4KPGEgbmFtZT0iY3Iuc3RvcC1pbnN0ciI+PC9hPjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5DQUxMR1JJTkRfU1RPUF9JTlNUUlVNRU5UQVRJT048L2NvZGU+CiAgICA8L3NwYW4+CjwvZHQ+CjxkZD48cD5TdG9wIGZ1bGwgQ2FsbGdyaW5kIGluc3RydW1lbnRhdGlvbiBpZiBub3QgYWxyZWFkeSBkaXNhYmxlZC4KICAgICAgVGhpcyBmbHVzaGVzIFZhbGdyaW5kcyB0cmFuc2xhdGlvbiBjYWNoZSwgYW5kIGRvZXMgbm8gYWRkaXRpb25hbAogICAgICBpbnN0cnVtZW50YXRpb24gYWZ0ZXJ3YXJkczogaXQgZWZmZWN0aXZseSB3aWxsIHJ1biBhdCB0aGUgc2FtZQogICAgICBzcGVlZCBhcyBOdWxncmluZCwgaS5lLiBhdCBtaW5pbWFsIHNsb3dkb3duLiBVc2UgdGhpcyB0bwogICAgICBzcGVlZCB1cCB0aGUgQ2FsbGdyaW5kIHJ1biBmb3IgdW5pbnRlcmVzdGluZyBjb2RlIHBhcnRzLiBVc2UKICAgICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij48YSBjbGFzcz0ieHJlZiIgaHJlZj0iY2wtbWFudWFsLmh0bWwjY3Iuc3RhcnQtaW5zdHIiPkNBTExHUklORF9TVEFSVF9JTlNUUlVNRU5UQVRJT048L2E+PC9jb2RlPiB0bwogICAgICBlbmFibGUgaW5zdHJ1bWVudGF0aW9uIGFnYWluLiAgU2VlIGFsc28gb3B0aW9uCiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSJjbC1tYW51YWwuaHRtbCNvcHQuaW5zdHItYXRzdGFydCI+LS1pbnN0ci1hdHN0YXJ0PC9hPjwvY29kZT4uPC9wPjwvZGQ+CjwvZGw+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjbC1tYW51YWwuY2FsbGdyaW5kX2Fubm90YXRlLW9wdGlvbnMiPjwvYT42LjYuoGNhbGxncmluZF9hbm5vdGF0ZSBDb21tYW5kLWxpbmUgT3B0aW9uczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNhbGxncmluZF9hbm5vdGF0ZS5vcHRzLmxpc3QiPjwvYT48ZGwgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LWggLS1oZWxwPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U2hvdyBzdW1tYXJ5IG9mIG9wdGlvbnMuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJzaW9uPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U2hvdyB2ZXJzaW9uIG9mIGNhbGxncmluZF9hbm5vdGF0ZS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zaG93PUEsQixDIFtkZWZhdWx0OiBhbGxdPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5Pbmx5IHNob3cgZmlndXJlcyBmb3IgZXZlbnRzIEEsQixDLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNvcnQ9QSxCLEM8L2NvZGU+CiAgICA8L3NwYW4+PC9kdD4KPGRkPgo8cD5Tb3J0IGNvbHVtbnMgYnkgZXZlbnRzIEEsQixDIFtldmVudCBjb2x1bW4gb3JkZXJdLjwvcD4KPHA+T3B0aW9uYWxseSwgZWFjaCBldmVudCBpcyBmb2xsb3dlZCBieSBhIDogYW5kIGEgdGhyZXNob2xkLAogICAgICAgIHRvIHNwZWNpZnkgZGlmZmVyZW50IHRocmVzaG9sZHMgZGVwZW5kaW5nIG9uIHRoZSBldmVudC48L3A+CjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdGhyZXNob2xkPSZsdDswLS0xMDAmZ3Q7IFtkZWZhdWx0OiA5OSVdIDwvY29kZT4KICAgIDwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UGVyY2VudGFnZSBvZiBjb3VudHMgKG9mIHByaW1hcnkgc29ydCBldmVudCkgd2UgYXJlIAogICAgICBpbnRlcmVzdGVkIGluLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPgogICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWF1dG89Jmx0O3llc3xubyZndDsgW2RlZmF1bHQ6IG5vXSA8L2NvZGU+CiAgICA8L3NwYW4+PC9kdD4KPGRkPjxwPkFubm90YXRlIGFsbCBzb3VyY2UgZmlsZXMgY29udGFpbmluZyBmdW5jdGlvbnMgdGhhdCBoZWxwZWQgCiAgICAgIHJlYWNoIHRoZSBldmVudCBjb3VudCB0aHJlc2hvbGQuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tY29udGV4dD1OIFtkZWZhdWx0OiA4XSA8L2NvZGU+CiAgICA8L3NwYW4+PC9kdD4KPGRkPjxwPlByaW50IE4gbGluZXMgb2YgY29udGV4dCBiZWZvcmUgYW5kIGFmdGVyIGFubm90YXRlZCAKICAgICAgbGluZXMuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW5jbHVzaXZlPSZsdDt5ZXN8bm8mZ3Q7IFtkZWZhdWx0OiBub10gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5BZGQgc3Vicm91dGluZSBjb3N0cyB0byBmdW5jdGlvbnMgY2FsbHMuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+CiAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdHJlZT0mbHQ7bm9uZXxjYWxsZXJ8Y2FsbGluZ3xib3RoJmd0OyBbZGVmYXVsdDogbm9uZV0gPC9jb2RlPgogICAgPC9zcGFuPjwvZHQ+CjxkZD48cD5QcmludCBmb3IgZWFjaCBmdW5jdGlvbiB0aGVpciBjYWxsZXJzLCB0aGUgY2FsbGVkIGZ1bmN0aW9ucyAKICAgICAgb3IgYm90aC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LUksIC0taW5jbHVkZT0mbHQ7ZGlyJmd0OyA8L2NvZGU+CiAgICA8L3NwYW4+PC9kdD4KPGRkPjxwPkFkZCA8Y29kZSBjbGFzcz0ib3B0aW9uIj5kaXI8L2NvZGU+IHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaAogICAgICBmb3Igc291cmNlIGZpbGVzLjwvcD48L2RkPgo8L2RsPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0iY2wtbWFudWFsLmNhbGxncmluZF9jb250cm9sLW9wdGlvbnMiPjwvYT42LjcuoGNhbGxncmluZF9jb250cm9sIENvbW1hbmQtbGluZSBPcHRpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+QnkgZGVmYXVsdCwgY2FsbGdyaW5kX2NvbnRyb2wgYWN0cyBvbiBhbGwgcHJvZ3JhbXMgcnVuIGJ5IHRoZQogIGN1cnJlbnQgdXNlciB1bmRlciBDYWxsZ3JpbmQuICBJdCBpcyBwb3NzaWJsZSB0byBsaW1pdCB0aGUgYWN0aW9ucyB0bwogIHNwZWNpZmllZCBDYWxsZ3JpbmQgcnVucyBieSBwcm92aWRpbmcgYSBsaXN0IG9mIHBpZHMgb3IgcHJvZ3JhbSBuYW1lcyBhcwogIGFyZ3VtZW50LiAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIGdpdmUgc29tZSBicmllZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICBhcHBsaWNhdGlvbnMgYmVpbmcgcnVuIHVuZGVyIENhbGxncmluZC48L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CjxhIG5hbWU9ImNhbGxncmluZF9jb250cm9sLm9wdHMubGlzdCI+PC9hPjxkbCBjbGFzcz0idmFyaWFibGVsaXN0Ij4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4taCAtLWhlbHA8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5TaG93IGEgc2hvcnQgZGVzY3JpcHRpb24sIHVzYWdlLCBhbmQgc3VtbWFyeSBvZiBvcHRpb25zLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyc2lvbjwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlNob3cgdmVyc2lvbiBvZiBjYWxsZ3JpbmRfY29udHJvbC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tbCAtLWxvbmc8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5TaG93IGFsc28gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCBpbiBhZGRpdGlvbiB0byB0aGUgYnJpZWYKICAgICAgaW5mb3JtYXRpb24gZ2l2ZW4gYnkgZGVmYXVsdC4KICAgICAgPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LXMgLS1zdGF0PC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U2hvdyBzdGF0aXN0aWNzIGluZm9ybWF0aW9uIGFib3V0IGFjdGl2ZSBDYWxsZ3JpbmQgcnVucy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tYiAtLWJhY2s8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5TaG93IHN0YWNrL2JhY2sgdHJhY2VzIG9mIGVhY2ggdGhyZWFkIGluIGFjdGl2ZSBDYWxsZ3JpbmQgcnVucy4gRm9yCiAgICAgIGVhY2ggYWN0aXZlIGZ1bmN0aW9uIGluIHRoZSBzdGFjayB0cmFjZSwgYWxzbyB0aGUgbnVtYmVyIG9mIGludm9jYXRpb25zCiAgICAgIHNpbmNlIHByb2dyYW0gc3RhcnQgKG9yIGxhc3QgZHVtcCkgaXMgc2hvd24uIFRoaXMgb3B0aW9uIGNhbiBiZQogICAgICBjb21iaW5lZCB3aXRoIC1lIHRvIHNob3cgaW5jbHVzaXZlIGNvc3Qgb2YgYWN0aXZlIGZ1bmN0aW9ucy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tZSBbQSxCLC4uLl0gPC9jb2RlPiAoZGVmYXVsdDogYWxsKTwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U2hvdyB0aGUgY3VycmVudCBwZXItdGhyZWFkLCBleGNsdXNpdmUgY29zdCB2YWx1ZXMgb2YgZXZlbnQKICAgICAgY291bnRlcnMuIElmIG5vIGV4cGxpY2l0IGV2ZW50IG5hbWVzIGFyZSBnaXZlbiwgZmlndXJlcyBmb3IgYWxsIGV2ZW50CiAgICAgIHR5cGVzIHdoaWNoIGFyZSBjb2xsZWN0ZWQgaW4gdGhlIGdpdmVuIENhbGxncmluZCBydW4gYXJlCiAgICAgIHNob3duLiBPdGhlcndpc2UsIG9ubHkgZmlndXJlcyBmb3IgZXZlbnQgdHlwZXMgQSwgQiwgLi4uIGFyZSBzaG93bi4gSWYKICAgICAgdGhpcyBvcHRpb24gaXMgY29tYmluZWQgd2l0aCAtYiwgaW5jbHVzaXZlIGNvc3QgZm9yIHRoZSBmdW5jdGlvbnMgb2YKICAgICAgZWFjaCBhY3RpdmUgc3RhY2sgZnJhbWUgaXMgcHJvdmlkZWQsIHRvby4KICAgICAgPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1kdW1wWz0mbHQ7ZGVzYyZndDtdIDwvY29kZT4gKGRlZmF1bHQ6IG5vIGRlc2NyaXB0aW9uKTwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmVxdWVzdCB0aGUgZHVtcGluZyBvZiBwcm9maWxlIGluZm9ybWF0aW9uLiBPcHRpb25hbGx5LCBhIAogICAgICBkZXNjcmlwdGlvbiBjYW4gYmUgc3BlY2lmaWVkIHdoaWNoIGlzIHdyaXR0ZW4gaW50byB0aGUgZHVtcCBhcyBwYXJ0IG9mCiAgICAgIHRoZSBpbmZvcm1hdGlvbiBnaXZpbmcgdGhlIHJlYXNvbiB3aGljaCB0cmlnZ2VyZWQgdGhlIGR1bXAgYWN0aW9uLiBUaGlzCiAgICAgIGNhbiBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIG11bHRpcGxlIGR1bXBzLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi16IC0temVybzwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlplcm8gYWxsIGV2ZW50IGNvdW50ZXJzLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi1rIC0ta2lsbDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkZvcmNlIGEgQ2FsbGdyaW5kIHJ1biB0byBiZSB0ZXJtaW5hdGVkLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW5zdHI9Jmx0O29ufG9mZiZndDs8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5Td2l0Y2ggaW5zdHJ1bWVudGF0aW9uIG1vZGUgb24gb3Igb2ZmLiBJZiBhIENhbGxncmluZCBydW4gaGFzCiAgICAgIGluc3RydW1lbnRhdGlvbiBkaXNhYmxlZCwgbm8gc2ltdWxhdGlvbiBpcyBkb25lIGFuZCBubyBldmVudHMgYXJlCiAgICAgIGNvdW50ZWQuIFRoaXMgaXMgdXNlZnVsIHRvIHNraXAgdW5pbnRlcmVzdGluZyBwcm9ncmFtIHBhcnRzLCBhcyB0aGVyZQogICAgICBpcyBtdWNoIGxlc3Mgc2xvd2Rvd24gKHNhbWUgYXMgd2l0aCB0aGUgVmFsZ3JpbmQgdG9vbCAibm9uZSIpLiBTZWUgYWxzbwogICAgICB0aGUgQ2FsbGdyaW5kIG9wdGlvbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWluc3RyLWF0c3RhcnQ8L2NvZGU+LjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmdkYi1wcmVmaXg9Jmx0O3ByZWZpeCZndDs8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5TcGVjaWZ5IHRoZSB2Z2RiIHByZWZpeCB0byB1c2UgYnkgY2FsbGdyaW5kX2NvbnRyb2wuCiAgICAgIGNhbGxncmluZF9jb250cm9sIGludGVybmFsbHkgdXNlcyB2Z2RiIHRvIGZpbmQgYW5kIGNvbnRyb2wgdGhlIGFjdGl2ZQogICAgICBDYWxsZ3JpbmQgcnVucy4gSWYgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmdkYi1wcmVmaXg8L2NvZGU+IG9wdGlvbiB3YXMgdXNlZAogICAgICBmb3IgbGF1bmNoaW5nIHZhbGdyaW5kLCB0aGVuIHRoZSBzYW1lIG9wdGlvbiBtdXN0IGJlIGdpdmVuIHRvCiAgICAgIGNhbGxncmluZF9jb250cm9sLjwvcD48L2RkPgo8L2RsPgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8ZGl2Pgo8YnI+PHRhYmxlIGNsYXNzPSJuYXYiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMyIgY2VsbHBhZGRpbmc9IjIiIGJvcmRlcj0iMCIgc3VtbWFyeT0iTmF2aWdhdGlvbiBmb290ZXIiPgo8dHI+Cjx0ZCByb3dzcGFuPSIyIiB3aWR0aD0iNDAlIiBhbGlnbj0ibGVmdCI+CjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iY2ctbWFudWFsLmh0bWwiPiZsdDsmbHQ7oDUuoENhY2hlZ3JpbmQ6IGEgY2FjaGUgYW5kIGJyYW5jaC1wcmVkaWN0aW9uIHByb2ZpbGVyPC9hPqA8L3RkPgo8dGQgd2lkdGg9IjIwJSIgYWxpZ249ImNlbnRlciI+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJtYW51YWwuaHRtbCI+VXA8L2E+PC90ZD4KPHRkIHJvd3NwYW49IjIiIHdpZHRoPSI0MCUiIGFsaWduPSJyaWdodCI+oDxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iaGctbWFudWFsLmh0bWwiPjcuoEhlbGdyaW5kOiBhIHRocmVhZCBlcnJvciBkZXRlY3RvcqAmZ3Q7Jmd0OzwvYT4KPC90ZD4KPC90cj4KPHRyPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPkhvbWU8L2E+PC90ZD48L3RyPgo8L3RhYmxlPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==