JSU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQolJSBwcm9zcGVyLmNscwolJSBDb3B5cmlnaHQgMjAwMC0yMDAxIEZy6WTpcmljIEdvdWFsYXJkIGFuZCBQZXRlciBN+GxsZXIgTmVlcmdhYXJkCiUlCiUlIFRoaXMgcHJvZ3JhbSBtYXkgYmUgZGlzdHJpYnV0ZWQgYW5kL29yIG1vZGlmaWVkIHVuZGVyIHRoZQolJSBjb25kaXRpb25zIG9mIHRoZSBMYVRlWCBQcm9qZWN0IFB1YmxpYyBMaWNlbnNlLCBlaXRoZXIgdmVyc2lvbiAxLjIKJSUgb2YgdGhpcyBsaWNlbnNlIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiUlIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGxpY2Vuc2UgaXMgaW4KJSUgICBodHRwOi8vd3d3LmxhdGV4LXByb2plY3Qub3JnL2xwcGwudHh0CiUlIGFuZCB2ZXJzaW9uIDEuMiBvciBsYXRlciBpcyBwYXJ0IG9mIGFsbCBkaXN0cmlidXRpb25zIG9mIExhVGVYIAolJSB2ZXJzaW9uIDE5OTkvMTIvMDEgb3IgbGF0ZXIuCiUlCiUlIFRoaXMgcHJvZ3JhbSBjb25zaXN0cyBvZiB0aGUgZmlsZXMgbGlzdGVkIGluIG1hbmlmZXN0LnR4dAolJQolJSBDVlNJZCA6ICRJZCQKJSU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKXGRlZlxQcm9zcGVyQFZlcnNpb257MjAwMS8wNy8xNywgdi4gMS41fQpcTmVlZHNUZVhGb3JtYXR7TGFUZVgyZX1bMTk5NS8xMi8wMV0KXFByb3ZpZGVzQ2xhc3N7cHJvc3Blcn1bXFByb3NwZXJAVmVyc2lvbl0KXHR5cGVvdXR7KGMpIDIwMDAtMjAwMSBGcmVkZXJpYyBHb3VhbGFyZCwgRVBGTCwgU3dpdHplcmxhbmR9Clx0eXBlb3V0eyAgICAgICAgICBhbmQgUGV0ZXIgTfhsbGVyIE5lZXJnYWFyZCwgQm9zdG9uIFVuaXYuLCBVU0F9Clx0eXBlb3V0e0NWU0lkOiAkSWQkfQoKXG5ld2lmXGlmRFZJdG9QUwpcRGVjbGFyZU9wdGlvbntwc317XGdsb2JhbFxEVkl0b1BTdHJ1ZX0KXERlY2xhcmVPcHRpb257cGRmfXtcZ2xvYmFsXERWSXRvUFNmYWxzZX0KClxuZXdpZlxpZmlzRHJhZnQKXERlY2xhcmVPcHRpb257ZHJhZnR9e1xnbG9iYWxcaXNEcmFmdHRydWUlCiAgXFBhc3NPcHRpb25zVG9DbGFzc3tkcmFmdH17c2VtaW5hcn19ClxEZWNsYXJlT3B0aW9ue2ZpbmFsfXtcZ2xvYmFsXGlzRHJhZnRmYWxzZSUKICBcUGFzc09wdGlvbnNUb0NsYXNze2ZpbmFsfXtzZW1pbmFyfX0KClxuZXdpZlxpZmluQ29sb3IKXERlY2xhcmVPcHRpb257c2xpZGVDb2xvcn17XGdsb2JhbFxpbkNvbG9ydHJ1ZX0KXERlY2xhcmVPcHRpb257c2xpZGVCV317XGdsb2JhbFxpbkNvbG9yZmFsc2V9CgpcbmV3aWZcaWZhbGxQYWdlcwpcRGVjbGFyZU9wdGlvbnt0b3RhbH17XGdsb2JhbFxhbGxQYWdlc3RydWV9ClxEZWNsYXJlT3B0aW9ue25vdG90YWx9e1xnbG9iYWxcYWxsUGFnZXNmYWxzZX0KClxuZXdpZlxpZmNvbG9yQkcKXERlY2xhcmVPcHRpb257bm9jb2xvckJHfXtcZ2xvYmFsXGNvbG9yQkdmYWxzZX0KXERlY2xhcmVPcHRpb257Y29sb3JCR317XGdsb2JhbFxjb2xvckJHdHJ1ZX0KClxuZXdpZlxpZkFjY3VtdWxhdGUKXERlY2xhcmVPcHRpb257YWNjdW11bGF0ZX17XGdsb2JhbFxBY2N1bXVsYXRldHJ1ZX0KXERlY2xhcmVPcHRpb257bm9hY2N1bXVsYXRlfXtcZ2xvYmFsXEFjY3VtdWxhdGVmYWxzZX0KClxuZXdpZlxpZm5vRm9vdGVyClxEZWNsYXJlT3B0aW9ue25vRm9vdGVyfXtcZ2xvYmFsXG5vRm9vdGVydHJ1ZX0KXG5vRm9vdGVyZmFsc2UKClxuZXdpZlxpZkBkaXN0aWxsZXIKXEBkaXN0aWxsZXJmYWxzZQpcRGVjbGFyZU9wdGlvbntkaXN0aWxsZXJ9e1xnbG9iYWxcQGRpc3RpbGxlcnRydWV9CgpcRGVjbGFyZU9wdGlvbntZYW5kWX17XGdkZWZcQHBkZkBkcml2ZXJ7ZHZpcHNvbmV9fQpcRGVjbGFyZU9wdGlvbntwczJwZGZ9e1xnZGVmXEBwZGZAZHJpdmVye3BzMnBkZn19ClxEZWNsYXJlT3B0aW9ue3Z0ZXh9e1xnZGVmXEBwZGZAZHJpdmVye3Z0ZXh9fQoKJSUgRGVmYXVsdCBzdHlsZSBmaWxlID0gZGVmYXVsdApcZGVmXFN0eWxlQGNob3NlbntkZWZhdWx0fQpcRGVjbGFyZU9wdGlvbip7XGdsb2JhbFxsZXRcU3R5bGVAY2hvc2VuPVxDdXJyZW50T3B0aW9ufQoKXEV4ZWN1dGVPcHRpb25ze2ZpbmFsLHNsaWRlQlcsdG90YWwsbm9jb2xvckJHLG5vYWNjdW11bGF0ZSxwcyxwczJwZGZ9ClxQcm9jZXNzT3B0aW9uc1xyZWxheAoKXFJlcXVpcmVQYWNrYWdle2dyYXBoaWN4fSAlIE1VU1QgYmUgbG9hZGVkICpiZWZvcmUqIHNlbWluYXIKClxMb2FkQ2xhc3NbcG9ydHJhaXQsc2VtbGF5ZXIsc2VtY29sb3IsbGVxbm9de3NlbWluYXJ9ClxJbnB1dElmRmlsZUV4aXN0c3tzZW1pbmFyLmJ1Z317fVxyZWxheApcSW5wdXRJZkZpbGVFeGlzdHN7c2VtaW5hci5iZzJ9e31ccmVsYXgKXElucHV0SWZGaWxlRXhpc3Rze3NlbWluYXItYmcyLWxlcGVubmVjLmZpeH17fVxyZWxheAoKXFJlcXVpcmVQYWNrYWdlW1xAcGRmQGRyaXZlcixib29rbWFya3MsJQogICAgICAgICAgICAgICAgbGV0dGVycGFwZXIsJQolICAgICAgICAgICAgICAgIHBkZm1lbnViYXI9ZmFsc2UsJQogICAgICAgICAgICAgICAgcGRmaGlnaGxpZ2h0PS9JLCUKJSAgICAgICAgICAgICAgICBwZGZ0b29sYmFyPWZhbHNlLCUKICAgICAgICAgICAgICAgIHBkZmZpdHdpbmRvdz10cnVlLCUKICAgICAgICAgICAgICAgIHBkZmNlbnRlcndpbmRvdz10cnVlLCUKJSAgICAgICAgICAgICAgICBwZGZ3aW5kb3d1aT1mYWxzZSwlCiAgICAgICAgICAgICAgICBtZW51Y29sb3I9bWVudWNvbG9yLCUKJSAgICAgICAgICAgICAgICBwZGZ2aWV3PUZpdCwlCiAgICAgICAgICAgICAgICBwZGZzdGFydHZpZXc9Rml0XXtoeXBlcnJlZn0KClxyb3RhdGVoZWFkZXJzdHJ1ZQolXHNsaWRld2lkdGg9MjIybW0KJVxzbGlkZWhlaWdodD0xNTBtbQolXHNsaWRld2lkdGg9MTFpbgolXHNsaWRlaGVpZ2h0PTguNWluClxyZW5ld2NvbW1hbmR7XHNsaWRlbGVmdG1hcmdpbn17MC4wMWlufQoKJSBvdmVybGF5cyBlbnZpcm9ubWVudAolIFBhcmFtZXRlcjogIyBvZiBzbGlkZXMgaW4gdGhlIG92ZXJsYXkKJSBzbGlkZSAwIGlzIHRoZSBvbmUgZm9yIFBvc3RTY3JpcHQgZmlsZQpcbmV3Ym94XHRoZW92ZXJsYXlzClxuZXdjb3VudGVye292ZXJsYXlzQ291bnR9ClxuZXdjb3VudGVye2xpbWl0T3ZlcmxheXN9CgpcbmV3Y291bnRcQHRlbXBvTGltaXQgXEB0ZW1wb0xpbWl0PTAKXG5ld2lmXGlmY29sbGFwc2VkQm9va21hcmtzCiUgRGVmYXVsdDogY29sbGFwc2VkIGJvb2ttYXJrcyB0cmVlClxjb2xsYXBzZWRCb29rbWFya3N0cnVlCiUgQWRkIGEgYm9va21hcmsgZm9yIGVhY2ggbWFzdGVyIHNsaWRlClxkZWZcQGFkZEJvb2ttYXJrT25TbGlkZSMxIzJ7JQogIFxpZm51bSMxPTAKICBcZGVmXEh5QHRlbXB7IzJ9JSAKICAgIFxwZGZtYXJre3BkZm1hcms9L09VVCwKICAgICAgUmF3PXsvUGFnZSBcdGhldHJ1ZVNsaWRlQ291bnRlciAKICAgICAgICAvVmlldyBbIC9YWVogbnVsbCBudWxsIG51bGwgXQogICAgICAgIC9UaXRsZSAoXGV4cGFuZGFmdGVyXHN0cmlwQHByZWZpeFxtZWFuaW5nXEh5QHRlbXApfQogICAgfSUKICBcZWxzZQogIFxAdGVtcG9MaW1pdD0jMSUKICBcYWR2YW5jZSBcQHRlbXBvTGltaXQgYnkgLTEKICBcaWZjb2xsYXBzZWRCb29rbWFya3MKICAgIFxAdGVtcG9MaW1pdD0tXEB0ZW1wb0xpbWl0CiAgXGZpCiAgXGRlZlxIeUB0ZW1weyMyfSUgCiAgICBccGRmbWFya3twZGZtYXJrPS9PVVQsCiAgICAgIFJhdz17L0NvdW50IFxudW1iZXJcQHRlbXBvTGltaXQgL1BhZ2UgXHRoZXRydWVTbGlkZUNvdW50ZXIgCiAgICAgICAgL1ZpZXcgWyAvWFlaIG51bGwgbnVsbCBudWxsIF0KICAgICAgICAvVGl0bGUgKFxleHBhbmRhZnRlclxzdHJpcEBwcmVmaXhcbWVhbmluZ1xIeUB0ZW1wKX0KICAgIH0lCiAgXGZpCn0KCgolJSBTb21lIGNvZGUgdG8gYmUgYWRkZWQgd2hlbiBjcmVhdGluZyBhIFBERiBmaWxlClxkZWZcQ3JvcHBpbmdAQm94ezAgMCA1OTUgODkwfSAlIEJ5IGRlZmF1bHQ6IGNyb3BwaW5nIHRvIGE0IHBhcGVyIGRpbWVuc2lvbnMKXGlmRFZJdG9QUwpcZWxzZQogIFxBdEVuZE9mQ2xhc3N7JQogICAgXGh5cGVyc2V0dXB7cGRmcGFnZXNjcm9wPVxDcm9wcGluZ0BCb3h9JQogIH0KXGlmQGRpc3RpbGxlcgpcZWxzZQogIFxBdEJlZ2luRHZpeyUKICAgICAgXHBkZm1hcmt7cGRmbWFyaz0vUEFHRVMsCiAgICAgICAgUmF3PXsvUm90YXRlIDkwfX0KICB9JQpcZmkKXGZpClxuZXdjb21tYW5ke1xQREZDcm9wcGluZ0JveH1bMV17JQogIFxnZGVmXENyb3BwaW5nQEJveHsjMX0KICB9CgolJSBQREZ0cmFuc2l0aW9uCiUlIFRyYW5zaXRpb24gZnJvbSBvbmUgcGFnZSB0byBhbm90aGVyLgolJSBQb3NzaWJsZSB2YWx1ZXM6CiUlICAgICAgIChTcGxpdCwgQmxpbmRzLCBCb3gsIFdpcGUsIERpc3NvbHZlLCBHbGl0dGVyLCBSKQpcZGVmXFNwbGl0e30gXGRlZlxCbGluZHN7fSBcZGVmXEJveHt9IFxkZWZcV2lwZXt9IFxkZWZcRGlzc29sdmV7fQpcZGVmXEdsaXR0ZXJ7fSBcZGVmXFJ7fSBcZGVmXFJlcGxhY2V7fQpcbmV3Y29tbWFuZHtcUERGdHJhbnNpdGlvbn1bMV17JQogIFxAaWZ1bmRlZmluZWR7IzF9CiAgeyUKICAgIFxDbGFzc0Vycm9ye3Byb3NwZXJ9e1VuZGVmaW5lZCB0cmFuc2l0aW9uICMxfXslCiAgICAgIFBvc3NpYmxlIHZhbHVlczogU3BsaXQsIEJsaW5kcywgQm94LCBXaXBlLCBEaXNzb2x2ZSwgR2xpdHRlciwgUn19CiAgeyUKICAgXGh5cGVyc2V0dXB7cGRmcGFnZXRyYW5zaXRpb249eyMxfX0KICB9JQp9CgolJSBEZWZhdWx0IHRyYW5zaXRpb24gYmV0d2VlbiBwYWdlcyAoZm9yIHZhbHVlcywgc2VlIFxQREZ0cmFuc2l0aW9uKQpcZGVmXEBkZWZhdWx0VHJhbnNpdGlvbntSfQpcbmV3Y29tbWFuZHtcRGVmYXVsdFRyYW5zaXRpb259WzFde1xnZGVmXEBkZWZhdWx0VHJhbnNpdGlvbnsjMX19CgoKXGxldFxAY2FydG91Y2hlXEBlbXB0eQolJSBcc2xpZGVDYXB0aW9uIDogRGVmaW5pdGlvbiBvZiBjYXB0aW9uIHRvIGFwcGVhciBvbiBldmVyeSBzbGlkZS4KXG5ld2NvbW1hbmR7XHNsaWRlQ2FwdGlvbn1bMV17XGdkZWZcQGNhcnRvdWNoZXsjMX19CgolJS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiUlIERlZmluaXRpb25zIGZvciBmb250cyBhbmQgY29sb3JzCiUlICMxOiBmb250IGFuZCBjb2xvciBpZiBzbGlkZSBpbiBjb2xvcgolJSAjMjogZm9udCBhbmQgY29sb3IgaWYgc2xpZGUgaW4gQlcKXGRlZlxAZm9udFRpdGxlQ29sb3J7XENsYXNzRXJyb3J7cHJvc3Blcn17JQogICAgbm8gZm9udCBzcGVjaWZpZWQgZm9yIHRpdGxlIGluIGNvbG9yfXtVc2UgbWFjcm8gXHN0cmluZ1xGb250VGl0bGV9fQpcZGVmXEBmb250VGl0bGVCV3tcQ2xhc3NFcnJvcntwcm9zcGVyfXslCiAgICBubyBmb250IHNwZWNpZmllZCBmb3IgdGl0bGUgaW4gQlxzdHJpbmcmV317VXNlIG1hY3JvIFxzdHJpbmdcRm9udFRpdGxlfX0KXGRlZlxAZm9udFN1YnRpdGxlQ29sb3J7XEBmb250VGl0bGVDb2xvclxmb250c2l6ZXsxNnB0fXsxNnB0fVxzZWxlY3Rmb250XGl0c2hhcGV9ClxkZWZcQGZvbnRTdWJ0aXRsZUJXe1xAZm9udFRpdGxlQldcZm9udHNpemV7MTRwdH17MTZwdH1cc2VsZWN0Zm9udFxpdHNoYXBlfQpcZGVmXEBmb250VGV4dENvbG9ye1xDbGFzc0Vycm9ye3Byb3NwZXJ9eyUKICAgIG5vIGZvbnQgc3BlY2lmaWVkIGZvciB0ZXh0ZSBpbiBjb2xvcn17VXNlIG1hY3JvIFxzdHJpbmdcRm9udFRleHR9fQpcZGVmXEBmb250VGV4dEJXe1xDbGFzc0Vycm9ye3Byb3NwZXJ9eyUKICAgIG5vIGZvbnQgc3BlY2lmaWVkIGZvciB0ZXh0IGluIEJcc3RyaW5nJld9e1VzZSBtYWNybyBcc3RyaW5nXEZvbnRUZXh0fX0KXGRlZlxAY29sb3JGb290e1xibGFja30KXG5ld2NvbW1hbmR7XEZvbnRUaXRsZX1bMl17JQogIFxnZGVmXEBmb250VGl0bGVDb2xvcnsjMX0lIAogIFxnZGVmXEBmb250VGl0bGVCV3sjMn19ClxuZXdjb21tYW5ke1xGb250U3VidGl0bGV9WzJdeyUKICBcZ2RlZlxAZm9udFN1YnRpdGxlQ29sb3J7IzF9JQogIFxnZGVmXEBmb250U3VidGl0bGVCV3sjMn19ClxuZXdjb21tYW5ke1xGb250VGV4dH1bMl17JQogIFxnZGVmXEBmb250VGV4dENvbG9yeyMxfSUgCiAgXGdkZWZcQGZvbnRUZXh0Qld7IzJ9fQpcbmV3Y29tbWFuZHtcQ29sb3JGb290fVsxXXtcZ2RlZlxAY29sb3JGb290eyMxfX0KClxuZXdjb21tYW5ke1xmb250VGl0bGV9WzFdeyUKICB7XGlmaW5Db2xvclxAZm9udFRpdGxlQ29sb3JcZWxzZVxAZm9udFRpdGxlQldcZmkgIzF9fQpcbmV3Y29tbWFuZHtcZm9udFRleHR9WzFdeyUKICB7XGlmaW5Db2xvclxAZm9udFRleHRDb2xvclxlbHNlXEBmb250VGV4dEJXXGZpICMxfX0KJSUtIEVuZCBvZiBkZWZpbml0aW9ucyBmb3IgZm9udHMgYW5kIGNvbG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJSBXaWR0aCBvZiB0aGUgdGV4dCBhcmVhClxuZXdsZW5ndGh7XHNsaWRlV2lkdGh9CgpcZGVmXEB0aXRsZVNwYWNpbmd7XHZzcGFjZSp7MTBwdH19ClxuZXdjb21tYW5ke1x0aXRsZVNwYWNpbmd9WzFde1xnZGVmXEB0aXRsZVNwYWNpbmd7IzF9fQoKXGRlZlxAbXllbmRtaW5pcGFnZXslCiAgXGdsb2JhbFxsZXRcQG9sZGVuZG1pbmlwYWdlPVxlbmRtaW5pcGFnZSUKICBcZ2xvYmFsXGxldFxlbmRtaW5pcGFnZT1cQG5ld2VuZG1pbmlwYWdlJQp9CgpcZGVmXEBub3JtYWxlbmRtaW5pcGFnZXslCiAgIFxnbG9iYWxcbGV0XGVuZG1pbmlwYWdlPVxAb2xkZW5kbWluaXBhZ2UlCn0KXGRlZlxAbmV3ZW5kbWluaXBhZ2V7JQogIFxwYXIKICAgIFx1bnNraXAKICAgIFxpZnZvaWRcQG1wZm9vdGluc1xlbHNlCiAgICAgIFx2c2tpcFxza2lwXEBtcGZvb3RpbnMKICAgICAgXG5vcm1hbGNvbG9yCiAgICAgIFxmb290bm90ZXJ1bGUKICAgICAgXHVudmJveFxAbXBmb290aW5zCiAgICBcZmkKICAgIFxAbWluaXBhZ2VmYWxzZSAgICUlIGFkZGVkIDI0IE1heSA4OQogIFxjb2xvckBlbmRncm91cAogIFxlZ3JvdXAKICBcdHlwZW91dHtWZXJ0aWNhbCBzaXplOiBcdGhlXGh0XEB0ZW1wYm94YX0KICBcZXhwYW5kYWZ0ZXJcQGlpaXBhcmJveFxAbXBhcmdze1x1bnZib3hcQHRlbXBib3hhfX0KCiUlIFJlZGVmaW5pdGlvbiBvZiB0aGUgc2xpZGUgZW52aXJvbm1lbnQKXG5ld2NvdW50ZXJ7dHJ1ZVNsaWRlQ291bnRlcn0KXGRlZlx0aGV0cnVlc2xpZGVDb3VudGVye1xhcmFiaWN7dHJ1ZVNsaWRlQ291bnRlcn19ClxsZXRcc2xpZGVAc2VtaW5hcj1cc2xpZGUKXGxldFxlbmRzbGlkZUBzZW1pbmFyPVxlbmRzbGlkZQpcbGV0XHNsaWRlPVxyZWxheApcbGV0XGVuZHNsaWRlPVxyZWxheApcbmV3ZW52aXJvbm1lbnR7U2xpZGVOb3JtYWx9WzJdW1xAZGVmYXVsdFRyYW5zaXRpb25deyUKICBcc3RlcGNvdW50ZXJ7dHJ1ZVNsaWRlQ291bnRlcn0lCiAgXFBERnRyYW5zaXRpb257IzF9JQogIFxiZWdpbntzbGlkZUBzZW1pbmFyfSUKICAgIFxkZWZcQHRlbXBheyMyfSUKICAgIFxpZnhcQHRlbXBhXEBlbXB0eQogICAgXGVsc2UKICAgICAgIFxAYWRkQm9va21hcmtPblNsaWRlezB9eyMyfSUKICAgICAgIFxzbGlkZXRpdGxleyMyfSUKICAgIFxmaQogICAgXGJlZ2lue3Bvc2l0QEJveH0lCiAgICAgIFxiZWdpbnttaW5pcGFnZX17XHNsaWRlV2lkdGh9JSAgICAKICAgICAgICBcYmVnaW57cmFnZ2VkcmlnaHR9JQogICAgICAgIFxARGVmTXlJdGVtCiAgICAgICAgXGlmaW5Db2xvclxAZm9udFRleHRDb2xvclxlbHNlXEBmb250VGV4dEJXXGZpCiAgICAgICAgfXslCiAgICAgIFxwYXJcZW5ke3JhZ2dlZHJpZ2h0fSUgCiAgICBcZW5ke21pbmlwYWdlfQogIFxlbmR7cG9zaXRAQm94fVxlbmR7c2xpZGVAc2VtaW5hcn19CiUgU2xpZGVzIGluIG92ZXJsYXlzClxuZXdlbnZpcm9ubWVudHtTbGlkZU92ZXJsYXl9WzJdW1xAZGVmYXVsdFRyYW5zaXRpb25deyUKICBcaWZEVkl0b1BTCiAgICAgIFxiZWdpbntzbGlkZUBzZW1pbmFyfSUKICAgICAgICBcc2xpZGV0aXRsZXsjMn0lCiAgICAgICAgXGJlZ2lue3Bvc2l0QEJveH0lCiAgICAgICAgICBcYmVnaW57bWluaXBhZ2V9e1xzbGlkZVdpZHRofSUKICAgICAgICAgICAgXGJlZ2lue3JhZ2dlZHJpZ2h0fSUKICAgICAgICAgICAgXEBEZWZNeUl0ZW0KICAgICAgICAgICAgXGlmaW5Db2xvclxAZm9udFRleHRDb2xvclxlbHNlXEBmb250VGV4dEJXXGZpCiAgXGVsc2UgJSUgRFZJIC0+IFBERgogICAgICBcc3RlcGNvdW50ZXJ7dHJ1ZVNsaWRlQ291bnRlcn0lCiAgICAgIFxQREZ0cmFuc2l0aW9ueyMxfSUKICAgICAgXGJlZ2lue3NsaWRlQHNlbWluYXJ9JQogICAgICAgIFxAcHJlcGFyZVJlc2V0Q291bnRlcnMKICAgICAgICBcZGVmXEB0ZW1wYXsjMn0lCiAgICAgICAgXGlmeFxAdGVtcGFcQGVtcHR5CiAgICAgICAgXGVsc2UKICAgICAgICAgIFxAaWZ1bmRlZmluZWR7QG9rRm9yQm9va21hcmt9eyUKICAgICAgICAgICAgXGdkZWZcQG9rRm9yQm9va21hcmt7fSUKICAgICAgICAgICAgXEBhZGRCb29rbWFya09uU2xpZGV7XG51bWJlclxjQGxpbWl0T3ZlcmxheXN9eyMyfSUKICAgICAgICAgIH17XEBhZGRCb29rbWFya09uU2xpZGV7MH17IzJ9fSUKICAgICAgICAgIFxzbGlkZXRpdGxleyMyfSUKICAgICAgICBcZmkKICAgICAgICBcYmVnaW57cG9zaXRAQm94fSUKICAgICAgICAgIFxiZWdpbnttaW5pcGFnZX17XHNsaWRlV2lkdGh9JQogICAgICAgICAgICBcYmVnaW57cmFnZ2VkcmlnaHR9JQogICAgICAgICAgICBcQERlZk15SXRlbQogICAgICAgICAgICBcaWZpbkNvbG9yXEBmb250VGV4dENvbG9yXGVsc2VcQGZvbnRUZXh0QldcZmkKICAgICAgICAgICAge1xvdmVybGF5ezF9fSUKICBcZmkgICAgCiAgfXslCiAgXGlmRFZJdG9QUwogICAgICAgIFxwYXJcZW5ke3JhZ2dlZHJpZ2h0fSUKICAgICAgXGVuZHttaW5pcGFnZX1cZW5ke3Bvc2l0QEJveH1cZW5ke3NsaWRlQHNlbWluYXJ9JQogIFxlbHNlICUlIERWSSAtPiBQREYKICAgICAgICBccGFyXGVuZHtyYWdnZWRyaWdodH0lCiAgICAgIFxlbmR7bWluaXBhZ2V9XGVuZHtwb3NpdEBCb3h9XGVuZHtzbGlkZUBzZW1pbmFyfSUKICAgICAgICBcYWRkdG9jb3VudGVye3NsaWRlfXstMX0lCiAgXGZpCn0KXGxldFxzbGlkZT1cU2xpZGVOb3JtYWwKXGxldFxlbmRzbGlkZT1cZW5kU2xpZGVOb3JtYWwKClxuZXdjb21tYW5ke1xOZXdTbGlkZVN0eWxlfVs0XVsxMWNtXXslCiAgXHNldGxlbmd0aHtcc2xpZGVXaWR0aH17IzF9JQogIFxnbG9iYWxccHNsb25nYm94e3Bvc2l0QEJveH17XHJwdXRbIzJdKCMzKX0lCiAgXG5ld3NsaWRlZnJhbWV7dGhlIzR9e1xjc25hbWUgIzRcZW5kY3NuYW1leyMjMX19JQogIFxzbGlkZXBhZ2VzdHlsZXtHZW5lcmljUGFnZVN0eWxlfSUKICBcc2xpZGVmcmFtZXt0aGUjNH0lCn0KCgolIERlZmluaXRpb24gb2YgdGhlIGJ1bGxldCBmb3IgaXRlbWl6ZSBlbnYuClxkZWZcQHByb3NwZXJJdGVtaXt7XHNjcmlwdHNpemVcZ3JlZW4lCiAgICAgIFxyYWlzZWJveHsycHR9e1xlbnN1cmVtYXRoe1xidWxsZXR9fX19ClxkZWZcQHByb3NwZXJJdGVtaWl7e1xzY3JpcHRzaXplXGdyZWVuJQogICAgICBccmFpc2Vib3h7MnB0fXtcZW5zdXJlbWF0aHtcYnVsbGV0fX19fQpcZGVmXEBwcm9zcGVySXRlbWlpaXt7XHNjcmlwdHNpemVcZ3JlZW4lCiAgICAgIFxyYWlzZWJveHsycHR9e1xlbnN1cmVtYXRoe1xidWxsZXR9fX19ClxuZXdjb21tYW5ke1xteWl0ZW19WzJdeyUKICBcaWZudW0jMT0xIAogICAgXGdkZWZcQHByb3NwZXJJdGVtaXsjMn0lCiAgXGVsc2UKICAgIFxpZm51bSMxPTIKICAgICAgIFxnZGVmXEBwcm9zcGVySXRlbWlpeyMyfSUKICAgIFxlbHNlCiAgICAgICBcaWZudW0jMT0zCiAgICAgICAgICBcZ2RlZlxAcHJvc3Blckl0ZW1paWl7IzJ9JQogICAgICAgXGVsc2UKICAgICAgICAgIFxDbGFzc0Vycm9ye3Byb3NwZXJ9e1VuZGVmaW5lZCBpdGVtIGxldmVsfXtBdmFpbGFibGUgbGV2ZWxzOiAxLDIsM30lCiAgICAgICBcZmkKICAgIFxmaQogIFxmaQp9CgpcZGVmXEBEZWZNeUl0ZW17JQogIFxnbG9iYWxcbGV0XGxhYmVsaXRlbWk9XEBwcm9zcGVySXRlbWkKICBcZ2xvYmFsXGxldFxsYWJlbGl0ZW1paT1cQHByb3NwZXJJdGVtaWkKICBcZ2xvYmFsXGxldFxsYWJlbGl0ZW1paWk9XEBwcm9zcGVySXRlbWlpaQp9CgolJSBkaXNwbGF5aW5nIG9mIGEgbG9nbyAodG8gYmUgZGVmaW5lZCBpbiBldmVyeSBzdHlsZSkKXG5ld2NvbW1hbmR7XExvZ29Qb3NpdGlvbn1bMV17XGdkZWZcQFBvc0xvZ297IzF9fQpcZGVmXEBQb3NMb2dve1xDbGFzc0Vycm9ye3Byb3NwZXJ9e25vIGRlZmF1bHQgcG9zaXRpb24gZm9yIHBvc2l0aW9uaW5nIHRoZSBsb2dvIGdpdmVufXtVc2UgbWFjcm8gXHN0cmluZ1xMb2dvUG9zaXRpb25cc3BhY2UgaW4gdGhlIHN0eWxlIGZpbGV9fQpcbGV0XEB0aGVsb2dvXEBlbXB0eQpcbmV3Y29tbWFuZHtcTG9nb317JQogICAgXEBpZm5leHRjaGFyKHtcTG9nb0BvbmV9e1xMb2dvQHR3b30lCn0KXGRlZlxMb2dvQG9uZSgjMSkjMnslCiAgXGdkZWZcQFBvc0xvZ297IzF9JQogIFxnZGVmXEB0aGVsb2dveyMyfSUKfQpcZGVmXExvZ29AdHdvIzF7JQogIFxnZGVmXEB0aGVsb2dveyMxfSUKfQoKXG5ld2NvbW1hbmR7XFB1dExvZ299eyUKICBcaWZ4XEB0aGVsb2dvXEBlbXB0eVxlbHNlXHJwdXRbbGJdKFxAUG9zTG9nbyl7XEB0aGVsb2dvfVxmaQp9CgpcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSByZWFscGFnZXJlZlxlbmRjc25hbWVccmVsYXglCiAgXGdkZWZccmVhbHBhZ2VyZWYjMXtcZXhwYW5kYWZ0ZXJccmVhbEBzZXRyZWYKICAgIFxjc25hbWUgckAjMVxlbmRjc25hbWVcQHNlY29uZG9mZml2ZXsjMX19ClxmaQoKXG5ld3BhZ2VzdHlsZXtHZW5lcmljUGFnZVN0eWxlfXtcaGZpbGwgfXtcaWZub0Zvb3RlclxlbHNlXGhmaWxsJQogXGlmaXNEcmFmdAoge1xAY29sb3JGb290XHRpbnkgXHRleHRiZntcam9ibmFtZS50ZXh9fi0tflxAVGl0bGV+LS1+XEBBdXRob3J+LS1+XG51bWJlclxkYXkvXG51bWJlclxtb250aC9cbnVtYmVyXHllYXJ+LS1+XHRpbWVub3d+LS1+cC5+XHRoZXBhZ2VcaWZhbGxQYWdlcy9ccmVhbHBhZ2VyZWZ7bGFzdEBwYWdlfVxmaX0lCiAgXGVsc2UKICBcaWZzaG93VmVyc2lvbgoge1xAY29sb3JGb290XHRpbnkgXHRleHRiZntcam9ibmFtZS50ZXh9fi0tflxAVGl0bGV+LS1+XEBBdXRob3J+LS1+XG51bWJlclxkYXkvXG51bWJlclxtb250aC9cbnVtYmVyXHllYXJ+LS1+XHRpbWVub3d+LS1+cC5+XHRoZXBhZ2VcaWZhbGxQYWdlcy9ccmVhbHBhZ2VyZWZ7bGFzdEBwYWdlfVxmaX0lCiAgXGVsc2UKICB7XEBjb2xvckZvb3RcdGlueSBcaGZpbGwgXGhmaWxsIFxoZmlsbCBcaGZpbGwgXEBjYXJ0b3VjaGV+LS1+cC5+XHRoZXBhZ2VcaWZhbGxQYWdlcy9ccmVhbHBhZ2VyZWZ7bGFzdEBwYWdlfVxoZmlsbFxmaX0lCiAgXGZpXGZpXGZpCn0KClxJZkZpbGVFeGlzdHN7UFBSXFN0eWxlQGNob3Nlbi5zdHl9eyUKICBcUmVxdWlyZVBhY2thZ2V7UFBSXFN0eWxlQGNob3Nlbn0lCn17XENsYXNzRXJyb3J7cHJvc3Blcn17dW5rbm93biBQcm9zcGVyIHN0eWxlIGZpbGU6IFBQUlxTdHlsZUBjaG9zZW4uc3R5fXslCiAgU29ycnksIG5vIGFkZGl0aW9uYWwgaGVscH19CgoKXGRlZlxub2JhYmVseyUKXGxldFxsYWJlbGl0ZW1pXEBsdGlPUkklClxsZXRcbGFiZWxpdGVtaWlcQGx0aWlPUkklClxsZXRcbGFiZWxpdGVtaWlpXEBsdGlpaU9SSSUKXGxldFxsYWJlbGl0ZW1pdlxAbHRpdk9SSX0KCiUgQSBuZXcgaXRlbWl6ZSBlbnZpcm9ubWVudCB0aGF0IGRvZXMgbm90IGF0dGVtcHQgdG8ganVzdGlmeSBzZW50ZW5jZXMKXGxldFxJdGVtaXplPVxpdGVtaXplClxsZXRcZW5kSXRlbWl6ZT1cZW5kaXRlbWl6ZQpcbGV0XG9yaWdAaXRlbT1caXRlbQpccmVuZXdlbnZpcm9ubWVudHtpdGVtaXplfXtcZ2xvYmFsXGxldFxjdXJAaXRlbT1caXRlbSAKICBcZ2xvYmFsXGxldFxpdGVtPVxvcmlnQGl0ZW0lCiAgXGJlZ2lue0l0ZW1pemV9XGJlZ2lue3JhZ2dlZHJpZ2h0fX17JQogICAgICBcZW5ke3JhZ2dlZHJpZ2h0fVxlbmR7SXRlbWl6ZX1cZ2xvYmFsXGxldFxpdGVtPVxjdXJAaXRlbX0KXGxldFxvcmlnQGNlbnRlcj1cY2VudGVyClxsZXRcb3JpZ0BlbmRjZW50ZXI9XGVuZGNlbnRlcgpcZGVmXGNlbnRlcntcZ2xvYmFsXGxldFxjdXJAaXRlbT1caXRlbSBcZ2xvYmFsXGxldFxpdGVtPVxvcmlnQGl0ZW0KICBcb3JpZ0BjZW50ZXJ9ClxkZWZcZW5kY2VudGVye1xvcmlnQGVuZGNlbnRlciBcZ2xvYmFsXGxldFxpdGVtPVxjdXJAaXRlbX0KCiUgaXRlbXN0ZXAgOiBpdGVtaXplIGVudmlyb25tZW50IHdpdGggc3RlcC1ieS1zdGVwIGRpc3BsYXlpbmcKJSBXYXJuaW5nOiBubyBtb3JlIHRoYW4gNCBuZXN0aW5nIGxldmVscyBhbGxvd2VkISEKXG5ld2NvdW50ZXJ7aXRlbUBzdGVwfQpcbmV3ZW52aXJvbm1lbnR7aXRlbXN0ZXB9WzFdWzFdeyUKICBcYmVnaW57SXRlbWl6ZX1cYmVnaW57cmFnZ2VkcmlnaHR9JQogICAgICBcaWZudW1cdGhlXEBpdGVtZGVwdGg9MSUKICAgICAgICAgXHNldGNvdW50ZXJ7aXRlbUBzdGVwfXsjMX0lCiAgICAgICAgIFxhZGR0b2NvdW50ZXJ7aXRlbUBzdGVwfXstMX0lCiAgICAgIFxmaSUKICAgICAgXGRlZlxpdGVte1xzdGVwY291bnRlcntpdGVtQHN0ZXB9JQogICAgICAgICBcRnJvbVNsaWRle1x0aGVpdGVtQHN0ZXB9XG9yaWdAaXRlbX0lCiAgICB9e1xlbmR7cmFnZ2VkcmlnaHR9XGVuZHtJdGVtaXplfVxpZm51bVx0aGVcQGl0ZW1kZXB0aD0wXHNldGNvdW50ZXJ7aXRlbUBzdGVwfXswfVxmaX0KCiUlIERpc3BsYXlpbmcgdGhlIHZlcnNpb24gY2FwdGlvbgpcbmV3aWZcaWZzaG93VmVyc2lvbgpcc2hvd1ZlcnNpb25mYWxzZQpcbmV3Y29tbWFuZHtcZGlzcGxheVZlcnNpb259e1xnbG9iYWxcc2hvd1ZlcnNpb250cnVlfQoKXG5ld2NvbW1hbmR7XHRpbWVub3d9eyUKICBcQHRlbXBjbnRhPVx0aW1lIFxkaXZpZGVcQHRlbXBjbnRhIGJ5IDYwIFxudW1iZXJcQHRlbXBjbnRhOlxtdWx0aXBseQogIFxAdGVtcGNudGEgYnkgNjAgXEB0ZW1wY250Yj1cdGltZSBcYWR2YW5jZVxAdGVtcGNudGIgYnkgLVxAdGVtcGNudGEKICBcaWZudW1cQHRlbXBjbnRiIDwxMCAwXG51bWJlclxAdGVtcGNudGJcZWxzZVxudW1iZXJcQHRlbXBjbnRiXGZpfQoKXG5ld2NvbW1hbmR7XGxhc3RwYWdlQHB1dGxhYmVsfXtcYWRkdG9jb3VudGVye3BhZ2V9ey0xfSUKICAgXGltbWVkaWF0ZVx3cml0ZVxAYXV4b3V0e1xzdHJpbmcKICAgXG5ld2xhYmVse2xhc3RAcGFnZX17e317XHRoZXNsaWRlfXtccmVsYXggfXt9e319fSUKICAgXGFkZHRvY291bnRlcntwYWdlfXsxfX0KXEF0RW5kRG9jdW1lbnR7XGlmYWxsUGFnZXNcY2xlYXJwYWdlXGxhc3RwYWdlQHB1dGxhYmVsXGZpfQoKXGxldFxAU3VidGl0bGVcQGVtcHR5ClxuZXdjb21tYW5ke1xzdWJ0aXRsZX1bMV17XGdkZWZcQFN1YnRpdGxleyMxfX0KXHJlbmV3Y29tbWFuZHtcdGl0bGV9WzFde1xnZGVmXEBUaXRsZXsjMX0lCiAgXGlmeFxAY2FydG91Y2hlXEBlbXB0eVxnZGVmXEBjYXJ0b3VjaGV7IzF9XGZpfQpccmVuZXdjb21tYW5ke1xhdXRob3J9WzFde1xnZGVmXEBBdXRob3J7IzF9fQoKXGxldFxAZGlzY2xhaW1lclxAZW1wdHkKXG5ld2NvbW1hbmR7XGRpc2NsYWltZXJ9WzFde1xnZGVmXEBkaXNjbGFpbWVyeyMxfX0KClxsZXRcQGVtYWlsXEBlbXB0eQpcbmV3Y29tbWFuZHtcZW1haWx9WzFde1xnZGVmXEBlbWFpbHsjMX19CgpcbGV0XEBpbnN0aXR1dGlvblxAZW1wdHkKXG5ld2NvbW1hbmR7XGluc3RpdHV0aW9ufVsxXXtcZ2RlZlxAaW5zdGl0dXRpb257IzF9fQoKXHJlbmV3Y29tbWFuZHtcbWFrZXRpdGxlfXslCiAgJSUgVGVzdHMgd2hldGhlciB0aGUgJ2ZyZW5jaCcgc3R5bGUgZnJvbSBCLiBHYXVsbGUgaXMgbG9hZGVkCiAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgZnJlbmNoVGVYbW9kc1xlbmRjc25hbWVccmVsYXglCiAgXGVsc2UgCiAgXFBhY2thZ2VXYXJuaW5ne3Byb3NwZXJ9e1RoaXMgcGFnZSBpbnRlbnRpb25uYWxseSBsZWZ0IGJsYW5rIHRvIG92ZXJjb21lIGFuIGluY29tcGF0aWJpbGl0eSBidWcgYmV0d2VlbiBCLiBHYXVsbGUgJ2ZyZW5jaCcgcGFja2FnZSBhbmQgdGhlIHNlbWluYXIgY2xhc3MufQogIFxiZWdpbntjZW50ZXJ9CiAgICB7XGJsYWNrXHNtYWxsCiAgXHRleHRzZntwcm9zcGVyfSBjbGFzczogcGFnZSBpbnRlbnRpb25uYWxseSBsZWZ0IGJsYW5rIHRvIG92ZXJjb21lIGFuIGluY29tcGF0aWJpbGl0eSBidWcgYmV0d2VlbiBCLiBHYXVsbGUgJ2ZyZW5jaCcgcGFja2FnZSBhbmQgdGhlIHNlbWluYXIgY2xhc3MufSUKICBcZW5ke2NlbnRlcn0KICBcY2xlYXJwYWdlIFxzZXRjb3VudGVye3BhZ2V9ezB9JQogIFxmaQogIFxiZWdpbntzbGlkZX17fSUKICAgIFxwdHNpemV7MTB9JQogICAgXGJlZ2lue2NlbnRlcn0lCiAgICBcQHRpdGxlU3BhY2luZ1xwYXIKICAgIFxub3JtYWxmb250CiAgICB7XGlmaW5Db2xvclxAZm9udFRpdGxlQ29sb3JcZWxzZVxAZm9udFRpdGxlQldcZmlcQFRpdGxlXHBhcn0lCiAgICBcaWZ4XEBTdWJ0aXRsZVxAZW1wdHlcZWxzZQoKICAgIHtcaWZpbkNvbG9yXEBmb250U3VidGl0bGVDb2xvclxlbHNlXEBmb250U3VidGl0bGVCV1xmaVxAU3VidGl0bGVccGFyfQogICAgXGZpCgogICAgXHZza2lwLjVlbQogICAgXEBBdXRob3IKCiAgICBcaWZ4XEBlbWFpbFxAZW1wdHlcZWxzZQogICAgXHZza2lwLTVwdAogICAge1xmb250c2l6ZXs3fXs3fVxzZWxlY3Rmb250XHRleHR0dHtcQGVtYWlsfX0KICAgIFxmaQogICAgXGlmeFxAaW5zdGl0dXRpb25cQGVtcHR5JQogICAgXGVsc2UKICAgIFx2c2tpcC44ZW0KICAgIFxAaW5zdGl0dXRpb24KICAgIFxmaQogICAgXGlmeFxAZGlzY2xhaW1lclxAZW1wdHklCiAgICBcZWxzZQogICAgXHZmaWxsIFx2ZmlsbAogICAge1xmb250c2l6ZXs2fXs2fVxzZWxlY3Rmb250XHRleHRzZntcQGRpc2NsYWltZXJ9fQogICAgXGZpCiAgICBcdmZpbGwKICAgIFxlbmR7Y2VudGVyfQogIFxlbmR7c2xpZGV9Cn0KCiUlIE92ZXJsYXlzIGVudmlyb25tZW50ClxuZXdjb3VudGVye292ZXJsYXlAcGFnZX0KXG5ld2Vudmlyb25tZW50e092ZXJsYXlzfXslCiAgXGdsb2JhbFxsZXRcc2xpZGVcU2xpZGVPdmVybGF5CiAgXGdsb2JhbFxsZXRcZW5kc2xpZGVcZW5kU2xpZGVPdmVybGF5CiAgXHNldGNvdW50ZXJ7b3ZlcmxheUBwYWdlfXtcdmFsdWV7c2xpZGV9fX17JQogIFxnbG9iYWxcbGV0XHNsaWRlXFNsaWRlTm9ybWFsCiAgXGdsb2JhbFxsZXRcZW5kc2xpZGVcZW5kU2xpZGVOb3JtYWwKICBcZ2xvYmFsXGxldFxAb2tGb3JCb29rbWFya1xyZWxheAogIFxzZXRjb3VudGVye3NsaWRlfXtcdmFsdWV7b3ZlcmxheUBwYWdlfX1cc3RlcGNvdW50ZXJ7c2xpZGV9fQoKCiUgZnJvbVNsaWRlLCBvbmx5U2xpZGUsIHVudGlsU2xpZGUKJSBNYXNrcyBvciBub3QgdGhlIHBhcmFtZXRlci4gCiUgVGhlIHN0YXJlZCB2ZXJzaW9uIGRvZXMgbm90IGFkdmFuY2UgdGhlIHBvc2l0aW9uIHBvaW50ZXIgYW5kIGRvZXMgbm90CiUgaW50ZXJwcmV0IGl0cyBhcmd1bWVudCAodG8gYmUgdXNlZCBmb3IgZ3JhcGhpY3MgYW5kIGNvbW1hbmRzIGNvbnRhaW5pbmcKJSBQU3RyaWNrcyBsaW5rcykKCiUgVGhlIGZvbGxvd2luZyB1c2VzIHNvbWUgcHN0cmlja3MgaGFja2VyeSB0byBleGNsdWRlIG1hdGVyaWFsIGZyb20gYQolIHNsaWRlLiBXZSB1c2UgcHN0cmlja3MnIHBvc3RzY3JpcHQgY29tbWFuZHMgdG8gcGxhY2UgbWF0ZXJpYWwgb24KJSBzbGlkZSBvbmUgd2hpY2ggd2lsbCBuZXZlciBiZSBwcmludGVkLgpcbG9uZ1xkZWZcQG9uQG92ZXJsYXlAb25lIzF7JQogIFxwc3RAVmVyYnsoMSkgQk9MfXtcaWdub3Jlc3BhY2VzICMxfVxwc3RAVmVyYnsoXGN1cnJAb3ZlcmxheSkgQk9MfX0KJSBbMjAwMS8wNy8xNl0gUE1OOiBUaGUgZ3JvdXBpbmcgYW5kIFxpZ25vcmVzcGFjZXMgYXJvdW5kIHRoZSBhcmd1bWVudAolICAgaXMgbmVjZXNzYXJ5IGZvciBkb3dud2FyZHMgY29tcGF0aWJpbGl0eS4KJSAgICAgXGlnbm9yZXNwYWNlcyBpcyBhcyBmb3VuZCBpbiBcb3ZlcmxheXMgZnJvbSBzZW1pbmFyIGFuZAolICAgICB0aGUgZ3JvdXBpbmcgY2hhbmdlcyB0aGUgc3BhY2luZyBiZWhhdm91ciBpbiBUZVguICAKClxsb25nXGRlZlxmcm9tU2xpZGV7JQogIFxAaWZzdGFyXGZyb21TbGlkZUBFXGZyb21TbGlkZUBORX0KXGxvbmdcZGVmXGZyb21TbGlkZUBORSMxeyUKICBcbGV0XHByb3NwZXJAbmV4dFxAZ29iYmxlJQogIFxpZkRWSXRvUFMlCiAgICBcaWZBY2N1bXVsYXRlJQogICAgICBcbGV0XHByb3NwZXJAbmV4dFxAaWRlbiUKICAgIFxmaSUKICBcZWxzZSUKICAgIFxpZm51bSMxPlx2YWx1ZXtvdmVybGF5c0NvdW50fSUKICAgICAgXGxldFxwcm9zcGVyQG5leHRcQG9uQG92ZXJsYXlAb25lJQogICAgXGVsc2UlCiAgICAgIFxsZXRccHJvc3BlckBuZXh0XEBpZGVuJQogICAgXGZpJQogIFxmaSUKICBccHJvc3BlckBuZXh0fQoKXGxvbmdcZGVmXGZyb21TbGlkZUBFIzF7JQogIFxsZXRccHJvc3BlckBuZXh0XEBnb2JibGUlCiAgXGlmRFZJdG9QUyUKICAgIFxpZkFjY3VtdWxhdGUlCiAgICAgIFxsZXRccHJvc3BlckBuZXh0XEBpZGVuJQogICAgXGZpJQogICAgXGVsc2UlCiAgICAgIFxpZm51bSMxPlx2YWx1ZXtvdmVybGF5c0NvdW50fSUKICAgICAgXGVsc2UlCiAgICAgICAgXGxldFxwcm9zcGVyQG5leHRcQGlkZW4lCiAgICAgIFxmaSUKICAgIFxmaSUKICBccHJvc3BlckBuZXh0fQoKXGxvbmdcZGVmXHVudGlsU2xpZGV7JQogIFxAaWZzdGFyXHVudGlsU2xpZGVARVx1bnRpbFNsaWRlQE5FfQpcbG9uZ1xkZWZcdW50aWxTbGlkZUBORSMxeyUKICBcbGV0XHByb3NwZXJAbmV4dFxAZ29iYmxlJQogIFxpZkRWSXRvUFMlCiAgICBcaWZBY2N1bXVsYXRlJQogICAgICBcbGV0XHByb3NwZXJAbmV4dFxAaWRlbiUKICAgIFxmaSUKICBcZWxzZSUKICAgIFxpZm51bSMxPFx2YWx1ZXtvdmVybGF5c0NvdW50fSUKICAgICAgXGxldFxwcm9zcGVyQG5leHRcQG9uQG92ZXJsYXlAb25lJQogICAgXGVsc2UlCiAgICAgIFxsZXRccHJvc3BlckBuZXh0XEBpZGVuJQogICAgXGZpJQogIFxmaSUKICBccHJvc3BlckBuZXh0fQoKXGxvbmdcZGVmXHVudGlsU2xpZGVARSMxeyUKICBcbGV0XHByb3NwZXJAbmV4dFxAZ29iYmxlJQogIFxpZkRWSXRvUFMlCiAgICBcaWZBY2N1bXVsYXRlJQogICAgICBcbGV0XHByb3NwZXJAbmV4dFxAaWRlbiUKICAgIFxmaSUKICBcZWxzZSUKICAgIFxpZm51bSMxPFx2YWx1ZXtvdmVybGF5c0NvdW50fSUKICAgIFxlbHNlJQogICAgICBcbGV0XHByb3NwZXJAbmV4dFxAaWRlbiUKICAgIFxmaSUKICBcZmklCiAgXHByb3NwZXJAbmV4dH0KClxsb25nXGRlZlxvbmx5U2xpZGV7JQogIFxAaWZzdGFyXG9ubHlTbGlkZUBFXG9ubHlTbGlkZUBORX0KXGxvbmdcZGVmXG9ubHlTbGlkZUBORSMxeyUKICBcbGV0XHByb3NwZXJAbmV4dFxAZ29iYmxlJQogIFxpZkRWSXRvUFMlCiAgICAgIFxpZkFjY3VtdWxhdGUlCiAgICAgICAgXGxldFxwcm9zcGVyQG5leHRcQGlkZW4lCiAgICAgIFxmaSUKICBcZWxzZSUKICAgIFxpZm51bSMxPVx2YWx1ZXtvdmVybGF5c0NvdW50fSUKICAgICAgXGxldFxwcm9zcGVyQG5leHRcQGlkZW4lCiAgICBcZWxzZSUKICAgICAgXGxldFxwcm9zcGVyQG5leHRcQG9uQG92ZXJsYXlAb25lJQogICAgXGZpJQogIFxmaSUKICBccHJvc3BlckBuZXh0fQoKXGxvbmdcZGVmXG9ubHlTbGlkZUBFIzF7JQogIFxsZXRccHJvc3BlckBuZXh0XEBnb2JibGUlCiAgXGlmRFZJdG9QUyUKICAgIFxpZkFjY3VtdWxhdGUlCiAgICAgIFxsZXRccHJvc3BlckBuZXh0XEBpZGVuJQogICAgXGZpJQogIFxlbHNlJQogICAgXGlmbnVtIzE9XHZhbHVle292ZXJsYXlzQ291bnR9JQogICAgICBcbGV0XHByb3NwZXJAbmV4dFxAaWRlbiUKICAgIFxmaSUKICBcZmklCiAgXHByb3NwZXJAbmV4dH0KCiUgRnJvbVNsaWRlLCBPbmx5U2xpZGUsIFVudGlsU2xpZGUKJSBNYXNrcyBvciBub3QgdGhlIGZvbGxvd2luZyBtYXRlcmlhbC4gQWR2YW5jZXMgdGhlIHBvc2l0aW9uIHBvaW50ZXIKXG5ld2NvbW1hbmR7XEZyb21TbGlkZX1bMV17JQpcaWZEVkl0b1BTJQpcZWxzZSUKICBcaWZudW0jMT5cdmFsdWV7b3ZlcmxheXNDb3VudH0lCiAgXG92ZXJsYXl7MX0lCiAgXGZpJQpcZml9ClxuZXdjb21tYW5ke1xVbnRpbFNsaWRlfVsxXXslClxpZkRWSXRvUFMlClxlbHNlJQogIFxpZm51bSMxPFx2YWx1ZXtvdmVybGF5c0NvdW50fSUKICAgIFxvdmVybGF5ezF9JQogIFxmaQpcZml9ClxuZXdjb21tYW5ke1xPbmx5U2xpZGV9WzFdeyUKXGlmRFZJdG9QUyUKXGVsc2UlCiAgXGlmbnVtIzE9XHZhbHVle292ZXJsYXlzQ291bnR9JQogIFxlbHNlJQogICAgXG92ZXJsYXl7MX0lCiAgXGZpClxmaX0KCiUgT3ZlcmxheXMuIFBhcmFtZXRlciB0byBzdGF0ZSB0aGUgbnVtYmVyIG9mIHNsaWRlcyBjb21wb3NpbmcgdGhlIG92ZXJsYXkKJVxkZWZcc3RlcGNvdW50ZXIjMXslCiUgIFxpZkluT3ZlcmxheXMKJSAgICBcaWZudW1cdmFsdWV7b3ZlcmxheXNjb3VudH08MgolICAgIFxlbHNlCiUgICAgICBcYWRkdG9jb3VudGVyeyMxfVxAbmUKJSAgICBcZmkKJSAgXGVsc2UKJSAgICBcYWRkdG9jb3VudGVyeyMxfVxAbmUKJSAgXGZpCiUgIFxiZWdpbmdyb3VwCiUgICAgXGxldFxAZWx0XEBzdHBlbHQKJSAgICBcY3NuYW1lIGNsQCMxXGVuZGNzbmFtZQolICBcZW5kZ3JvdXAKJX0KClxuZXdpZlxpZkluT3ZlcmxheXMKXEluT3ZlcmxheXNmYWxzZQpcbG9uZ1xkZWZcb3ZlcmxheXMjMSMyeyUKICBcYmdyb3VwICAKICBcYWZ0ZXJncm91cFxAY2xlYW51cE92ZXJsYXkKICBcZ2xvYmFsXEluT3ZlcmxheXN0cnVlCiAgXHNldGNvdW50ZXJ7bGltaXRPdmVybGF5c317IzF9JQogIFxzZXRjb3VudGVye292ZXJsYXlzQ291bnR9ezF9JQogIFxpZkRWSXRvUFMKICAgICMyCiAgXGVsc2UKICAgIFxiZWdpbntPdmVybGF5c30lCiAgICBcYmdyb3VwICAKICAgIFxsb29wIAogICAgICBcQGV2ZXJ5T3ZlcmxheQogICAgICAjMgogICAgXGlmbnVtXHZhbHVle292ZXJsYXlzQ291bnR9PFx2YWx1ZXtsaW1pdE92ZXJsYXlzfSUKICAgICAgXHN0ZXBjb3VudGVye292ZXJsYXlzQ291bnR9JQogICAgXHJlcGVhdAogICAgXGVncm91cAogICAgXGVuZHtPdmVybGF5c30lCiAgXGZpCiAgXGVncm91cAp9CgpcZGVmXEBjbGVhbnVwT3ZlcmxheXslCiAgXGdsb2JhbFxJbk92ZXJsYXlzZmFsc2UKICBcc2V0Y291bnRlcntuYkFmZmVjdGVkfXswfQp9CgpcZGVmXEBsaXN0Y3Rye30KXEF0QmVnaW5Eb2N1bWVudHslCiAgXGRlZlxAcGRmY3JlYXRvcntMYVRlWCB3aXRoIGh5cGVycmVmIGFuZCBwcm9zcGVyIHBhY2thZ2VzfSUKICB7XGJlZ2luZ3JvdXAgXGVzY2FwZWNoYXJcbUBuZVx4ZGVmXEBndGVtcGF7e1xzdHJpbmdccmVzZXRAY29sb3J9fVxlbmRncm91cAogICAgXGV4cGFuZGFmdGVyXEBpZnVuZGVmaW5lZFxAZ3RlbXBhXHJlbGF4eyUKICAgICAgXGdsb2JhbFxsZXRcb3JpZ0ByZXNldEBjb2xvcj1ccmVzZXRAY29sb3IKICAgICAgXGdkZWZccmVzZXRAY29sb3J7XG9yaWdAcmVzZXRAY29sb3JccHN0QGVuZGNvbG9yfX19JQogXGxldFxMYWJlbD1cbGFiZWwKIFxkZWZcbGFiZWwjMXslCiAgICBcaWZJbk92ZXJsYXlzCiAgICAgIFxpZm51bVx2YWx1ZXtvdmVybGF5c0NvdW50fT0xCiAgICAgICAgXExhYmVseyMxfQogICAgICBcZmkKICAgIFxlbHNlCiAgICAgIFxMYWJlbHsjMX0KICAgIFxmaQogfQoKICUgRm9yIGFtc21hdGggZW52aXJvbm1lbnRzCiBcbGV0XExhYmVsQGluQGRpc3BsYXk9XGxhYmVsQGluQGRpc3BsYXkKIFxkZWZcbGFiZWxAaW5AZGlzcGxheSMxeyUKICAgXGlmSW5PdmVybGF5cwogICAgIFxpZm51bVx2YWx1ZXtvdmVybGF5c0NvdW50fT0xCiAgICAgICBcTGFiZWxAaW5AZGlzcGxheXsjMX0KICAgICBcZmkKICAgXGVsc2UKICAgICBcTGFiZWxAaW5AZGlzcGxheXsjMX0lCiAgIFxmaQp9JQoKICBcbGV0XG92ZXJsYXlAbG9vcD1ccmVsYXgKICBcbGV0XHN0ZXBjb3VudGVyPVxzdGVwY291bnRlcgolIE1hY3JvIFxvdmVybGF5IHRha2VuIGZyb20gc2VtbGF5ZXIuc3R5ClxkZWZcb3ZlcmxheSMxeyUKICBcaWZvdmVybGF5c1xpZnhcQG92ZXJsYXlccmVsYXhcbm9vdmVybGF5c0BlcnJcZmlcZmkKICBcaWZzbGlkZQogICAgXEB0ZW1wY250YT0jMQogICAgXEB0ZXN0ZmFsc2UKICAgIFxpZm51bVxAdGVtcGNudGE+LTEgXGlmbnVtXEB0ZW1wY250YTwxMCBcQHRlc3R0cnVlXGZpXGZpCiAgICBcaWZAdGVzdAogICAgICBcY0BvdmVybGF5PVxAdGVtcGNudGEKICAgICAgXGlmbnVtXGNAb3ZlcmxheT0wCiAgICAgICAgXGFkdmFuY2VcY0BzbGlkZSBieSAtMQogICAgICAgIFxyZWZzdGVwY291bnRlcntzbGlkZX0lCiAgICAgIFxlbHNlCiAgICAgICAgXGFkdmFuY2VcY0BvdmVybGF5IGJ5IC0xCiAgICAgICAgXHJlZnN0ZXBjb3VudGVye292ZXJsYXl9JQogICAgICAgIFxpZm92ZXJsYXlzCiAgICAgICAgICBceGRlZlxvdmVybGF5QGxpc3R7XG92ZXJsYXlAbGlzdCxcdGhlXGNAb3ZlcmxheX0lCiAgICAgICAgXGZpCiAgICAgIFxmaQogICAgICBcaWZvdmVybGF5cwogICAgICAgIFxAb3ZlcmxheXtcdGhlXGNAb3ZlcmxheX0lCiAgICAgIFxmaQogICAgXGVsc2UKICAgICAgXEBzZW1pbmFyZXJye1xzdHJpbmdcb3ZlcmxheVxzcGFjZSBhcmd1bWVudCBtdXN0IGJlCiAgICAgICAgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDl9XEBlaGEKICAgIFxmaQogIFxlbHNlCiAgICBcQHNlbWluYXJlcnJ7XHN0cmluZ1xvdmVybGF5XHNwYWNlIGNhbiBvbmx5IGJlIHVzZWQKICAgICAgaW4gc2xpZGUgZW52aXJvbm1lbnRzfVxAZWhhCiAgXGZpCiAgXGlnbm9yZXNwYWNlc30lCn0gJSBBdEJlZ2luRG9jdW1lbnQKClxsZXRcQGV2ZXJ5T3ZlcmxheVxyZWxheAolJSBNYWNyb3MgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIGVhY2ggb3ZlcmxheWVkIHNsaWRlClxkZWZcZXZlcnlPdmVybGF5IzF7XGdkZWZcQGV2ZXJ5T3ZlcmxheXsjMX19CgpcbmV3Y291bnRlcntuYkFmZmVjdGVkfQpcbmV3Y291bnRlcntzYXZlY291bnRBZmZlY3RlZH0KXGRlZlxzYXZlQ3RyIzF7JQogIFxzdGVwY291bnRlcntuYkFmZmVjdGVkfQogIFxleHBhbmRhZnRlclxAc2F2ZUN0clx0aGVcY3NuYW1lIGNAIzFcZW5kY3NuYW1leyMxfQp9ClxkZWZcQHNhdmVDdHIjMSMyewogIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBAc2FjXHRoZVxjQG5iQWZmZWN0ZWRcZW5kY3NuYW1le1xmcm9tU2xpZGUqezJ9e1xzZXRjb3VudGVyeyMyfXsjMX19fQp9CgpcZGVmXEBwcmVwYXJlUmVzZXRDb3VudGVyc3slCiAgXGlmbnVtXHZhbHVle25iQWZmZWN0ZWR9PjAgCiAgICAgXHNldGNvdW50ZXJ7c2F2ZWNvdW50QWZmZWN0ZWR9ezF9CiAgICAgXGxvb3AKICAgICAgIFxjc25hbWUgQHNhY1x0aGVcY0BzYXZlY291bnRBZmZlY3RlZFxlbmRjc25hbWUKICAgICBcaWZudW1cdmFsdWV7c2F2ZWNvdW50QWZmZWN0ZWR9PFx2YWx1ZXtuYkFmZmVjdGVkfQogICAgICAgXHN0ZXBjb3VudGVye3NhdmVjb3VudEFmZmVjdGVkfQogICAgIFxyZXBlYXQKICBcZmkKfQoKCiUgXHBhcnQKXGxldFxwYXJ0PVxyZWxheApcbmV3Y29tbWFuZHtccGFydH1bMl1bXEBkZWZhdWx0VHJhbnNpdGlvbl17JQogIFxiZWdpbntzbGlkZX1bIzFde30lCiAgICBcdnNwYWNlKnsxLjVjbX1cQGFkZEJvb2ttYXJrT25TbGlkZXswfXsjMn0lCiAgICBcYmVnaW57Y2VudGVyfSUKICAgICAgXGZvbnRUaXRsZXsjMn0lCiAgICBcZW5ke2NlbnRlcn0KICBcZW5ke3NsaWRlfX0KCiUgVXNlcyAjMSBpZiBQREYgb3B0aW9uLCBvdGhlcndpc2UgIzIKJSBbNy8xMy8wMV0gUE1OOiBNb3JlIHJvYnVzdCBpbXBsZW1lbnRhdGlvbiBhcyBpdCBkb2VzIG5vdCBzY2FuIHRoZQolIGFyZ3VtZW50cyBmb3IgXGlmLgpcbmV3Y29tbWFuZHtcUERGb3JQU317JQogIFxpZkRWSXRvUFMKICAgIFxsZXRccHJvc3BlckBuZXh0XEBzZWNvbmRvZnR3bwogIFxlbHNlCiAgICBcbGV0XHByb3NwZXJAbmV4dFxAZmlyc3RvZnR3bwogIFxmaQogIFxwcm9zcGVyQG5leHR9CiUgIzEgYXBwZWFycyBvbiB0aGUgc2xpZGUgb25seSBvbiBQUyBtb2RlClxuZXdjb21tYW5ke1xvbmx5SW5QU317JQogIFxpZkRWSXRvUFMgCiAgICBcbGV0XHByb3NwZXJAbmV4dFxAaWRlbgogICBcZWxzZQogICAgXGxldFxwcm9zcGVyQG5leHRcQGdvYmJsZQogIFxmaQogIFxwcm9zcGVyQG5leHR9CiUgIzEgYXBwZWFycyBvbiB0aGUgc2xpZGUgb25seSBvbiBQREYgbW9kZQpcbmV3Y29tbWFuZHtcb25seUluUERGfXsKICBcaWZEVkl0b1BTCiAgICBcbGV0XHByb3NwZXJAbmV4dFxAZ29iYmxlCiAgXGVsc2UKICAgIFxsZXRccHJvc3BlckBuZXh0XEBpZGVuCiAgXGZpCiAgXHByb3NwZXJAbmV4dH0KCiUgVG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGJhYmVsL2ZyZW5jaCB0byBhbGxvdyBvbmVzIG93biBsYWJlbHMKXGRlZlxOb0ZyZW5jaEJhYmVsSXRlbWl6ZXslClxBdEJlZ2luRG9jdW1lbnR7JQpccmVuZXdlbnZpcm9ubWVudHtpdGVtaXplfSUKe1xpZm51bSBcQGl0ZW1kZXB0aCA+XHRockBAXEB0b29kZWVwXGVsc2UKICAgIFxhZHZhbmNlXEBpdGVtZGVwdGhcQG5lCiAgICBcZWRlZlxAaXRlbWl0ZW17bGFiZWxpdGVtXHJvbWFubnVtZXJhbFx0aGVcQGl0ZW1kZXB0aH0lCiAgICBcZXhwYW5kYWZ0ZXIKICAgIFxsaXN0CiAgICAgIFxjc25hbWVcQGl0ZW1pdGVtXGVuZGNzbmFtZSUKICAgIHtcbGV0XEB0cml2bGlzdFxAdHJpdmxpc3RPUkkKICAgICAgXHNldHRvd2lkdGh7XGxhYmVsd2lkdGh9e1x0ZXh0ZW5kYXNofSUKICAgICAgXHNldGxlbmd0aHtcbGVmdG1hcmdpbn17XGxhYmVsd2lkdGh9JQogICAgICBcYWRkdG9sZW5ndGh7XGxlZnRtYXJnaW59e1xsYWJlbHNlcH0lCiAgICAgIFxpZm51bVxAbGlzdGRlcHRoPTAKICAgICAgXHNldGxlbmd0aHtcaXRlbWluZGVudH17XHBhcmluZGVudH0lCiAgICAgIFxlbHNlCiAgICAgIFxhZGR0b2xlbmd0aHtcbGVmdG1hcmdpbn17XHBhcmluZGVudH0lCiAgICAgIFxmaQogICAgICBcc2V0bGVuZ3Roe1xpdGVtc2VwfXtcekB9JQogICAgICBcc2V0bGVuZ3Roe1xwYXJzZXB9e1x6QH0lCiAgICAgIFxzZXRsZW5ndGh7XHRvcHNlcH17XHpAfSUKICAgICAgXHNldGxlbmd0aHtccGFydG9wc2VwfXtcekB9JQogICAgICBcYWRkdG9sZW5ndGh7XHRvcHNlcH17LVxwYXJza2lwfSUKICAgICAgXGFkZHRvbGVuZ3Roe1xwYXJ0b3BzZXB9e1xwYXJza2lwfSUKICAgICAgfSUKICAgIFxmaX0lCiB7XGVuZGxpc3R9JQp9fQoKXHB0c2l6ZXsxNH0KClxlbmRpbnB1dAoKJSUlIExvY2FsIFZhcmlhYmxlczogCiUlJSBtb2RlOiBsYXRleAolJSUgVGVYLW1hc3RlcjogdAolJSUgRW5kOiAK