PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU3R5bGUtVHlwZSIgY29udGVudD0idGV4dC9jc3MyIj4KPHRpdGxlPlJlYWRNZSBmb3IgSUNVNEo8L3RpdGxlPgo8IS0tCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMywgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgoqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0+Cgo8c3R5bGU+CmgzLmRvYyB7IGJhY2tncm91bmQ6ICNDQ0NDRkYgfQo8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzgwMDA4MCIgbGFuZz0iRU4tVVMiPgoKICAgIDxoMj5JbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgZm9yIEphdmEgKElDVTRKKTwvaDI+CiAgICA8aDM+UmVhZCBNZSBmb3IgSUNVNEogMy4wIDwhLS0gLSA8Zm9udCBjb2xvcj0icmVkIj5EcmFmdDwvZm9udD4gLS0+PC9oMz4KCjxociBzaXplPSIyIiB3aWR0aD0iMTAwJSI+CiAgICA8cD48Yj5SZWxlYXNlIERhdGU8L2I+PGJyPgogICAgSnVuZSAxOCwgMjAwNDwvcD4KCjxwPkZvciB0aGUgbW9zdCByZWNlbnQKICAgICAgcmVsZWFzZSwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbCI+CiAgICAgIElDVTRKIGRvd25sb2FkIHNpdGU8L2E+LgogICAgPC9QPgoKPGgzIGNsYXNzPSJkb2MiPkNvbnRlbnRzPC9oMz4KCjx1bCB0eXBlPSJkaXNjIj4KICA8bGk+PGEgaHJlZj0iI2ludHJvZHVjdGlvbiI+SW50cm9kdWN0aW9uIHRvIElDVTRKPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNuZXdzIj5XaGF0IElzIE5ldyBJbiBUaGlzIFJlbGVhc2U/PC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNsaWNlbnNlIj5MaWNlbnNlIEluZm9ybWF0aW9uPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNQbGF0Zm9ybURlcGVuZGVuY2llcyI+UGxhdGZvcm0gRGVwZW5kZW5jaWVzPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNkb3dubG9hZCI+SG93IHRvIERvd25sb2FkIElDVTRKPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNXaGF0Q29udGFpbiI+VGhlIFN0cnVjdHVyZSBhbmQgQ29udGVudHMgb2YgSUNVNEo8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0FQSSI+V2hlcmUgdG8gR2V0IERvY3VtZW50YXRpb248L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0hvd1RvSW5zdGFsbEphdmFjIj5Ib3cgdG8gSW5zdGFsbCBhbmQgQnVpbGQ8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0hvd1RvTW9kdWxhcml6ZSI+SG93IHRvIG1vZHVsYXJpemUgSUNVNEo8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI3RyeWluZ291dCI+VHJ5aW5nIE91dCBJQ1U0SjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjcmVzb3VyY2VzIj5JQ1U0SiBSZXNvdXJjZSBJbmZvcm1hdGlvbjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjV2hlcmVUb0ZpbmRNb3JlIj5XaGVyZSB0byBGaW5kIE1vcmUgSW5mb3JtYXRpb248L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1N1Ym1pdHRpbmdDb21tZW50cyI+U3VibWl0dGluZyBDb21tZW50cywgUmVxdWVzdGluZyBGZWF0dXJlcyBhbmQgUmVwb3J0aW5nCiAgICBCdWdzPC9hPjwvbGk+CjwvdWw+Cgo8aDMgY2xhc3M9ImRvYyI+PGEgTkFNRT0iaW50cm9kdWN0aW9uIj48L2E+SW50cm9kdWN0aW9uIHRvIElDVTRKPC9oMz4KCjxwPlRoZSBJbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgKElDVSkgbGlicmFyeSBwcm92aWRlcyByb2J1c3QgYW5kCmZ1bGwtZmVhdHVyZWQgVW5pY29kZSBzZXJ2aWNlcyBvbiBhIHdpZGUgdmFyaWV0eSBvZiBwbGF0Zm9ybXMuIElDVSBzdXBwb3J0cyB0aGUKbW9zdCBjdXJyZW50IHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgc3RhbmRhcmQsIGluY2x1ZGluZyBzdXBwb3J0IGZvcgpzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgKG5lZWRlZCBmb3IgR0IgMTgwMzAgcmVwZXJ0b2lyZSBzdXBwb3J0KS48L3A+Cgo8cD5KYXZhIHByb3ZpZGVzIGEgc3Ryb25nIGZvdW5kYXRpb24gZm9yIGdsb2JhbCBwcm9ncmFtcywgYW5kIElCTSBhbmQgdGhlCklDVSB0ZWFtIHBsYXllZCBhIGtleSByb2xlIGluIHByb3ZpZGluZyBnbG9iYWxpemF0aW9uIHRlY2hub2xvZ3kgdG8KSmF2YS4gQnV0IGJlY2F1c2Ugb2YgaXRzIGxvbmcgcmVsZWFzZSBzY2hlZHVsZSwgSmF2YSBjYW5ub3QgYWx3YXlzIGtlZXAKdXAgd2l0aCBldm9sdmluZyBzdGFuZGFyZHMuIFRoZSBJQ1UgdGVhbSBjb250aW51ZXMgdG8gZXh0ZW5kIEphdmEncwpVbmljb2RlIGFuZCBpbnRlcm5hdGlvbmFsaXphdGlvbiBzdXBwb3J0LCBmb2N1c2luZyBvbiBpbXByb3ZpbmcgcGVyZm9ybWFuY2UsCmtlZXBpbmcgY3VycmVudCB3aXRoIHRoZSBVbmljb2RlIHN0YW5kYXJkLCBhbmQgcHJvdmlkaW5nIHJpY2hlciBBUElzLCB3aGlsZQpyZW1haW5pbmcgYXMgY29tcGF0aWJsZSBhcyBwb3NzaWJsZSB3aXRoIHRoZSBvcmlnaW5hbCBKYXZhIHRleHQgYW5kCmludGVybmF0aW9uYWxpemF0aW9uIEFQSSBkZXNpZ24uPC9wPgoKPHA+SUNVNEogaXMgYW4gYWRkLW9uIHRvIHRoZSByZWd1bGFyIEpWTSB0aGF0IHByb3ZpZGVzOgoKPHVsPgo8bGk+PGEgaHJlZj0KImh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL0NvbGxhdGVfSW50cm8uaHRtbCI+PGI+Q29sbGF0aW9uPC9iPjwvYT4KliBydWxlLWJhc2VkLCB1cC10by1kYXRlIFVuaWNvZGUgQ29sbGF0aW9uIEFsZ29yaXRobSAoVUNBKSBzb3J0aW5nIG9yZGVyPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtGb3IgZmFzdCBtdWx0aWxpbmd1YWwgc3RyaW5nIGNvbXBhcmlzb247IGZhc3RlciBhbmQgbW9yZSBjb21wbGV0ZSB0aGFuCnRoZSBKREs8L2xpPgoKPGxpPjxhIGhyZWY9CiJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9zdHJpbmdzLmh0bWwiPjxiPlN1cHBsZW1lbnRhcnkKQ2hhcmFjdGVyczwvYj48L2E+IJYgU3RyaW5nIG1hbmlwdWxhdGlvbiBhbmQgY2hhcmFjdGVyIHByb3BlcnRpZXM8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlcXVpcmVkIGZvciBwcm9wZXIgR0IgMTgwMzAgYW5kIEpJUyAyMTMgcmVwZXJ0b2lyZSBzdXBwb3J0PC9saT4KCjxsaT48YSBocmVmPQoiaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvdW5pY29kZVNldC5odG1sIj48Yj5Vbmljb2RlU2V0PC9iPjwvYT4KIJYgc3RhbmRhcmQgc2V0IG9wZXJhdGlvbnMgb3B0aW1pemVkIGZvciBzZXRzIG9mIFVuaWNvZGUgY2hhcmFjdGVyczxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VW5pY29kZVNldHMgY2FuIGJlIGJ1aWx0IGZyb20gc3RyaW5nIHBhdHRlcm5zIHVzaW5nIGFueSBVbmljb2RlIHByb3BlcnRpZXMuPC9saT4KCjxsaT48YSBocmVmPQoiaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvVHJhbnNmb3JtLmh0bWwiPjxiPlRyYW5zZm9ybXM8L2I+PC9hPgogliBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgVW5pY29kZSB0ZXh0IGNvbnZlcnNpb25zPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtJbmNsdWRpbmcgRnVsbC9IYWxmd2lkdGggY29udmVyc2lvbnMsIE5vcm1hbGl6YXRpb24sIENhc2UgY29udmVyc2lvbnMsIEhleApjb252ZXJzaW9ucywgYW5kIHRyYW5zbGl0ZXJhdGlvbnMgYmV0d2VlbiBzY3JpcHRzICg1MCsgcGFpcnMpPC9saT4KCjxsaT48YSBocmVmPQoiaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvbm9ybWFsaXphdGlvbi5odG1sIj48Yj5Vbmljb2RlCk5vcm1hbGl6YXRpb248L2I+PC9hPiCWIE5GQywgTkZELCBORktELCBORktDPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtGb3IgY2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb25zLCBuZWVkZWQgZm9yIFhNTCBhbmQgdGhlIG5ldDwvbGk+Cgo8bGk+PGEgaHJlZj0KImh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL2RhdGVDYWxlbmRhci5odG1sIj48Yj5JbnRlcm5hdGlvbmFsCkNhbGVuZGFyczwvYj48L2E+IJYgQXJhYmljLCBCdWRkaGlzdCwgSGVicmV3LCBhbmQgSmFwYW5lc2UgY2FsZW5kYXJzPGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXF1aXJlZCBmb3IgY29ycmVjdCBwcmVzZW50YXRpb24gb2YgZGF0ZXMgaW4gY2VydGFpbiBjb3VudHJpZXM8L2xpPgoKPGxpPjxhIGhyZWY9CiJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9mb3JtYXROdW1iZXJzLmh0bWwiPjxiPk51bWJlciBGb3JtYXQKRW5oYW5jZW1lbnRzPC9iPjwvYT4gliBTY2llbnRpZmljIE5vdGF0aW9uLCBTcGVsbGVkLW91dCwgZXRjLjxicj4KJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RW5oYW5jZW1lbnRzIHRvIHRoZSBub3JtYWwgSmF2YSBudW1iZXIgZm9ybWF0dGluZy4gVGhlIHNwZWxsLW91dCBmb3JtYXQgaXMKdXNlZCBmb3IgY2hlY2tzIGFuZCBzaW1pbGFyIGRvY3VtZW50czwvbGk+Cgo8bGk+PGEgaHJlZj0KImh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL2JvdW5kYXJ5QW5hbHlzaXMuaHRtbCI+PGI+RW5oYW5jZWQKV29yZC1CcmVhayBEZXRlY3Rpb248L2I+PC9hPiCWIFJ1bGUtYmFzZWQsIHN1cHBvcnRzIFRoYWk8YnI+CiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1JlcXVpcmVkIGZvciBjb3JyZWN0IHN1cHBvcnQgb2YgVGhhaTwvbGk+Cgo8bGk+PGEgaHJlZj0KImh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL2NvbXByZXNzaW9uLmh0bWwiPjxiPlVuaWNvZGUgVGV4dApDb21wcmVzc2lvbjwvYj48L2E+IJYgU3RhbmRhcmQgY29tcHJlc3Npb24gb2YgVW5pY29kZSB0ZXh0PGJyPgombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdWl0YWJsZSBmb3IgbGFyZ2UgbnVtYmVycyBvZiBzbWFsbCBmaWVsZHMsIHdoZXJlIExaVyBhbmQgc2ltaWxhciBzY2hlbWVzCmRvIG5vdCBhcHBseTwvbGk+CjwvdWw+Cgo8YmxvY2txdW90ZT4KPHA+PGI+Tm90ZTo8L2I+IFdlIGNvbnRpbnVlIHRvIHByb3ZpZGUgYXNzaXN0YW5jZSB0byBTdW4sIGFuZCBpbiBzb21lCmNhc2VzLCBJQ1U0SiBzdXBwb3J0IGhhcyBiZWVuIHJvbGxlZCBpbnRvIGEgbGF0ZXIgcmVsZWFzZSBvZiBKYXZhLiBGb3IKZXhhbXBsZSwgdGhlIFRoYWkgd29yZC1icmVhayBpcyBub3cgaW4gSmF2YSAxLjQuICBIb3dldmVyLCB0aGUgbW9zdApjdXJyZW50IGFuZCBjb21wbGV0ZSB2ZXJzaW9uIGlzIGFsd2F5cyBmb3VuZCBpbiBJQ1U0Si48L3A+CjwvYmxvY2txdW90ZT4KPCEtLQo8cD48Yj5JQ1U0SiBpcyBhbiBhZGQtb24gbGlicmFyeSB0aGF0IGV4dGVuZHMgSmF2YSdzIGdsb2JhbGl6YXRpb24KICAgIHRlY2hub2xvZ3kuPC9iPiBKYXZhIHByb3ZpZGVzIGEgc3Ryb25nIGZvdW5kYXRpb24gZm9yIGdsb2JhbAogICAgcHJvZ3JhbXMsIGJ1dCBKYXZhIGRvZXMgbm90IHlldCBwcm92aWRlIGFsbCB0aGUgZ2xvYmFsaXphdGlvbgogICAgZmVhdHVyZXMgdGhhdCBzb21lIHByb2R1Y3RzIHJlcXVpcmUuICBJQk0gcGxheWVkIGEga2V5IHJvbGUgaW4KICAgIHByb3ZpZGluZyBnbG9iYWxpemF0aW9uIHRlY2hub2xvZ3kgdG8gU3VuIGZvciB1c2UgaW4gSmF2YS4gIE92ZXIKICAgIHRoZSBwYXN0IHNldmVuIHllYXJzLCB0aGUgSUNVIHRlYW0gaGFzIGNvbnRpbnVlZCB0byBlbmhhbmNlIGFuZAogICAgZXh0ZW5kIHRoaXMgdGVjaG5vbG9neS4gIElCTSBtYWtlcyB0aGlzIHRlY2hub2xvZ3kgYXZhaWxhYmxlCiAgICBpbiBKYXZhIHRocm91Z2ggdGhlIElDVTRKIG9wZW4tc291cmNlIHByb2plY3QuPC9wPgoKPHA+SUNVNEogcHJvdmlkZXMgdGhlIGZvbGxvd2luZyB0b29sczoKICAgIDx1bD4KICAgIDxsaT48Yj5Vbmljb2RlIE5vcm1hbGl6YXRpb248L2I+IJYgTkZDLCBORkQsIE5GS0QsIE5GS0M8YnI+CiAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UHJvZHVjZXMgY2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb25zLCBuZWVkZWQgZm9yIFhNTCBhbmQgdGhlIG5ldC4KICAgIDxsaT48Yj5JbnRlcm5hdGlvbmFsIENhbGVuZGFyczwvYj4gliBBcmFiaWMsIEJ1ZGRoaXN0LCBIZWJyZXcsIGFuZCBKYXBhbmVzZTxicj4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXF1aXJlZCBmb3IgY29ycmVjdCBwcmVzZW50YXRpb24gb2YgZGF0ZXMgaW4gc29tZSBjb3VudHJpZXMuCiAgICA8bGk+PGI+TnVtYmVyIEZvcm1hdCBFbmhhbmNlbWVudHM8L2I+IJYgU2NpZW50aWZpYyBOb3RhdGlvbiwgU3BlbGxlZC1vdXQgTnVtYmVyczxicj4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtFbmhhbmNlcyBzdGFuZGFyZCBKYXZhIG51bWJlciBmb3JtYXR0aW5nLiBUaGUgc3BlbGxlZC1vdXQgZm9ybWF0IGlzIHVzZWQKZm9yIGNoZWNrcyBhbmQgc2ltaWxhciBkb2N1bWVudHMuCiAgICA8bGk+PGI+RW5oYW5jZWQgd29yZC1icmVhayBkZXRlY3Rpb248L2I+IJYgUnVsZS1iYXNlZCwgc3VwcG9ydHMgVGhhaTxicj4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXF1aXJlZCBmb3IgY29ycmVjdCBzdXBwb3J0IG9mIFRoYWkuCiAgICA8bGk+PGI+VW5pY29kZSBUZXh0IENvbXByZXNzaW9uPC9iPiCWIFN0YW5kYXJkIGNvbXByZXNzaW9uIG9mIFVuaWNvZGUgdGV4dDxicj4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdWl0YWJsZSBmb3IgbGFyZ2UgbnVtYmVycyBvZiBzbWFsbCBmaWVsZHMsIHdoZXJlIExaVyBhbmQgc2ltaWxhciBzY2hlbWVzCmRvIG5vdCBhcHBseS4KICAgIDxsaT48Yj5Db2xsYXRpb248L2I+IJYgUnVsZS1iYXNlZCwgdXAtdG8tZGF0ZSBVbmljb2RlIENvbGxhdGlvbiBBbGdvcml0aG0gKFVDQSkgc29ydGluZyBvcmRlcjxicj4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtGb3IgZmFzdCBtdWx0aWxpbmd1YWwgc3RyaW5nIGNvbXBhcmlzb24KICAgIDxsaT48Yj5UcmFuc2Zvcm1zPC9iPiCWIFJ1bGUtYmFzZWQgdHJhbnNmb3JtYXRpb25zIG9mIHVuaWNvZGUgZGF0YTxicj4KICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtVc2VmdWwgZm9yIGFuYWx5c2lzIGFuZCB0cmFuc2xpdGVyYXRpb24KICAgIDwvdWw+CiAgICAgICAgCkluIHNvbWUgY2FzZXMsIHRoZSBhYm92ZSBzdXBwb3J0IGhhcyBiZWVuIHJvbGxlZCBpbnRvIGEgbGF0ZXIgcmVsZWFzZSBvZgpKYXZhLiBGb3IgZXhhbXBsZSwgdGhlIFRoYWkgd29yZC1icmVhayBpcyBub3cgaW4gSmF2YSAxLjQuIEhvd2V2ZXIsIHRoZSBtb3N0CmN1cnJlbnQgYW5kIGNvbXBsZXRlIHZlcnNpb24gb2YgdGhpcyBzdXBwb3J0IGlzIGFsd2F5cyBmb3VuZCBpbiBJQ1U0Si4KLS0+CgogIDxoMyBjbGFzcz0iZG9jIj48YSBOQU1FPSJuZXdzIj48L2E+V2hhdCBJcyBOZXcgSW4gVGhpcwogIFJlbGVhc2U/PC9oMz4KCiAgPHVsPgogICAgPGxpPjxhIGhyZWY9IiNOZXdzX0pESzFfM19VbnN1cHBvcnRlZCI+SkRLIDEuMyBubyBsb25nZXIgc3VwcG9ydGVkPC9hPgogICAgPGxpPjxhIGhyZWY9IiNOZXdzX1VMb2NhbGUiPlJGQyAzMDY2IGluaXRpYWwgaW1wbGVtZW50YXRpb248L2E+ICg8dHQ+VUxvY2FsZTwvdHQ+IGFuZCA8dHQ+VVJlc291cmNlQnVuZGxlPC90dD4gY2xhc3NlcykKICAgIDxsaT48YSBocmVmPSIjTmV3c19KREsxNV9TdXBwbGVtZW50YXJ5QVBJIj5BZGRlZCBBUElzIGZvciBzdXBwbGVtZW50YXJ5IHN1cHBvcnQgdG8gbWF0Y2ggSkRLIDEuNTwvYT4KICAgIDxsaT48YSBocmVmPSIjTmV3c19UaW1lWm9uZV9JRHMiPlRpbWVab25lIElkZW50aWZpZXJzPC9hPgogICAgPGxpPjxhIGhyZWY9IiNOZXdzX1Jlc291cmNlX0JpbmFyeSI+UmVzb3VyY2UgYnVuZGxlIGltcGxlbWVudGF0aW9uIG5vdyB1c2VzIElDVTRDIGJpbmFyeSBmaWxlczwvYT4KICA8L3VsPgoKICA8cD5BIGNvbXBsZXRlIHJlcG9ydCBvZiB0aGUgQVBJIGNoYW5nZXMgYmV0d2VlbiB2ZXJzaW9uIDMuMCBhbmQKdmVyc2lvbiAyLjggb2YgSUNVNEogY2FuIGJlIGZvdW5kIDxhCmhyZWY9IkFQSUNoYW5nZVJlcG9ydC5odG1sIj5oZXJlPC9hPi4gIFRoaXMgcmVwb3J0IGlzIGdlbmVyYXRlZCBieSBhCnRvb2wgYW5kIGhhcyBzb21lIGxpbWl0YXRpb25zLCB0aGUgbW9zdCBub3RhYmxlIG9mIHdoaWNoIGlzIHRoYXQgaXQKZG9lcyBub3QgcHJvcGVybHkgcmVmbGVjdCB0aGUgZWZmZWN0IG9mIGNsYXNzIGluaGVyaXRhbmNlIGNoYW5nZXMuICBGb3IKZXhhbXBsZSwgSUNVNEogMy4wIG1vdmVkIHRoZSBkZWZpbml0aW9uIG9mIHNvbWUgY29uc3RhbnRzIG91dCBvZgpzb21lIGNsYXNzZXMgaW50byBpbnRlcmZhY2VzIHRoYXQgdGhlIGNsYXNzZXMgbm93IGluaGVyaXQsIGFuZAphbHRob3VnaCB0aGlzIGhhcyBubyBpbXBhY3Qgb24gdGhlIEFQSSBhdmFpbGFibGUgdG8gdGhlIGNsYXNzZXMsIHRoZQp0b29sIHJlcG9ydHMgdGhpcyBhcyBhIHJlbW92YWwgb2YgQVBJIGZyb20gdGhlbS4gIEFsc28gb2YgY291cnNlLApiZWluZyBnZW5lcmF0ZWQgYnkgYSB0b29sLCB0aGUgcmVwb3J0IGRvZXMgbm90IHByb3ZpZGUgZXhwbGFuYXRpb24gb3IKY29tbWVudGFyeSBvbiB0aGUgY2hhbmdlcy4gIEZvciBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGFuZApjbGFyaWZpY2F0aW9uIG9mIGNoYW5nZXMgaXQncyBhbHdheXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgY2hlY2sgdGhlCm1haWxpbmcgbGlzdCBhbmQgYXJjaGl2ZXMuPC9wPgogIAogIDxoND48YSBuYW1lPSJOZXdzX0pESzFfM19VbnN1cHBvcnRlZCIgaWQ9Ik5ld3NfSkRLMV8zX1Vuc3VwcG9ydGVkIj5KREsgMS4zIE5vIExvbmdlciBTdXBwb3J0ZWQ8L2E+PC9oND4KCiAgPHA+Rm9yIGEgZmV3IHllYXJzIG5vdywgSUNVNEogaGFzIHRha2VuIHBhaW5zIHRvIG5vdCByZXF1aXJlIGFueSBvZgp0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgaW50cm9kdWNlZCBpbiBKREsxLjQuICBGaW5hbGx5LCB0aG91Z2gsIHRoZQpwYWlucyBoYXZlIGJlY29tZSB0b28gZ3JlYXQuICBJQ1U0SiBub3cgcmVxdWlyZXMgYSBKREsgMS40IG9yIGxhdGVyIEpWTSBib3RoCnRvIGJ1aWxkIGFuZCBydW4uICBJQ1U0SiBpcyBubyBsb25nZXIgdGVzdGVkIG9uIDEuMyBvciBlYXJsaWVyIEpWTXMuICBXZSBhcG9sb2dpemUgZm9yCmFueSBpbmNvbnZlbmllbmNlIHRoaXMgbWF5IGNhdXNlIG91ciB1c2Vycy48L3A+CgogIDxoND48YSBuYW1lPSJOZXdzX1VMb2NhbGUiIGlkPSJOZXdzX1VMb2NhbGUiPlJGQyAzMDY2IEluaXRpYWwgSW1wbGVtZW50YXRpb248L2E+PC9oND4KCiAgPHA+UkZDIDMwNjYgZGVmaW5lcyBhIG5ldyBmb3JtYXQgZm9yIExvY2FsZSBpZGVudGlmaWVycyB0aGF0CmluY29ycG9yYXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2NyaXB0IGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGFuZApyZWdpb24gaW50byB0aGUgbG9jYWxlIGlkZW50aWZpZXIuICBJQ1U0SiBoYXMgZW5oYW5jZWQgdGhlCjx0dD5VTG9jYWxlPC90dD4gY2xhc3MgdG8gcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uLiAgSUNVNEogaGFzIGFsc28gYWRkZWQKdGhlIDx0dD5VUmVzb3VyY2VCdW5kbGU8L3R0PiBjbGFzcyB0byBhbGxvdyBpbnN0YW50aWF0aW9uIG9mIHJlc291cmNlCmJ1bmRsZXMgdXNpbmcgUkZDIDMwNjYtc3R5bGUgbG9jYWxlIGlkcy4gIFRoaXMgaXMgYW4KaW5pdGlhbCBpbXBsZW1lbnRhdGlvbjsgbm90IGFsbCBJQ1U0SiBBUElzIHRoYXQgY3VycmVudGx5IHdvcmsgd2l0aAo8dHQ+TG9jYWxlPC90dD4gaGF2ZSBiZWVuIGVuaGFuY2VkIHRvIHdvcmsgd2l0aCA8dHQ+VUxvY2FsZTwvdHQ+LiAgV2UKYW50aWNpcGF0ZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGluIHRoZSBuZXh0IElDVTRKIHJlbGVhc2UuPC9wPgoKICA8aDQ+PGEgbmFtZT0iTmV3c19KREsxNV9TdXBwbGVtZW50YXJ5QVBJIiBpZD0iTmV3c19KREsxNV9TdXBwbGVtZW50YXJ5QVBJIj4KQWRkZWQgQVBJcyBmb3Igc3VwcGxlbWVudGFyeSBzdXBwb3J0IHRvIG1hdGNoIEpESyAxLjU8L2E+PC9oND4KCiAgPHA+SkRLIDEuNSBpbnRyb2R1Y2VzIG5ldyBBUElzIGZvciBzdXJyb2dhdGUgc3VwcG9ydC4gIElDVTRKIGhhcwpvZmZlcmVkIHN1cnJvZ2F0ZSBzdXBwb3J0IGZvciBzZXZlcmFsIHJlbGVhc2VzLCBhbmQgY29udGludWVzIHRvIG9mZmVyCnRoaXMgZnVuY3Rpb25hbGl0eS4gIEhvd2V2ZXIsIHRvIHNpbXBsaWZ5IHBvcnRpbmcgYmV0d2VlbiBJQ1U0SiBhbmQKSkRLIDEuNSwgd2hlcmUgcG9zc2libGUgSUNVNEogaGFzIGFkZGVkIEFQSXMgdGhhdCBwcm92aWRlIHRoZSBzYW1lCnNpZ25hdHVyZSBhbmQgc2VtYW50aWNzIGFzIHRob3NlIHBsYW5uZWQgZm9yIDEuNS4gIChUaGVyZSBhcmUgc29tZQp1bmF2b2lkYWJsZSBkaWZmZXJlbmNlcywgZm9yIGV4YW1wbGUsIEFQSXMgYWRkZWQgdG8gamF2YS5sYW5nLlN0cmluZwpjYW5ub3QgYmUgZXhhY3RseSBtYXRjaGVkIGJ5IElDVTRKKS4gIE1lbWJlcnMgb2YgdGhlIElDVSB0ZWFtCnBhcnRpY2lwYXRlZCBpbiB0aGUgSlNSIDIwNCBleHBlcnQgZ3JvdXAgZGlzY3Vzc2lvbnMgYW5kIGhlbHBlZApkZXZlbG9wIHRoZSBuZXcgSmF2YSBBUElzIGZvciBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBzdXBwb3J0LjwvcD4KCiAgPGg0PjxhIG5hbWU9Ik5ld3NfVGltZVpvbmVfSURzIiBpZD0iTmV3c19UaW1lWm9uZV9JRHMiPlRpbWVab25lCiAgSWRlbnRpZmllcnM8L2E+PC9oND4KCiAgPHA+SUNVIHN1cHBvcnRzIG92ZXIgNTAwIFRpbWVab25lIGlkZW50aWZpZXJzLiAgTW9zdCBvZiB0aGVzZSBhcmUgY3VycmVudAogIE9sc29uIGlkZW50aWZpZXJzIChzZWUgVGltZVpvbmUgZG9jdW1lbnRhdGlvbikuICBIb3dldmVyLCBzb21lIG9mIHRoZXNlCiAgYXJlIG9ic29sZXRlIG5hbWVzIGZvciBjdXJyZW50IGlkZW50aWZpZXJzLiAgVGhlcmUgYXJlIHR3byBzb3VyY2VzIG9mCiAgb2Jzb2xldGUgaWRlbnRpZmllcnM6IHRoZSBPbHNvbiBkYXRhYmFzZSBpdHNlbGYsIGFuZCBKREsgbGVnYWN5CiAgaWRlbnRpZmllcnMuICAoRm9yIGV4YW1wbGUsIHRoZSBPbHNvbiBkYXRhYmFzZSBkZWZpbmVzICJVUy9QYWNpZmljIiBhcyBhbgogIG9sZCBpZGVudGlmaWVyIGZvciAiQW1lcmljYS9Mb3NfQW5nZWxlcyIuICBKREsgMS41IGRlZmluZXMgIlBTVCIgYXMgYQogIGxlZ2FjeSBpZGVudGlmaWVyIGVxdWl2YWxlbnQgdG8gIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLikgIEN1cnJlbnRseSwgdGhlCiAgSUNVIFRpbWVab25lIEFQSSBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGN1cnJlbnQgaWRlbnRpZmllcnMgYW5kCiAgb2Jzb2xldGUgaWRlbnRpZmllcnMuICBUaGlzIHNlY3Rpb24gbGlzdHMgb2Jzb2xldGUgaWRlbnRpZmllcnMgYW5kIHRoZWlyCiAgbW9kZXJuIGVxdWl2YWxlbnRzLgogIDwvcD4KCiAgPHA+QXMgb2YgSUNVIDMuMCB0aGVyZSBhcmUgMTM2IG9ic29sZXRlIE9sc29uIG5hbWVzIChtb2Rlcm4gbmFtZXMgZ2l2ZW4KICBpbiBwYXJlbnRoZXNlcyk6CgogIDxmb250IHNpemU9Ii0xIj4KICBBbWVyaWNhL0F0a2EgKEFtZXJpY2EvQWRhayksIEFtZXJpY2EvRW5zZW5hZGEgKEFtZXJpY2EvVGlqdWFuYSksCiAgQW1lcmljYS9Gb3J0X1dheW5lIChBbWVyaWNhL0luZGlhbmFwb2xpcyksIEFtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXMKICAoQW1lcmljYS9JbmRpYW5hcG9saXMpLCBBbWVyaWNhL0tlbnR1Y2t5L0xvdWlzdmlsbGUgKEFtZXJpY2EvTG91aXN2aWxsZSksCiAgQW1lcmljYS9Lbm94X0lOIChBbWVyaWNhL0luZGlhbmEvS25veCksIEFtZXJpY2EvUG9ydG9fQWNyZQogIChBbWVyaWNhL1Jpb19CcmFuY28pLCBBbWVyaWNhL1Jvc2FyaW8gKEFtZXJpY2EvQ29yZG9iYSksIEFtZXJpY2EvU2hpcHJvY2sKICAoQW1lcmljYS9EZW52ZXIpLCBBbWVyaWNhL1ZpcmdpbiAoQW1lcmljYS9TdF9UaG9tYXMpLAogIEFudGFyY3RpY2EvU291dGhfUG9sZSAoQW50YXJjdGljYS9NY011cmRvKSwgQXJjdGljL0xvbmd5ZWFyYnllbgogIChFdXJvcGUvT3NsbyksIEFzaWEvQXNoa2hhYmFkIChBc2lhL0FzaGdhYmF0KSwgQXNpYS9DaHVuZ2tpbmcKICAoQXNpYS9DaG9uZ3FpbmcpLCBBc2lhL0RhY2NhIChBc2lhL0RoYWthKSwgQXNpYS9Jc3RhbmJ1bAogIChFdXJvcGUvSXN0YW5idWwpLCBBc2lhL01hY2FvIChBc2lhL01hY2F1KSwgQXNpYS9UZWxfQXZpdgogIChBc2lhL0plcnVzYWxlbSksIEFzaWEvVGhpbWJ1IChBc2lhL1RoaW1waHUpLCBBc2lhL1VqdW5nX1BhbmRhbmcKICAoQXNpYS9NYWthc3NhciksIEFzaWEvVWxhbl9CYXRvciAoQXNpYS9VbGFhbmJhYXRhciksIEF0bGFudGljL0phbl9NYXllbgogIChFdXJvcGUvT3NsbyksIEF1c3RyYWxpYS9BQ1QgKEF1c3RyYWxpYS9TeWRuZXkpLCBBdXN0cmFsaWEvQ2FuYmVycmEKICAoQXVzdHJhbGlhL1N5ZG5leSksIEF1c3RyYWxpYS9MSEkgKEF1c3RyYWxpYS9Mb3JkX0hvd2UpLCBBdXN0cmFsaWEvTlNXCiAgKEF1c3RyYWxpYS9TeWRuZXkpLCBBdXN0cmFsaWEvTm9ydGggKEF1c3RyYWxpYS9EYXJ3aW4pLAogIEF1c3RyYWxpYS9RdWVlbnNsYW5kIChBdXN0cmFsaWEvQnJpc2JhbmUpLCBBdXN0cmFsaWEvU291dGgKICAoQXVzdHJhbGlhL0FkZWxhaWRlKSwgQXVzdHJhbGlhL1Rhc21hbmlhIChBdXN0cmFsaWEvSG9iYXJ0KSwKICBBdXN0cmFsaWEvVmljdG9yaWEgKEF1c3RyYWxpYS9NZWxib3VybmUpLCBBdXN0cmFsaWEvV2VzdAogIChBdXN0cmFsaWEvUGVydGgpLCBBdXN0cmFsaWEvWWFuY293aW5uYSAoQXVzdHJhbGlhL0Jyb2tlbl9IaWxsKSwKICBCcmF6aWwvQWNyZSAoQW1lcmljYS9Qb3J0b19BY3JlKSwgQnJhemlsL0RlTm9yb25oYSAoQW1lcmljYS9Ob3JvbmhhKSwKICBCcmF6aWwvRWFzdCAoQW1lcmljYS9TYW9fUGF1bG8pLCBCcmF6aWwvV2VzdCAoQW1lcmljYS9NYW5hdXMpLCBDU1Q2Q0RUCiAgKEFtZXJpY2EvQ2hpY2FnbyksIENhbmFkYS9BdGxhbnRpYyAoQW1lcmljYS9IYWxpZmF4KSwgQ2FuYWRhL0NlbnRyYWwKICAoQW1lcmljYS9XaW5uaXBlZyksIENhbmFkYS9FYXN0LVNhc2thdGNoZXdhbiAoQW1lcmljYS9SZWdpbmEpLAogIENhbmFkYS9FYXN0ZXJuIChBbWVyaWNhL1Rvcm9udG8pLCBDYW5hZGEvTW91bnRhaW4gKEFtZXJpY2EvRWRtb250b24pLAogIENhbmFkYS9OZXdmb3VuZGxhbmQgKEFtZXJpY2EvU3RfSm9obnMpLCBDYW5hZGEvUGFjaWZpYwogIChBbWVyaWNhL1ZhbmNvdXZlciksIENhbmFkYS9TYXNrYXRjaGV3YW4gKEFtZXJpY2EvUmVnaW5hKSwgQ2FuYWRhL1l1a29uCiAgKEFtZXJpY2EvV2hpdGVob3JzZSksIENoaWxlL0NvbnRpbmVudGFsIChBbWVyaWNhL1NhbnRpYWdvKSwKICBDaGlsZS9FYXN0ZXJJc2xhbmQgKFBhY2lmaWMvRWFzdGVyKSwgQ3ViYSAoQW1lcmljYS9IYXZhbmEpLCBFU1QKICAoQW1lcmljYS9JbmRpYW5hcG9saXMpLCBFU1Q1RURUIChBbWVyaWNhL05ld19Zb3JrKSwgRWd5cHQgKEFmcmljYS9DYWlybyksCiAgRWlyZSAoRXVyb3BlL0R1YmxpbiksIEV0Yy9HTVQrMCAoRXRjL0dNVCksIEV0Yy9HTVQtMCAoRXRjL0dNVCksIEV0Yy9HTVQwCiAgKEV0Yy9HTVQpLCBFdGMvR3JlZW53aWNoIChFdGMvR01UKSwgRXRjL1VuaXZlcnNhbCAoRXRjL1VUQyksIEV0Yy9adWx1CiAgKEV0Yy9VVEMpLCBFdXJvcGUvQnJhdGlzbGF2YSAoRXVyb3BlL1ByYWd1ZSksIEV1cm9wZS9ManVibGphbmEKICAoRXVyb3BlL0JlbGdyYWRlKSwgRXVyb3BlL05pY29zaWEgKEFzaWEvTmljb3NpYSksIEV1cm9wZS9TYW5fTWFyaW5vCiAgKEV1cm9wZS9Sb21lKSwgRXVyb3BlL1NhcmFqZXZvIChFdXJvcGUvQmVsZ3JhZGUpLCBFdXJvcGUvU2tvcGplCiAgKEV1cm9wZS9CZWxncmFkZSksIEV1cm9wZS9UaXJhc3BvbCAoRXVyb3BlL0NoaXNpbmF1KSwgRXVyb3BlL1ZhdGljYW4KICAoRXVyb3BlL1JvbWUpLCBFdXJvcGUvWmFncmViIChFdXJvcGUvQmVsZ3JhZGUpLCBHQiAoRXVyb3BlL0xvbmRvbiksCiAgR0ItRWlyZSAoRXVyb3BlL0xvbmRvbiksIEdNVCAoRXRjL0dNVCksIEdNVCswIChFdGMvR01UKzApLCBHTVQtMAogIChFdGMvR01ULTApLCBHTVQwIChFdGMvR01UMCksIEdyZWVud2ljaCAoRXRjL0dyZWVud2ljaCksIEhTVAogIChQYWNpZmljL0hvbm9sdWx1KSwgSG9uZ2tvbmcgKEFzaWEvSG9uZ19Lb25nKSwgSWNlbGFuZAogIChBdGxhbnRpYy9SZXlramF2aWspLCBJcmFuIChBc2lhL1RlaHJhbiksIElzcmFlbCAoQXNpYS9KZXJ1c2FsZW0pLAogIEphbWFpY2EgKEFtZXJpY2EvSmFtYWljYSksIEphcGFuIChBc2lhL1Rva3lvKSwgS3dhamFsZWluCiAgKFBhY2lmaWMvS3dhamFsZWluKSwgTGlieWEgKEFmcmljYS9Ucmlwb2xpKSwgTVNUIChBbWVyaWNhL1Bob2VuaXgpLAogIE1TVDdNRFQgKEFtZXJpY2EvRGVudmVyKSwgTWV4aWNvL0JhamFOb3J0ZSAoQW1lcmljYS9UaWp1YW5hKSwKICBNZXhpY28vQmFqYVN1ciAoQW1lcmljYS9NYXphdGxhbiksIE1leGljby9HZW5lcmFsIChBbWVyaWNhL01leGljb19DaXR5KSwKICBNaWRlYXN0L1JpeWFkaDg3IChBc2lhL1JpeWFkaDg3KSwgTWlkZWFzdC9SaXlhZGg4OCAoQXNpYS9SaXlhZGg4OCksCiAgTWlkZWFzdC9SaXlhZGg4OSAoQXNpYS9SaXlhZGg4OSksIE5aIChQYWNpZmljL0F1Y2tsYW5kKSwgTlotQ0hBVAogIChQYWNpZmljL0NoYXRoYW0pLCBOYXZham8gKEFtZXJpY2EvRGVudmVyKSwgUFJDIChBc2lhL1NoYW5naGFpKSwgUFNUOFBEVAogIChBbWVyaWNhL0xvc19BbmdlbGVzKSwgUGFjaWZpYy9TYW1vYSAoUGFjaWZpYy9QYWdvX1BhZ28pLCBQb2xhbmQKICAoRXVyb3BlL1dhcnNhdyksIFBvcnR1Z2FsIChFdXJvcGUvTGlzYm9uKSwgUk9DIChBc2lhL1RhaXBlaSksIFJPSwogIChBc2lhL1Nlb3VsKSwgU2luZ2Fwb3JlIChBc2lhL1NpbmdhcG9yZSksIFN5c3RlbVYvQVNUNAogIChBbWVyaWNhL1B1ZXJ0b19SaWNvKSwgU3lzdGVtVi9BU1Q0QURUIChBbWVyaWNhL0hhbGlmYXgpLCBTeXN0ZW1WL0NTVDYKICAoQW1lcmljYS9SZWdpbmEpLCBTeXN0ZW1WL0NTVDZDRFQgKEFtZXJpY2EvQ2hpY2FnbyksIFN5c3RlbVYvRVNUNQogIChBbWVyaWNhL0luZGlhbmFwb2xpcyksIFN5c3RlbVYvRVNUNUVEVCAoQW1lcmljYS9OZXdfWW9yayksIFN5c3RlbVYvSFNUMTAKICAoUGFjaWZpYy9Ib25vbHVsdSksIFN5c3RlbVYvTVNUNyAoQW1lcmljYS9QaG9lbml4KSwgU3lzdGVtVi9NU1Q3TURUCiAgKEFtZXJpY2EvRGVudmVyKSwgU3lzdGVtVi9QU1Q4IChQYWNpZmljL1BpdGNhaXJuKSwgU3lzdGVtVi9QU1Q4UERUCiAgKEFtZXJpY2EvTG9zX0FuZ2VsZXMpLCBTeXN0ZW1WL1lTVDkgKFBhY2lmaWMvR2FtYmllciksIFN5c3RlbVYvWVNUOVlEVAogIChBbWVyaWNhL0FuY2hvcmFnZSksIFR1cmtleSAoRXVyb3BlL0lzdGFuYnVsKSwgVUNUIChFdGMvVUNUKSwgVVMvQWxhc2thCiAgKEFtZXJpY2EvQW5jaG9yYWdlKSwgVVMvQWxldXRpYW4gKEFtZXJpY2EvQWRhayksIFVTL0FyaXpvbmEKICAoQW1lcmljYS9QaG9lbml4KSwgVVMvQ2VudHJhbCAoQW1lcmljYS9DaGljYWdvKSwgVVMvRWFzdC1JbmRpYW5hCiAgKEFtZXJpY2EvSW5kaWFuYXBvbGlzKSwgVVMvRWFzdGVybiAoQW1lcmljYS9OZXdfWW9yayksIFVTL0hhd2FpaQogIChQYWNpZmljL0hvbm9sdWx1KSwgVVMvSW5kaWFuYS1TdGFya2UgKEFtZXJpY2EvSW5kaWFuYS9Lbm94KSwgVVMvTWljaGlnYW4KICAoQW1lcmljYS9EZXRyb2l0KSwgVVMvTW91bnRhaW4gKEFtZXJpY2EvRGVudmVyKSwgVVMvUGFjaWZpYwogIChBbWVyaWNhL0xvc19BbmdlbGVzKSwgVVMvUGFjaWZpYy1OZXcgKEFtZXJpY2EvTG9zX0FuZ2VsZXMpLCBVUy9TYW1vYQogIChQYWNpZmljL1BhZ29fUGFnbyksIFVUQyAoRXRjL1VUQyksIFVuaXZlcnNhbCAoRXRjL1VuaXZlcnNhbCksIFctU1UKICAoRXVyb3BlL01vc2NvdyksIFp1bHUgKEV0Yy9adWx1KS4KICA8L2ZvbnQ+PC9wPgoKICA8cD5BcyBvZiBJQ1UgMy4wIHRoZXJlIGFyZSAyNSBsZWdhY3kgSkRLIGlkZW50aWZpZXJzIChtb2Rlcm4gbmFtZXMgZ2l2ZW4KICBpbiBwYXJlbnRoZXNlcyk6CgogIDxmb250IHNpemU9Ii0xIj4KICBBQ1QgKEF1c3RyYWxpYS9EYXJ3aW4pLCBBRVQgKEF1c3RyYWxpYS9TeWRuZXkpLCBBR1QKICAoQW1lcmljYS9CdWVub3NfQWlyZXMpLCBBUlQgKEFmcmljYS9DYWlybyksIEFTVCAoQW1lcmljYS9BbmNob3JhZ2UpLCBCRVQKICAoQW1lcmljYS9TYW9fUGF1bG8pLCBCU1QgKEFzaWEvRGhha2EpLCBDQVQgKEFmcmljYS9IYXJhcmUpLCBDTlQKICAoQW1lcmljYS9TdF9Kb2hucyksIENTVCAoQW1lcmljYS9DaGljYWdvKSwgQ1RUIChBc2lhL1NoYW5naGFpKSwgRUFUCiAgKEFmcmljYS9BZGRpc19BYmFiYSksIEVDVCAoRXVyb3BlL1BhcmlzKSwgSUVUIChBbWVyaWNhL0luZGlhbmFwb2xpcyksIElTVAogIChBc2lhL0NhbGN1dHRhKSwgSlNUIChBc2lhL1Rva3lvKSwgTUlUIChQYWNpZmljL0FwaWEpLCBORVQKICAoQXNpYS9ZZXJldmFuKSwgTlNUIChQYWNpZmljL0F1Y2tsYW5kKSwgUExUIChBc2lhL0thcmFjaGkpLCBQTlQKICAoQW1lcmljYS9QaG9lbml4KSwgUFJUIChBbWVyaWNhL1B1ZXJ0b19SaWNvKSwgUFNUIChBbWVyaWNhL0xvc19BbmdlbGVzKSwKICBTU1QgKFBhY2lmaWMvR3VhZGFsY2FuYWwpLCBWU1QgKEFzaWEvU2FpZ29uKS4KICA8L2ZvbnQ+PC9wPgoKPGg0PjxhIG5hbWU9Ik5ld3NfUmVzb3VyY2VfQmluYXJ5IiBpZD0iTmV3c19SZXNvdXJjZV9CaW5hcnkiPlJlc291cmNlCmZpbGVzIG5vdyB1c2UgSUNVNEMgYmluYXJ5IGZpbGVzPC9hPjwvaDQ+Cgo8cD5JQ1U0SiBoYXMgc3dpdGNoZWQgdG8gYSBuZXcgcmVzb3VyY2UgYnVuZGxlIGltcGxlbWVudGF0aW9uIGluIG9yZGVyIHRvIHV0aWxpemUKdGhlIHNhbWUgYmluYXJ5IGRhdGEgZmlsZXMgdXNlZCBieSBJQ1UuICBUaGlzIHdpbGwgbGlrZWx5IGltcGFjdCBjbGllbnRzIHdobyAKaGF2ZSBleHRlbmRlZCBvciBtb2RpZmllZCB0aGUgcmVzb3VyY2UgZGF0YSBwcm92aWRlZCBpbiBJQ1U0Si4gIE1vc3QgY2xpZW50cyB3aWxsCnNlZSBubyBjaGFuZ2UgZnJvbSB0aGlzIHN3aXRjaG92ZXIuICBUaGlzIGNoYW5nZSB3YXMgbWFkZSBmb3Igc2V2ZXJhbCByZWFzb25zLAp0aGUgbWFpbiBvbmVzIGJlaW5nIHRoZSBkZXNpcmUgdG8gcHJvdmlkZSBSRkMgMzA2NiBzdXBwb3J0IGluIGEgbWFubmVyIGlkZW50aWNhbAp0byBJQ1UsIHRvIGF2b2lkIHJld29ya2luZyB0aGUgY29udmVyc2lvbiB0b29scyAoZ2VucmIpIGVhY2ggdGltZSB3ZSBldm9sdmUgSUNVJ3MKcmVzb3VyY2UgYnVuZGxlIHN0cnVjdHVyZSwgYW5kIHRvIGF2b2lkIGNlcnRhaW4gc2l6ZSBjb25zdHJhaW50cyBpbXBvc2VkIGJ5CmphdmEncyBjbGFzcyBmaWxlIGZvcm1hdC48L3A+Cgo8aDMgY2xhc3M9ImRvYyI+PGEgbmFtZT1saWNlbnNlPjwvYT5MaWNlbnNlIEluZm9ybWF0aW9uPC9oMz4KPHA+ClRoZSBJQ1UgcHJvamVjdHMgKElDVTRDIGFuZCBJQ1U0SikgdXNlIHRoZSBYIGxpY2Vuc2UuJm5ic3A7IFRoZSBYIGxpY2Vuc2UgaXMgYSA8Yj5ub24tdmlyYWw8L2I+IGFuZCByZWNvbW1lbmRlZCBmcmVlIHNvZnR3YXJlIGxpY2Vuc2UgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEdOVSBHUEwgbGljZW5zZS4mbmJzcDsgVGhpcyBiZWNhbWUgZWZmZWN0aXZlIHdpdGggcmVsZWFzZSAxLjguMSBvZiBJQ1U0QyBhbmQgcmVsZWFzZSAxLjMuMSBvZiBJQ1U0SiBpbiBtaWQtMjAwMS4gQWxsIG5ldyBJQ1UgcmVsZWFzZXMgd2lsbCBhZG9wdCB0aGUgWCBsaWNlbnNlOyBwcmV2aW91cyBJQ1UgcmVsZWFzZXMgY29udGludWUgdG8gdXRpbGl6ZSB0aGUgSVBMIChJQk0gUHVibGljIExpY2Vuc2UpLiZuYnNwOyBVc2VycyBvZiBwcmV2aW91cyByZWxlYXNlcyBvZiBJQ1Ugd2hvIHdhbnQgdG8gYWRvcHQgbmV3IElDVSByZWxlYXNlcyB3aWxsIG5lZWQgdG8gYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgWCBsaWNlbnNlLgo8L3A+CjxwPgpUaGUgbWFpbiBlZmZlY3Qgb2YgdGhlIGNoYW5nZSBpcyB0byBwcm92aWRlIEdQTCBjb21wYXRpYmlsaXR5LiZuYnNwOyBUaGUgWCBsaWNlbnNlIGlzIGxpc3RlZCBhcyBHUEwgY29tcGF0aWJsZSwgc2VlIHRoZSBHTlUgcGFnZSBhdCA8YSBocmVmPWh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L2xpY2Vuc2UtbGlzdC5odG1sI0dQTENvbXBhdGlibGVMaWNlbnNlcz4KaHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvbGljZW5zZS1saXN0Lmh0bWwjR1BMQ29tcGF0aWJsZUxpY2Vuc2VzPC9hPi4gIFRoaXMgbWVhbnMgdGhhdCBHUEwgcHJvamVjdHMgY2FuIG5vdyB1c2UgSUNVIGNvZGUsIGl0IGRvZXMgPGI+bm90PC9iPiBtZWFuIHRoYXQgcHJvamVjdHMgdXNpbmcgSUNVIGJlY29tZSBzdWJqZWN0IHRvIEdQTC4KPC9wPgo8cD4KVGhlIHRleHQgb2YgdGhlIFggbGljZW5zZSBpcyBhdmFpbGFibGUgYXQgPGEgaHJlZj1odHRwOi8vd3d3Lngub3JnL3Rlcm1zLmh0bT5odHRwOi8vd3d3Lngub3JnL3Rlcm1zLmh0bTwvYT4uIFRoZSBJQk0gdmVyc2lvbiBjb250YWlucyB0aGUgZXNzZW50aWFsIHRleHQgb2YgdGhlIGxpY2Vuc2UsIG9taXR0aW5nIHRoZSBYLXNwZWNpZmljIHRyYWRlbWFya3MgYW5kIGNvcHlyaWdodCBub3RpY2VzLiAgVGhlIGZ1bGwgY29weSBvZiA8YSBocmVmPWxpY2Vuc2UuaHRtbD5JQ1UncyBsaWNlbnNlPC9hPiBpcyBpbmNsdWRlZCBpbiB0aGUgZG93bmxvYWQgcGFja2FnZS4KPC9wPgo8cD4KRm9yIG1vcmUgZGV0YWlscyBwbGVhc2Ugc2VlIHRoZSA8YSBocmVmPWh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvcHJlc3MuaHRtbD5wcmVzcyBhbm5vdW5jZW1lbnQ8L2E+IGFuZCB0aGUgPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3Byb2plY3RfZmFxLmh0bWwjbGljZW5zZT5Qcm9qZWN0IEZBUTwvYT4uCjwvcD4KCjxoMyBjbGFzcz0iZG9jIj48YSBOQU1FPSJQbGF0Zm9ybURlcGVuZGVuY2llcyI+PC9hPlBsYXRmb3JtIERlcGVuZGVuY2llczwvaDM+CiAgICAgIDxQPgogICAgICBQYXJ0cyBvZiBJQ1U0SiBkZXBlbmQgb24gZnVuY3Rpb25hbGl0eSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIGluIEpESyAxLjQKICAgICAgb3IgbGF0ZXIsIGFsdGhvdWdoIHNvbWUgY29tcG9uZW50cyB3b3JrIHVuZGVyIGVhcmxpZXIgSlZNcy4gQWxsCiAgICAgIGNvbXBvbmVudHMgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIGEgSmF2YTIgY29tcGlsZXIsIGFzIGV2ZW4gY29tcG9uZW50cwogICAgICB0aGF0IHJ1biB1bmRlciBlYXJsaWVyIEpWTXMgY2FuIHJlcXVpcmUgbGFuZ3VhZ2UgZmVhdHVyZXMgdGhhdCBhcmUgb25seQogICAgICBwcmVzZW50IGluIEphdmEyLiBDdXJyZW50bHkgMS4xLngsIDEuMi54IGFuZCAxLjMueCBKVk1zIGFyZSB1bnN1cHBvcnRlZCBhbmQgdW50ZXN0ZWQsIGFuZCB5b3UgdXNlCiAgICAgIHRoZSBjb21wb25lbnRzIG9uIHRoZXNlIEpWTXMgYXQgeW91ciBvd24gcmlzay48L1A+CiAgICAgIDxwPgogICAgICBUaGUgcmVmZXJlbmNlIHBsYXRmb3JtcyB3aGljaCB3ZSBzdXBwb3J0IGFuZCB0ZXN0IElDVTRKIG9uIGFyZTo8dWw+CjxsaT4gV2luWFAsIElCTSBKREsgMS40LjE8L2xpPgo8bGk+IFNvbGFyaXMgMi43LCBTdW4gSkRLIDEuNC4yPC9saT4KPGxpPiBBSVggNS4yLCBJQk0gSkRLIDEuNC4xPC9saT4KPC91bD4KPC9wPgo8cD5QbGVhc2UgdXNlIHRoZSBtb3N0IHJlY2VudCB1cGRhdGVzIG9mIHRoZSBzdXBwb3J0ZWQgSkRLIHZlcnNpb25zLjwvcD4KCjxwPkFkZGl0aW9uYWxseSwgd2UgaGF2ZSBidWlsdCBhbmQgdGVzdGVkIElDVTRKIG9uIHRoZSBmb2xsb3dpbmcgPGI+dW5zdXBwb3J0ZWQ8L2I+IHBsYXRmb3JtczoKPHVsPgo8bGk+IFdpbjk4LCBXaW5OVCwgV2luWFAgLyBJQk0gSkRLIDEuNC4xLCBTdW4gSkRLICAxLjQsIDEuNC4xPC9saT4KPGxpPiBXaW4yMDAwIC8gSUJNIEpESyAxLjQuMSwgU3VuIEpESyAxLjQsIDEuNC4xPC9saT4KPGxpPiBTb2xhcmlzIDIuNiAsIFNvbGFyaXMgMi44IC8gU3VuIEpESyAxLjQsIDEuNC4xPC9saT4KPGxpPiBTb2xhcmlzIDIuNyAvIFN1biBKREsgMS40LCAxLjQuMTwvbGk+CjxsaT4gQUlYIDUuMSwgSUJNIEpESyAxLjQuMTwvbGk+CjwvdWw+Cgo8aDMgY2xhc3M9ImRvYyI+PGEgTkFNRT0ib2J0YWluaW5nIj48L2E+SG93IHRvIERvd25sb2FkIElDVTRKPC9oMz4KCjxwPlRoZXJlIGFyZSB0d28gd2F5cyB0byBkb3dubG9hZCB0aGUgSUNVNEogcmVsZWFzZXMuCgo8dWwgdHlwZT0iZGlzYyI+CiAgPGxpPjxiPk9mZmljaWFsIFJlbGVhc2UgU25hcHNob3Q6PC9iPjxicj4KCiAgICBJZiB5b3Ugd2FudCB0byB1c2UgSUNVNEogKGFzIG9wcG9zZWQgdG8gZGV2ZWxvcGluZyBpdCksIHlvdXIgYmVzdAogICAgYmV0IGlzIHRvIGRvd25sb2FkIGFuIG9mZmljaWFsLCBwYWNrYWdlZCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SgogICAgc291cmNlIGNvZGUuJm5ic3A7IFRoZXNlIHZlcnNpb25zIGFyZSB0ZXN0ZWQgbW9yZSB0aG9yb3VnaGx5IHRoYW4KICAgIGRheS10by1kYXkgZGV2ZWxvcG1lbnQgYnVpbGRzLCBhbmQgdGhleSBhcmUgcGFja2FnZWQgaW4gemlwIGZpbGVzCiAgICBmb3IgY29udmVuaWVudCBkb3dubG9hZC4mbmJzcDsgVGhlc2UgcGFja2FnZWQgZmlsZXMgY2FuIGJlIGZvdW5kCiAgICBhdCA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbCI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2Rvd25sb2FkL2luZGV4Lmh0bWw8L2E+LiZuYnNwOyBJZiBhIHBhY2thZ2VkIHNuYXBzaG90IGlzIG5hbWVkIDxiPklDVTRKWFhYWFhYLnppcDwvYj4sIHdoZXJlIFhYWFhYWCBpcwogICAgdGhlIHJlbGVhc2UgdmVyc2lvbiBudW1iZXIuJm5ic3A7IFBsZWFzZSB1bnppcCB0aGlzIGZpbGUuJm5ic3A7IEl0CiAgICB3aWxsIHJlY29uc3RydWN0IHRoZSBzb3VyY2UgZGlyZWN0b3J5LiA8L2xpPgo8L3VsPgoKPHVsIHR5cGU9ImRpc2MiPgogIDxsaT48Yj5DVlMgU291cmNlIFJlcG9zaXRvcnk6PC9iPjxicj4KICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGZlYXR1cmVzLCBwYXRjaGVzLCBvciBidWcgZml4ZXMgZm9yIElDVTRKLCB5b3Ugc2hvdWxkCiAgICBwcm9iYWJseSBiZSB3b3JraW5nIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZS4gWW91IHdpbGwgbmVlZCB0bwogICAgY2hlY2sgdGhlIGNvZGUgb3V0IG9mIG91ciBDVlMgcmVwb3NpdG9yeSB0byBlbnN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbgogICAgb2YgYWxsIG9mIHRoZSBmaWxlcy4gVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBkbyB0aGlzOiA8YnI+CiAgICA8dWwgdHlwZT0iY2lyY2xlIj4KICAgICAgPGxpPldlYkNWUzo8YnI+CiAgICAgICAgSWYgeW91IHdhbnQgdG8gYnJvd3NlIHRoZSBjb2RlIGFuZCBvbmx5IG1ha2Ugb2NjYXNpb25hbCBkb3dubG9hZHMsIHlvdSBtYXkgd2FudCB0byB1c2UKICAgICAgICBXZWJDVlMuIEl0IHByb3ZpZGVzIGEgY29udmVuaWVudCwgd2ViLWJhc2VkIGludGVyZmFjZSBmb3IgYnJvd3NpbmcgYW5kIGRvd25sb2FkaW5nIHRoZQogICAgICAgIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbi4gWW91IGNhbiBhbHNvIHZpZXcgZWFjaCBmaWxlJ3MKICAgICAgICByZXZpc2lvbiBoaXN0b3J5LCBkaXNwbGF5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGluZGl2aWR1YWwgcmV2aXNpb25zLCBkZXRlcm1pbmUgd2hpY2gKICAgICAgICByZXZpc2lvbnMgd2VyZSBwYXJ0IG9mIHdoaWNoIG9mZmljaWFsIHJlbGVhc2UsIGFuZCBzbyBvbi4gPGJyPgogICAgICA8L2xpPgogICAgICA8bGk+V2luQ1ZTOjxicj4KICAgICAgICBJZiB5b3Ugd2lsbCBiZSBkb2luZyBzZXJpb3VzIHdvcmsgb24gSUNVNEosIHlvdSBzaG91bGQgcHJvYmFibHkgaW5zdGFsbCBhIENWUyBjbGllbnQgb24KICAgICAgICB5b3VyIG93biBtYWNoaW5lIHNvIHRoYXQgeW91IGNhbiBkbyBiYXRjaCBvcGVyYXRpb25zIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgV2ViQ1ZTCiAgICAgICAgaW50ZXJmYWNlLiBPbiBXaW5kb3dzLCB3ZSBzdWdnZXN0IHRoZSBXaW5DVlMgY2xpZW50LiBUbyBkb3dubG9hZCBJQ1U0SiB2aWEgV2luQ1ZTOiA8b2w+CiAgICAgICAgICA8bGk+SW5zdGFsbCB0aGUgV2luQ1ZTIGNsaWVudCwgd2hpY2ggeW91IGNhbiBkb3dubG9hZCBmcm9tIHRoZSA8YQogICAgICAgICAgICBocmVmPSJodHRwOi8vd3d3LndpbmN2cy5vcmciPmh0dHA6Ly93d3cud2luY3ZzLm9yZzwvYT4uPC9saT4KICAgICAgICAgIDxsaT5TZWxlY3QgPHN0cm9uZz5QcmVmZXJlbmNlczwvc3Ryb25nPiBmcm9tIHRoZSA8c3Ryb25nPkFkbWluPC9zdHJvbmc+IG1lbnUuPG9sIHR5cGU9ImEiPgogICAgICAgICAgICAgIDxsaT5PbiB0aGUgPHN0cm9uZz5HZW5lcmFsPC9zdHJvbmc+IHRhYiBwYW5lbDogU2V0IHlvdXIgPHN0cm9uZz5DVlNST09UPC9zdHJvbmc+IHRvICZxdW90OzxzdHJvbmc+OnBzZXJ2ZXI6YW5vbmN2c0Bvc3Muc29mdHdhcmUuaWJtLmNvbTovdXNyL2N2cy9pY3U0ajwvc3Ryb25nPiZxdW90Oy48YnI+CiAgICAgICAgICAgICAgICBMZWF2ZSBvdGhlciBvcHRpb25zIG9uIHRoaXMgcGFnZSBhdCB0aGVpciBkZWZhdWx0LjwvbGk+CiAgICAgICAgICAgICAgPGxpPk9uIHRoZSA8c3Ryb25nPlBvcnRzPC9zdHJvbmc+IHRhYiBwYW5lbDogQ2hlY2sgdGhlIDxzdHJvbmc+cHNlcnZlcjwvc3Ryb25nPiBjaGVja2JveCBhbmQKICAgICAgICAgICAgICAgIGVudGVyIHBvcnQgPHN0cm9uZz4yNDAxPC9zdHJvbmc+LjwvbGk+CiAgICAgICAgICAgIDwvb2w+CiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPkNsaWNrIG9uIHRoZSBMb2dpbiBtZW51IGJ1dHRvbiAoPHN0cm9uZz5BZG1pbjwvc3Ryb25nPiBtZW51KS4gRW50ZXIgaW4gICZxdW90OzxzdHJvbmc+YW5vbmN2czwvc3Ryb25nPiZxdW90OyB3aGVuIHJlcXVlc3RlZC48L2xpPgogICAgICAgICAgPGxpPlRvIGV4dHJhY3QgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgSUNVNEosIHNlbGVjdCA8c3Ryb25nPkNoZWNrb3V0IG1vZHVsZTwvc3Ryb25nPgogICAgICAgICAgICBmcm9tIHRoZSA8c3Ryb25nPkNyZWF0ZTwvc3Ryb25nPiBtZW51LiBTcGVjaWZ5ICZxdW90OzxzdHJvbmc+aWN1NGo8L3N0cm9uZz4mcXVvdDsgZm9yIHRoZQogICAgICAgICAgICBtb2R1bGUgbmFtZS4gVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBjb3B5IG9mIHRoZSB3b3Jrc3BhY2Ugb24geW91ciBsb2NhbCBoYXJkIGRyaXZlLjwvbGk+CiAgICAgICAgICA8bGk+SW4gdGhlIGZ1dHVyZSwgeW91IGNhbiBkb3dubG9hZCB1cGRhdGVkIGZpbGVzIGZyb20gdGhlIHJlcG9zaXRvcnkgdG8geW91ciBoYXJkIGRyaXZlCiAgICAgICAgICAgIHVzaW5nIHRoZSA8c3Ryb25nPlVwZGF0ZSBzZWxlY3Rpb248L3N0cm9uZz4gaXRlbSBpbiB0aGUgPHN0cm9uZz5Nb2RpZnk8L3N0cm9uZz4gbWVudS48YnI+CiAgICAgICAgICA8L2xpPgogICAgICAgIDwvb2w+CiAgICAgIDwvbGk+CiAgICAgIDxsaT5DVlMgY29tbWFuZCBsaW5lOjxicj4KICAgICAgICBZb3UgY2FuIGFsc28gY2hlY2sgb3V0IHRoZSByZXBvc2l0b3J5IGFub255bW91c2x5IG9uIFVOSVggdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kcywKICAgICAgICBhZnRlciBmaXJzdCBzZXR0aW5nIHlvdXIgQ1ZTUk9PVCB0byBwb2ludCB0byB0aGUgSUNVNEogcmVwb3NpdG9yeTogPHByZT48Y29kZT5leHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjphbm9uY3ZzQG9zcy5zb2Z0d2FyZS5pYm0uY29tOi91c3IvY3ZzL2ljdTRqCmN2cyBsb2dpbiBDVlMgcGFzc3dvcmQ6IGFub25jdnMKY3ZzIGNoZWNrb3V0IGljdTRqCmN2cyBsb2dvdXQ8L2NvZGU+PC9wcmU+CiAgICAgIDwvbGk+CiAgICA8L3VsPgogIDwvbGk+CjwvdWw+Cgo8cD5Gb3IgbW9yZSBkZXRhaWxzIG9uIGhvdyB0byBkb3dubG9hZCBJQ1U0SiBkaXJlY3RseSBmcm9tIHRoZSB3ZWIgc2l0ZSwgcGxlYXNlIGFsc28gc2VlIDxhCmhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb3dubG9hZC9pbmRleC5odG1sIj5odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbDwvYT4KPC9wPgoKPGgzIGNsYXNzPSJkb2MiPjxhIE5BTUU9IldoYXRDb250YWluIj48L2E+VGhlIFN0cnVjdHVyZSBhbmQgQ29udGVudHMgb2YgSUNVNEo8L2gzPgoKPHA+QmVsb3csIDxiPiRSb290PC9iPiBpcyB0aGUgcGxhY2VtZW50IG9mIHRoZSBpY3UgZGlyZWN0b3J5IGluIHlvdXIgZmlsZSBzeXN0ZW0sIGxpa2UKJnF1b3Q7ZHJpdmU6XC4uLlxpY3U0aiZxdW90OyBpbiB5b3VyIGVudmlyb25tZW50LiAmcXVvdDtkcml2ZTpcLi4uJnF1b3Q7IHN0YW5kcyBmb3IgYW55CmRyaXZlIGFuZCBhbnkgZGlyZWN0b3J5IG9uIHRoYXQgZHJpdmUgdGhhdCB5b3UgY2hvc2UgdG8gaW5zdGFsbCBpY3U0aiBpbnRvLiA8L3A+Cgo8cD48Yj5JbmZvcm1hdGlvbiBhbmQgYnVpbGQgZmlsZXM6PC9iPjwvcD4KCjx0YWJsZSBmcmFtZT0idm9pZCIgQ0VMTFBBRERJTkc9IjMiIGJnY29sb3I9IiNDQ0NDRkYiIFdJRFRIPSI2MjMiPgogIDx0cj4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBhbGlnbj0icmlnaHQiIGJnY29sb3I9IiNGRkZGRkYiPjxiPnJlYWRtZS5odG1sPC9iPjxicj4KICAgICAgICAodGhpcyBmaWxlKTwvdGQ+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+QSBkZXNjcmlwdGlvbiBvZiBJQ1U0SiAoSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhKTwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGggdmFsaWduPSJiYXNlbGluZSIgYWxpZ249InJpZ2h0IiBiZ2NvbG9yPSIjRkZGRkZGIj5saWNlbnNlLmh0bWw8L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPlRoZSBYIGxpY2Vuc2UsIHVzZWQgYnkgSUNVNEo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIHZhbGlnbj0iYmFzZWxpbmUiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iI0ZGRkZGRiI+YnVpbGQueG1sPC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5BbnQgYnVpbGQgZmlsZS4gU2VlIDxhIGhyZWY9IiNIb3dUb0luc3RhbGxKYXZhYyI+SG93IHRvIEluc3RhbGwgYW5kIEJ1aWxkPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxwPjxiPlRoZSBzb3VyY2UgZGlyZWN0b3JpZXMgbWlycm9yIHRoZSBwYWNrYWdlIHN0cnVjdHVyZSBvZiB0aGUgY29kZS48L2I+PGJyPjxmb250IGNvbG9yPSJyZWQiPkNvcmU8L2ZvbnQ+IHBhY2thZ2VzIGJlY29tZSBwYXJ0IG9mIHRoZSBJQ1U0SiBqYXIgZmlsZS48YnI+PGZvbnQgY29sb3I9InJlZCI+QVBJPC9mb250PiBwYWNrYWdlcyBjb250YWluIGNsYXNzZXMgd2l0aCBzdXBwb3J0ZWQgQVBJLiA8YnI+PGZvbnQgY29sb3I9InJlZCI+UmljaFRleHQ8L2ZvbnQ+IGNsYXNzZXMgYXJlIENvcmUgYW5kIEFQSSwgYnV0IGNhbiBiZSByZW1vdmVkIGZyb20gaWN1NGouamFyLCBhbmQgY2FuIGJlIGJ1aWx0IGludG8gdGhlaXIgb3duIGphci48L3A+Cgo8dGFibGUgZnJhbWU9InZvaWQiIEJPUkRFUj0iMCIgQ0VMTFBBRERJTkc9IjMiIGJnY29sb3I9IiNDQ0NDRkYiIFdJRFRIPSI2MjMiPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPiRSb290L3NyYy9jb20vaWJtL2ljdS9kZXY8YnI+PGZvbnQgY29sb3I9InJlZCI+Tm9uLUNvcmUsIE5vbi1BUEk8L2ZvbnQ+PC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5QYWNrYWdlcyB1c2VkIGZvciBpbnRlcm5hbCBkZXZlbG9wbWVudDoKICAgIDx1bD4KICAgIDxsaT5EYXRhOiBkYXRhIHVzZWQgYnkgdGVzdHMgYW5kIGluIGJ1aWxkaW5nIElDVTwvbGk+CiAgICA8bGk+RGVtb3M6IENhbGVuZGFyLCBIb2xpZGF5LCBCcmVhayBJdGVyYXRvciwgUnVsZS1iYXNlZCBOdW1iZXIgRm9ybWF0LCBUcmFuc2Zvcm1hdGlvbnM8YnI+KFNlZSA8YSBocmVmPSIjdHJ5aW5nb3V0Ij5iZWxvdzwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlbW9zLik8L2xpPgogICAgPGxpPlRlc3RzOiBBUEkgYW5kIGNvdmVyYWdlIHRlc3RzIG9mIGFsbCBmdW5jdGlvbmFsaXR5Ljxicj5Gb3IgaW5mb3JtYXRpb24gYWJvdXQgcnVubmluZyB0aGUgdGVzdHMsIHNlZSAkUm9vdC9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvVGVzdEFsbC5qYXZhLjwvbGk+CiAgICA8bGk+VG9vbHM6IHRvb2xzIHVzZWQgdG8gYnVpbGQgZGF0YSB0YWJsZXMsIGV0Yy48L2xpPjwvdWw+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPiRSb290L3NyYy9jb20vaWJtL2ljdS9pbXBsPGJyPjxmb250IGNvbG9yPSJyZWQiPkNvcmUsIE5vbi1BUEk8L2ZvbnQ+PC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5UaGVzZSBhcmUgdXRpbGl0eSBjbGFzc2VzIHVzZWQgZnJvbSBkaWZmZXJlbnQgSUNVNEogY29yZSBwYWNrYWdlcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+JFJvb3Qvc3JjL2NvbS9pYm0vaWN1L2xhbmc8YnI+PGZvbnQgY29sb3I9InJlZCI+Q29yZSwgQVBJPC9mb250PjwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Q2hhcmFjdGVyIHByb3BlcnRpZXMgcGFja2FnZS48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+JFJvb3Qvc3JjL2NvbS9pYm0vaWN1L21hdGg8YnI+PGZvbnQgY29sb3I9InJlZCI+Q29yZSwgQVBJPC9mb250PjwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+QWRkaXRpb25hbCBtYXRoIGNsYXNzZXMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPiRSb290L3NyYy9jb20vaWJtL2ljdS90ZXh0PGJyPjxmb250IGNvbG9yPSJyZWQiPkNvcmUsIEFQSTwvZm9udD48L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPkFkZGl0aW9uYWwgdGV4dCBjbGFzc2VzLiAgVGhlc2UgYWRkIHRvLCBhbmQgaW4gc29tZSBjYXNlcyByZXBsYWNlLCByZWxhdGVkIGNvcmUgSmF2YSBjbGFzc2VzOgogICAgICA8dWw+CiAgICAgIDxsaT5BcmFiaWMgc2hhcGluZwogICAgICA8bGk+QnJlYWsgaXRlcmF0aW9uCiAgICAgIDxsaT5EYXRlIGZvcm1hdHRpbmcKICAgICAgPGxpPk51bWJlciBmb3JtYXR0aW5nCiAgICAgIDxsaT5UcmFuc2xpdGVyYXRpb24KICAgICAgPGxpPk5vcm1hbGl6YXRpb24KICAgICAgPGxpPlN0cmluZyBtYW5pcHVsYXRpb24KICAgICAgPGxpPkNvbGxhdGlvbgogICAgICA8bGk+U3RyaW5nIHNlYXJjaAogICAgICA8bGk+VW5pY29kZSBjb21wcmVzc2lvbgogICAgICA8bGk+VW5pY29kZSBzZXRzCiAgICA8L3VsPgogICAgPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPiRSb290L3NyYy9jb20vaWJtL2ljdS91dGlsPGJyPjxmb250IGNvbG9yPSJyZWQiPkNvcmUsIEFQSTwvZm9udD48L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPkFkZGl0aW9uYWwgdXRpbGl0eSBjbGFzc2VzOgogICAgPHVsPgogICAgPGxpPkNhbGVuZGFycyAtIEdyZWdvcmlhbiwgQnVkZGhpc3QsIEhlYnJldywgSXNsYW1pYywgSmFwYW5lc2UKICAgIDxsaT5Ib2xpZGF5PC9saT4KICAgIDxsaT5UaW1lWm9uZTwvbGk+CiAgICA8bGk+VmVyc2lvbkluZm88L2xpPgogICAgPGxpPkl0ZXJhdGlvbjwvbGk+CiAgICA8L3VsPgogICAgPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPiRSb290L3NyYy9jb20vaWJtL3JpY2h0ZXh0PGJyPjxmb250IGNvbG9yPSJyZWQiPlJpY2hUZXh0PC9mb250PjwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+U3R5bGVkIHRleHQgZWRpdGluZwogICAgcGFja2FnZS4gVGhpcyBpbmNsdWRlcyBkZW1vcywgdGVzdHMsIGFuZCBHVUlzIGZvciBlZGl0aW5nIGFuZAogICAgZGlzcGxheWluZyBzdHlsZWQgdGV4dC4gIFRoZSByaWNodGV4dCBwYWNrYWdlIHByb3ZpZGVzIGEKICAgIHNjcm9sbGFibGUgZGlzcGxheSwgdHlwaW5nLCBhcnJvdy1rZXkgc3VwcG9ydCwgdGFicywgYWxpZ25tZW50IGFuZAogICAganVzdGlmaWNhdGlvbiwgd29yZC0gYW5kIHNlbnRlbmNlLXNlbGVjdGlvbiAoYnkgZG91YmxlLWNsaWNraW5nCiAgICBhbmQgdHJpcGxlLWNsaWNraW5nLCByZXNwZWN0aXZlbHkpLCB0ZXh0IHN0eWxlcywgY2xpcGJvYXJkCiAgICBvcGVyYXRpb25zIChjdXQsIGNvcHkgYW5kIHBhc3RlKSBhbmQgYSBsb2cgb2YgY2hhbmdlcyBmb3IKICAgIHVuZG8tcmVkby4gIFJpY2h0ZXh0IHVzZXMgSmF2YSdzIFRleHRMYXlvdXQgYW5kIGNvbXBsZXgKICAgIHRleHQgc3VwcG9ydCAocHJvdmlkZWQgdG8gU3VuIGJ5IHRoZSBJQ1U0SiB0ZWFtKS48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD48Yj5CdWlsZGluZyBJQ1U0SiBjcmVhdGVzIGFuZCBwb3B1bGF0ZXMgdGhlIGZvbGxvd2luZyBkaXJlY3Rvcmllczo8L2I+PC9wPgoKPHRhYmxlICBmcmFtZT0idm9pZCIgQ0VMTFBBRERJTkc9IjMiIGJnY29sb3I9IiNDQ0NDRkYiPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPiRSb290L2NsYXNzZXM8L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPmNvbnRhaW5zIGFsbCBjbGFzcyBmaWxlczwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGggYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj4kUm9vdC9kb2M8L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPmNvbnRhaW5zIEphdmFEb2MgZm9yIGFsbCBwYWNrYWdlczwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPGJyLz4KPHA+PGI+SUNVNEogZGF0YSBpcyBzdG9yZWQgaW4gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9iPjwvcD4KCjx0YWJsZSBmcmFtZT0idm9pZCIgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMyIgYmdjb2xvcj0iI0NDQ0NGRiIgV0lEVEg9IjYyMyI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+PGNvZGU+Y29tLmlibS5pY3UuaW1wbC5kYXRhPC9jb2RlPjwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+SG9sZHMgZGF0YSB1c2VkIGJ5IHRoZSBJQ1U0SiBjb3JlIHBhY2thZ2VzICg8Y29kZT5jb20uaWJtLmljdS5sYW5nPC9jb2RlPiwgPGNvZGU+Y29tLmlibS5pY3UudGV4dDwvY29kZT4sIDxjb2RlPmNvbS5pYm0uaWN1LnV0aWw8L2NvZGU+LCA8Y29kZT5jb20uaWJtLmljdS5tYXRoPC9jb2RlPiBhbmQgPGNvZGU+Y29tLmlibS5pY3UudGV4dDwvY29kZT4pLiBJbiBwYXJ0aWN1bGFyLCBhbGwgcmVzb3VyY2UgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGhlcmUuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPjxjb2RlPmNvbS5pYm0uaWN1LmRldi5kYXRhPC9jb2RlPjwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+SG9sZHMgZGF0YSB0aGF0IGlzIG5vdCBwYXJ0IG9mIElDVTRKIGNvcmUsIGJ1dCByYXRoZXIgcGFydCBvZiBhIHRlc3QsIHNhbXBsZSwgb3IgZGVtby48L3RkPgogIDwvdHI+CjwvdGFibGU+Cjxici8+CjxoMyBjbGFzcz0iZG9jIj48YSBuYW1lPSJBUEkiPjwvYT5XaGVyZSB0byBnZXQgRG9jdW1lbnRhdGlvbjwvaDM+Cgo8cD5UaGUgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvIj5JQ1UgdXNlcidzIGd1aWRlPC9hPiBjb250YWlucyBsb3RzIG9mIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgSUNVLCBpbiBpdHMgQywgQysrLCBhbmQgSmF2YSBpbmNhcm5hdGlvbnMuPC9wPgoKPHA+VGhlIGNvbXBsZXRlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBJQ1U0SiAoamF2YWRvYykgaXMgYXZhaWxhYmxlIG9uIHRoZSBJQ1U0SiB3ZWIgc2l0ZSwgYW5kIGNhbiBiZSBidWlsdCBmcm9tIHRoZSBzb3VyY2VzOgoKPHVsPgogIDxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2luZGV4Lmh0bWwiPkluZGV4IHRvIGFsbCBJQ1U0SiBBUEk8L2E+PC9saT4KICA8bGk+SW50ZXJuYXRpb25hbCBDYWxlbmRhcnMgJiMxNTA7IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdXRpbC9Jc2xhbWljQ2FsZW5kYXIuaHRtbCI+SXNsYW1pYzwvYT4sCiAgICA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3V0aWwvQnVkZGhpc3RDYWxlbmRhci5odG1sIj5CdWRkaGlzdDwvYT4sIDxhCiAgICBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3V0aWwvSGVicmV3Q2FsZW5kYXIuaHRtbCI+SGVicmV3PC9hPiwgPGEKICAgIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdXRpbC9KYXBhbmVzZUNhbGVuZGFyLmh0bWwiPkphcGFuZXNlPC9hPi48L2xpPgogIDxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3RleHQvTm9ybWFsaXplci5odG1sIj5Vbmljb2RlIE5vcm1hbGl6YXRpb248L2E+ICYjMTUwOwogICAgQ2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb24gZm9yIFczQy48L2xpPgogIDxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3RleHQvTnVtYmVyRm9ybWF0Lmh0bWwiPk51bWJlciBGb3JtYXQgRW5oYW5jZW1lbnRzPC9hPiAmIzE1MDsKICAgIFNjaWVudGlmaWMgTm90YXRpb24sIFNwZWxsZWQgb3V0LjwvbGk+CiAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9CcmVha0l0ZXJhdG9yLmh0bWwiPkVuaGFuY2VkIHdvcmQtYnJlYWsgZGV0ZWN0aW9uPC9hPgogICAgJiMxNTA7IFJ1bGUtYmFzZWQsIHN1cHBvcnRzIFRoYWk8L2xpPgo8bGk+PGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2RvYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdG9yLmh0bWwiPlRyYW5zbGl0ZXJhdGlvbjwvYT4gJiMxNTA7IEEgZ2VuZXJhbCBmcmFtZXdvcmsgZm9yIG9udmVydGluZyB0ZXh0IGZyb20gb25lIGZvcm1hdCB0byBhbm90aGVyLCBlLmcuIEN5cmlsbGljIHRvIExhdGluLCBvciBIZXggdG8gVW5pY29kZS4KICA8bGk+VW5pY29kZSBUZXh0IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlQ29tcHJlc3Nvci5odG1sIj5Db21wcmVzc2lvbjwvYT4gJmFtcDsKICAgIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlRGVjb21wcmVzc29yLmh0bWwiPkRlY29tcHJlc3Npb248L2E+ICYjMTUwOyAyOjEKICAgIGNvbXByZXNzaW9uIG9uIEVuZ2xpc2ggVW5pY29kZSB0ZXh0LjwvbGk+CiAgPGxpPkNvbGxhdGlvbiAtIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRDb2xsYXRvci5odG1sIj5SdWxlLWJhc2VkIHNvcnRpbmc8L2E+LCA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3RleHQvU3RyaW5nU2VhcmNoLmh0bWwiPkVmZmljaWVudCBtdWx0aS1saW5ndWFsIHNlYXJjaGluZzwvYT4gPC9saT4KPC91bD4KCjxoMyBjbGFzcz0iZG9jIj48YSBOQU1FPSJIb3dUb0luc3RhbGxKYXZhYyI+PC9hPkhvdyB0byBJbnN0YWxsIGFuZCBCdWlsZDwvaDM+Cgo8cD5UbyBpbnN0YWxsIElDVTRKLCBzaW1wbHkgcGxhY2UgdGhlIHByZWJ1aWx0IGphciBmaWxlIDxzdHJvbmc+aWN1NGouamFyPC9zdHJvbmc+IG9uIHlvdXIKSmF2YSBDTEFTU1BBVEguJm5ic3A7IE5vIG90aGVyIGZpbGVzIGFyZSBuZWVkZWQuPC9wPgoKPHA+PGI+RWNsaXBzZSB1c2Vyczo8L2I+IFNlZSB0aGUgSUNVNEogc2l0ZSBmb3IgaW5mb3JtYXRpb24gb248YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L2RvY3MvZWNsaXBzZV9ob3d0by9lY2xpcHNlX2hvd3RvLmh0bWwiPgpob3cgdG8gY29uZmlndXJlIEVjbGlwc2U8L2E+IHRvIGJ1aWxkIElDVTRKLjwvcD4KCjxwPlRvIGJ1aWxkIElDVTRKLCB5b3Ugd2lsbCBuZWVkIGEgSmF2YTIgSkRLIGFuZCB0aGUgQW50IGJ1aWxkIHN5c3RlbS4KV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHVzaW5nIHRoZSBBbnQgYnVpbGQgc3lzdGVtIHRvIGJ1aWxkIElDVTRKOjwvcD4KCjx1bD4KICA8bGk+SXQncyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGJvdGggdGhlIEpESyBhbmQgQW50IHNvbWV3aGVyZSA8ZW0+b3V0c2lkZTwvZW0+IHRoZSBJQ1U0SgogICAgZGlyZWN0b3J5LiBGb3IgZXhhbXBsZSwgb24gTGludXggeW91IG1pZ2h0IGluc3RhbGwgdGhlc2UKICAgIGluIC91c3IvbG9jYWwuPC9saT4KICA8bGk+SW5zdGFsbCBhIHJlY2VudCBKREssIHZlcnNpb24gMS40Lnggd2lsbCB3b3JrLjwvbGk+CiAgPGxpPjxwPk5leHQgaW5zdGFsbCB0aGUgPGEgaHJlZj0iaHR0cDovL2FudC5hcGFjaGUub3JnLyI+PHN0cm9uZz5BbnQ8L3N0cm9uZz48L2E+IGJ1aWxkCiAgICBzeXN0ZW0uIEFudCBpcyBhIHBvcnRhYmxlLCBKYXZhLWJhc2VkIGJ1aWxkIHN5c3RlbSBzaW1pbGFyIHRvIG1ha2UuIElDVTRKIHVzZXMgQW50CiAgICBiZWNhdXNlIGl0IGludHJvZHVjZXMgbm8gb3RoZXIgZGVwZW5kZW5jaWVzLCBpdCdzIHBvcnRhYmxlLCBhbmQgaXQncyBlYXNpZXIgdG8gbWFuYWdlIHRoYW4KICAgIGEgY29sbGVjdGlvbiBvZiBtYWtlZmlsZXMuIFdlIGN1cnJlbnRseSBidWlsZCBJQ1U0SiB1c2luZyBhIHNpbmdsZSBtYWtlZmlsZSBvbiBib3RoCiAgICBXaW5kb3dzIDl4IGFuZCBMaW51eCB1c2luZyBBbnQuICBUaGUgYnVpbGQgc3lzdGVtIHJlcXVpcmVzIEFudCAxLjUgb3IgbGF0ZXIuPC9wPgogICAgPHA+SW5zdGFsbGluZyBBbnQgaXMgc3RyYWlnaHRmb3J3YXJkLiBEb3dubG9hZCBpdCAoc2VlIDxhCiAgICBocmVmPSJodHRwOi8vYW50LmFwYWNoZS5vcmcvYmluZG93bmxvYWQuY2dpIj5odHRwOi8vYW50LmFwYWNoZS5vcmcvYmluZG93bmxvYWQuY2dpPC9hPiksCiAgICBleHRyYWN0IGl0IG9udG8geW91ciBzeXN0ZW0sIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kIGFkZCBpdHMgYmluIGRpcmVjdG9yeSB0bwogICAgeW91ciBwYXRoLiBGb3IgZXhhbXBsZToKPHByZT4gICAgc2V0IEpBVkFfSE9NRT1DOlxqZGsxLjQuMQogICAgc2V0IEFOVF9IT01FPUM6XGFudAogICAgc2V0IFBBVEg9JVBBVEglOyVBTlRfSE9NRSVcYmluPC9wcmU+PC9wPgogICAgPHA+U2VlIHRoZSBjdXJyZW50IEFudCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLjwvcD4KICA8L2xpPgo8L3VsPgoKPHA+T25jZSB0aGUgSkRLIGFuZCBBbnQgYXJlIGluc3RhbGxlZCwgYnVpbGRpbmcgaXMganVzdCBhIG1hdHRlciBvZgp0eXBpbmcgPHN0cm9uZz5hbnQ8L3N0cm9uZz4gaW4gdGhlIElDVTRKIHJvb3QgZGlyZWN0b3J5LiBUaGlzIGNhdXNlcwp0aGUgQW50IGJ1aWxkIHN5c3RlbSB0byBwZXJmb3JtIGEgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5IHRoZSBmaWxlCjxzdHJvbmc+YnVpbGQueG1sPC9zdHJvbmc+LCBsb2NhdGVkIGluIHRoZSBJQ1U0SiByb290IGRpcmVjdG9yeS4gWW91CmNhbiBnaXZlIEFudCBvcHRpb25zIGxpa2UgLXZlcmJvc2UsIGFuZCB5b3UgY2FuIHNwZWNpZnkgdGFyZ2V0cy4gQW50CndpbGwgb25seSBidWlsZCB3aGF0J3MgYmVlbiBjaGFuZ2VkIGFuZCB3aWxsIHJlc29sdmUgZGVwZW5kZW5jaWVzCnByb3Blcmx5LiAgRm9yIGV4YW1wbGU6PC9wPgo8YmxvY2txdW90ZT4KICA8cHJlPkY6XGljdTRqJmd0O2FudCB0ZXN0cwpCdWlsZGZpbGU6IGJ1aWxkLnhtbApQcm9qZWN0IGJhc2UgZGlyIHNldCB0bzogRjpcaWN1NGoKRXhlY3V0aW5nIFRhcmdldDogY29yZQpDb21waWxpbmcgNzEgc291cmNlIGZpbGVzIHRvIEY6XGljdTRqXGNsYXNzZXMKRXhlY3V0aW5nIFRhcmdldDogdGVzdHMKQ29tcGlsaW5nIDI0IHNvdXJjZSBmaWxlcyB0byBGOlxpY3U0alxjbGFzc2VzCkNvbXBsZXRlZCBpbiAxOSBzZWNvbmRzPC9wcmU+CjwvYmxvY2txdW90ZT4KCjxwPlRoZSBmb2xsb3dpbmcgYXJlIHNvbWUgdGFyZ2V0cyB0aGF0IHlvdSBjYW4gcHJvdmlkZSB0byA8Yj5hbnQ8L2I+LiAgRm9yIG1vcmUKdGFyZ2V0cywgc2VlIHRoZSBidWlsZC54bWwgZmlsZTo8L3A+Cjx0YWJsZSBmcmFtZT0idm9pZCIgQk9SREVSPSIwIiBDRUxMUEFERElORz0iMyIgYmdjb2xvcj0iI0NDQ0NGRiIgV0lEVEg9IjYyMyI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+YWxsPC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5CdWlsZCBhbGwgdGFyZ2V0cy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Y29yZTwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+QnVpbGQgdGhlIG1haW4gY2xhc3MgZmlsZXMgaW4gdGhlIHN1YmRpcmVjdG9yeSA8c3Ryb25nPmNsYXNzZXM8L3N0cm9uZz4uIElmIG5vIHRhcmdldAogICAgaXMgc3BlY2lmaWVkLCBjb3JlIGlzIGFzc3VtZWQuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPnRlc3RzPC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5CdWlsZCB0aGUgdGVzdCBjbGFzcyBmaWxlcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+ZGVtb3M8L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPkJ1aWxkIHRoZSBkZW1vcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+dG9vbHM8L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPkJ1aWxkIHRoZSB0b29scy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+ZG9jczwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+UnVuIGphdmFkb2Mgb3ZlciB0aGUgbWFpbiBjbGFzcyBmaWxlcywgZ2VuZXJhdGluZyBhbiBIVE1MIGRvY3VtZW50YXRpb24gdHJlZSBpbiB0aGUKICAgIHN1YmRpcmVjdG9yeSA8c3Ryb25nPmRvYzwvc3Ryb25nPi48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+amFyPC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5DcmVhdGUgYSBqYXIgYXJjaGl2ZSA8c3Ryb25nPmljdTRqLmphcjwvc3Ryb25nPiBpbiB0aGUgcm9vdCBJQ1U0SiBkaXJlY3RvcnkgY29udGFpbmluZwogICAgdGhlIG1haW4gY2xhc3MgZmlsZXMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPmphclNyYzwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+TGlrZSB0aGUgPHN0cm9uZz5qYXI8L3N0cm9uZz4gdGFyZ2V0LCBidXQgY29udGFpbmluZyBvbmx5IHRoZSBzb3VyY2UgZmlsZXMuCiAgPC90cj4KICA8dHI+CiAgICA8dGggYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5qYXJEb2NzPC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5MaWtlIHRoZSA8c3Ryb25nPmphcjwvc3Ryb25nPiB0YXJnZXQsIGJ1dCBjb250YWluaW5nIG9ubHkgdGhlIGRvY3MuCiAgPC90cj4KICA8dHI+CiAgICA8dGggYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5yaWNoZWRpdDwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+QnVpbGQgdGhlIHJpY2hlZGl0IGNvcmUgY2xhc3MgZmlsZXMgYW5kIHRlc3RzLgogIDwvdHI+CiAgPHRyPgogICAgPHRoIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+cmljaGVkaXRKYXI8L3RoPgogICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPkNyZWF0ZSB0aGUgcmljaGVkaXQgamFyIGZpbGUgKHdoaWNoIGNvbnRhaW5zIG9ubHkgdGhlIHJpY2hlZGl0IGNvcmUgY2xhc3MgZmlsZXMpLgogICAgVGhlIGZpbGUgPHN0cm9uZz5yaWNoZWRpdC5qYXI8L3N0cm9uZz4KICAgIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgPHN0cm9uZz4uL3JpY2hlZGl0PC9zdHJvbmc+IHN1YmRpcmVjdG9yeS4gQW55IGV4aXN0aW5nIGZpbGUgb2YKICAgIHRoYXQgbmFtZSB3aWxsIGJlIG92ZXJ3cml0dGVuLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGggYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5yaWNoZWRpdFppcDwvdGg+CiAgICA8dGQgdmFsaWduPSJiYXNlbGluZSIgYmdjb2xvcj0iI0ZGRkZGRiI+Q3JlYXRlIGEgemlwIGFyY2hpdmUgb2YgdGhlIHJpY2hlZGl0IGRvY3MgYW5kIGphciBmaWxlIGZvciBkaXN0cmlidXRpb24uIFRoZSB6aXAgZmlsZSA8c3Ryb25nPnJpY2hlZGl0LnppcDwvc3Ryb25nPgogICAgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSA8c3Ryb25nPi4vcmljaGVkaXQ8L3N0cm9uZz4gc3ViZGlyZWN0b3J5LiBBbnkgZXhpc3RpbmcgZmlsZSBvZgogICAgdGhhdCBuYW1lIHdpbGwgYmUgb3ZlcndyaXR0ZW4uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiIGJnY29sb3I9IiNGRkZGRkYiPmNsZWFuPC90aD4KICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIiBiZ2NvbG9yPSIjRkZGRkZGIj5SZW1vdmUgYWxsIGJ1aWx0IHRhcmdldHMsIGxlYXZpbmcgdGhlIHNvdXJjZS48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgQW50IGRvY3VtZW50YXRpb24gYW5kIHRoZSA8c3Ryb25nPmJ1aWxkLnhtbDwvc3Ryb25nPgpmaWxlLjwvcD4KCjxwPkFmdGVyIGRvaW5nIGEgYnVpbGQgaXQgaXMgYSBnb29kIGlkZWEgdG8gcnVuIGFsbCB0aGUgaWN1NGogdGVzdHMgYnkgdHlwaW5nIDxicj4mcXVvdDtqYXZhCi1jbGFzc3BhdGggJFJvb3QvY2xhc3NlcyAtRFVuaWNvZGVEYXRhPSRSb290L3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RBbGwgLW5vdGhyb3cmcXVvdDsuPC9wPgoKPHA+KElmIHlvdSBhcmUgYWxsZXJnaWMgdG8gYnVpbGQgc3lzdGVtcywgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcKQW50IHlvdSBjYW4gYnVpbGQgYnkgcnVubmluZyBqYXZhYyBhbmQgamF2YWRvYyBkaXJlY3RseS4gVGhpcwppcyBub3QgcmVjb21tZW5kZWQuIFlvdSBtYXkgaGF2ZSB0byBtYW51YWxseSBjcmVhdGUgZGVzdGluYXRpb24KZGlyZWN0b3JpZXMuKTwvcD4KCjxoMyBjbGFzcz0iZG9jIj48YSBuYW1lPSJIb3dUb01vZHVsYXJpemUiPjwvYT5Ib3cgdG8gbW9kdWxhcml6ZSBJQ1U0SjwvaDM+CjxwPlNvbWUgY2xpZW50cyBtYXkgbm90IHdpc2ggdG8gc2hpcCBhbGwgb2YgSUNVNEogd2l0aCB0aGVpciBhcHBsaWNhdGlvbiwgc2luY2UgdGhlIGFwcGxpY2F0aW9uIG1pZ2h0IG9ubHkgdXNlIGEgc21hbGwgcGFydCBvZiBJQ1U0Si4KSUNVNEogcmVsZWFzZSAyLjYgYW5kIGxhdGVyIHByb3ZpZGUgYnVpbGQgb3B0aW9ucyB0byBidWlsZCBpbmRpdmlkdWFsIElDVTRKICdtb2R1bGVzJyBmb3IgYSBtb3JlIGNvbXBhY3QgZGlzdHJpYnV0aW9uLgpUaGUgbW9kdWxlcyBhcmUgYmFzZWQgb24gYSBzZXJ2aWNlIGFuZCB0aGUgQVBJcyB0aGF0IGRlZmluZSBpdCwgZS5nLiwKdGhlIG5vcm1hbGl6ZXIgbW9kdWxlIHN1cHBvcnRzIGFsbCB0aGUgQVBJcyBvZiB0aGUgTm9ybWFsaXplciBjbGFzcyAoYW5kIHNvbWUgb3RoZXJzKS4gIApUZXN0cyBjYW4gYmUgcnVuIHRvIHZlcmlmeSB0aGF0IHRoZSBBUElzIHN1cHBvcnRlZCBieSB0aGUgbW9kdWxlIGZ1bmN0aW9uIGNvcnJlY3RseS4KQmVjYXVzZSBvZiBpbnRlcm5hbCBjb2RlIGRlcGVuZGVuY2llcywgYSBtb2R1bGUgY29udGFpbnMgZXh0cmEgY2xhc3NlcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgbW9kdWxlJ3MgY29yZSBzZXJ2aWNlIEFQSS4gClNvbWUgb3IgbW9zdCBvZiB0aGUgQVBJcyBvZiB0aGVzZSBleHRyYSBjbGFzc2VzIHdpbGwgbm90IHdvcmsuICA8Yj5Pbmx5IHRoZSBtb2R1bGUncyBjb3JlIHNlcnZpY2UgQVBJIGlzIApndWFyYW50ZWVkLjwvYj4gT3RoZXIgQVBJcyBtYXkgd29yayBwYXJ0aWFsbHkgb3Igbm90IGF0IGFsbCwgc28gY2xpZW50IGNvZGUgc2hvdWxkIGF2b2lkIHRoZW0uPC9wPgo8cD4KSW5kaXZpZHVhbCBtb2R1bGVzIGFyZSBub3QgYnVpbHQgZGlyZWN0bHkgaW50byB0aGVpciBvd24gc2VwYXJhdGUgamFyIGZpbGVzLiAgU2luY2UgdGhlaXIgZGVwZW5kZW5jaWVzCm9mdGVuIG92ZXJsYXAsIHVzaW5nIHNlcGFyYXRlIG1vZHVsZXMgdG8gJ2FkZCBvbicgSUNVNEogZnVuY3Rpb25hbGl0eSB3b3VsZCByZXN1bHQgaW4KdW53YW50ZWQgZHVwbGljYXRpb24gb2YgY2xhc3MgZmlsZXMuIEluc3RlYWQsIGJ1aWxkaW5nIGEgbW9kdWxlIGNhdXNlcyBhIHN1YnNldCBvZiBJQ1U0SidzCmNsYXNzZXMgdG8gYmUgYnVpbHQgYW5kIHB1dCBpbnRvIElDVTRKJ3Mgc3RhbmRhcmQgCmJ1aWxkIGRpcmVjdG9yeS4gIEFmdGVyIG9uZSBvciBtb3JlIG1vZHVsZSB0YXJnZXRzIGFyZSBidWlsdCwgdGhlICdtb2R1bGVKYXInIHRhcmdldCBjYW4gdGhlbiBiZQpidWlsdCwgd2hpY2ggcGFja2FnZXMgdGhlIGNsYXNzIGZpbGVzIGludG8gYSAnbW9kdWxlIGphci4nICBPdGhlciB0aGFuIHRoZSBmYWN0IHRoYXQgaXQKY29udGFpbnMgZmV3ZXIgY2xhc3MgZmlsZXMsIGxpdHRsZSBkaXN0aW5ndWlzaGVzIHRoaXMgamFyIGZpbGUgZnJvbSBhIGZ1bGwgSUNVNEogamFyIGZpbGUsCmFuZCBpbiBmYWN0IHRoZXkgc2hhcmUgdGhlIHNhbWUgbmFtZS48L3A+CjxwPgpDdXJyZW50bHkgSUNVNEogY2FuIGJlIGRpdmlkZWQgaW50byB0aGUgZm9sbG93aW5nIG1vZHVsZXM6CjwvcD4KCjxwPjxiPktleTo8L2I+PGJyLz4KPHRhYmxlIGZyYW1lPSJ2b2lkIiBjZWxscGFkZGluZz0iMyIgYmdjb2xvcj0iI0NDQ0NGRiIgV0lEVEg9IjYyMyI+Cjx0cj4KICAgICAgICA8dGggYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPjxiPk1vZHVsZSBOYW1lPC9iPjwvdGg+CiAgICAgICAgPHRoIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj48Yj5BbnQgVGFyZ2V0czwvYj48L3RoPgogICAgICAgIDx0aCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+PGI+VGVzdCBQYWNrYWdlIFN1cHBvcnRlZDwvYj48L3RoPgogICAgICAgIDx0aCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiPjxiPlNpemUmI3gyMDIxOzwvYj48L3RoPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICA8dGFibGU+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPlBhY2thZ2UqPC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+TWFpbiBDbGFzc2VzJiN4MjAyMDsKICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDwvdGFibGU+CjwvdGQ+CjwvdHI+CjwvdGFibGU+CjxiPgo8Zm9udCBzaXplPTI+CiogY29tLmlibS4gc2hvdWxkIGJlIHByZXBlbmRlZCB0byB0aGUgcGFja2FnZSBuYW1lcyBsaXN0ZWQuCjxicj4mI3gyMDIwOyBBIGJvbGQgY2xhc3MgbmFtZSBjb3JlIHNlcnZpY2UgQVBJcy4gIE9ubHkgQVBJcyAKaW4gdGhlc2UgY2xhc3NlcyBhcmUgZnVsbHkgc3VwcG9ydGVkLgo8YnI+JiN4MjAyMTsgU2l6ZXMgYXJlIG9mIHRoZSBjb21wcmVzc2VkIGphciBmaWxlIGNvbnRhaW5pbmcgb25seSB0aGlzIG1vZHVsZS4gIEZ1bGwgc2l6ZSBpcyAyLDcyNyZuYnNwO0suCjwvZm9udD4KPC9iPgo8L3A+CjxwPjxiPk1vZHVsZXM6PC9iPjxici8+Cjx0YWJsZSBmcmFtZT0idm9pZCIgY2VsbHBhZGRpbmc9IjMiIGJnY29sb3I9IiNDQ0NDRkYiIFdJRFRIPSI2MjMiPgo8dHI+CiAgICAgICAgPHRoIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj5Ob3JtYWxpemVyPC90aD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPm5vcm1hbGl6ZXIsIG5vcm1hbGl6ZXJUZXN0czwvdGQ+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj5jb20uaWJtLmljdS5kZXYudGVzdC5ub3JtYWxpemVyPC90ZD4KICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIj40MjcmbmJzcDtLQjwvdGQ+CjwvdHI+Cjx0ciBiZ2NvbG9yPSIjRkZGRkZGIj4KPHRkIHZhbGlnbj0idG9wIiBjb2xzcGFuPSI0Ij4KICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNSI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS5sYW5nOjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPlVDaGFyYWN0ZXIsIFVDaGFyYWN0ZXJDYXRlZ29yeSwgVUNoYXJhY3RlckRpcmVjdGlvbiwgCiAgICAgICAgVUNoYXJhY3Rlck5hbWVJdGVyYXRvciwgVUNoYXJhY3RlclR5cGVJdGVyYXRvciwgVVByb3BlcnR5LCBVU2NyaXB0PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS50ZXh0OjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPjxiPk5vcm1hbGl6ZXI8L2I+LCBSZXBsYWNlYWJsZSwgUmVwbGFjZWFibGVTdHJpbmcsIDxiPlVDaGFyYWN0ZXJJdGVyYXRvcjwvYj4sCiAgICAgICAgPGI+VUZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvcjwvYj4sIFVuaWNvZGVGaWx0ZXIsIFVuaWNvZGVNYXRjaGVyLCBVbmljb2RlU2V0LAogICAgICAgIFVuaWNvZGVTZXRJdGVyYXRvciwgVVRGMTY8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+aWN1LnV0aWw6PC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+VmFsdWVJdGVyYXRvciwgVmVyc2lvbkluZm88L3RkPgogICAgPC90cj4KICAgICAgICA8L3RhYmxlPgo8L3RkPgo8L3RyPgoKPHRyPgogICAgICAgIDx0aCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+Q29sbGF0b3I8L3RoPgogICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+Y29sbGF0b3IsIGNvbGxhdG9yVGVzdHM8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+Y29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiPjEsNDEyJm5ic3A7S0I8L3RkPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCB2YWxpZ249InRvcCIgY29sc3Bhbj0iNCI+CiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubGFuZzo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5VQ2hhcmFjdGVyLCBVQ2hhcmFjdGVyQ2F0ZWdvcnksIFVDaGFyYWN0ZXJEaXJlY3Rpb24sIAogICAgICAgIFVDaGFyYWN0ZXJOYW1lSXRlcmF0b3IsIFVDaGFyYWN0ZXJUeXBlSXRlcmF0b3IsIGxhbmcuVVByb3BlcnR5LCBVU2NyaXB0CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS50ZXh0OjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPkJyZWFrRGljdGlvbmFyeSwgQnJlYWtJdGVyYXRvciwgQnJlYWtJdGVyYXRvckZhY3RvcnksCiAgICAgICAgQ2Fub25pY2FsSXRlcmF0b3IsIDxiPkNvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcjwvYj4sIDxiPkNvbGxhdGlvbktleTwvYj4sCiAgICAgICAgPGI+Q29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXI8L2I+LCA8Yj5Db2xsYXRpb25SdWxlUGFyc2VyPC9iPiwgPGI+Q29sbGF0b3I8L2I+LAogICAgICAgIDxiPkNvbGxhdG9yUmVhZGVyPC9iPiwgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciwgPGI+Tm9ybWFsaXplcjwvYj4sCiAgICAgICAgUmVwbGFjZWFibGUsIFJlcGxhY2VhYmxlU3RyaW5nLCBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLCA8Yj5SdWxlQmFzZWRDb2xsYXRvcjwvYj4sCiAgICAgICAgPGI+U2VhcmNoSXRlcmF0b3I8L2I+LCA8Yj5TdHJpbmdTZWFyY2g8L2I+LCA8Yj5VQ2hhcmFjdGVySXRlcmF0b3I8L2I+LCAKICAgICAgICA8Yj5VRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yPC9iPiwgVW5pY29kZUZpbHRlciwgVW5pY29kZU1hdGNoZXIsIFVuaWNvZGVTZXQsCiAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yLCBVVEYxNgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudXRpbDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5WYWx1ZUl0ZXJhdG9yLCBWZXJzaW9uSW5mbwogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CjwvdGQ+CjwvdHI+Cjx0cj4KICAgICAgICA8dGggYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPkNhbGVuZGFyPC90aD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPmNhbGVuZGFyLCBjYWxlbmRhclRlc3RzPC90ZD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPmNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyPC90ZD4KICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIj4xLDMzOCZuYnNwO0tCPC90ZD4KPC90cj4KPHRyIGJnY29sb3I9IiNGRkZGRkYiPgo8dGQgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjQiPgogICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI1Ij4KICAgIDx0cj4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+aWN1Lmxhbmc6PC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+VUNoYXJhY3RlciwgVUNoYXJhY3RlckNhdGVnb3J5LCBVQ2hhcmFjdGVyRGlyZWN0aW9uLCBVQ2hhcmFjdGVyTmFtZUl0ZXJhdG9yLAogICAgICAgIFVDaGFyYWN0ZXJUeXBlSXRlcmF0b3IsIFVQcm9wZXJ0eSwgVVNjcmlwdAogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubWF0aDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj48Yj5CaWdEZWNpbWFsPC9iPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudGV4dDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5CcmVha0l0ZXJhdG9yLCA8Yj5DaGluZXNlRGF0ZUZvcm1hdDwvYj4sIDxiPkNoaW5lc2VEYXRlRm9ybWF0U3ltYm9sczwvYj4sCiAgICAgICAgICAgIDxiPkRhdGVGb3JtYXQ8L2I+LCA8Yj5EYXRlRm9ybWF0U3ltYm9sczwvYj4sIDxiPkRlY2ltYWxGb3JtYXQ8L2I+LCA8Yj5EZWNpbWFsRm9ybWF0U3ltYm9sczwvYj4sCiAgICAgICAgTm9ybWFsaXplciwgTnVtYmVyRm9ybWF0LCBSZXBsYWNlYWJsZSwgUmVwbGFjZWFibGVTdHJpbmcsIDxiPlNpbXBsZURhdGVGb3JtYXQ8L2I+LCAKICAgICAgICA8Yj5VQ2hhcmFjdGVySXRlcmF0b3I8L2I+LCA8Yj5VRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yPC9iPiwgVW5pY29kZUZpbHRlciwgVW5pY29kZU1hdGNoZXIsCiAgICAgICAgVW5pY29kZVNldCwgVW5pY29kZVNldEl0ZXJhdG9yLCBVVEYxNgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudXRpbDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj48Yj5CdWRkaGlzdENhbGVuZGFyPC9iPiwgPGI+Q2FsZW5kYXI8L2I+LCA8Yj5DYWxlbmRhckFzdHJvbm9tZXI8L2I+LCAKICAgICAgICA8Yj5DYWxlbmRhckNhY2hlPC9iPiwgPGI+Q2FsZW5kYXJGYWN0b3J5PC9iPiwgPGI+Q2hpbmVzZUNhbGVuZGFyPC9iPiwgPGI+Q3VycmVuY3k8L2I+LCAKICAgICAgICA8Yj5EYXRlUnVsZTwvYj4sIDxiPkVhc3RlckhvbGlkYXk8L2I+LCA8Yj5FYXN0ZXJSdWxlPC9iPiwgPGI+R3JlZ29yaWFuQ2FsZW5kYXI8L2I+LCAKICAgICAgICA8Yj5IZWJyZXdDYWxlbmRhcjwvYj4sIDxiPkhlYnJld0hvbGlkYXk8L2I+LCA8Yj5Ib2xpZGF5PC9iPiwgPGI+SXNsYW1pY0NhbGVuZGFyPC9iPiwgCiAgICAgICAgPGI+SmFwYW5lc2VDYWxlbmRhcjwvYj4sIDxiPlJhbmdlRGF0ZVJ1bGU8L2I+LCA8Yj5TaW1wbGVEYXRlUnVsZTwvYj4sIDxiPlNpbXBsZUhvbGlkYXk8L2I+LCAKICAgICAgICA8Yj5TaW1wbGVUaW1lWm9uZTwvYj4sIDxiPlNpbXBsZVRpbWVab25lQWRhcHRlcjwvYj4sIDxiPlRpbWVab25lPC9iPiwgPGI+VGltZVpvbmVEYXRhPC9iPiwKICAgICAgICBWYWx1ZUl0ZXJhdG9yLCBWZXJzaW9uSW5mbwogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CjwvdGQ+CjwvdHI+Cjx0cj4KICAgICAgICA8dGggYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPkJyZWFrSXRlcmF0b3I8L3RoPgogICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+YnJlYWtJdGVyYXRvciwgYnJlYWtJdGVyYXRvclRlc3RzPC90ZD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPmNvbS5pYm0uaWN1LmRldi50ZXN0LmJyZWFraXRlcmF0b3I8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiPjEsMjkwJm5ic3A7S0I8L3RkPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCB2YWxpZ249InRvcCIgY29sc3Bhbj0iNCI+CiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubGFuZzo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5VQ2hhcmFjdGVyLCBVQ2hhcmFjdGVyQ2F0ZWdvcnksIFVDaGFyYWN0ZXJEaXJlY3Rpb24sCiAgICAgICAgVUNoYXJhY3Rlck5hbWVJdGVyYXRvciwgVUNoYXJhY3RlclR5cGVJdGVyYXRvciwgVVByb3BlcnR5LCBVU2NyaXB0CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS50ZXh0OjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPjxiPkJyZWFrRGljdGlvbmFyeTwvYj4sIDxiPkJyZWFrSXRlcmF0b3I8L2I+LCA8Yj5CcmVha0l0ZXJhdG9yRmFjdG9yeTwvYj4sIAogICAgICAgIDxiPkRpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3I8L2I+LCBOb3JtYWxpemVyLCBSZXBsYWNlYWJsZSwgUmVwbGFjZWFibGVTdHJpbmcsCiAgICAgICAgPGI+dGV4dC5SdWxlQmFzZWRCcmVha0l0ZXJhdG9yPC9iPiwgVUNoYXJhY3Rlckl0ZXJhdG9yLCBVRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yLAogICAgICAgIFVuaWNvZGVGaWx0ZXIsIFVuaWNvZGVNYXRjaGVyLCBVbmljb2RlU2V0LCBVbmljb2RlU2V0SXRlcmF0b3IsIFVURjE2CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS51dGlsOjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPlJhbmdlVmFsdWVJdGVyYXRvciwgVmFsdWVJdGVyYXRvciwgVmVyc2lvbkluZm8KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgICAgICA8L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+CiAgICAgICAgPHRoIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj5CYXNpYyBQcm9wZXJ0aWVzPC90aD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPnByb3BlcnRpZXNCYXNpYywgcHJvcGVydGllc0Jhc2ljVGVzdHM8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+Y29tLmlibS5pY3UuZGV2LnRlc3QubGFuZzwvdGQ+CiAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSI+NTAwJm5ic3A7S0I8L3RkPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCB2YWxpZ249InRvcCIgY29sc3Bhbj0iNCI+CiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubGFuZzo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj48Yj5VQ2hhcmFjdGVyPC9iPiwgPGI+VUNoYXJhY3RlckNhdGVnb3J5PC9iPiwgPGI+VUNoYXJhY3RlckRpcmVjdGlvbjwvYj4sIAogICAgICAgIDxiPlVDaGFyYWN0ZXJOYW1lSXRlcmF0b3I8L2I+LCA8Yj5VQ2hhcmFjdGVyVHlwZUl0ZXJhdG9yPC9iPiwgPGI+VVByb3BlcnR5PC9iPiwgPGI+VVNjcmlwdDwvYj4sIAogICAgICAgIDxiPlVTY3JpcHRSdW48L2I+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS50ZXh0OjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPkJyZWFrRGljdGlvbmFyeSwgQnJlYWtJdGVyYXRvciwgQnJlYWtJdGVyYXRvckZhY3RvcnksIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IsCiAgICAgICAgTm9ybWFsaXplciwgUmVwbGFjZWFibGUsIFJlcGxhY2VhYmxlU3RyaW5nLCBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLCBTeW1ib2xUYWJsZSwgVUNoYXJhY3Rlckl0ZXJhdG9yLAogICAgICAgIFVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3IsIFVuaWNvZGVGaWx0ZXIsIFVuaWNvZGVNYXRjaGVyLCBVbmljb2RlU2V0LCBVbmljb2RlU2V0SXRlcmF0b3IsIDxiPlVURjE2PC9iPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudXRpbDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5Db21wYWN0Qnl0ZUFycmF5LCBSYW5nZVZhbHVlSXRlcmF0b3IsIFZhbHVlSXRlcmF0b3IsIFZlcnNpb25JbmZvCiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KPC90ZD4KPC90cj4KPHRyPgogICAgICAgIDx0aCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+RnVsbCBQcm9wZXJ0aWVzPC90aD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPnByb3BlcnRpZXNGdWxsLCBwcm9wZXJ0aWVzRnVsbFRlc3RzPC90ZD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPmNvbS5pYm0uaWN1LmRldi50ZXN0Lmxhbmc8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiPjEsMjQwJm5ic3A7S0I8L3RkPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCB2YWxpZ249InRvcCIgY29sc3Bhbj0iNCI+CiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubGFuZzo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj48Yj5VQ2hhcmFjdGVyPC9iPiwgPGI+VUNoYXJhY3RlckNhdGVnb3J5PC9iPiwgPGI+VUNoYXJhY3RlckRpcmVjdGlvbjwvYj4sIAogICAgICAgIDxiPlVDaGFyYWN0ZXJOYW1lSXRlcmF0b3I8L2I+LCA8Yj5VQ2hhcmFjdGVyVHlwZUl0ZXJhdG9yPC9iPiwgPGI+VVByb3BlcnR5PC9iPiwgPGI+VVNjcmlwdDwvYj4sIAogICAgICAgIDxiPlVTY3JpcHRSdW48L2I+CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS50ZXh0OjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPkJyZWFrRGljdGlvbmFyeSwgQnJlYWtJdGVyYXRvciwgQnJlYWtJdGVyYXRvckZhY3RvcnksIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IsCiAgICAgICAgPGI+Tm9ybWFsaXplcjwvYj4sIDxiPlJlcGxhY2VhYmxlPC9iPiwgPGI+UmVwbGFjZWFibGVTdHJpbmc8L2I+LCBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLAogICAgICAgIDxiPlVDaGFyYWN0ZXJJdGVyYXRvcjwvYj4sIDxiPlVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3I8L2I+LCA8Yj5Vbmljb2RlRmlsdGVyPC9iPiwgPGI+VW5pY29kZU1hdGNoZXI8L2I+LCAKICAgICAgICA8Yj5Vbmljb2RlU2V0PC9iPiwgPGI+VW5pY29kZVNldEl0ZXJhdG9yPC9iPiwgPGI+VVRGMTY8Yj4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+aWN1LnV0aWw6PC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+PGI+UmFuZ2VWYWx1ZUl0ZXJhdG9yPC9iPiwgPGI+VmFsdWVJdGVyYXRvcjwvYj4sIDxiPlZlcnNpb25JbmZvPC9iPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CjwvdGQ+CjwvdHI+Cjx0cj4KICAgICAgICA8dGggYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPkZvcm1hdHRpbmc8L3RoPgogICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+Zm9ybWF0LCBmb3JtYXRUZXN0czwvdGQ+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj5jb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHZhbGlnbj0iYmFzZWxpbmUiPjIsMjA4Jm5ic3A7S0I8L3RkPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCB2YWxpZ249InRvcCIgY29sc3Bhbj0iNCI+CiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubGFuZzo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5VQ2hhcmFjdGVyLCBVQ2hhcmFjdGVyQ2F0ZWdvcnksIFVDaGFyYWN0ZXJEaXJlY3Rpb24sIFVDaGFyYWN0ZXJOYW1lSXRlcmF0b3IsCiAgICAgICAgVUNoYXJhY3RlclR5cGVJdGVyYXRvciwgVVByb3BlcnR5LCBVU2NyaXB0CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS5tYXRoOjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPjxiPm1hdGguQmlnRGVjaW1hbDwvYj4KICAgICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+aWN1LnRleHQ6PC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+QnJlYWtJdGVyYXRvciwgQ2Fub25pY2FsSXRlcmF0b3IsIENoaW5lc2VEYXRlRm9ybWF0LCBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMsCiAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLCBDb2xsYXRpb25LZXksIENvbGxhdGlvblBhcnNlZFJ1bGVCdWlsZGVyLCBDb2xsYXRpb25SdWxlUGFyc2VyLCBDb2xsYXRvciwgCiAgICAgICAgQ29sbGF0b3JSZWFkZXIsIDxiPkRhdGVGb3JtYXQ8L2I+LCA8Yj5EYXRlRm9ybWF0U3ltYm9sczwvYj4sIDxiPkRlY2ltYWxGb3JtYXQ8L2I+LCA8Yj5EZWNpbWFsRm9ybWF0U3ltYm9sczwvYj4sCiAgICAgICAgTm9ybWFsaXplciwgPGI+TnVtYmVyRm9ybWF0PC9iPiwgUmVwbGFjZWFibGUsIFJlcGxhY2VhYmxlU3RyaW5nLCBSdWxlQmFzZWRDb2xsYXRvciwgCiAgICAgICAgPGI+UnVsZUJhc2VkTnVtYmVyRm9ybWF0PC9iPiwgPGI+U2ltcGxlRGF0ZUZvcm1hdDwvYj4sIDxiPlVDaGFyYWN0ZXJJdGVyYXRvcjwvYj4sIAogICAgICAgIDxiPlVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3I8L2I+LCBVbmljb2RlRmlsdGVyLCBVbmljb2RlTWF0Y2hlciwgVW5pY29kZVNldCwgVW5pY29kZVNldEl0ZXJhdG9yLCBVVEYxNgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudXRpbDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj48Yj5DYWxlbmRhcjwvYj4sIDxiPkNhbGVuZGFyQXN0cm9ub21lcjwvYj4sIDxiPkNhbGVuZGFyQ2FjaGU8L2I+LCA8Yj5DYWxlbmRhckZhY3Rvcnk8L2I+LCAKICAgICAgICA8Yj5DaGluZXNlQ2FsZW5kYXI8L2I+LCA8Yj5DdXJyZW5jeTwvYj4sIDxiPkdyZWdvcmlhbkNhbGVuZGFyPC9iPiwgPGI+UmFuZ2VWYWx1ZUl0ZXJhdG9yPC9iPiwgCiAgICAgICAgPGI+U2ltcGxlVGltZVpvbmU8L2I+LCA8Yj5TaW1wbGVUaW1lWm9uZUFkYXB0ZXI8L2I+LCA8Yj5UaW1lWm9uZTwvYj4sIDxiPlRpbWVab25lRGF0YTwvYj4sCiAgICAgICAgICAgICAgICBWYWx1ZUl0ZXJhdG9yLFZlcnNpb25JbmZvCiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KPC90ZD4KPC90cj4KPHRyPgogICAgICAgIDx0aCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+U3RyaW5nUHJlcCwgSUROQTwvdGg+CiAgICAgICAgPHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj5zdHJpbmdQcmVwLCBzdHJpbmdQcmVwVGVzdHM8L3RkPgogICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+Y29tLmlibS5pY3UuZGV2LnRlc3Quc3RyaW5ncHJlcDwvdGQ+CiAgICAgICAgPHRkIGFsaWduPSJyaWdodCIgdmFsaWduPSJiYXNlbGluZSI+NDQ4Jm5ic3A7S0I8L3RkPgo8L3RyPgo8dHIgYmdjb2xvcj0iI0ZGRkZGRiI+Cjx0ZCB2YWxpZ249InRvcCIgY29sc3Bhbj0iNCI+CiAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UubGFuZzo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5VQ2hhcmFjdGVyLCBVQ2hhcmFjdGVyQ2F0ZWdvcnksIFVDaGFyYWN0ZXJEaXJlY3Rpb24sIFVDaGFyYWN0ZXJOYW1lSXRlcmF0b3IsCiAgICAgICAgVUNoYXJhY3RlclR5cGVJdGVyYXRvciwgVVByb3BlcnR5LCBVU2NyaXB0CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudGV4dDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5CcmVha0l0ZXJhdG9yLCBDYW5vbmljYWxJdGVyYXRvciwgPGI+SUROQTwvYj4sIE5vcm1hbGl6ZXIsIFJlcGxhY2VhYmxlLCBSZXBsYWNlYWJsZVN0cmluZywKICAgICAgICA8Yj5TdHJpbmdQcmVwPC9iPiwgPGI+U3RyaW5nUGFyc2VFeGNlcHRpb248L2I+LCBVQ2hhcmFjdGVySXRlcmF0b3IsIFVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3IsIFVuaWNvZGVTZXQsIFVURjE2CiAgICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPmljdS51dGlsOjwvdGQ+CiAgICAgICAgPHRkIHZhbGlnbj0iYmFzZWxpbmUiPiBSYW5nZVZhbHVlSXRlcmF0b3IsIFN0cmluZ1Rva2VuaXplciwgVUxvY2FsZSwgVVJlc291cmNlQnVuZGxlCiAgICAgICAgVmFsdWVJdGVyYXRvcixWZXJzaW9uSW5mbwogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CjwvdGQ+CjwvdHI+Cgo8dHI+CiAgICAgICAgPHRoIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj5UcmFuc2Zvcm1zPC90aD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPnRyYW5zbGl0ZXJhdG9yLCB0cmFuc2xpdGVyYXRvclRlc3RzPC90ZD4KICAgICAgICA8dGQgYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPmNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0PC90ZD4KICAgICAgICA8dGQgYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIj4xLDQ4MiZuYnNwO0tCPC90ZD4KPC90cj4KPHRyIGJnY29sb3I9IiNGRkZGRkYiPgo8dGQgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjQiPgogICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI1Ij4KICAgIDx0cj4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+aWN1Lmxhbmc6PC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+PGI+VUNoYXJhY3RlcjwvYj4sIDxiPlVDaGFyYWN0ZXJDYXRlZ29yeTwvYj4sIAogICAgICAgIDxiPlVDaGFyYWN0ZXJEaXJlY3Rpb248L2I+LCA8Yj5VQ2hhcmFjdGVyTmFtZUl0ZXJhdG9yPC9iPiwgCiAgICAgICAgPGI+VUNoYXJhY3RlclR5cGVJdGVyYXRvcjwvYj4sIDxiPlVQcm9wZXJ0eTwvYj4sIDxiPlVTY3JpcHQ8L2I+LCAKICAgICAgICA8Yj5VU2NyaXB0UnVuPC9iPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj5pY3UudGV4dDo8L3RkPgogICAgICAgIDx0ZCB2YWxpZ249ImJhc2VsaW5lIj48Yj5BbnlUcmFuc2xpdGVyYXRvcjwvYj4sIDxiPkJyZWFrRGljdGlvbmFyeTwvYj4sIAogICAgICAgIDxiPkJyZWFrSXRlcmF0b3I8L2I+LCA8Yj5CcmVha0l0ZXJhdG9yRmFjdG9yeTwvYj4sIDxiPkJyZWFrVHJhbnNsaXRlcmF0b3I8L2I+LCAKICAgICAgICA8Yj5EaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yPC9iPiwgPGI+Tm9ybWFsaXplcjwvYj4sIDxiPlJlcGxhY2VhYmxlPC9iPiwgCiAgICAgICAgPGI+UmVwbGFjZWFibGVTdHJpbmc8L2I+LCA8Yj5SdWxlQmFzZWRCcmVha0l0ZXJhdG9yPC9iPiwgPGI+U3RyaW5nUmVwbGFjZXI8L2I+LCAKICAgICAgICA8Yj5UcmFuc2xpdGVyYXRvcjwvYj4sIDxiPlVDaGFyYWN0ZXJJdGVyYXRvcjwvYj4sIDxiPlVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3I8L2I+LCAKICAgICAgICA8Yj5Vbmljb2RlU2V0PC9iPiwgPGI+VW5pY29kZVNldEl0ZXJhdG9yPC9iPiwgPGI+VVRGMTY8L2I+CiAgICAgICAgPHRkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+aWN1LnV0aWw6PC90ZD4KICAgICAgICA8dGQgdmFsaWduPSJiYXNlbGluZSI+PGI+UmFuZ2VWYWx1ZUl0ZXJhdG9yPC9iPiwgPGI+VmFsdWVJdGVyYXRvcjwvYj4sIAogICAgICAgIDxiPlZlcnNpb25JbmZvPC9iPgogICAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CjwvdGQ+CjwvdHI+CjwhLS0gdHI+CiAgICAgICAgPHRoIGFsaWduPSJsZWZ0IiB2YWxpZ249ImJhc2VsaW5lIj48Yj5Nb2R1bGUgTmFtZTwvYj48L3RoPgogICAgICAgIDx0aCBhbGlnbj0ibGVmdCIgdmFsaWduPSJiYXNlbGluZSI+PGI+QW50IFRhcmdldHM8L2I+PC90aD4KICAgICAgICA8dGggYWxpZ249ImxlZnQiIHZhbGlnbj0iYmFzZWxpbmUiPjxiPlRlc3QgUGFja2FnZSBTdXBwb3J0ZWQ8L2I+PC90aD4KICAgICAgICA8dGggYWxpZ249InJpZ2h0IiB2YWxpZ249ImJhc2VsaW5lIj48Yj5TaXplPC9iPjwvdGg+CjwvdHIgLS0+CjwvdGFibGU+CjwvcD4KCjxwPkJ1aWxkaW5nIGFueSBvZiB0aGVzZSBtb2R1bGVzIGlzIGFzIGVhc3kgYXMgc3BlY2lmeWluZyBhIGJ1aWxkIHRhcmdldCB0byB0aGUgQW50IGJ1aWxkIHN5c3RlbSwgZS5nOgo8YnI+VG8gYnVpbGQgYSBtb2R1bGUgdGhhdCBjb250YWlucyBvbmx5IHRoZSBOb3JtYWxpemVyIEFQSToKICAgIDxvbD4KICAgICAgICA8bGk+IEJ1aWxkIHRoZSBtb2R1bGUuIDxicj4gPGNvZGU+IGFudCBub3JtYWxpemVyIDwvY29kZT4gPC9saT4KICAgICAgICA8bGk+IEJ1aWxkIHRoZSBqYXIgY29udGFpbmluZyB0aGUgbW9kdWxlLiA8YnI+IDxjb2RlPmFudCBtb2R1bGVKYXIgPC9jb2RlPgogICAgICAgIDxsaT4gQnVpbGQgdGhlIHRlc3RzIGZvciB0aGUgbW9kdWxlLiA8YnI+IDxjb2RlPiBhbnQgbm9ybWFsaXplclRlc3RzIDwvY29kZT4gPC9saT4KICAgICAgICA8bGk+IFJ1biB0aGUgdGVzdHMgYW5kIHZlcmlmeSB0aGF0IHRoZSBzZWxmIHRlc3RzIHBhc3MuIDxicj4gPGNvZGU+IGphdmEgLWNsYXNzcGF0aCAkaWN1NGpfcm9vdC9jbGFzc2VzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RBbGwgLW5vdGhyb3cgLXcgPC9jb2RlPgogICAgIDwvb2w+CgpJZiBtb3JlIHRoYW4gb25lIG1vZHVsZSBpcyByZXF1aXJlZCwgdGhlIG1vZHVsZSBidWlsZCB0YXJnZXRzIGNhbiBiZSBjb25jYXRlbmF0ZWQsIGUuZzoKICAgIDxvbD4KICAgICAgICA8bGk+IEJ1aWxkIHRoZSBtb2R1bGVzLiA8YnI+IDxjb2RlPiBhbnQgbm9ybWFsaXplciBjb2xsYXRvciA8L2NvZGU+IDwvbGk+CiAgICAgICAgPGxpPiBCdWlsZCB0aGUgamFyIGNvbnRhaW5pbmcgdGhlIG1vZHVsZXMuIDxicj4gPGNvZGU+YW50IG1vZHVsZUphciA8L2NvZGU+CiAgICAgICAgPGxpPiBCdWlsZCB0aGUgdGVzdHMgZm9yIHRoZSBtb2R1bGUuIDxicj4gPGNvZGU+IGFudCBub3JtYWxpemVyVGVzdHMgY29sbGF0b3JUZXN0cyA8L2NvZGU+IDwvbGk+CiAgICAgICAgPGxpPiBSdW4gdGhlIHRlc3RzIGFuZCB2ZXJpZnkgdGhhdCB0aGV5IHBhc3MuIDxicj4gPGNvZGU+IGphdmEgLWNsYXNzcGF0aCAkaWN1NGpfcm9vdC9jbGFzc2VzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RBbGwgLW5vdGhyb3cgLXcgPC9jb2RlPgogICAgIDwvb2w+ClRoZSBqYXIgc2hvdWxkIGJlIGJ1aWx0IGJlZm9yZSB0aGUgdGVzdHMsIHNpbmNlIGZvciBzb21lIHRhcmdldHMgYnVpbGRpbmcgdGhlIHRlc3RzIHdpbGwgY2F1c2UgYWRkaXRpb25hbCBjbGFzc2VzIHRvIGJlIGNvbXBpbGVkIHRoYXQgYXJlIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgZm9yIHRoZSBtb2R1bGUgaXRzZWxmLgo8L3A+CjxoNT4gTm90ZXM6IDwvaDU+Cjx1bD4KICAgIDxsaT5SZWdhcmRsZXNzIG9mIHdoZXRoZXIgSUNVNEogaXMgYnVpbHQgYXMgYSB3aG9sZSBvciBhcyBtb2R1bGVzLCB0aGUgamFyIGZpbGUgcHJvZHVjZWQgaXMgbmFtZWQgPGVtPmljdTRqLmphcjwvZW0+LjwvbGk+CiAgICA8bGk+VG8gYXNjZXJ0YWluIGlmIGFuIGljdTRqLmphciBjb250YWlucyBhbGwgb2YgSUNVNEogb3Igbm90LCBwbGVhc2Ugc2VlIHRoZSBtYW5pZmVzdCBmaWxlIGluIHRoZSBqYXI8L2xpPgogICAgPGxpPlRoZSB0YXJnZXQgbW9kdWxlSmFyIGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgb3RoZXIgdGFyZ2V0LiBJdCBqdXN0IGNyZWF0ZXMgYSBqYXIgb2YgYWxsIGNsYXNzIGZpbGVzIHVuZGVyCiAgICAgICAgJGljdTRqX3Jvb3QvY2xhc3Nlcy9jb20vaWJtL2ljdS8sIGV4Y2x1ZGluZyB0aGUgY2xhc3NzIGZpbGVzIGluICRpY3U0al9yb290L2NsYXNzZXMvY29tL2libS9pY3UvZGV2IGZvbGRlcjwvbGk+CiAgICA8bGk+VGhlIGxpc3Qgb2YgbW9kdWxlIGJ1aWxkIHRhcmdldHMgY2FuIGJlIG9idGFpbmVkIGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQgOiA8Y29kZT4gYW50IC1wcm9qZWN0aGVscCA8L2NvZGU+IDwvbGk+CjwvdWw+Cgo8aDMgY2xhc3M9ImRvYyI+PGEgbmFtZT0idHJ5aW5nb3V0Ij48L2E+VHJ5aW5nIE91dCBJQ1U0SjwvaDM+Cgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IHRoZSBkZW1vcyBwcm92aWRlZCB3aXRoIElDVTRKIGFyZSBmb3IgdGhlCm1vc3QgcGFydCB1bmRvY3VtZW50ZWQuICBUaGlzIGxpc3QgY2FuIHNob3cgeW91IHdoZXJlIHRvIGxvb2ssIGJ1dCB5b3UnbGwKaGF2ZSB0byBleHBlcmltZW50IGEgYml0LiAgVGhlIGRlbW9zICh3aXRoIHRoZQpleGNlcHRpb24gb2YgcmljaGVkaXQpIGFyZSA8c3Ryb25nPnVuc3VwcG9ydGVkPC9zdHJvbmc+IGFuZCBtYXkgY2hhbmdlCm9yIGRpc2FwcGVhciB3aXRob3V0IG5vdGljZS48L3A+CjxwPlRoZSBpY3U0ai5qYXIgZmlsZSBjb250YWlucyBvbmx5IHRoZSBjb3JlIElDVTRKIGNsYXNzZXMsIG5vdCB0aGUKZGVtbyBjbGFzc2VzLCBzbyB1bmxlc3MgeW91IGJ1aWxkIElDVTRKIHRoZXJlIGlzIGxpdHRsZSB0byB0cnkgb3V0LgoKPGg0PlJpY2ggRWRpdDwvaDQ+ClRvIHRyeSBvdXQgdGhlIDxzdHJvbmc+cmljaGVkaXQ8L3N0cm9uZz4gcGFja2FnZSwgZmlyc3QgYnVpbGQgdGhlIHJpY2hlZGl0SmFyIHRhcmdldC4KVGhpcyBpcyBhICdydW5uYWJsZScgamFyIGZpbGUuICBUbyBydW4gdGhlIHJpY2hlZGl0IGRlbW8sIHR5cGU6Cjx0dD48YmxvY2txdW90ZT4gIGphdmEgLWphciAkUm9vdC9yaWNoZWRpdC9yaWNoZWRpdC5qYXI8L2Jsb2NrcXVvdGU+PC90dD4KClRoaXMgd2lsbCBwcmVzZW50IGFuIGVtcHR5IGVkaXQgcGFuZSB3aXRoIGFuIGF3dCBpbnRlcmZhY2UuPC9wPgoKPHA+V2l0aCBhIGZ1bGxlciBjb21tYW5kIGxpbmUgeW91IGNhbiB0cnkgb3V0IG90aGVyIG9wdGlvbnMsIGZvciBleGFtcGxlOgo8dHQ+PGJsb2NrcXVvdGU+ICAgamF2YSAtY2xhc3NwYXRoICRSb290L3JpY2hlZGl0L3JpY2hlZGl0LmphciBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdERlbW8gWy1zd2luZ11bZmlsZV08L2Jsb2NrcXVvdGU+PC90dD4KVGhpcyB3aWxsIHVzZSBhbiBhd3QgR1VJLCBvciBhIHN3aW5nIEdVSSBpZgo8dHQ+LXN3aW5nPC90dD4gaXMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuICBJdCB3aWxsIG9wZW4gYSB0ZXh0CmZpbGUgaWYgb25lIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgaXQgd2lsbCBvcGVuIGEgYmxhbmsgcGFnZS4gIENsaWNrCnRvIHR5cGUuPC9wPgo8cD4KWW91IGNhbiBhZGQgdGFicyB0byB0aGUgdGFiIHJ1bGVyIGJ5IGNsaWNraW5nIGluIHRoZSBydWxlciB3aGlsZSBob2xkaW5nIGRvd24gdGhlIGNvbnRyb2wga2V5LgpDbGlja2luZyBvbiBhbiBleGlzdGluZyB0YWIgY2hhbmdlcyBiZXR3ZWVuIGxlZnQsIHJpZ2h0LCBjZW50ZXIsIGFuZCBkZWNpbWFsIHRhYnMuICBEcmFnZ2luZwphIHRhYiBtb3ZlcyBpdCwgZHJhZ2dpbmcgaXQgb2ZmIHRoZSBydWxlciByZW1vdmVzIGl0LjwvcD4KPHA+CllvdSBjYW4gZXhwZXJpbWVudCB3aXRoIGNvbXBsZXggdGV4dCBieSB1c2luZyB0aGUga2V5bWFwIGZ1bmN0aW9ucy4KUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBhcmUgbWFpbmx5IGZvciBkZW1vIHB1cnBvc2VzLCBmb3IgcmVhbCB3b3JrCndpdGggQXJhYmljIG9yIEhlYnJldyB5b3Ugd2lsbCB3YW50IHRvIHVzZSBhbiBpbnB1dCBtZXRob2QuICBZb3Ugd2lsbApuZWVkIHRvIHVzZSBhIGZvbnQgdGhhdCBzdXBwb3J0cyBBcmFiaWMgb3IgSGVicmV3LCAnTHVjaWRhIFNhbnMnIChwcm92aWRlZAp3aXRoIEphdmEpIHN1cHBvcnRzIHRoZXNlIGxhbmd1YWdlcy48L3A+Cgo8aDQ+T3RoZXIgZGVtb3M8L2g0Pgo8cD5UaGUgb3RoZXIgZGVtbyBwcm9ncmFtcyBhcmUgPHN0cm9uZz5ub3Qgc3VwcG9ydGVkPC9zdHJvbmc+IGFuZCBleGlzdCBvbmx5IHRvIGxldCB5b3UKZXhwZXJpbWVudCB3aXRoIHRoZSBJQ1U0SiBjbGFzc2VzLiAgRmlyc3QsIGJ1aWxkIElDVTRKIHVzaW5nIDx0dD5hbnQmbmJzcDthbGw8L3R0Pi4gIFRoZW4gdHJ5Cm9uZSBvZiB0aGUgZm9sbG93aW5nOgo8dWw+CjxsaT48dHQ+amF2YSAtY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS5pY3UuZGV2LmRlbW8uY2FsZW5kYXIuQ2FsZW5kYXJBcHA8L3R0Pgo8bGk+PHR0PmphdmEgLWNsYXNzcGF0aCBjbGFzc2VzIGNvbS5pYm0uaWN1LmRldi5kZW1vLmhvbGlkYXkuSG9saWRheUNhbGVuZGFyRGVtbzwvdHQ+CjxsaT48dHQ+amF2YSAtY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS5pY3UuZGV2LmRlbW8ucmJiaS5UZXh0Qm91bmREZW1vPC90dD48YnI+KENsaWNrIGluIHRoZSB0ZXh0LCB0aGVuIHVzZSA8dHQ+Y3RybC1OPC90dD4gYW5kIDx0dD5jdHJsLVA8L3R0PiB0byBzZWxlY3QgdGhlIG5leHQgb3IgcHJldmlvdXMgYmxvY2sgb2YgdGV4dC4pCjxsaT48dHQ+amF2YSAtY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS5pY3UuZGV2LmRlbW8ucmJuZi5SYm5mRGVtbzwvdHQ+CjxsaT48dHQ+amF2YSAtY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS5pY3UuZGV2LmRlbW8udHJhbnNsaXQuRGVtbzwvdHQ+CjwvdWw+CjwvcD4KCjxoMyBjbGFzcz0iZG9jIj48YSBuYW1lPSJyZXNvdXJjZXMiPklDVTRKIFJlc291cmNlIEluZm9ybWF0aW9uPC9hPjwvaDM+ClN0YXJ0aW5nIHdpdGggcmVsZWFzZSAyLjEsIElDVTRKIGluY2x1ZGVzIGl0cyBvd24KcmVzb3VyY2UgaW5mb3JtYXRpb24Kd2hpY2ggaXMgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgSkRLIHJlc291cmNlIGluZm9ybWF0aW9uLiAgVGhlCm5ldyBJQ1U0SiBpbmZvcm1hdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBpbmZvcm1hdGlvbiBpbiBJQ1U0QyBhbmQgbWFueQpyZXNvdXJjZXMgYXJlLCBpbiBmYWN0LCB0aGUgc2FtZSBiaW5hcnkgZmlsZXMgdGhhdCBJQ1U0QyB1c2VzLgo8L3A+CjxwPgpCeSBkZWZhdWx0IHRoZSBJQ1U0SiBkaXN0cmlidXRpb24gaW5jbHVkZXMgYWxsIG9mIHRoZSBzdGFuZGFyZCByZXNvdXJjZQppbmZvcm1hdGlvbi4gIEl0IGlzIGxvY2F0ZWQgdW5kZXIgdGhlIGRpcmVjdG9yeSBjb20vaWJtL2ljdS9pbXBsL2RhdGEuICAKRGVwZW5kaW5nIG9uIHRoZSBzZXJ2aWNlLCB0aGUgZGF0YSBpcyBpbiBkaWZmZXJlbnQgbG9jYXRpb25zIGFuZCBpbgpkaWZmZXJlbnQgZm9ybWF0cy4gPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIHdpbGwgY29udGludWUgdG8gY2hhbmdlIApmcm9tIHJlbGVhc2UgdG8gcmVsZWFzZSwgc28gY2xpZW50cyBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgZXhhY3Qgb3JnYW5pemF0aW9uCm9mIHRoZSBkYXRhIGluIElDVTRKLjwvcD4KCjx1bD4KPGxpPlRoZSBwcmltYXJ5IDxiPmxvY2FsZSBkYXRhPC9iPiBpcyB1bmRlciB0aGUgZGlyZWN0b3J5Cjx0dD5pY3VkdDMwYjwvdHQ+LCBhcyBhIHNldCBvZiA8dHQ+Ii5yZXMiPC90dD4gZmlsZXMgd2hvc2UgbmFtZXMgYXJlCnRoZSBsb2NhbGUgaWRlbnRpZmllcnMuIExvY2FsZSBuYW1pbmcgaXMgZG9jdW1lbnRlZCB0aGUKPGNvZGU+Y29tLmlibS5pY3UudXRpbC5VTG9jYWxlPC9jb2RlPiBjbGFzcywgYW5kIHRoZSB1c2Ugb2YgdGhlc2UKbmFtZXMgaW4gc2VhcmNoaW5nIGZvciByZXNvdXJjZXMgaXMgZG9jdW1lbnRlZCBpbgo8Y29kZT5qYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU8L2NvZGU+LiAgCjxsaT5UaGUgPGI+Y29sbGF0aW9uIGRhdGE8L2I+IGlzIHVuZGVyIHRoZSBkaXJlY3RvcnkKPHR0PmljdWR0MzBiL2NvbGw8L3R0PiwgYWxzbyBhcyBhIHNldCBvZiA8dHQ+Ii5yZXMiPC90dD4gZmlsZXMgbmFtZWQKYnkgbG9jYWxlIGlkZW50aWZpZXJzLiAgCjxsaT5UaGUgPGI+cnVsZS1iYXNlZCB0cmFuc2xpdGVyYXRvciBkYXRhPC9iPiBpcyBkaXJlY3RseSB1bmRlciB0aGUKPHR0PmRhdGE8L3R0PiBkaXJlY3RvcnksIGFzIGEgc2V0IG9mIDx0dD4iLnR4dCI8L3R0PiBmaWxlcyB3aG9zZSBuYW1lcwpzdGFydCB3aXRoIHRoZSBzdHJpbmcgPHR0PiJUcmFuc2xpdGVyYXRvcl8iPC90dD4gZm9sbG93ZWQgYnkgdGhlCnNvdXJjZSBhbmQgdGFyZ2V0IHRyYW5zbGl0ZXJhdG9yIElEcy4gIAo8bGk+VGhlIDxiPmJyZWFrIGl0ZXJhdG9yIGRhdGE8L2I+IGlzIGFsc28gZGlyZWN0bHkgdW5kZXIgdGhlIGRhdGEKZGlyZWN0b3J5LCBhcyBhIHNldCBvZiA8dHQ+Ii5icmsiPC90dD4gZmlsZXMsIHZhcmlvdXNseSBuYW1lZC4gIFRoZQpkZWZhdWx0IGJyZWFrIGl0ZXJhdG9yIGNsYXNzIHJlc291cmNlIGJ1bmRsZXMgYXJlIGFsc28gaGVyZS4gIAo8bGk+VGhlIDxiPmhvbGlkYXkgZGF0YTwvYj4gaXMgdW5kZXIgdGhlIDx0dD5kYXRhPC90dD4gZGlyZWN0b3J5LCBhcyBhCnNldCBvZiA8dHQ+Ii5jbGFzcyI8L3R0PiBmaWxlcywgbmFtZWQgPHR0PiJIb2xpZGF5QnVuZGxlXyI8L3R0Pgpmb2xsb3dlZCBieSB0aGUgbG9jYWxlIElELiAgCjxsaT5UaGUgPGI+Y2hhcmFjdGVyIHByb3BlcnR5IGRhdGE8L2I+IGFzIHdlbGwgYXMgYXNzb3J0ZWQKPGI+bm9ybWFsaXphdGlvbiBkYXRhPC9iPiBhbmQgZGVmYXVsdCA8Yj51bmljb2RlIGNvbGxhdGlvbiBhbGdvcml0aG0KKFVDQSkgZGF0YTwvYj4gaXMgZm91bmQgdW5kZXIgdGhlIDx0dD5kYXRhPC90dD4gZGlyZWN0b3J5IGFzIGEgc2V0IG9mCjx0dD4iLmljdSI8L3R0PiBmaWxlcywgdmFyaW91c2x5IG5hbWVkLgo8L3VsPgo8L3A+Cgo8cD4KU29tZSBvZiB0aGUgZGF0YSBmaWxlcyBhbGlhcyBvciBvdGhlcndpc2UgcmVmZXJlbmNlIGRhdGEgZnJvbSBvdGhlcgpkYXRhIGZpbGVzLiBPbmUgcmVhc29uIGZvciB0aGlzIGlzIGJlY2F1c2Ugc29tZSBsb2NhbGUgbmFtZXMgaGF2ZQpjaGFuZ2VkLiBGb3IgZXhhbXBsZSwgPHR0PmhlX0lMPC90dD4gdXNlZCB0byBiZSA8dHQ+aXdfSUw8L3R0Pi4gIEluCm9yZGVyIHRvIHN1cHBvcnQgYm90aCBuYW1lcyBidXQgbm90IGR1cGxpY2F0ZSB0aGUgZGF0YSwgb25lIG9mIHRoZQpyZXNvdXJjZSBmaWxlcyByZWZlcnMgdG8gdGhlIG90aGVyIGZpbGUncyBkYXRhLiAgSW4gb3RoZXIgY2FzZXMsIGEKZmlsZSBtYXkgYWxpYXMgYSBwb3J0aW9uIG9mIGFub3RoZXIgZmlsZSdzIGRhdGEgaW4gb3JkZXIgdG8gc2F2ZQpzcGFjZS4gIEN1cnJlbnRseSBJQ1U0SiBwcm92aWRlcyBubyB0b29sIGZvciByZXZlYWxpbmcgdGhlc2UKZGVwZW5kZW5jaWVzLjwvcD4gPGJsb2NrcXVvdGU+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBKYXZhJ3MKPGNvZGU+TG9jYWxlPC9jb2RlPiBjbGFzcyBzaWxlbnRseSBjb252ZXJ0cyB0aGUgbGFuZ3VhZ2UgY29kZQo8dHQ+ImhlIjwvdHQ+IHRvIDx0dD4iaXciPC90dD4gd2hlbiB5b3UgY29uc3RydWN0IHRoZSBMb2NhbGUuICBUaHVzCkphdmEgY2Fubm90IGJlIHVzZWQgdG8gbG9jYXRlIHJlc291cmNlcyB0aGF0IHVzZSB0aGUgPHR0PiJoZSI8L3R0PgpsYW5ndWFnZSBjb2RlLiAgSUNVLCBvbiB0aGUgb3RoZXIgaGFuZCwgZG9lcyBub3QgcGVyZm9ybSB0aGlzCmNvbnZlcnNpb24gaW4gVUxvY2FsZSwgYW5kIGluc3RlYWQgdXNlcyBhbGlhc2luZyBpbiB0aGUgbG9jYWxlIGRhdGEgdG8KcmVwcmVzZW50IHRoZSBzYW1lIHNldCBvZiBkYXRhIHVuZGVyIGRpZmZlcmVudCBsb2NhbGUKaWRzLjwvYmxvY2txdW90ZT4KPC9wPgo8cD4KUmVzb3VyY2UgZmlsZXMgdGhhdCB1c2UgbG9jYWxlIGlkcyBmb3JtIGEgaGllcmFyY2h5LCB3aXRoIHVwIHRvIGZvdXIKbGV2ZWxzOiBhIHJvb3QsIGxhbmd1YWdlLCByZWdpb24gKGNvdW50cnkpLCBhbmQgdmFyaWFudC4gIFNlYXJjaGVzIGZvcgpsb2NhbGUgZGF0YSBhdHRlbXB0IHRvIG1hdGNoIGFzIGZhciBkb3duIHRoZSBoaWVyYXJjaHkgYXMgcG9zc2libGUsCmZvciBleGFtcGxlLCA8dHQ+ImhlX0lMIjwvdHQ+IHdpbGwgbWF0Y2ggPHR0PmhlX0lMPC90dD4sIGJ1dAo8dHQ+ImhlX1VTIjwvdHQ+IHdpbGwgbWF0Y2ggPHR0PmhlPC90dD4gKHNpbmNlIHRoZXJlIGlzIG5vIDx0dD5VUzwvdHQ+CnZhcmlhbnQgZm9yIDwvdHQ+aGU8L3R0PiwgYW5kIDx0dD4ieHhfWVk8L3R0PiB3aWxsIG1hdGNoIHJvb3QgKHRoZQpkZWZhdWx0IGZhbGxiYWNrIGxvY2FsZSkgc2luY2UgdGhlcmUgaXMgbm8gPHR0Pnh4PC90dD4gbGFuZ3VhZ2UgY29kZQppbiB0aGUgbG9jYWxlIGhpZXJhcmNoeS4gIEFnYWluLCBzZWUKPGNvZGU+amF2YS51dGlsLlJlc291cmNlQnVuZGxlPC9jb2RlPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPC9wPgo8cD4KPHN0cm9uZz5DdXJyZW50bHkgSUNVNEogcHJvdmlkZXMgbm8gdG9vbCBmb3IgcmV2ZWFsaW5nIHRoZXNlCmRlcGVuZGVuY2llczwvc3Ryb25nPiBiZXR3ZWVuIGRhdGEgZmlsZXMsIHNvIHRyaW1taW5nIHRoZSBkYXRhCmRpcmVjdGx5IGluIHRoZSBJQ1U0SiBwcm9qZWN0IGlzIGEgaGl0LW9yLW1pc3MgYWZmYWlyLiAgVGhlIGtleSBwb2ludAp3aGVuIHlvdSByZW1vdmUgZGF0YSBpcyB0byBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFsbCBkZXBlbmRlbmNpZXMgb24KdGhhdCBkYXRhIGFzIHdlbGwuICBGb3IgZXhhbXBsZSwgaWYgeW91IHJlbW92ZSA8dHQ+aGUucmVzPC90dD4sIHlvdQpuZWVkIHRvIHJlbW92ZSA8dHQ+aGVfSUwucmVzPC90dD4sIHNpbmNlIGl0IGlzIGxvd2VyIGluIHRoZSBoaWVyYXJjaHksCmFuZCB5b3UgbXVzdCByZW1vdmUgaXcucmVzLCBzaW5jZSBpdCByZWZlcmVuY2VzIDx0dD5oZS5yZXM8L3R0PiwgYW5kCjx0dD5pd19JTC5yZXM8L3R0Piwgc2luY2UgaXQgZGVwZW5kcyBvbiBpdCAoYW5kIGFsc28gcmVmZXJlbmNlcwo8dHQ+aGVfSUwucmVzPC90dD4pLgo8L3A+Cgo8cD4KVW5mb3J0dW5hdGVseSwgdGhlIGphciB0b29sIGluIHRoZSBKREsgcHJvdmlkZXMgbm8gd2F5IHRvIHJlbW92ZSBpdGVtcwpmcm9tIGEgamFyIGZpbGUuICBUaHVzIHlvdSBoYXZlIHRvIGV4dHJhY3QgdGhlIHJlc291cmNlcywgcmVtb3ZlIHRoZQpvbmVzIHlvdSBkb24ndCB3YW50LCBhbmQgdGhlbiBjcmVhdGUgYSBuZXcgamFyIGZpbGUgd2l0aCB0aGUgcmVtaW5pbmcKcmVzb3VyY2VzLiAgU2VlIHRoZSBqYXIgdG9vbCBpbmZvcm1hdGlvbiBmb3IgaG93IHRvIGRvIHRoaXMuICBCZWZvcmUKJ3JlamFyaW5nJyB0aGUgZmlsZXMsIGJlIHN1cmUgdG8gdGhvcm91Z2hseSB0ZXN0IHlvdXIgYXBwbGljYXRpb24gd2l0aAp0aGUgcmVtYWluaW5nIHJlc291cmNlcywgbWFraW5nIHN1cmUgZWFjaCByZXF1aXJlZCByZXNvdXJjZSBpcwpwcmVzZW50Lgo8L3A+Cgo8aDQ+VXNpbmcgYWRkaXRpb25hbCByZXNvdXJjZSBmaWxlcyB3aXRoIElDVTRKPC9oND4KCjxibG9ja3F1b3RlPjx0YWJsZSBmcmFtZT0iYm9yZGVyIiB3aWR0aD0iNTAlIiBydWxlcz0ibm9uZSIgY2VsbHBhZGRpbmc9IjMiPjx0cj48dGQ+PGI+PGZvbnQgc2l6ZT0iKzEiIGNvbG9yPSJyZWQiPldhcm5pbmc6PC9mb250PiBSZXNvdXJjZSAKZmlsZSBmb3JtYXRzIGNhbiBjaGFuZ2UgYWNyb3NzIHJlbGVhc2VzIG9mIElDVTRKITwvYj48L3RkPjwvdHI+Cjx0cj48dGQ+VGhlIGZvcm1hdCBvZiBJQ1U0SiByZXNvdXJjZXMgaXMgbm90IHBhcnQgb2YgdGhlIEFQSS4gIENsaWVudHMgd2hvIApkZXZlbG9wIHRoZWlyIG93biByZXNvdXJjZXMgZm9yIHVzZSB3aXRoIElDVTRKIHNob3VsZCBiZSBwcmVwYXJlZCB0bwpyZWdlbmVyYXRlIHRoZW0gd2hlbiB0aGV5IG1vdmUgdG8gbmV3IHJlbGVhc2VzIG9mIElDVTRKLjwvdGQ+PC90cj48L3RhYmxlPjwvYmxvY2txdW90ZT4KCjxwPgpJQ1U0SiAzLjAncyByZXNvdXJjZSBtZWNoYW5pc20gaXMgbmV3IGZvciB0aGlzIHJlbGVhc2UgYW5kIHdlIGFyZSBzdGlsbApkZXZlbG9waW5nIGl0LiAgQ3VycmVudGx5IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBtaXggaWN1J3MgbmV3IGJpbmFyeSA8dHQ+LnJlczwvdHQ+IHJlc291cmNlcwp3aXRoIHRyYWRpdGlvbmFsIGphdmEtc3R5bGUgPHR0Pi5jbGFzczwvdHQ+IG9yIDx0dD4udHh0PC90dD4gcmVzb3VyY2VzLiAgV2UgbWlnaHQKYWxsb3cgZm9yIHRoaXMgaW4gYSBmdXR1cmUgcmVsZWFzZSwgYnV0IHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhIGFuZCBmb3JtYXQgaXMgbm90IGZvcm1hbGx5CnN1cHBvcnRlZCwgeW91IHJ1biB0aGUgcmlzayBvZiBpbmNvbXBhdGliaWxpdGllcyB3aXRoIGZ1dHVyZSByZWxlYXNlcyBvZiBJQ1U0Si4KPC9wPgo8cD4KUmVzb3VyY2UgZGF0YSBpbiBJQ1U0SiBpcyBjaGVja2VkIGluIHRvIHRoZSByZXBvc2l0b3J5IGFzIGEgamFyIGZpbGUKY29udGFpbmluZyB0aGUgcmVzb3VyY2UgYmluYXJpZXMsIDx0dD5pY3VkYXRhLmphcjwvdHQ+LiAgVGhpcwptZWFucyB0aGF0IGluc3BlY3RpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZXNlIHJlc291cmNlcyBpcyBkaWZmaWN1bHQuClRoZXkgY3VycmVudGx5IGFyZSBjb21waWxlZCBmcm9tIElDVTRDIDx0dD4udHh0PC90dD4gZmlsZSBkYXRhLiAgWW91CmNhbiB2aWV3IHRoZSBjb250ZW50cyBvZiB0aGUgSUNVNEMgdGV4dCByZXNvdXJjZSBmaWxlcyB0byB1bmRlcnN0YW5kCnRoZSBjb250ZW50cyBvZiB0aGUgSUNVNEogcmVzb3VyY2VzLgo8L3A+CjxwPgpUaGUgZmlsZXMgaW4gPHR0PmljdWRhdGEuamFyPC90dD4gZ2V0IGV4dHJhY3RlZCB0byA8dHQ+Y29tL2libS9pY3UvaW1wbC9kYXRhPC90dD4gaW4KdGhlIGJ1aWxkIGRpcmVjdG9yeSB3aGVuIHRoZSAnY29yZScgdGFyZ2V0IGlzIGJ1aWx0LiAgVGhlcmVhZnRlciwgYXMKbG9uZyBhcyB0aGUgZmlsZSA8dHQ+cmVzX2luZGV4LnJlczwvdHQ+IGZpbGUgaXMgdW50b3VjaGVkLCB0aGV5IHdpbGwKbm90IGJlIGV4dHJhY3RlZCBhZ2Fpbi4gIEJ1aWxkaW5nIHRoZSA8dHQ+J3Jlc291cmNlcyc8L3R0PiB0YXJnZXQgd2lsbCBmb3JjZSB0aGUKcmVzb3VyY2VzIHRvIG9uY2UgYWdhaW4gYmUgZXh0cmFjdGVkLiAgRXh0cmFjdGlvbiB3aWxsCm92ZXJ3cml0ZSBhbnkgY29ycmVzcG9uZGluZyByZXNvdXJjZSBmaWxlcyBhbHJlYWR5IGluIHRoYXQgZGlyZWN0b3J5Lgo8L3A+Cgo8aDQ+QnVpbGRpbmcgSUNVNEogUmVzb3VyY2VzIGZyb20gSUNVNEM8L2g0Pgo8aDU+UmVxdWlyZW1lbnRzPC9oNT4KPHVsPgogICAgPGxpPkNvbXBpbGVycyBhbmQgdG9vbHMgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9jdnMvaWN1L35jaGVja291dH4vaWN1L3JlYWRtZS5odG1sI0hvd1RvQnVpbGQiPklDVTwvYT4uPC9saT4KICAgIDxsaT5KYXZhIFNESyB2ZXJzaW9uIDEuNC4wIG9yIGFib3ZlLjwvbGk+CiAgICA8bGk+UGVybCB2ZXJzaW9uIDUgb3IgYWJvdmUuPC9saT4KPC91bD4KPGg1PiBQcm9jZWR1cmU8L2g1Pgo8b2w+CiAgICA8bGk+IERvd25sb2FkIGFuZCBidWlsZCBJQ1Ugb24gYSBXaW5kb3dzIG1hY2hpbmUuIEZvciBpbnN0cnVjdGlvbnMgb24gZG93bmxvYWRpbmcgYW5kIGJ1aWxkaW5nIElDVSwgcGxlYXNlIGNsaWNrIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9jdnMvaWN1L35jaGVja291dH4vaWN1L3JlYWRtZS5odG1sI0hvd1RvQnVpbGQiPmhlcmU8L2E+LjwvbGk+CiAgICA8bGk+IENoYW5nZSBkaXJlY3RvcnkgdG8gPGk+JGljdV9yb290PC9pPi9zb3VyY2UvdG9vbHMvZ2VucmIgIDwvbGk+CiAgICA8bGk+IExhdW5jaCBnZW5kdGphci5wbCBmcm9tIHRoYXQgZGlyZWN0b3J5IGl0c2VsZiB3aXRoIHRoZSBjb21tYW5kCiAgICA8YnI+Z2VuZHRqYXIucGwgLS1pY3Utcm9vdD08aT4kaWN1X3Jvb3Q8L2k+IC0tamFyPTxpPiRqZGtfaG9tZS9iaW48L2k+IC0taWN1NGotcm9vdD08aT4kaWN1NGpfcm9vdDwvaT4gLS12ZXJzaW9uPTxpPiRpY3VfdmVyc2lvbjwvaT4gICAgICAgICAgICAgICAgICAgICAgICAKICAgIDxicj5lLmc6IGdlbmR0amFyLnBsIC0taWN1LXJvb3Q9XHdvcmtcaWN1IC0tamFyPVxqZGsxLjQuMVxiaW4gLS1pY3U0ai1yb290PVx3b3JrXGljdTRqIC0tdmVyc2lvbj0zLjAKICAgIDxicj5FeGVjdXRpb24gb2YgZ2VuZHRqYXIucGwgc2NyaXB0IHdpbGwgY3JlYXRlIHRoZSByZXF1aXJlZCBqYXIgZmlsZXMgaW4gdGhlICRpY3Vfcm9vdFxzb3VyY2VcdG9vbHNcZ2VucmJcdGVtcCBkaXJlY3RvcnkuPC9saT4KICAgIDxsaT4gTW92ZSBpY3VkYXRhLmphciB0byA8aT4kaWN1NGpfcm9vdDwvaT4vc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YSBkaXJlY3RvcnkuPC9saT4KICAgIDxsaT4gTW92ZSB0ZXN0ZGF0YS5qYXIgdG8gPGk+JGljdTRqX3Jvb3Q8L2k+L3NyYy9jb20vaWJtL2Rldi9kYXRhIGRpcmVjdG9yeS48L2xpPgogICAgPGxpPiBCdWlsZCByZXNvdXJjZXMgdGFyZ2V0IG9mIGFudCB0byB1bnBhY2sgdGhlIGphciBmaWxlcyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZC4KICAgIDxicj48aT4kYW50X2hvbWU8L2k+L2Jpbi9hbnQgcmVzb3VyY2VzPC9saT4KPC9vbD4KIAo8aDMgY2xhc3M9ImRvYyI+PGEgbmFtZT0iV2hlcmVUb0ZpbmRNb3JlIj48L2E+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC9oMz4KCjxwPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai8iPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai88L2E+IGlzIGEKcG9pbnRlciB0byBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBJbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgaW4gSmF2YSA8L3A+Cgo8cD48YSBocmVmPSJodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyL3VuaWNvZGUiPmh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXIvdW5pY29kZTwvYT4gaXMgYSBwb2ludGVyIHRvCmluZm9ybWF0aW9uIG9uIGhvdyB0byBtYWtlIGFwcGxpY2F0aW9ucyBnbG9iYWwuIDwvcD4KCjxoMyBjbGFzcz0iZG9jIj48YSBOQU1FPSJTdWJtaXR0aW5nQ29tbWVudHMiPjwvYT5TdWJtaXR0aW5nIENvbW1lbnRzLCBSZXF1ZXN0aW5nIEZlYXR1cmVzIGFuZApSZXBvcnRpbmcgQnVnczwvaDM+Cgo8cD5Zb3VyIGNvbW1lbnRzIGFyZSBpbXBvcnRhbnQgdG8gbWFraW5nIElDVTRKIHN1Y2Nlc3NmdWwuJm5ic3A7IFdlIGFyZSBjb21taXR0ZWQKdG8gZml4aW5nIGFueSBidWdzLCBhbmQgd2lsbCB1c2UgeW91ciBmZWVkYmFjayB0byBoZWxwIHBsYW4gZnV0dXJlIHJlbGVhc2VzLjwvcD4KCjxwPlRvIHN1Ym1pdCBjb21tZW50cywgcmVxdWVzdCBmZWF0dXJlcyBhbmQgcmVwb3J0IGJ1Z3MsIGNvbnRhY3QgdXMgdGhyb3VnaCB0aGUgPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovYXJjaGl2ZXMvaW5kZXguaHRtbD5JQ1U0SiBtYWlsaW5nIGxpc3Q8L2E+Ljxicj4KV2hpbGUgd2UgYXJlIG5vdCBhYmxlIHRvIHJlc3BvbmQgaW5kaXZpZHVhbGx5IHRvIGVhY2ggY29tbWVudCwgd2UgZG8gcmV2aWV3IGFsbCBjb21tZW50cy48L3A+Cgo8YnIvPjxici8+CjxoMj5UaGFuayB5b3UgZm9yIHlvdXIgaW50ZXJlc3QgaW4gSUNVNEohPC9oMj4KPGJyLz4KPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KCjxwPjxpPjxmb250IHNpemU9Ii0xIj5Db3B5cmlnaHQgqSAyMDAyLTIwMDQgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzClJlc2VydmVkLjxicj4KNTYwMCBDb3R0bGUgUm9hZCwgU2FuIEpvc+ksIENBIDk1MTkzCjwvZm9udD48L2k+PC9wPgoKPC9ib2R5Pgo8L2h0bWw+Cg==